Release notes
Change Log and Notes
Version 1.3.304 (20120125)
Changed/Fixed:
- C++ compiler task's
<target>element'sinstallnameattribute now works without a version being specified.
Version 1.3.303 (20120122)
Fixed:
^file().linesnow works for all combinations of end-of-line.- reimplemented severe warning suppression to avoid concurrency issues.
Version 1.3.301 (20120103)
Fixed:
^guid()now works for initialization from{}enclosed ids and bare ids.
Changed:
importexecutor now uses template caching.
Version 1.3.299 (20111227)
Added:
^junction()and^juggernet()converters that return a Codemesh code generator executor properly set up for a transformation.
Version 1.3.298 (20111209)
Fixed:
- bug in
<sourcecodeprep>and other filter tasks (context issue). Involved general fix inTerpProjectHelper.
Added:
namefyformatter to remove space and convert non-word characters to underscores.
Version 1.3.293 (20111130)
Fixed:
- bug in
<foreach> <break/>task (did not break loop). - added synchronization to evaluation context to make cincurrent use of
context on multiple threads safer.
Changed:
^boolconverter now converts empty string tofalserather thannull.
Version 1.3.292 (20111005)
Fixed:
- bug in C++ compiler task when generating dependencies on MacOS-X with
universalas processor architecture. Now only using first architecture for dependency generation. - bug in C++ compiler task for g++ on MacOS-X when linking dynamic libraries (
-Wl,-Bdynamicremoved from build options).
Version 1.3.291 (20110926)
Fixed:
^jdk()and^jre()can now discover 64-bit installations on Windows.^jdk()now successfully discovers JDKs that are not related to the JRE used to run terp.- bug in version recognition for
^jdk(1.7)and^jre(1.7)converters.
Version 1.3.283 (20110825)
Fixed:
forspeedoptimization option foramd64on Solaris.- various assignment operators had incorrect return types when invoked with mixed types.
Version 1.3.238
Added:
- FeedbackManager to support commandline feedback for terp-based tools.
- Added
s390ands390xprocessor architectures. - Added
base64formatter.
Changed:
<resource>option for C++ compiler task now sets platform and processor architecture options that can be used in resource file to calculate build-specific string values.- Changed
<terp.fail>display message. - Several C++ compilers now report compilation progress instead of quietly working till done.
Fixed:
<resource>option for C++ compiler task. Now supports static resource file.- C++ compiler task now handles
.rcsource files correctly.
Version 1.2.231
Fixed:
- processor architecture determination on Linux now recognizes 64bit OS.
- bug in linker commandline assembly when libraries are used but no other linker options are specified.
Version 1.2.225
Added:
bestcppdirformatter and executor allowing use of patterns to derive a directory name for the current compiler.- Several logging statements to C++ compiler task.
- optional
identityattribute for C++ task's<manifest>element
Changed:
- added conversion path from empty collection to map:
^map({}) - Logical expression arguments are now run through
^bool()converter before being processed. - Behavior when only dynamic sources are present in a C++ compiler invocation. Previously, no build action occurred because no regular sources were changed. Now, this is a special case and is always rebuilt.
Fixed:
- broken dependency checker in C++ compiler task.
- broken complex expression evaluation in determination of terp task run conditions (
ifandunlessattributes). - broken
libpathproperty forshellexecutor.
Version 1.1.220
Added:
- validation API to
Pathdatatype.
Fixed:
- yet another problem with ANT1.8 property handling. Property value overriding of
<terp.property>now works. <include>and<libpath>options generated incorrect C++ compiler switches when path was empty.
Changed:
- Scalar transformer API modified.
- Added
expandNoCatch()methods toTerpEvaluator.
Version 1.1.211
Added:
<disable>alias for nested<disabled>element in<warning>element.
Fixed:
- bug in rvalue resolver for
size - bug in
Linkphase error reporting for certain compilers. - documentation for nested
<disabled>element in<warning>element of C++ compiler task. - all compiler options had broken
unlesscondition.
Changed:
- implementation of
<optimize>for GNU and QNX compilers. Default enabled level is now-O2, forspeed results in-O3.
Version 1.1.210
Fixed:
- Removed misleading exception trace when running with ANT 1.7.
Version 1.1.206
Added:
<terp.init>now supports an optionalclassnameattribute. The classname is interpreted as the name of a type that performs terp-related initializations.- JunC++ion code generator task.
- ANT integration attempts to auto-register JunC++ion code generator terp extensions.
Changed:
- file template processing now supports files containing expressions. Use additional
-toption to process files as text. - added logging to
<foreach>task. - log level of first output lines in
<msvc>compilations. - launcher APIs.
<resource>option template. Product version and file version now calculated differently.
Fixed:
<warning>option didn't support nested<disabled>elements and lackedaCCimplementation.<optimize>option was not working forqcc.<terp.fail>does not print empty log messages in case of success.
Version 1.1.185
Added:
- Support for template source types, i.e. types that provide an identifier-based lookup mechanism for the template that should be applied to them. This includes the new
apply()executor. - Added
linebreaktransformer. - Added sorter abstraction to support collection ordering by criteria other than natural sort order..
- Added
-cmdand-scriptoptions to launcher. - Changed launcher trailing argument behavior to be interpreted as file if it exists.
Version 1.0.181
Fixed:
- Documentation bug for
expandtransformer. - Bug in method resolution when String/Character literal ambiguity is present.
- Layout stack leak.
Added:
- Support for newly released ANT 1.8.0 (incompatible property handling scheme.)
- C++ compiler support for MinGW (Minimalist GNU for Windows) g++.
- Support for C++ compiler task initialization from an executable file name rather than a terp expression.
java.io.Fileserialization support.- Support for different parsing modes (text, script) in
importexecutor.
Version 1.0.177
Fixed:
- Several small silent bugs.
- Discovery problem for C# and VB executors.
- Plus operation of single string character and anything else returns null.
- Documentation bug for C++ task
<option>element. - Microsoft C++ compiler version parsing for German locale.
Changed:
TransformerAPI. Transformers now have to implement atransform()method that takes aTerpContextas a third argument.
Added:
- an
expandtransformer to apply a template expansion to an object in an expression. - an
exporttransformer to apply a template expansion to an object in an expression and write it to an output destination.
Version 1.0.172
Fixed:
- Incorrect documentation for
${foreach}metadata elements.
Added:
asciiformatter to convert a unicode string to an ASCII string.
This formatter comes in handy when generating source code (compilers typically don't like non-ASCII characters in identifiers) or filenames based on strings that might contain non-ASCII characters.
capitalizeformatter to uppercase the first (N) character(s) of a string.indexvariable in vector transformer evaluation.
You can now refer to the position in the input collection via theindexvariable in addition to thethisvariable for the current element being transformed.- Discovery of Visual C++ Express.
- better logging for C++ compiler discovery.
- documentation enhancements.
Version 1.0.171
Fixed:
- Microsoft resource compiler is now found in platform SDK.
/IMPLIBoption now always uses correct platform path separator.- Several documentation bugs.
Version 1.0.170
Added:
DebugOptionis now aCppFileCreating.- Cleanup now deletes object,
.pdband.manifestfiles.
Fixed:
- Several documentation bugs.
Version 1.0.168
Added:
- Optional
synchronousattribute in C++ compiler task's nested<exceptions/>element to support both/EHscand/EHacompiler switches.
Fixed:
- Several bugs related to property handling.
Version 1.0.165
Added:
- Optional
<generatevsproject>C++ compiler option to support generation of VisualStudio project files.
Fixed:
- Several small bugs related to quoted options.
- Improved performance of dependency analysis.
Version 1.0.154
Added:
- Optional
modeattribute for<relocatable>C++ compiler option to support "small" and "large" modes (for example-fpicvs.-fPIC) - Optional
<profile>C++ compiler option to support the building of an instrumented application for performance profiling. - Optional
<boundscheck>C++ compiler option to support the building of an instrumented application to be analyzed by BoundsChecker. - BoundsChecker executor (^bc).
<terp.boundschecker>task to run BoundsChecker from within ANT and optionally fail build when errors are detected.- gprof executor (^gprof).
Fixed:
- qcc lookup returns null when no compiler found or requested processor architecture is not supported (enhanced).
- Changed
<relocatable>C++ compiler option implementation for qcc. Now supports relocatable compilation for build targets other than shared library.
Version 1.0.149
Added:
- Optional
levelattribute for<debug>C++ compiler option. - Added instrumentation to qcc lookup.
- Implemented
-verboseoption for terp interpreter.
Version 1.0.147
Fixed:
- qcc lookup returns null when no compiler found or requested processor architecture is not supported.
- qcc dependency options were incorrect.
Version 1.0.144
Added:
- support for endian-ness in processor architecture.
- QNX Neutrino OS support.
- QNX Neutrino qcc support.
- runtime
flavorattribute to support "abridged", "embedded", "standard C++", and "GNU" runtimes.
Fixed:
- depency support for g++ compiler.
- definition file support for MSVC++.
- g++ on 64-bit HP-UX.
- g++ not recognized on 64-bit Ubuntu.
Version 1.0.103
Fixed:
- global help is broken; resolves to null
- parameter matching for methods flawed when null used as argument.
- one character string messes up shell invoker
- icc support on Linux messes up g++ support
Known issues:
- object help not as helpful as it could be.
- xlC is not yet supported.
- icc is only supported on Windows.
Version 1.0.94
Known issues:
- global help is broken; resolves to null.
- object help not as helpful as it could be.
- parameter matching for methods flawed when null used as argument.
- xlC is not yet supported.
- icc is only supported on Windows.
Test Matrix
| OS | Proc.Arch. | Compiler | 32-bit | 64-bit |
|---|---|---|---|---|
| HP-UX 11.11 | PA-RISC 2 | aCC 3.50 | yes | yes |
| HP-UX 11.11 | PA-RISC 2 | g++ 3.3.3 | yes | no |
| QNX | many | qcc | n/a | n/a |
| RHEL5 | AMD64 | g++ 4.1.1 | yes | yes |
| Solaris 10 | AMD64 | CC 5.8 | yes | yes |
| Solaris 10 | AMD64 | g++ 3.4.3 | yes | yes |
| Solaris 10 | sparcv9 | CC 5.8 | yes | yes |
| Solaris 10 | sparcv9 | g++ 3.4.3 | yes | yes |
| Windows XP 5.2 | x86 | MSVC++ 13, 13.10, 14, 15 | yes | yes |
| Windows XP 5.2 | x86 | Intel C++ 11.1.035 | yes | no |
| Windows 2003 5.2 (64-bit) | AMD64 | MSVC 14 | yes | yes |
| MacOS X 10.5 | x86 | g++ 4 | yes | yes |
| MacOS X 10.6 | x86 | g++ 4 | yes | yes |
Please note that AIX (xlC and g++) are not yet included in the test matrix.
It is impossible for us to test every version of every compiler on every platform, but we're confident that different versions of one compiler type will work on the same platform and same processor architecture that we tested on. What will likely not work is automatic discovery of new compiler versions that use different installation or registration mechanisms. You might still be able to use these compilers though if you initialize a wrapper instance with the compiler path.
