The Saxon 12.5 maintenance release has been published. This is a maintenance release for Java, C#, C/C++, PHP, and Python that fixes a number of issues reported since previous Saxon 12.4 releases.
Saxon 12.5 was released on 1 July 2024. This release has been uploaded to the usual locations on the Saxonica website, GitHub, and Maven, PyPi, and NuGet. SaxonCS 12.5 is built with .NET 6. This release includes SaxonC and Python releases for the ARM 64 architecture as well as X86-64 architecture.
For a list of the issues resolved in this release, please visit the issue trackers for SaxonJ and SaxonCS or SaxonC on the Saxon support site.
Download products:
- Binaries for PE and EE are available from our download pages.
- SaxonJ-HE is available on the Maven Central repository.
- SaxonJ-HE, PE, and EE can also be found on our experimental Maven repository.
- Python wheels for SaxonC (HE, PE, and EE) are available from PyPI.
- SaxonCS is available on NuGet
- Saxon-HE is available from our open source GitHub repository. The GitHub repository also provides source code for those who need it.
For more details, please consult the documentation.
Partial list of issues resolved
This section is a subset of the complete list of resolved issues. It’s curated to bring attention to the bugs that seem most likely to impact customers.
Issues in SaxonJ and SaxonCS
For a full list, see the issue tracker.
- 6450 CollectionFinder parsesd ALLOWED_PROTOCOLS incorrectly
- 6449 SaxonCS failure when using collection function to pull a collection catalog file over HTTP(S)
- 6448 Saxon-HE 12.4J has wrong column number in trace, unlike Saxon-EE
- 6446 Improved performance of XQuery group by some circumstances
- 6435 Resolve concurrency issue in the use of accumulators behind the scenes in xsl:for-each
- 6428 Output of xsl:on-non-empty changes when using TraceListener
- 6426 fn:matches surprisingly returns false for fn:matches("AB", "^(.*)+B")
- 6420 -Tout filename not used when set on command line
- 6419 Union of nodes in a Template Match produces wrong output in Trace
- 6415 Improved results for trace of an unreferenced XSLT variables
- 6407 Tree Model option -tree seems to be ignored for initial source documents
- 6406 A collection cannot contain the same document more than once
- 6405 Improve saxon:column-number() for text nodes not inside xsl:text
- 6394 Resolve "Duplicate definition of global variable" exception when using compileLibrary on modules which import a common module
- 6386 Resolve inadvertant backwards incompatibility in some uses of Configuration#setFeature
- 6381 set_unprefixed_element_matching_policy(1) doesn't seem to work
- 6380 Internal error when match pattern invoked by xsl:next-match refers to global variable
- 6378 Resolved problem with tracing a variable declared abstract
- 6377 Resolved exception that could be thrown by format-time in some circumstances
- 6370 XSD based validation finds a validation throws NullPointerException when trying to generate a validation report
- 6365 Fixed bug where Gizmo could fail if no license was provided
- 6363 Incorrect result comparing untypedAtomic value to NaN
- 6348 Fixed multi-threading bug related to xsl:result-document operating asynchronously
- 6340 Fixed exception that sometimes arose when using saxon:capture="yes" in an accumlator rule
- 6339 Describe fix and workaround for ArrayIndexOutOfBoundsException in saxon:transform()
- 6313 Static type error from fn:remove()
- 6302 Improved trace output when the transform function is used
- 6286 Resolved problem where $connection?close() could throw an error
- 6279 Incorrect optimization of generate-id() comparisons
- 6256 function-name returns an empty sequence for node-name#0, string#0 and more?
- 6183 Improved documentation for debugging errors when using "fallback=no" on UCA collation
Issues in SaxonC
Memory management in SaxonC, PHP, and Python has been greatly improved. This resolved a number of issues (6338, 6349, 6357, 6396, and 6397). In addition, the following issues were resolved. (For a full list, see the issue tracker.)
- 6439 Fixed bug in Python extension that could cause an AttributeError on PyXdmFunctionItem
- 6402
Added
clearXslMessages
to clear accumulated xsl:message messages - 6401 Resolved bug when setting a filename on an executable in Python
- 6372 Updated build to include all character sets (will enable Windows-1252 encoded XML files to be parsed on Linux)
- 6360 Fixed bug where setOutputFile did not work with transformToFile()
- 6356 Fixed argument count error in executable in PHP
- 6351 Added methods for getting the line and column number of a node
- 6342 Fixed bug where in compileFromAssociatedFile PHP might fail
- 6341 Support try/catch in PHP for underlying parse errors
- 6336 Fixed bug when passing array values as parameters in Python
- 6327 Fixed bug where an empty XdmValue in Python might throw a TypeError
- 6297 Fixed build issue on CentOS 7
- 6276 Fixed bug where proc.version did not include the patch version
If you encounter any issues with Saxon 12.5, please report them on our issue tracker.