www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - Diamond Full-stack MVC / Template Engine - v2.5.0 Released!

Hello D Community!

I'm pleased to announce Diamond v2.5.0.

What is Diamond?

Diamond is a powerful MVC / Template Framework inspired by 
ASP.NET MVC using vibe.d as backend.

It was originally written as an alternative template engine to 
vibe.d's Diet templtes, but
has since then evolved into a complete web framework on-top of 

The goal of Diamond is to be able to use it for enterprise 

Feature highlight:


* Low Memory & CPU Consumption
* MVC & HMVC Possiblities
* RESTful
* ACL (Access-control-list)
* Cross-platform
* Website/Webapi support
* Stand-alone support (No web)
* i18n (Internationalization)

Data & Storage:

* ORM (Object relational mapping)
* MySql ORM
* Caching
* Mongo (Through vibe.d)
* Redis (Through vibe.d)
* Request-contexts
* Cookies
* Sessions
* Transactions

Views & Frontend:

* Compile-time Parsing
* Partial Views
* Layouts
* Fast & Performant Rendering
* Dynamic
* Any D code can be executed
* Sections
* Flash-messages


* Auto-mapping
* View-integration
* Mandatory Actions
* Version-control


* Authentication
* CSRF Protection
* Cryptography (Through Botan)
* JSON/BSON (Partially through vibe.d)
* Asynchronous (Through vibe.d)
* Fibers/Tasks (Through vibe.d)
* Sharding (Partially using vibe.d)
* Network Security & Restrictions
* Unittesting
* Logging

Between v2.4.0 and v2.5.0 the following changes has been made:

* Bug fixes, refactoring and optimizations
   * As always with every release bugs are fixed, code is 
refactored and optimized.
   * Refactoring is usual not breaking changes, but some breaking 
changes may have happened.
* Minimal vibe.d interaction
   * There has been created wrappers around vibe.d components, 
making it easier to handle certain vibe.d components.
* Unittesting
   * Diamond now has build-in unittesting which can be used to 
test certain areas of the applications.
* Flash-messages
   * Diamond is now able to create flash-messages; which are 
useful for notifications/temporary messages.
* MySql / ORM Implementation
   * Diamond-db has been refactored, optimized and put in as a 
part of the official Diamond repository.
   * This means Diamond-db is no longer a package and to use the 
ORM you must have the framework.
   * This change was done to better interact with the core of 
* Logging
   * Logging has been added to Diamond, allowing to log requests, 
responses, errors etc.
   * Logging can be customized with custom loggers or there can be 
logged to files or a database.
* i18n
   * Internationalization and localization has been added to 
   * This allows for Diamond applications to be written for 
multiple languages and cultures.
* Transactions
   * Transactions have been added, allowing to handle 
transactional memory, as well snapshot types.
   * This is useful for critical areas where invalid/incomplete 
data can't be afforded.
* Route rewriting
   * It's now possible to redirect routes to other routes
   * It's also possible to combine routes to handle multiple 
requests with a single request.
* Version-control
   * Version control has been added being able to develop new 
controller functionality without breaking existing controllers.

There's a temporary website using a default Github theme:


You can find documentation and API docs there.

The website will be replaced with an official website when it's 
Which of course will be written using Diamond.

Github: https://github.com/DiamondMVC/Diamond

DUB: http://code.dlang.org/packages/diamond (Currently waiting 
for DUB to update the package.)

Thank you!
Nov 08 2017