|
Boost-Build : |
Subject: [Boost-build] Major engine changes
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2011-11-29 19:02:06
AMDG
I've just committed a major rewrite of the
jam interpreter. So, far, I'm seeing a 2x speed
up running bjam -n -d0 in $BOOST_ROOT/status.
I've tried to test my changes thoroughly, but, as
always, there may be something that I missed.
If anything breaks, please let me know, and I'll
try to deal with it ASAP. I did validate that
the output of bjam -n and bjam -n -d+12 are
unchanged on Windows with msvc-10.0express
and on Linux with gcc-4.5.1.
Here's a summary of all the behavior changes
that I am aware of. Some of these are just
bug fixes, but I'm including them for completeness.
1) Parsing of variable expansions is stricter.
This code from project.jam fails:
'"$(JAMFILE:J=" ")"'.
This is wrong, because it is parsed into 2 tokens,
and the $( is not terminated. The correct way
to write this is '$(JAMFILE:J=" ")'. I fixed
this in the trunk.
2) Conditionals are stricter. The following
code which appeared in boostcpp.jam fails to
parse with my patch:
if ! [ os.name ] = NT
This code is wrong because it is parsed as
if ( ! [ os.name ] ) = NT
while the author clearly intended it to mean
if ! ( [ os.name ] = NT )
In general, boolean expressions will no longer
be usable as lists. The behavior of such
expressions is bizarre, and is almost certainly
a bug. I fixed this in the trunk.
3) -d+9 no longer prints a trace of the execution.
I don't think this is terribly useful because
the output from Boost.Build is just too much.
I can add it back if it's considered important, though.
4) On cygwin combining the $(var:WL) or $(var:WU) now
consistently applies the case shift after the W modifier.
previously, the behavior had several oddities or
or could be undefined depending on the length of
the string.
5) multiple modifiers can now be separated by a ':'.
$(var:U:T). Previously this would silently
ignore the T.
6) Modifiers can now be applied to arguments > 9.
$(12:L) used to fail.
In Christ,
Steven Watanabe
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk