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
* Low Memory & CPU Consumption
* MVC & HMVC Possiblities
* ACL (Access-control-list)
* Website/Webapi support
* Stand-alone support (No web)
* i18n (Internationalization)
Data & Storage:
* ORM (Object relational mapping)
* MySql ORM
* Mongo (Through vibe.d)
* Redis (Through vibe.d)
Views & Frontend:
* Compile-time Parsing
* Partial Views
* Fast & Performant Rendering
* Any D code can be executed
* Mandatory Actions
* 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
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.
* Diamond now has build-in unittesting which can be used to
test certain areas of the applications.
* 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 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.
* Internationalization and localization has been added to
* This allows for Diamond applications to be written for
multiple languages and cultures.
* 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 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.
DUB: http://code.dlang.org/packages/diamond (Currently waiting
for DUB to update the package.)