06 February 2019
Version 0.9.2 released
Version 0.9.2 is a bugfix release.
- Fix code generator to output the table correctly. Fixes #28.
- Ensure the data is aligned when using slice-by. Fixes #24.
- Fixed some spellings. Thanks to Jeff Widman.
09 September 2017
Version 0.9.1 released
Version 0.9.1 is a bugfix release.
- Added checks about possibly unsuitable polynomials. Use the
--force-poly option to override the error message.
setup.py script to install pycrc on the system, if desired.
- Completely rewritten the code generator back-end. The new back-end is more flexible and allows for a better optimisation of the generated expressions.
- Moved the python code under the pycrc directory and changed how the pycrc sub-modules are included. Before one would write
import crc_xxx, now one would write
- New license for the documentation: Creative Commons Attribution-Share Alike 4.0 Unported License.
- Fixed binary files handling with Python 2.7. Fixes #11. Thanks to James Bowman.
- Fixed some spelling. Thanks to Frank (ftheile) and ashelly.
- Fixed Header Guard generation. Don't use underscores to start the header guard name. Thanks to Andre Hartmann.
06 January 2016
Version 0.9 released
Version 0.9 is a feature release.
- Added a new option
- Suppressed the
crc_reflect function where not needed. Addresses part of #8. Thanks to Craig McQueen.
- Allow strings with values greater than 0x80 in
- Fixed a bug in CRC when the width is less than 8. Thanks to Steve Geo.
- Fixed the initial value of the 16-bit CCITT algorithm. Renamed the model from
crc-16-ccitt. Fixes #7. Thanks to Craig McQueen.
- Simplified the implementation where Width is less than 8 bits.
- Run the code through
--slice-by option is a major new feature.
It enables a variant of the table-driven algorithm that operates on 32 bits of data or more at a time rather than 8 bits.
This can dramatically speed-up the calculation of the CRC, at the cost of increased code and data size.
Note: this option is still experimental and not well-tested.
Check your results and please raise bugs if you find problems.
Also not all CRC models can be used currently with the
--slice-by option. This will change in future.
Compliance with PEP 0008 required a change in the python API.
Member variables of classes should be in lowercase and not in CamelCase.
31 August 2015
Version 0.8.3 released
Version 0.8.3 is a minor bugfix release.
- pycrc has a new homepage: pycrc.org
- Removed the experimental
--bitwise-expression option to facilitate restructuring of the code.
- Applied some minor optimisations to the generated table-driven code.
- Changed the signature of the
crc_update() function: the data argument is now a pointer to void to improve compatibility with C++.
- Added a AUTHORS file. If I have forgotten to mention someone please don't hesitate to send a mail.
- Upgraded documentation to DocBook 5.
In an effort to move away from sourceforge, a few changes in the organisation of pycrc:
the sourceforge issue tracker is now closed and people are encouraged to use the
All past releases can be downloaded from the pycrc news page.
04 December 2014
Version 0.8.2 released
Version 0.8.2 is a bugfix release.
- Removed warning about even polynomials. As Lars Pötter rightly pointed out, polynomials may be even.
- Updated the generated code to cope with big Widths (>32 bits) on 32 bit processors.
- The table-driven code for polynomials of width < 8 using a table index width < 8 was producing a wrong checksum. Thanks to Radosław Gancarz.
- Fixed a typo in the documentation. Thanks to Andreas Nebenfuehr.
17 May 2013
Version 0.8.1 released
Version 0.8.1 is a feature release.
- Remove obsolete and unused 'direct' parameter. Thanks to Matthias Urlichs.
- Don't recurse into main() when an unknown algorithm is selected. Thanks to Matthias Urlichs.
- Fixed a bug in the handling of hex strings in Python3. Thanks to Matthias Kuehlewein.
- The input to the CRC routines can now be bytes or strings.
- Re-organised the symbol table.
qm.py from https://github.com/tpircher/quine-mccluskey.
04 January 2013
Version 0.8 released
Version 0.8 is a bugfix release.
- Added the experimental bitwise-expression generator target.
- Allow to specify the --include option multiple times.
- Completely revisited and reworked the documentation.
- Allow to abbreviate the names of the algorithms.
- Minor documentation changes.
The bitwise-expression generator is an experimental feature, which might one day
be almost as fast as the table-driven code but much smaller.
At the moment the generated code is bigger and slower than any other algorithm,
so use at your own risk.
20 October 2012
Version 0.7.11 released
Version 0.7.11 is a minor bugfix release.
- Improved Python3 compatibility. pycrc now requires Python 2.6 or later.
- Fixed a wrong
check value of the crc-64-jones model.
- Don't use
snprintf() with c89 code, changed to
- Rewrote the regression test script in Python.
13 February 2012
Version 0.7.10 released
Version 0.7.10 is a minor feature and bugfix release.
- Added the CRC models crc-12-3gpp, crc-16-genibus, crc-32-bzip2 and crc-64-xz.
- Fixed bad-looking generated C code. Thanks to "intgr" for the fix.
- Fixed a mistake in the man page that still used the old model name crc-32mpeg instead of crc-32-mpeg. Thanks to Marek Erban.
- Smaller code cleanups.
08 December 2011
Version 0.7.9 released
Version 0.7.9 is a minor bugfix release.
- Fixed a bug in the generated C89 code that included
stdint.h. (This time for real!)
- Fixed a bug in the generated C89 code when using a 64 bit CRC.
--verbose option made pycrc quit without error message.
01 November 2011
pycrc repository on GitHub
pycrc has now a repository on GitHub.
Feel free to fork and to contribute back!
10 July 2011
Version 0.7.8 released
Version 0.7.8 is a minor bugfix release.
- The C99 header file
stdint.h is no more included in C89/ANSI code.
- Found a more helpful name of the included pycrc header file when generating C code to
stdout. Thanks to Lorenzo Cappelletti.
- Removed an unused variable in the option parser.
11 February 2011
Version 0.7.7 released
Version 0.7.7 is a minor bugfix release.
- Substituted the deprecated function
int(). Closes issue 3136566. Thanks to Tony Smith.
- Updated the documentation with a Windows-style call of the python interpreter.
- Fixed a few coding style issues found by pylint and pychecker.
21 October 2010
Version 0.7.6 released
Version 0.7.6 is a minor bugfix release.
- Fixed a minor bug in the command line parsing of the generated main function.
- Use integer division for Python3 compatibility.
- Complete rewrite of the internal macro language and code generator.
28 June 2010
Added pycrc tutorial
I have added a Tutorial how to use the generated source code in your program.
28 March 2010
Version 0.7.5 released
Version 0.7.5 is a feature enhancement and bug fix release:
- The table-driven algorithm can handle widths that are not byte-aligned as well as widths less than 8. This feature was heavily inspired by a similar feature in Danjel McGougan's Universal Crc.
- Removed half-baked and confusing
--direct option. Closes issue 2938846.
- Code clean-up; the generated C code should no more generate warnings about unused variables.
Version 0.7.5 introduces a C/C++ API change: this version introduces the
additional (internal) parameter Download as:
crc_shift in the
crc_cfg_t structure. This
variable is used by the table-driven algorithm when the width is not defined
during code generation. This variable is zero if the width is ≥ 8.
24 January 2010
Version 0.7.4 released
Version 0.7.4 is a feature enhancement and bug fix release:
- Set xmodem parameters equal to zmodem parameters.
- Changed the
xor-in value of the crc-64-jones model.
- Added crc-16-modbus model. Closes issue 2896611.
- pycrc now writes a warning message if an even polynomial is used.
- Fix for unused variable
argv. Closes issue 2893224. Thanks to Marko von Oppen.
25 October 2009
Version 0.7.3 released
Version 0.7.3 is a small feature enhancement release:
- a new CRC model, crc-64-jones was added. Thanks to Waterspirit.
- crc-32mpeg was renamed to crc-32-mpeg.
10 October 2009
Today pycrc has passed the threshold of 10,000 downloads.
We hope as many people have enjoyed working with pycrc.
Thanks to everyone who has contributed!
30 September 2009
Version 0.7.2 released
Version 0.7.2 is a small bugfix release:
- The result of the Python table-driven code was not being evaluated at all. Thanks to Ildar Muslukhov.
05 April 2009
Version 0.7.1 released
Version 0.7.1 is only a small feature enhancement release:
- a new CRC model, crc-32mpeg (now crc-32-mpeg) was added. Thanks to Thomas Edwards.
27 February 2009
Version 0.7 released
Version 0.7 of pycrc fixes a small bug and adds two new command line options:
--direct option. Now it is possible to select 'direct' and 'not direct' version of the algorithm.
--check-hexstring option. With this option it is possible to check a hexadecimal number on-the-fly. Closes issue 2545183. Thanks to Arnim Littek.
- added a check for extra arguments on the command line. Previously, additional arguments were silently ignored. Closes issue 2545185. Thanks to Arnim Littek.
11 December 2008
Version 0.6.7 released
Version 0.6.7 of pycrc is just a small bugfix release:
- The code should run on both Python 2.x and 3.0.
- Fixed a bug that gave wrong results on x64 platforms.
- Fixed a bug that raised an exception when an unknown model was selected.
06 June 2008
Version 0.6.6 released
Version 0.6.6 of pycrc is just a small bugfix release:
- Fixed a bug in the
print_params() function. Closes issue 1985197. Thanks to Artur Lipowski.
- Using Creative Commons license for the documentation.
02 March 2008
Version 0.6.5 released
Version 0.6.5 of adds a few new CRC models (dallas-1-wire, r-crc-16, thanks to "raimondo") and contains the following changes:
- fixed a problem with the generated code for bit-by-bit-fast algorithms. Thanks to Hans Bacher.
- added extern "C" declaration to the generated C header file. Thanks to Nathan Royer.
05 December 2007
Version 0.6.4 released
Version 0.6.4 fixes the following bugs:
- Fixed issue 1843774: The code does not work for multiple calls to
13 October 2007
Version 0.6.3 released
Version 0.6.3 of adds a few new CRC models (crc-5, crc-15, crc-16-usb, crc-24, crc-64) and fixes the following bugs:
- Fixed issue 1812894: portability problems in the generated code. Thanks to Helmut Bauer.
- Fixed issue 1794343:
--check-file works now with
--width < 8.
- Fixed issue 1794344: unnecessary restriction on the width when using the bit-by-bit-fast algorithm.
25 August 2007
Version 0.6.2 released
Version 0.6.2 of pycrc was released today.
- Fixed issue 1781637: The parameter to
--check-string is ignored.
- Fixed issue 1727128: Generated Table driven code is ugly/not elegant.
12 August 2007
Version 0.6.1 released
Version 0.6.1 of pycrc was released today.
This is a bugfix and code cleanup release. No new features have been added.
- Bugfix in the source code generator for C89:
Compilation error due to mismatch of parameters in the
- Changes related to 919107:
Code generator includes
reflect() function even if not needed.
- Fixed a typo in the C89 source code generator.
Thanks to Helmut Bauer
- Documentation tidy-up.
- Previously deprecated command line options have been deleted in this version.
21 May 2007
Version 0.6 released
Version 0.6 of pycrc was released today.
- This release contains a major rewrite of the code generation back-end and a
re-organisation of the source code.
- With version v0.6 the license has changed from (a modified) GPLv2 to MIT. This
makes it hopefully easier to deploy the source code in third-party programs.
- There are also several other minor improvements.
25 March 2007
Version 0.5 released
Version 0.5 of pycrc was released today.
This release includes minor fixes and corrections. No new features are added.
26 January 2007
Version 0.4 released
Version 0.4 of pycrc was released today.
- This version calculates the checksum of files and new parameter sets are added.
- The generated source code is now documented in Doxygen style.
14 January 2007
Version 0.3 released
Version 0.3 of pycrc was released today. This is the first public release. Although it is in a early beta stage, most of
the main functionality is implemented.