FreeMarker 2.3.11 released
We're pleased to announce that FreeMarker 2.3.11 is now released. This release contains several important bugfixes, performance improvements (both speed and memory), as well as some major feature improvements. It is almost completely backwards compatible with any other 2.3.x version and as such can be used as a drop-in replacement for them. (The only non-backwards compatible change is that
?cbuilt-in formats numbers differently than it did earlier, but that is actually a bug fix).
Download it from SourceForge
You can look at the full list of changes, but I'll summarize it here by topic:
- We now have much better JSP 2.0 and JSP 2.1 compliance. Most notably, JSP tags implementing
SimpleTaginterface will now work.
- We created a new interface,
TemplateDirectiveModelthat should make writing custom directives in Java much easier than with the previous only choice,
FileTemplateLoadercan now load templates through symlinks pointing out of its root directory (it is disabled by default however).
Performance improvementsWe eliminated a bunch of repeated
instanceoftests in BeansWrapper whenever a new object was wrapped. They're now performed once per class instead of once per object. Also, the FreeMarker wrapper object created by BeansWrapper when wrapping a POJO now does not create an internal
HashMapautomatically, but only when really needed (and it is not needed often). Thus, we eliminated one
HashMapper wrapped object in lots of use cases, noticeably reducing the runtime memory footprint.
Bug fixesAs mentioned,
?cbuilt-in now prints numbers in the expected format always. Also, there is a serious file handle leak when loading resources from JAR files from local filesystem in Sun JVMs, and we now have a workaround for it. FreeMarker will now correctly find JRE-bundled Xalan when run on Java 5 and Java 6. Also, we corrected the lookup of JSP taglib JAR files to be fully compliant with the JSP specification. And there are some more I won't go into right now - see the full changelog page linked above.