ONNX v1.21.0 is now available with exciting new features! We would like to thank everyone who contributed to this release!
Please visit onnx.ai to learn more about ONNX and associated projects.
What's Changed
Breaking Changes and Deprecations
Spec and Operator
- Revert opset 25 version bump by @titaiwangms in #7441
- Add 2 bit support to onnx by @vraspar in #7446
- Bump opset version to 26 by @titaiwangms in #7469
- Remove enforcement to node determinism attribute by @titaiwangms in #7473
- Export functions by @cyyever in #7505
- [Reland] Cumulative Product Operator by @titaiwangms in #7400
- Fix Div integer semantics to use trunc division by @MagellaX in #7585
- Clarify DFT behavior when inverse=True and onesided=True (irfft) by @simonbyrne in #7574
- Specify 0/0 case in LpNormalization by @titaiwangms in #7618
- Clarify NonMaxSuppression IoU threshold uses strict comparison by @Copilot in #7619
- Relax model domain requirement from MUST to SHOULD by @Copilot in #7668
- Add BitCast operator for bitwise type reinterpretation by @Copilot in #7527
Reference Implementation
- Fix CenterCropPad: compare target shape with dimension, not axis index by @Copilot in #7522
- Vectorize sigmoid op implementation by @justinchuby in #7556
- Fixing verbose logging error at verbose=3 for reference_evaluator by @rothej in #7597
- Clean up reference evaluator tests by @VedantMadane in #7684
Utilities and Tools
- Add version check for test_executable_permission_check by @andife in #7511
- Fix index out of bounds in version converter adapters by @rothej in #7493
- Fix default attribute values in shape inference by @matteosal in #7602
- Fix Softmax-family shape inference for scalar inputs by @MagellaX in #7625
- Fix/merge models value info by @MagellaX in #7608
- Add version converter adapters for opset 15, 16, 17, 18 by @alexkvitkevich in #7677
- shape_inference: Validate expected size of scalar tensor in ParseData by @skottmckay in #7675
Build, CI and Tests
- Force labels in PRs by @titaiwangms in #7442
- Fix reuse by @andife in #7463
- Change precedence from 'aggregate' to 'override' for generating scripts by @andife in #7458
- a) 3.14-dev -> 3.14, b) reduce template injection thread by @andife in #7461
- Export register functions by @cyyever in #7496
- Fix Python executable detection in virtual environments by @aoguntayo in #7485
- Merged Release Workflows for Windows by @Raghul-M in #7509
- Bump nanobind to 2.10.2 by @cyyever in #7479
- Fix freebsd build by @cyyever in #7518
- Revert ONNX CMake changes by @cyyever in #7515
- Export functions used in PyTorch by @cyyever in #7524
- Export protobuf symbols by @cyyever in #7525
- Fix CMAKE_ARGS parsing for windows compatibility by @hmaarrfk in #7532
- Replace deprecated github action "test-results-action" by @andife in #7552
- Wheels for python 3.14t by @andife in #7558
- Clarify permissions comment and update dependencies install by @andife in #7577
- Disable credential persistence in checkout action by @andife in #7578
- Update create_release.yml, different label options by @andife in #7081
- Fix "code injection via template expansion" (build mode in workflow) by @andife in #7584
- Add GitHub Actions workflow for dependency review by @andife in #7579
- Simplify conditions in workflow by @andife in #7588
- Add renovate for updating docker images by @andife in #7572
- CMake: improve nanobind discovery for offline builds by @MagellaX in #7530
- Build option for OpenSSF Compiler Hardening Flags by @andife in #7601
- Improve debugging for pr_checks by @andife in #7623
- Fixes pr checks by @andife in #7630
- improve condition in github workflows by @andife in #7658
- Add ONNX_INSTALL option to disable CMake installations by @Shadows-of-Fire in #7653
- fix windows build ; upload by @andife in #7727
- Update VERSION_NUMBER to rc4 by @andife in #7759
- Update VERSION_NUMBER to final release version by @andife in #7772
Documentation
- Update RELEASE-MANAGEMENT.md (time for release cut 1.21) by @andife in #7466
- Update rc version publish process by @andife in #7440
- Fix typos by @cyyever in #7478
- Clarify numpy version dependencies in requirements by @andife in #7488
- Add license information to check_pr_label.yml by @andife in #7489
- Deduplicate operator doc strings to reduce binary size by @MagellaX in #7531
- Clean up reference evaluator tests (#7098) by @sumit2303 in #7654
- fix wrong cmake version in Update RELEASE-MANAGEMENT.md by @andife in #7662
- Revise security vulnerability reporting guidelines by @andife in #7674
- update version in main for next release and also add missing version … by @Sunny-Anand in #7680
- [Cherry-Pick] Merge commits from main for security fixes by @Sunny-Anand in #7688
- update release branch version to 1.21.0rc1 by @Sunny-Anand in #7714
- Cherry pick commits into the release branch by @Sunny-Anand in #7718
- update release to rc2 by @Sunny-Anand in #7732
- Cherry pick commit by @Sunny-Anand in #7740
- update version to rc3 by @Sunny-Anand in #7743
Other Changes
- Bump main to v1.21.0 by @titaiwangms in #7437
- Bump ruff from 0.13.3 to 0.14.3 by @dependabot[bot] in #7447
- Bump actions/github-script from 7 to 8 by @dependabot[bot] in #7452
- Bump actions/upload-artifact from 4.6.2 to 5.0.0 by @dependabot[bot] in #7457
- Bump actions/download-artifact from 5.0.0 to 6.0.0 by @dependabot[bot] in #7451
- Bump reviewdog/action-cpplint from 1.10.0 to 1.11.0 by @dependabot[bot] in #7456
- Bump reviewdog/action-misspell from 1.26.3 to 1.27.0 by @dependabot[bot] in #7449
- Bump prefix-dev/setup-pixi from 0.9.1 to 0.9.2 by @dependabot[bot] in #7455
- Bump editorconfig-checker from 3.4.0 to 3.4.1 by @dependabot[bot] in #7448
- Bump stefanzweifel/git-auto-commit-action from 6.0.1 to 7.0.0 by @dependabot[bot] in #7450
- Bump fsfe/reuse-action from 5.0.0 to 6.0.0 by @dependabot[bot] in #7453
- Bump github/codeql-action from 3.30.6 to 4.31.2 by @dependabot[bot] in #7454
- supply chain security => adapt dependabot.yml by @andife in #7459
- Add persist-credentials option to checkout action by @andife in #7460
- Enable conversion from DataTypeSet into set[str] by @cyyever in #7481
- Update entrypoint.sh for improved syntax and checks by @andife in #7483
- Require ml_dtypes>=0.5.4 on s390x by @stliibm in #7484
- Fix cpplint warnings by @cyyever in #7482
- Remove empty line from requirements.txt by @andife in #7492
- Add copyright and SPDX license to workflow by @andife in #7490
- Bump ruff from 0.14.3 to 0.14.6 by @dependabot[bot] in #7501
- Bump actions/checkout from 5.0.0 to 6.0.0 by @dependabot[bot] in #7500
- Bump zizmorcore/zizmor-action from 0.2.0 to 0.3.0 by @dependabot[bot] in #7499
- Bump ZedThree/clang-tidy-review from 0.21.0 to 0.22.2 by @dependabot[bot] in #7497
- Bump clang-format from 21.1.2 to 21.1.6 by @dependabot[bot] in #7503
- Bump types-protobuf from 6.30.2.20250822 to 6.32.1.20250918 by @dependabot[bot] in #7353
- Add sanity checks for CLI arguments in entrypoint.sh by @andife in #7491
- Bump prefix-dev/setup-pixi from 0.9.2 to 0.9.3 by @dependabot[bot] in #7498
- Add a tool to dump ONNX schema into yaml files by @cyyever in #7480
- More clang-tidy fixes by @cyyever in #7486
- Bump actions/checkout from 6.0.0 to 6.0.1 by @dependabot[bot] in #7542
- Bump actions/stale from 10.1.0 to 10.1.1 by @dependabot[bot] in #7545
- Bump github/codeql-action from 4.31.2 to 4.31.9 by @dependabot[bot] in #7543
- Bump actions/upload-artifact from 5.0.0 to 6.0.0 by @dependabot[bot] in #7548
- Bump actions/download-artifact from 6.0.0 to 7.0.0 by @dependabot[bot] in #7541
- Bump actions/setup-python from 6.0.0 to 6.1.0 by @dependabot[bot] in #7547
- Bump codecov/codecov-action from 5.5.1 to 5.5.2 by @dependabot[bot] in #7544
- Bump ZedThree/clang-tidy-review from 0.22.2 to 0.22.3 by @dependabot[bot] in #7546
- Bump stefanzweifel/git-auto-commit-action from 7.0.0 to 7.1.0 by @dependabot[bot] in #7549
- Bump mypy from 1.18.2 to 1.19.1 by @dependabot[bot] in #7540
- Bump clang-format from 21.1.6 to 21.1.8 by @dependabot[bot] in #7538
- Bump ruff from 0.14.6 to 0.14.10 by @dependabot[bot] in #7537
- remove cpplint rule "-readability/todo" from lint.yml by @andife in #7554
- Fix cpplint copyright warnings by @andife in #7553
- Update pixi.lock file by @cbourjau in #7555
- Update RELEASE-MANAGEMENT.md by @andife in #7559
- fix possible "code injection via template expansion" by @andife in #7576
- More tidy fixes by @cyyever in #7519
- Fix zizmor findings by @andife in #7581
- Improve lint and cpplint fixes by @andife in #7583
- Create release-verification.md by @andife in #7595
- Update renovate config by @andife in #7600
- Keep non-tensor type information in IR by @take-cheeze in #7592
- Fix create_releases.yml by @andife in #7605
- Ignore .pb files from github language classification by @justinchuby in #7606
- lint copyright header by @andife in #7611
- IR: Add API to generate unique name for consistency by @take-cheeze in #7609
- Update RELEASE-MANAGEMENT.md by @andife in #7613
- Fix pr_checks by @andife in #7607
- add missing includes (cpplint highlighted) by @andife in #7621
- Fix cpplint warnings by @cyyever in #7622
- fix cpplint findings by @andife in #7624
- Checks a filename is not a symlink by @xadupre in #7628
- Rename pr_checks_comment.yml to pr_checks_post.yml by @andife in #7632
- Bump ZedThree/clang-tidy-review from 0.22.3 to 0.23.0 by @dependabot[bot] in #7638
- Bump actions/setup-python from 6.1.0 to 6.2.0 by @dependabot[bot] in #7641
- Bump actions/checkout from 6.0.1 to 6.0.2 by @dependabot[bot] in #7637
- Bump actions/download-artifact from 4.1.9 to 7.0.0 by @dependabot[bot] in #7640
- Bump editorconfig-checker from 3.4.1 to 3.6.0 by @dependabot[bot] in #7636
- Bump zizmorcore/zizmor-action from 0.3.0 to 0.4.1 by @dependabot[bot] in #7639
- Bump actions/upload-artifact from 4.6.1 to 6.0.0 by @dependabot[bot] in #7642
- Bump ruff from 0.14.10 to 0.14.14 by @dependabot[bot] in #7635
- Bump types-protobuf from 6.32.1.20250918 to 6.32.1.20251210 by @dependabot[bot] in #7539
- Fix wrong use of compile options introduced for hardening (Update Utils.cmake) by @andife in #7633
- RFC template for large proposals by @cbourjau in #7594
- Fix cpplint warnings by @cyyever in #7626
- Verifies an external file is valid when saving an external tensor by @xadupre in #7627
- Apply C++17 features and remove ANDROID in onnx/string_utils.h by @cyyever in #7649
- fix cpplint issues by @andife in #7650
- remove thirdparty by @andife in #7655
- Add Copyright Header by @andife in #7656
- Update CODEOWNERS by @andife in #7669
- Update release logistics instructions in OnnxReleases.md by @andife in #7676
- IR: Fix use after free in eraseInitializerAndInput by @take-cheeze in #7614
- [rel-1.21.0] Cherry-pick bug and security fixes for RC4 (#7737, #7751) by @Sunny-Anand in #7758
New Contributors
- @vraspar made their first contribution in #7446
- @aoguntayo made their first contribution in #7485
- @Raghul-M made their first contribution in #7509
- @hmaarrfk made their first contribution in #7532
- @rothej made their first contribution in #7493
- @MagellaX made their first contribution in #7531
- @simonbyrne made their first contribution in #7574
- @sumit2303 made their first contribution in #7654
- @alexkvitkevich made their first contribution in #7677
- @VedantMadane made their first contribution in #7684
Full Changelog: v1.20.1...v1.21.0