NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3016 most downloaded on PyPI
Python bindings for the zxing-cpp barcode library
Last release 2 months ago
29 Jul 2026
Ships fairly regularly
a new release about every 6 months
Nearly every release is documented
notes for 10 of 10 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
11 releases · first in 2021
One column per quarter.
QRCode: improve Version 1 detection rate
Full Changelog: v3.1.0...v3.1.1
Silence deprecated-declarations warnings on Windows too by @x1sc0 in #1066
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.
Barcode::extra("UEC"))ZXingReadersample_images.zipCMAKE_INSTALL_LIBDIR to lib by @demondave in #1119ReadBarcodes operationThanks to all 'new' and 'old' sponsors, named here in random order:
Full Changelog: v3.0.2...3.1-rc1
Silence deprecated-declarations warnings on Windows too by @x1sc0 in #1066
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.
Barcode::extra("UEC"))CMAKE_INSTALL_LIBDIR to lib by @demondave in #1119ReadBarcodes operationThanks to all 'new' and 'old' sponsors, named here in random order:
Full Changelog: v3.0.2...3.1-rc1
MultiFormatWriter: deprecate use of old writer API
BarcodeFormat and BarcodeFormats implementation, with minor changes in API
All, AllReadable, AllRetail, etc.ToString(format), e.g. EAN-13 instead of EAN13Barcode, e.g. QRCode == QRCodeModel2, MicroQRCode, RMQRCodeBarcodeFormatsCreatorOptions now has a JSON (key-value pair) pair based options parameterZXingCpp.h headerBarcode::extra() API that returns symbology specific extra information as JSON string, e.g. "EcLevel"ZXingQt.h) with support for multiple barcodes and new writer APIZXingQtCamReader demo based on QWidgets with proper macOS supportvalidateOptionalCheckSum property replacing the Code39 and ITF specific onestryCode39ExtendedMode property (use new BarcodeFormat::Code39Ext)Plus a whole bunch of minor fixes and improvements by lots of people.
Thanks to all 'new' and 'old' contributors, named here in random order:
Full Changelog: v2.3.0...v3.0.0
Deprecate validateITFCheckSum , validateCode39CheckSum , returnCodabarStartEnd
DataBarLimited symbols (sponsored by EUREKAM)cmake -DZXING_C_API=ON)Barcode for Result which will be removed in 3.0BUILD_... prefix of cmake options with ZXING_...zxingcpp to zxingcpp.lib to fix issue with maven central publicationbytes as binary dataZXing::Version() function to query the library version at runtime (useful when dynamically linked)-DZXING_EXPERIMENTAL_API=ON)ImageView Barcode::symbol() propertyerase_if by @Doekin in #846validateITFCheckSum, validateCode39CheckSum, returnCodabarStartEndThanks a lot for all 'old' and 'new' sponsors, listed here in alphabetical order:
Full Changelog: v2.2.1...v2.3.0
Change package name from com.zxingcpp to simply zxingcpp (breaking change)
WARNING: I accidentally broke c++ ABI compatibility between 2.1.0 and 2.2.0. This is fixed here. There will likely be a 2.2.1 patch release. If you are packaging this software for distribution, you might want to skip packaging this version or make sure the above patch is applied in your build. For all the wrapper code, this has no impact whatsoever. Please join the discussion if you have comments regarding the situation.
This release is mostly about the Python, Android and iOS wrappers. The latter 2 have changed considerably to have an API that is more in line with each other and with the core c++ library. The changes will most likely break existing app code but set a proper foundation for the future.
Python:
Android:
close() the ImageProxy inside read() anymore, need to do that outside now (this breaks existing code)com.zxingcpp to simply zxingcpp (breaking change)iOS/macOS:
ZXIDecodeHints to ZXIReaderOptionsGeneral:
DecodeHints to ReaderOptions. The old name is still available for backward API compatibility but deprecated. Since the C-API and the Qt wrapper code are not officially part of the library, they changed without backward compatibility.ReadResult by @Sec-ant in https://github.com/zxing-cpp/zxing-cpp/pull/588DecodeHints.setMaxNumberOfSymbols() to C API by @siiky in https://github.com/zxing-cpp/zxing-cpp/pull/665Full Changelog: https://github.com/zxing-cpp/zxing-cpp/compare/v2.1.0...v2.2.0
I accidentally broke c++ ABI compatibility between 2.1.0 and 2.2.0. This is fixed here. This release is only of relevance for package maintainers caring about ABI stability of MINOR version changes according to semantic versioning. None of the wrappers are effected by this change and hence will not be released as 2.2.1.
DISCLAMER: Unfortunately, it turned out that the above mentioned fix for the c++ ABI can break your build if you have some kind of globally enabled pre-compiled-header setup, like apparently in libreoffice (see #685). In that case, either disable pre-compiled-headers or use 2.2.0.
Full Changelog: v2.2.0...v2.2.1
EDIT: added test_samples.tar.gz containing the test/samples/ subfolder. See this discussion.
Considerable performance improvements in linear symbol detection (up to 2x speedup in select use cases of ReadBarcodes)
ReadBarcodes)BUILD_EXPERIMENTAL_API cmake option (currently enabling DecodeHints::tryDenoise feature, see 9bcfdb3637714af9419bae99dd4c48a12625ab1e)
[EDIT: just noticed that this does not work, see 8202a4e13a65de3a2b459d121af7b02cc7d2e9b5]demo_*.html filesThanks a lot to @Sergio- and @sdcubber for their sponsorship in the past and also to the current sponsors
Full Changelog: https://github.com/zxing-cpp/zxing-cpp/compare/v2.0.0...v2.1.0
The most visible change from the client perspective is the removal of all formerly deprecated API, (almost) completing the 'cleanup'. Since I was way…
The most visible change from the client perspective is the removal of all formerly deprecated API, (almost) completing the 'cleanup'. Since I was way too slow with this release to implement a 'cleanish' SemVer release as discussed in #333, I decided to release this 2.0 with SONAME 3. A 3.0 release might bring the major version number back in sync with the SONAME.
Result::text())DecodeHints::textMode() and Result::text(TextMode) API to specify how bytes are rendered into text.TextMode (has been for most cases before, but not all)DecodeHits::tryInvert() feature to test for inverted symbols (white on black background)TextUtfEncoding helpers, not required anymore with UTF8 APIs for both reader and writerResult struct by about a thirdThanks also to all the 'old' ones! :)
Full Changelog: https://github.com/zxing-cpp/zxing-cpp/compare/v1.4.0...v2.0.0
…with v1.3.0 but contains quite a few additional deprecations. It still has SO number 1, which is as wrong as it was for release v1.3.0 and it is not A…
Note: this is an intermediary release on the way to 2.0. This code is (supposed to be) API compatible (via the ReadBarcode.h interface) with v1.3.0 but contains quite a few additional deprecations. It still has SO number 1, which is as wrong as it was for release v1.3.0 and it is not ABI compatible with 1.3 either. 2.0 will be basically 1.4 but with all deprecated API removed and the final fix for #333.
std::wstring based utf16 to std::string based utf8 results, use new ZX_USE_UTF8 macro to transition to the upcoming 2.0 APIResult::bytes() API, see #334 for a detailed background discussion.Result::contentType() API returning information about the type of content (like text vs. binary, etc.)Results::bytesECI()MergeStructuredAppendResults())Result::error() API with improved error handling, see also DecodeHints::returnErrors()ReadBarcode.h based APIs are supported from here on outread_barcode returns None if no symbol was found (might break existing code if not checked for None before)-bytes and -errors options in ZXingReadertryRotate for PDF417 symbolsFull Changelog: https://github.com/nu-book/zxing-cpp/compare/v1.3.0...v1.4.0
Most deprecated APIs from last release were removed (will likely break your build if you still have deprecation warnings with 1.2.0)
DISCLAIMER: a note for downstream package maintainers: as discussed in #333 this release should have been named 2.0 not 1.3. Please don't package this release until the issue is resolved.
std::vector<Result> ReadBardcodes(...) function. Does not work for Aztec, DataMatrix and Maxicode, yet.DecodeHints::tryDownscale, currently only enabled in the ReadBardcodes functionResult::symbologyIdentifier property (thanks to @gitlost)Result::lineCount and DecodeHints::minLineCount properties to improve reliability of 1D code readingResult::isMirrored property (works for QRCode, PDF417, DataMatrix)DecodeHints::assumeGS1This includes around 200 commits including those of 11 new contributors.
Full Changelog: https://github.com/nu-book/zxing-cpp/compare/v1.2.0...v1.3.0
deprecate the use of ResultMetadata, see ZXingReader.cpp as an example
There have been nearly 800 commits that touched about 10k lines of code since the last release.
Here are the highlights/major changes:
ResultMetadata, see ZXingReader.cpp as an exampleisPure detection for all 2D codesBarcodeFormat names (old ones still available but deprecated)pip installation (thanks to antoinehumbert)DataMatrix, Aztec and MaxiCode (thanks to gitlost)Note: The next release will drop support for a number of deprecated APIs. Please update your code and fix all deprecation warnings now.
Your coding agent can read these notes before it upgrades. Set up the MCP server →