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
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.
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: