Quo Vadis, Lambda?

To implement a new built-in for sequences, lambdas were added as a new language component of the FreshMarker Expression Language. The lambda expression made it much easier to map the semantics of the new count built-in in an easily readable syntax. Now that lambda expressions are available, what else can they be used for and what still needs to be implemented?

Select Operator for FreshMarker (2)

In the first article on the Select Operator, the implementation was provisionally terminated with a few weaknesses. In this article, two of the weaknesses are eliminated.

Select Operator for FreshMarker

An important component of the FreshMarker template engine is the built-in expression language. The expression language is used to utilize not only variables but also complex expressions in directives and interpolations. When evaluating other expression languages for customer projects, sometimes I am interested in integrating some findings into the FreshMarker expression language.

FreshMarker 2.4.0 Released

Just in time for St. Nicholas Day, the latest FreshMarker release for this year is now available. In addition to several improvements, two bugs have also been fixed.

Prospects for 2.3.0

After the release is before the release, so there are already some new features in the queue for FreshMarker 2.3.0. Since it is not always worth writing a separate article for a feature, here is a report on the new features planned so far.

FreshMarker 2.2.0 Released

The latest version of FreshMarker, the Java 21 template engine, is now available. Version 2.2.0 introduces several improvements and new features. Some internal improvements ensure even faster processing.

Partial Expression Reduction

The FreshMarker template engine has the Partial Template Reduction feature. This makes it possible to create a new Template from an existing Template by adding an incomplete model. Some constructs are simplified in the new Template because the data from the incomplete model could be evaluated there. Until now, this could only be used in directives and interpolations, so why not use the mechanism in expressions as well?

In Search Of Performance (2)

This article on performance was not actually intended to be a multi-part article. But if you take a closer look at your own code through performance glasses, you will quickly discover further bottlenecks. In this case, it’s an unclean modeling that FreshMarker has been carrying around since its early days. This article is about how this affects the performance of the template engine.

In Search Of Performance

In addition to the expressiveness of the template, the number of supported data types and functions and the expandability, performance is a decisive criterion for a template engine. FreshMarker only evaluates the template output at runtime, so although the template engine is very flexible, it cannot compete with those that evaluate the templates at compile time. For historical reasons, FreshMarker also has no upfront type information about the data used, so some optimization options are not available.

FreshMarker 2.1.0 Released

The latest version of FreshMarker, the Java 21 template engine, is now available. Version 2.1.0 introduces several improvements and new features.