libjpeg-turbo 2021 year in review

Skip to first unread message


Jan 3, 2022, 2:39:12 PM1/3/22
Project efforts in 2021 were focused on the release and maturation of
libjpeg-turbo 2.1, with the following new features introduced and

Improvements for Arm platforms:
- Complete overhaul of the Neon SIMD extensions (using compiler
intrinsics rather than GAS)
- Neon SIMD acceleration for progressive Huffman encoding
- Neon SIMD acceleration for Windows applications built with Visual
- Universal x86-64 + AArch64 binaries for macOS (to support Apple
Silicon Macs running macOS 11 "Big Sur" and later)

- x32 ABI support on Linux
- Improved Huffman encoding performance on x86 systems
- Fault-tolerant block smoothing when decompressing progressive JPEG images
- Integration with OSS-Fuzz and CIFuzz (to enable early detection of
security issues), as well as improving the OSS-Fuzz coverage of our code
base by about 3X
- Fault tolerance features in djpeg and jpegtran, to demonstrate how
applications that use the libjpeg API can guard against the exploits of
the progressive JPEG format described in this report:
- CMake package config files
- LZW-compressed GIF support in cjpeg and djpeg
- Additional lossless transform features in jpegtran
- AltiVec SIMD acceleration on FreeBSD/PowerPC systems
- Support for CHERI architectures

All of those features were made possible by funded development and
patronage, including your individual donations. I would like to
particularly thank our general sponsors, Google and Cendio AB, without
whom The libjpeg-turbo Project would not have survived the last few years.

Project priorities for 2022:
- Continuing to address security issues as they are discovered
- The TurboJPEG v3 API
(, which will
improve usability relative to the existing TurboJPEG API and close most
of the feature gaps relative to the libjpeg API, thus allowing most new
applications to avoid a 30-year-old API that was designed around
hardware limitations that are no longer relevant. The TurboJPEG v3 API
will also enable further OSS-Fuzz code coverage improvements
- Supporting both 8-bit and 12-bit JPEG images without recompiling
(, and
supporting 12-bit JPEG images in the TurboJPEG API

At the moment, The libjpeg-turbo Project has funding for about 140 hours
of labor in 2022, which is probably not sufficient to cover all of those
priorities. If your organization could benefit from one of those
proposed features or one of the other features marked "funding needed"
then the best thing you can do to ensure the long-term health of
libjpeg-turbo is to provide financial sponsorship for one of those
features. Please contact me directly through e-mail if you would like
to pursue that. Individual donations are certainly helpful and greatly
appreciated as well. Your individual donations in 2021 were the
equivalent of 2-3 months of general funding and proved critical to the
2.1.0 release. You can donate via PayPal at:

or Venmo @dcommander.

Thank you for making libjpeg-turbo possible for the last 12 years.

Wishing you a peaceful, healthy, and prosperous 2022,
Reply all
Reply to author
0 new messages