diet-ng Live mode and announcing dietpc

Steven Schveighoffer schveiguy at gmail.com
Tue Mar 24 15:03:33 UTC 2020


Since October I have been using an experimental feature I created for 
the diet-ng package [1] that allows one to alter just the HTML portions 
of a diet template and have the server re-render those pages. It has 
saved me significant development time as I can e.g. alter a class on an 
html element, add javascript, just about anything that doesn't have to 
do with running actual D code, and I do not need to rebuild my entire 
application. Those of you who watched my dconf 2018 presentation may 
have heard me talk about the issue of vibe.d build times.

Today, Sönke merged and released my experimental feature called "Live 
Mode" into diet-ng, so it is now available for everyone to play with 
under version 1.7.0 of diet-ng. Go check out the README, and please let 
me know if you find any issues with it. Note it definitely is still 
experimental, and doesn't support everything you can do in a diet 
template (see the README for details).

In order to do this, I had to make all the code that diet-ng runs using 
templates runnable at runtime. In addition, because vibe.d generally 
wants everything @safe, diet-ng should now be fully @safe.

In addition to this, I have also been using the DietUseCache feature of 
diet-ng, another experimental feature, which allows to skip the entire 
compilation step of diet templates, and just import a cached version of 
the compiled file (again see README of diet-ng for details). However, 
this has a significant limitation -- you need to build the template once 
without caching so it can be put out as a cached file during the first 
run of the application. As I was running up against memory limitations 
on my system for running this CTFE, and the Live mode forced me to make 
everything doable at runtime, I decided to build a "pre-compiler" for 
the templates, that builds the cache files before the compilation step. 
In my project, this lowered my build time from 38 seconds down to 11, 
and the caching saves about 25% of the compiler memory consumption.

This utility I called dietpc I'm very happy to say is now available as a 
dub package for your usage [2]. Please file any bugs for it there or on 
the diet-ng package as appropriate, and I will work on making sure 
everything works as expected.

Thank you to Sönke for accepting this feature and the whole vibe.d team 
for these great projects!

-Steve

[1] https://code.dlang.org/packages/diet-ng
[2] https://code.dlang.org/packages/dietpc


More information about the Digitalmars-d-announce mailing list