Claude,
Thanks, so basically we would need to use the formal notation on every
statement in v3. Shorthand notation depricated.
https://velocity.apache.org/engine/2.4.1/vtl-reference.html#variables
ie
v2.5
$utils.formatDate($utils.now, $text.get("date.toStringFormat"))
v3
${utils.formatDate(${utils.now}, ${text.get("date.toStringFormat")})}
A migration tool would be great.
Greg
On 16/06/2026 10:42, Claude Brisson wrote:
Hi Greg.
The 2.x branch will never require the change. At most, in 2.x, the
warning will become true by default and you will have to turn it off.
We don't plan to retire the 2.x branch. Velocity Engine 3.0 may be a
bit of a different beast, but you can stick to 2.x.
I'm pretty sure that we can provide some templates migration tooling
for those wanting to update to 3.0 when it is released, though.
I realize that a lot of the discussions happened among PMCs on
[email protected] or is scattered in comments on github and
jira, so let me take the opportunity of this mail to try to present
the direction in which I'd like to go:
- after engine 2.5 is released, we'll release two concurrent versions
of velocity-tools: 3.2 and 4.0. Tools 4.0 will use the jakarta J2EE
instead of javax, and provide Spring 6/7 mvc support, but they should
be similar. Both the 3.x and 4.x branches will be maintained.
- engine 3.0 (/if/ it goes as planned) will use kotlin multiplatform,
the antlr parser, the gradle build system, and a VTL syntax which can
not incorporate $foo.bar because its syntax has to be a super-set of
the kotlin string template syntax.
Well, at least, that's my proposal. The "if" is the transition from
javacc to antlr, which I have to technically validate (but I don't see
why it couldn't be done).
Claude B
On 16/06/2026 09.29, Greg Huber wrote:
Hello,
Looking at the release notes:
* Deprecation of some VTL syntax constructs: the formal reference
notation |${...}| is now preferred for non-bare references (|$foo|
is still fine, but |$foo.bar| should be rewritten as |${foo.bar}|).
Deprecation warnings are off by default; the next minor release will
turn them on by default, and the next major release will remove
support for those deprecated forms.
I enabled runtime.deprecation.warn=true, to see the warnings, there
are hundreds :
2026-06-16 08:19:17,094 WARN org.apache.velocity.rendering
ASTReference:init - the informal notation
'$utils.formatDate($utils.now, $text.get("date.toStringFormat"))' is
deprecated in output; use the formal notation ${...} instead [line
634, column 21]
This is a very big change, adding ${} to 95% of our velocity statements.
Going forward > 2.5 is this change necessary or can it be ignored?
Cheers Greg
On 14/06/2026 18:06, Claude Brisson via dev wrote:
The test build of Velocity Engine 2.5 RC1 is available.
No determination as to the quality ('alpha,' 'beta,' or 'GA') of
Velocity Engine 2.5 has been made, and at this time it is simply a
"test build". We welcome any comments you may have, and will take
all feedback into account if a quality vote is called for this build.
Release notes:
*
https://dist.apache.org/repos/dist/dev/velocity/velocity-engine/2.5/release-notes.html
Distribution:
* https://dist.apache.org/repos/dist/dev/velocity/velocity-engine/2.5/
Maven 2 staging repository:
*
https://repository.apache.org/content/repositories/orgapachevelocity-1050/
Documentation:
* https://velocity.apache.org/engine/2.5/
Sources:
* https://github.com/apache/velocity-engine/releases/tag/2.5-RC1
A vote regarding the quality of this test build will be initiated
within the next couple of days.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]