Major Changes:
Note: The automatically created "Source Code" zip and tar.gz files are broken and can't be fixed (GitHub limitation regarding git submodules). If you need this, please download the attached zxing-cpp-<...>.zip/.tar.gz file.
New/Improved Symbologies
- Added decoder support for Telepen symbology
- Added decoder support for MicroPDF417 (sponsored by Allied Vision Konstanz GmbH)
- Greatly improved Aztec detector for large, non-flat symbols by evaluating internal timing patterns
- Greatly improved DataMatrix detector for large, non-flat symbols by evaluating internal alignment patterns
- Major improvement in QRCode detection of many small symbols in a single image
New/Improved wrappers
- Added a Go wrapper
- Switched from pybind11 to nanobind in Python wrapper code (enhanced IDE support, faster build times, smaller binaries, free-threaded Python support)
General
- Improved API documentation, now published under https://zxing-cpp.github.io/zxing-cpp/docs/latest
- Considerable performance improvements, especially on ARM chips (10%-40% in specific scenarios)
- ReedSolomon: generic implementation for prime and extended Galois Fields with improved performance
- Added support for "Unused Error Correction" meta data (
Barcode::extra("UEC"))
Minor Improvements and Bug Fixes
- AZHighLevelEncoder: fix mixed table '}' (0x7d) -> '~' (0x7e) by @gitlost in #1065
- Silence deprecated-declarations warnings on Windows too by @x1sc0 in #1066
- fix test/fuzz build by @kcwu in #1071
- oned: DataBar: catch std::out_of_range in DecodeExpandedBits by @kcwu in #1080
- [ODCode39Reader] Fix crash in DecodeCode32 due to unhandled exception by @kcwu in #1083
- DMDetector: guard empty DataMatrix gap list by @markusfisch in #1100
- Fix constructor parameter names in PointT by @MonkeybreadSoftware in #1097
- iOS: add formats getter/setter to ZXIReaderOptions by @hrasnam in #1094
- Add Windows resource file for version information by @davidhsing in #1101
- Fix #include bug by @KangLin in #1103
- ODCode128Reader: only process 1st/2nd position FNC1 once by @gitlost in #1113
- AZDecoder: allow lowercase AIM id (2nd position FNC1) per spec by @gitlost in #1114
- DMDecoder: restrict AIM id (2nd position FNC1) to alpha/2 digits by @gitlost in #1117
- Rust: add define in build.rs to set
CMAKE_INSTALL_LIBDIRtolibby @demondave in #1119 - Fix missing iterator header on Android by @umerov1999 in #1121
- Fix out-of-bounds access bugs in PDF417 decoder
- Fixed an endless loop in the QRDetector
- Fixed regression in BarcodeFormat based filtering during
ReadBarcodesoperation - cosmetic improvements to ZXingQtCamReader demo app
- modernized Android Demo App code
Sponsors
Thanks to all 'new' and 'old' sponsors, named here in random order:
New Contributors
- @x1sc0 made their first contribution in #1066
- @kcwu made their first contribution in #1071
- @hrasnam made their first contribution in #1094
- @davidhsing made their first contribution in #1101
- @KangLin made their first contribution in #1103
- @demondave made their first contribution in #1119
- @umerov1999 made their first contribution in #1121
Full Changelog: v3.0.2...3.1-rc1