Releases: randy408/libspng
v0.7.4
Fixes
- CMake static build fixes - @coeps-github
- Added CMake package support - @johannesschaeufele
- Fix Meson build with clang-cl - @neheb
- Fix invalid decode error for zero-length EXIF chunks
v0.7.3
Fixes
- Fixed includes when used as CMake subproject (@benediktschmitt)
- Make finding zlib in-tree easier for CMake (@michaelmalonenz)
- Fixed Meson build under mingw32 (@neheb)
- Fixed -Wshadow warning (@Loobinex, @xtremeqg)
- Fixed references, typos in documentation (@ocpalo, @danieljennings, @timgates42)
- Other minor fixes and cleanup
Other
- Updated Meson zlib wrap to v1.2.13
- Removed
debian
subdirectory with outdated files
v0.7.2
Fixes
- Re-enabled ARM NEON optimizations for indexed color images
- Fixed encoder options set with
spng_set_option()
not being respected in some cases - Fixed
spng_get_png_buffer()
not setting an error code in some cases - Fixed encoder heap overflow with specially crafted images (#196)
- Fixed 4GB progressive decode/encode limitation on 32-bit (#198)
- Updated error string for
SPNG_EBUFSIZ
New
- Decoder now exposes an estimate of image compression level through
SPNG_IMG_COMPRESSION_LEVEL
, see Decode options - Added documentation for all decode and encode options, added notes on encoder configuration
Other
- Added encode fuzzer to ensure robustness of code;
Fuzzer will run on PR's and continuously on OSS-Fuzz alongside the decode fuzzer - Updated example code
v0.7.1
v0.7.0
This release is funded by NLNet!
To support further development consider sponsoring the project on OpenCollective.
New
-
Encode support with interlacing for all bit depths and color types
-
Progressive image encoding API
-
Adaptive filtering, custom filter selection
-
Chunk write support for all standard chunks including
oFFs
andeXIf
extensions -
Added functions for configuring the encoder, decoder:
spng_set_option()
,spng_get_option()
-
Added options to configure zlib, chunk count limit and handling of unknown chunks
-
Added
spng_get_gama_int()
,spng_set_gama_int()
,spng_decode_chunks()
-
Read and write support for unknown chunks
Decoder
-
Filter- and palette expansions optimizations using ARM NEON intrinsics, improved decode performance for common use cases:
-
~30% faster with true color and 19% faster with indexed color images (details)
-
NEON optimizations are enabled by default on ARM64
Changes
-
Unknown chunks are now ignored by default, this can be configured with
spng_set_option()
-
Introduced a default chunk count limit of 1000, this is independent of other limits
Changes - v0.7.0-rc3
- Encoder no longer writes to an internal buffer by default, the
SPNG_ENCODE_TO_BUFFER
option must be set
Fixes
-
bKGD, tRNS chunk high bits are now preserved
-
Force cdecl calling convention for allocator callbacks on Windows (@danielkrupinski)
Improved
-
Expanded testsuite to verify chunk data, encoding of PNG's against libpng
-
Expanded documentation, added libpng migration guide
v0.7.0-rc3
This release is funded by NLNet!
This is a release candidate, the API may change for the stable release!
Share your feedback on the API here or on Gitter!
New
-
Encode support with interlacing for all bit depths and color types
-
Progressive image encoding
-
Encode to a stream, file or buffer managed by the library
-
Low overhead adaptive filtering, custom filter selection
-
Chunk write support for all standard chunks including
oFFs
andeXIf
extensions, unknown chunks -
ARM NEON decoder optimizations (since v0.7.0-rc2)
-
Added
spng_get_png_buffer()
, this function returns the encoded PNG buffer if no output stream or file is set. -
Added functions for configuring the encoder, decoder:
spng_set_option()
,spng_get_option()
-
Added
location
field tostruct spng_unknown_chunk
, this specifies the relative location of the chunk (new since v0.7.0-rc1) -
Added
spng_get_gama_int()
,spng_set_gama_int()
-
Added
spng_encode_chunks()
Changes
- Unknown chunks are now ignored by default, this can be configured with
spng_set_option()
.
Fixes
- bKGD, tRNS chunk high bits are now preserved
Improved
- Expanded testsuite to verify chunk data, encoding of PNG's against libpng
v0.7.0-rc2
This release is funded by NLNet!
This is a release candidate, the API may change for the stable release!
Share your feedback on the API here or on Gitter!
New
-
Filter- and palette expansions optimizations using ARM NEON intrinsics, improved decode performance for common use cases:
-
~30% faster with true color and 19% faster with indexed color images (details)
-
The new optimizations are enabled by default on ARM64
v0.7.0-rc1
v0.6.3
This release is funded by NLNet!
Improved
-
Improved decoder robustness, malformed images are less likely to cause a decoder error
-
Expanded documentation on decoder error handling
-
Expanded testsuite, code cleanups
-
Fixed MSVC warnings
Upcoming features
The next minor release is v0.7.0 and will include:
-
Unknown chunk support
-
ARM NEON optimizations
-
Encode support
v0.6.2
New
- The CRC action
SPNG_CRC_DISCARD
is now supported
Bugfixes
- Fixed handling of
SPNG_CTX_IGNORE_ADLER32
- Introduced a workaround for a miniz bug that can lead to an infinite loop - #150
- Fixed
spng_get_text/splt()
not reading chunks before settingn_text
/n_splt
Changes
- Dropped use of
fmin()
for DJGPP compatibility - Dropped use of
#warning
in favor of#pragma message
spng_get_<chunk>()
functions will read chunks before checking all arguments
Changes to the default behavior were made for libpng compatibility:
- Changed the default CRC action for ancillary chunks from
SPNG_CRC_ERROR
toSPNG_CRC_DISCARD
- Setting
SPNG_CRC_USE
now also ignores checksums in DEFLATE streams - Ancillary chunks with zlib data errors are discarded by default
- Ignore sBIT chunk length for truecolor alpha images - #130
- Ignore bKGD chunk length for truecolor (alpha) images - #156
Known issues
- Non-critical errors may still cause an image to not load - #132