Saxonica: Latest releases

Latest releases

This page contains release information about the latest Saxon product releases:

For information on older products, see Older releases.

Saxon 11

This section contains information which applies to Saxon 11 products on all platforms. See the sections below for platform-specific product details:

License

For Saxon 11 we're making an important change to the business model: in line with what is now the general industry practice, licenses for Saxon 11 are 1-year fixed-term rather than perpetual. For details see Saxon 11 licenses and Annual term and subscription licenses.

Changes and fixes

Changes in the functionality of the product in successive releases are documented in the Change history section of the documentation. Bug fixes are documented in the bug tracker database; you can search for bugs cleared in a particular maintenance release.

SaxonCS 11

SaxonCS 11.4 released 28 July 2022. With this release, we are now recommending Saxon 11 as the most stable and reliable release for production use.

SaxonCS 11.3 released 28 March 2022.

SaxonCS 11.2 released 18 February 2022.

SaxonCS 11.1 released 1 February 2022.

SaxonCS 11.0 released 5 October 2021.

Product headlines

SaxonCS 11 is our first product produced from the version 11 source code, and our first product for .NET 5.

SaxonCS delivers the functionality of Enterprise Edition: it is a commercial product and you will need a license key to activate it. 30-day evaluation licenses are available.

For further details, see the Saxon 11 feature matrix.

Although the product is built from the established and mature Java code base, the build process is entirely new (we developed a transpiler to convert Java source code to C#) and there's a lot of new code to interface with the .NET 5 platform. There were a few teething troubles with the first version, mainly concerned with running on platforms localized to languages other than English. These have been ironed out in the maintenance release, but we're still keen to get feedback. You can email us privately, but we prefer it if you share your experiences with the wider user community by making entries in the appropriate section of the bug tracker database.

The product has been tested on .NET 5 only, on Windows, MacOS, and Linux. If you want to try it out on any other platform, please let us know how you get on. Note that it does not work on earlier .NET Framework or .NET Core releases. For .NET Framework 4, the older Saxon/.NET 10 product (built using the IKVM technology) remains available. We do not have a product that runs on older .NET Core releases.

We're working to get the MacOS version of the SaxonCS 11 notarized by Apple. Until that's achieved, you may have to contend with security warnings about the software being untrusted. That will hopefully be fixed soon. We think the problems can be avoided if you download the package from nuget.

Changes

The overall structure of the C# API is closely based on the API for the older Saxon 10 product on .NET, but there are many minor changes as we have tried to modernize the interface to take full advantage of C# features such as generics and delegates. Existing applications will therefore need some changes at the C# level. XSLT, XQuery, and XPath code should normally run without change. A few features of the older product have not (yet) been carried forward: the most noticeable omissions are probably in the area of localization (formatting of dates, times, and numbers according the conventions of languages other than English). Changes in the functionality of the product in successive releases are documented in the Change history section of the documentation.

Installation and download

You can install SaxonCS using the nuget package manager at nuget.org. Typically all you need to do is to add a dependency to the package (saxonica/SaxonCS 11.1.1 or later) to your application in Visual Studio or JetBrains Rider, and the rest of the installation process is automatic. But the code won't execute until you install a license key.

With the SaxonCS nuget package installed, you can run transformations and queries from the command line using a command such as "dotnet SaxonCS transform -s:src.xml -xsl:style.xsl". Alternatively you can install platform-specific executables (for Windows, Linux, and MacOS) that run directly from the command line (rather than as subcommands of dotnet): see .NET platform downloads.

SaxonJ 11

SaxonJ 11.4 released 28 July 2022. With this release, we are now recommending Saxon 11 as the most stable and reliable release for production use.

SaxonJ 11.3 released 28 March 2022.

SaxonJ 11.2 released 18 February 2022.

SaxonJ 11.1 released 1 February 2022: EE, PE, and HE editions.

Note: there was no SaxonJ 11.0.

Product headlines

Saxon on the Java platform is now a mature and stable product, and version 11 delivers incremental improvements rather than disruptive innovations.

Internally, there's some major re-engineering of the way Unicode strings are handled: instead of Java's standard approach of using two-byte character objects with surrogate pairs to support high-end Unicode characters such as emoji, we now use a new library of string-handling routines based on a UnicodeString class that supports the full unicode standard natively. Strings use one, two or three bytes per character as required, and characters are directly addressible. We've also introduced string representations that are much more efficient for operations that build a string incrementally, or that modify small parts of a large string, and we've future-proofed the library by designing it to accommodate strings that are longer than 231 characters.

A major part of the motivation for this change was so that we could use the same code across Java and C#; we found that the existing mechanisms we were using made it very difficult to translate our string-handling code from Java to C#.

The effects of this change on performance vary from one application to another. For very simple applications that do little complex string processing, there may be a small drop in performance caused by the overhead of converting strings into the new format; more complex applications show a performance improvement.

Another area of change in SaxonJ is in URI resolution. Previous releases had a myriad of callback interfaces for different kinds of resources (URIResolver, EntityResolver, SchemaURIResolver, ModuleURIResolver, UnparsedTextResolver) and this has all now been rationalized. All requests for resource access now go first to a ResourceResolver that's local to the particular tool (for example the XsltCompiler or the XQueryEvaluator); then, if not yet resolved, they go to a configuration-wide ResourceResolver whose default implementation is designed to work with OASIS catalog files; finally, if still not resolved, they are resolved using the default mechanisms in the Java runtime library. Nevertheless, many of the old APIs are retained alongside for compatibility.

We're continuing to experiment with new extensions to XSLT and XPath syntax and the function library, particularly to make processing JSON as convenient as processing XML. Some of the facilities are labelled as experimental: we hope you will try them out and give us feedback, but they may change in future releases. In the interest of standards conformance and interoperability, these features are generally disabled by default, except where we've been able to take advantage of XSLT's standard extensibility mechanisms.

SaxonC 11

SaxonC 11.4 released 28 July 2022. With this release, we are now recommending Saxon 11 as the most stable and reliable release for production use.

SaxonC 11.3 released 28 March 2022.

SaxonC 11.2 released 18 February 2022.

SaxonC 11.1 released 1 February 2022: EE, PE, and HE editions, for C/C++, PHP, and Python.

Note: there was no SaxonC 11.0.

This is the first new version of SaxonC since Saxon/C 1.2.1, released 28 October 2019.

SaxonC provides APIs to run XSLT 3.0, XQuery 3.1, XPath 3.1, and XSD 1.1 from C/C++, PHP or Python applications.

This version ties SaxonC more closely to the SaxonJ Java code base; the build mechanism has been integrated and in future we intend to ship SaxonC releases corresponding to each SaxonJ maintenance release.

Because of the variety of platforms and languages supported, SaxonC can be complex to install, and the new release benefits from the experience gained by a wide range of users with different environments. The amount of testing we do on different (real or virtual) platforms has greatly increased. It remains the case, however, that we can't test on every possible combination of hardware, operating system, and language compiler, so we greatly welcome feedback from users that will help us increase our coverage.

SaxonC 11 plugs many gaps in the various APIs for C++, PHP, and Python. There's also more focus on multi-threading and reuse of compiled stylesheets.

SaxonC is built by compiling the Java code of SaxonJ using the Excelsior JET Enterprise tool (version 15.3 MP1). Users should be aware that Excelsior JET, while highly reliable, is no longer supported. This creates a risk that if any serious problem is found with Excelsior JET (such as a security vulnerability), it is unlikely to be fixed. Following this release of SaxonC, we are proposing to evaluate alternative technologies to replace Excelsior JET: the most promising candidate is GraalVM.

SaxonC is available in the standard Saxon range of editions: the open-source product SaxonC-HE, and the commercial products SaxonC-PE and SaxonC-EE. Separate downloads are available to run on Linux, MacOS and Windows. For further information see SaxonC.

Saxon 10

Saxon 10.8 maintenance release for Java and .NET, released 15 March 2022.

Saxon 10.7 maintenance release for Java and .NET, released 1 March 2022.

Saxon 10.6 maintenance release for Java and .NET, released 16 September 2021.

Saxon 10.5 maintenance release for Java and .NET, released 14 April 2021.

Saxon 10.3 maintenance release for Java and .NET, released 28 October 2020. With this release, we are now recommending Saxon 10 as the most stable and reliable release for production use.

Saxon 10.2 maintenance release for Java, and first release for .NET, released 26 August 2020.

Saxon 10.1 maintenance release for Java, released 14 May 2020.

Saxon 10.0, the first release in this series for Java, released 16 March 2020.

Product headlines

10 feels like a special number, and marks something of a milestone, although to be honest it's only called 10 because it happens to be the 31st major release since 7.0 came out back in 2002. Think of it as the culmination of 18 years' work, think of it as the dawn of a new era, or just think of it as Saxonica carrying on doing what we're good at.

As always there's a minutely detailed list of changes in the Change history section of the documentation, but to save you time, here are the "top ten" highlights that we think will be most popular:

  1. Higher order functions and xsl:evaluate are now available in Saxon-HE.

  2. An interactive command-line utility named Gizmo is available for ad-hoc querying and updating of documents.

  3. A new API is provided for easy and efficient tree construction, based on modern API design ideas using fluent and immutable objects. These complement the stream-based API introduced in 9.9 for tree navigation.

  4. XSLT and XPath provide an optional switch to allow unprefixed names to ignore namespaces, so the path /a/b/c matches elements with local names "a", "b", and "c" regardless of namespace. Ideal for ad-hoc queries where namespaces just get in the way, as well as queries on single-namespace documents.

  5. HTML serialization now generates HTML5 by default (support for html-version="4" is retained if explicitly requested).

  6. Saxon now integrates with the new date-and-time handling features in Java 8, including a new extension function saxon:parse-dateTime() that builds on Java date parsing capabilities.

  7. Many new extension functions are available, most of them taking advantage of the power of higher-order functions. For example, saxon:replace-with("Chapter 13", "[0-9]+", function($x){number($x)+1}) returns "Chapter 14".

  8. Saxon 10 includes experimental implementations of a number of powerful new XSLT and XPath features, which Saxonica has put forward for inclusion in a new version 4.0 of the standards. These include tuple types, named item types, streamlined syntax for inline functions and conditional instructions, XSLT instructions to handle arrays, and enhancements to XSLT patterns to make JSON transformation much easier. These features are only available if explicitly enabled.

  9. A number of extensions to XML Schema 1.1 are provided: list data types can be constrained to be distinct and/or ordered, and can use a separator other than whitespace; elements in a sequence can also be constrained to appear in ascending or descending order.

  10. As always, there has been significant internal re-engineering to keep the code performant and maintainable. A significant change is in the way namespaces are represented both in the tree model (the NodeInfo interface) and in the push pipeline (the Receiver interface): both now deliver namespace maps representing complete sets of namespace bindings, rather than individual namespace declarations and undeclarations. The main benefit is that copying of trees with many namespaces is significantly faster.

For further details, see the Saxon 10 feature matrix.

Saxon 10 requires Java 8 or higher. (A .NET version is available from 10.2.) Saxon 10 can export compiled stylesheets in the form of SEF files suitable for reading either by Saxon 10, or by Saxon-JS 2; SEF files cannot be used with earlier releases.

In future we intend to use two-part version numbers rather than four-part: the next major release will be 11.0, the first maintenance release 10.1.

Upgrading

Saxon-EE and Saxon-PE licenses issued after 28 July 2021 will work with the current maintenance release. For those with earlier licenses, simply enter the existing license number when you reorder, and we will refund its residual value, based on when it was purchased (see Upgrades for more details).

Changes and fixes

Changes in the functionality of the product in successive releases are documented in the Change history section of the documentation. Bug fixes are documented in the bug tracker database; you can search for bugs cleared in a particular maintenance release.

Saxon/C 1.2

Saxon/C 1.2.1 maintenance release for C/C++, PHP and Python, released 28 October 2019.

Saxon/C 1.2.0, the first release in this series for the C/C++, PHP and Python programming languages, built from Saxon 9.9.1.5, released 16 October 2019.

APIs are available to run XSLT 3.0, XQuery 3.1, XPath 3.1, and Schema Validation from C/C++, PHP or Python applications. Saxon/C 1.2.0 is built from the Saxon 9.9 Java product using the Excelsior JET Enterprise tool (version 15.3 MP1).

Saxon/C is available in the standard Saxon range of editions: the open-source product Saxon-HE/C, and the commercial products Saxon-PE/C and Saxon-EE/C. Separate downloads are available to run on Linux, Mac OS X and Windows. For further information see Saxon/C.

SaxonJS 2

SaxonJS 2.5 maintenance release 4 October 2022.

SaxonJS 2.4 maintenance release 12 May 2022.

Saxon-JS 2.3 maintenance release 20 August 2021.

Saxon-JS 2.2 maintenance release 11 May 2021.

Saxon-JS 2.1 maintenance release 2 March 2021.

Saxon-JS 2.0 first release 12 June 2020.

SaxonJS is a high-performance XSLT 3.0 processor that runs either in the browser, or on Node.js. It conforms with the latest W3C specifications (notably XSLT 3.0 and XPath 3.1), together with extensions designed to meet the needs of modern web applications. The latest version, SaxonJS 2, is a major upgrade. Stylesheets can be compiled to SEF using the internal compiler in SaxonJS for Node.js, or using Saxon-EE (10.0 or later).

For further information see SaxonJS.