On Thursday, 19 October 2017 at 23:29:57 UTC, bauss wrote:
I'm pleased to announce that I have just released Diamond 2.1.0.
There has been a lot of updating to Diamond since last
Diamond has also moved repository from my personal Github to an
The reason for that change is because I've started a couple
side projects for a tool-chain that can be used with Diamond.
The organization repository can be found here:
2.1.0 is not backward compatible with the versions released at
the personal repository.
Here are some of the changes:
* Diamond now has its own organization repository
* Controller actions can be mapped by attributes (@HttpDefault,
* Controllers do no longer require their type to be passed as a
template parameter to the base-controller class
* Views support sections (See:
* Views and web configurations have been split into separate
* Default headers can be set for different types of requests
(Unlike in the legacy version of Diamond where there were only
one type.) -- These types include gneeral, static files, errors
and not found (404)
* Better construct to control application type (module:
diamond.core.apptype -- isWeb, isWebServer, isWebApi; all of
them are booleans that can be used at compile-time with static
if, instead of the old construct of using version. This works
better because they're conditional, unlike versions)
* Allows you to bind to multiple ips and ports, unlike the
legacy version that only allowed one port for many ip addresses.
* Renames of some members such as request -> httpRequest,
response -> httpResponse
* A routing class has been added to easier access routing data
for requests (module: diamond.http.route)
* Most of the compile-time engine has been rewritten.
* A lot of bugs has been fixed, code is better structured etc.
For the latest release see:
For the github repository see:
To see what's upcoming see:
Thank you, that's all!
Even though it has only been 5 days since 2.1.0 has been
announced, I am pleased to announce 2.4.0 now. I have spend the
past days working almost 24/7 to improve Diamond and make it as
close to a usable framework as it can get.
Everything that has been implemented between 2.1.0 and 2.4.0:
* Extension support (Extensions can be in form of local
repositories or repositories that Dub can fetch.)
* Authentication (Can be used with or without the ACL)
* Cookies / Sessions
* ACL (Access Control List)
* CSRF Protection
* RESTFul / Type-secure routing
* Controllers in web-apis can have multiple routes
* Base-view can be passed to a view's controller
* Layout views can be changed dynamically
* Caching for expensive views
* Network restrictions
The wiki and template projects will be updated accordingly to the
latest version of Diamond.