Ash Ra Template 0.6.0: Speed

Just released version 0.6.0.

The headlining feature is speed. While the core rendering code is still arranged quasi-pedagogically, the :dependencies feature was moved to a new art-cli, which is activated only when you use that option from a CLI tool. Without the bootstrapping a new Clojure environment for each template render, we realized a huge performance boost.

What does that all mean? Whereas in previous versions we witnessed an excruciating ~ 1 template / second rendering performance, ART now realizes speeds of 10s templates / sec. And, plenty of room for performance improvements in future releases :slight_smile:

If you close your eyes and listen closely, you might hear someone a few darkened cubicles over muttering how they think this release aught to be code-named “Breaking Changes,” because we decided to pack all breaking changes in to one release, rather than draw out the process. It’s all in the CHANGELOG.md.

1 Like

One of things we use this for is to generate .java files that define data structures simple & complex sourced from a centralized project data store. Project name, version, family, API compatibility declarations, etc. The generated files are either written somewhere inside src/ and committed, or live under target/ and are deleted on clean. Now, every build of the Java project always includes the latest data, and we benefit from having the data available directly as Java types, typed-checked by the Java compiler. That’s one less thing to think about.

Another one: ART automatically generates JS license header files, and the various compilers are configured to include them. Something like this license-header.js.art:

/**
 * @license Copyright 2015,<(= (.getValue (java.time.Year/now)) )> Acme Corp.
 */

Voila! Every generated .js file includes an up-to-date license header. Quite convenient.

Version 0.6.1 corrects how help and errors are displayed from the CLI tools