docs/Versioning.md
ONNX Runtime follows Semantic Versioning 2.0 for its public API. Each release has the form MAJOR.MINOR.PATCH, adhering to the definitions from the linked semantic versioning doc.
The version number of the current stable release can be found here.
When preparing a release, follow these steps to update the version number across the codebase. This applies both when creating an initial release branch (updating main) and when preparing patch releases on release branches:
Verify your setup:
node --version # Should match the version in js/.nvmrc
npm --version # Should be v8.0 or newer
Update the VERSION_NUMBER file
Edit VERSION_NUMBER in the repository root to reflect the new version (e.g., 1.23.3).
Run the version update script
From the repository root, run:
python tools/python/update_version.py
This script automatically updates version numbers in:
docs/Versioning.md - Adds a new row to the version tabledocs/python/README.rst - Adds release notes entryonnxruntime/__init__.py - Python package versionjs/ packages - All NPM package versions and lock filesUpdate the C API static_assert (Manual Step)
The script does not update the version check in the C API. You must manually update the static_assert in onnxruntime/core/session/onnxruntime_c_api.cc.
Search for static_assert(std::string_view(ORT_VERSION) and update the version string:
static_assert(std::string_view(ORT_VERSION) == "X.Y.Z",
"ORT_Version change detected, please follow below steps to ensure OrtApi is updated properly");
Replace X.Y.Z with your new version number. The comments following this assert explain additional steps if new APIs were added to this release.
Update the C API header ORT_API_VERSION value (Manual Step)
The script does not update the value of ORT_API_VERSION in include/onnxruntime/core/session/onnxruntime_c_api.h.
The value should be set to the second component of the version string. E.g., 25 for version 1.25.0.
Review all changes
Review all modified files. Verify:
https://github.com/Microsoft/onnxruntime/releases/tag/vX.Y.Z)Commit and create PR
Commit all changes and create a PR targeting main or a release branch as appropriate.
All versions of ONNX Runtime will support ONNX opsets all the way back to (and including) opset version 7. In other words, if an ONNX Runtime release implements ONNX opset ver 9, it'll be able to run all models that are stamped with ONNX opset versions in the range [7-9].
The table summarizes the relationship between the ONNX Runtime version and the ONNX opset version implemented in that release. Please note the backward compatibility notes above. For more details on ONNX Release versions, see this page.
A variety of tools can be used to create ONNX models. Unless otherwise noted, please use the latest released version of the tools to convert/export the ONNX model. Most tools are backwards compatible and support multiple ONNX versions. Join this with the table above to evaluate ONNX Runtime compatibility.
| Tool | Recommended Version | Supported ONNX version(s) |
|---|---|---|
| PyTorch | Latest stable | 1.2-1.6 |
| ONNXMLTools | ||
| CoreML, LightGBM, XGBoost, LibSVM | Latest stable | 1.2-1.6 |
| ONNXMLTools | ||
| SparkML | Latest stable | 1.4-1.5 |
| SKLearn-ONNX | Latest stable | 1.2-1.6 |
| Keras-ONNX | Latest stable | 1.2-1.6 |
| Tensorflow-ONNX | Latest stable | 1.2-1.6 |
| WinMLTools | Latest stable | 1.2-1.6 |
| Paddle2ONNX | Latest stable | 1.6-1.9 |
| AutoML | 1.0.39+ | 1.5 |
| 1.0.33 | 1.4 |