| Imager 0.86
- improve error reporting for W32 tests
- eliminate unused i_gif_opts type (clean-up) RT #69245
- fix combine=0 fill color anti-aliasing on the double/sample path RT #71309
- make default text color non-transparent RT #71469
- apply the last of the Debian unforwarded spelling fixes RT #70656
- the log() method used its message parameter as a C level format string. RT #71653
- provide our own STRLEN typemap entry for older perls. RT #71641
- add extra ppport.h configuration to support older perls.
- depend on Scalar::Util, since we use it and older perls don't have it.
- add overloaded eq to Imager::Matrix2d, since older perls don't seem to synthesize it from overloaded "".
- use T1_StrError() for error messages on modern libt1 RT #69879
- actually load the font rather than just adding it to the catalog on creation.
- Imager::Font->new now produces better error messages for the T1 engine.
- the font has_chars() method now returns perl's true and false values in list context rather than integers, which should be more efficient. RT #69158
- the btm data structure used by the flood_fill code is now initialized more efficiently. RT #68994
- updated the Thanks list in README RT #71607
- check there's at least one coefficient for the convolution filter RT #68993
- make the APIRef synopsis ordering consistent, older versions of perl could order it differently. RT #71675
- we rely on Config.pm's d_vsnprintf as to whether we use vsnprintf/snprintf, which is defined in the Win32 Config.pm even though it only has _ prefixed versions of these. Define our own prefixed names on Win32. RT #71642
- fix library detection with MSVC
- search a few more library directories, so EU::MM doesn't discard them. Hopefully fixes: RT #71643
- add simple tests for the Imager::Test test_image generators
io_glue I/O buffering re-work:
- reorganize io_glue to do it's own buffering by default
- the unbuffered functions are available as i_io_raw_read() (or raw_read() from perl) etc but are not recommended for typical use.
- use the new i_io_peekn() when checking for file magic to avoid seek, allowing Imager to detect the file type and read the file from an unseekable stream (for formats that don't use random access)
- added several new I/O layer API functions.
- fix the TGA performance problem, most noticably on Win32 RT #70037
- TIFF now uses wrapper functions of the correct types to avoid casts RT #69912
- the callback IO object did its own buffering, controlled by the maxbuffer parameter supplied to the read() and write() methods. This buffering has been removed, to avoid redundancy with the common io_glue buffering. This also avoids a bug in that code which could rarely pass a zero length to the read callback and then panic about the result.
- the callback IO object now tests the result of calling the close callback, which should return true for success.
- the PNM reader did its own buffering. This buffering has been removed to avoid redundancy with the common io_glue buffering.
- previously the read handlers for fd and callback I/O layers would call the underlying interface (POSIX read or your supplied callback) until it filled the buffer. It now only makes one call.
- added public constructors for I/O layer objects (see Imager::IO)
- all core file handlers now use the i_io_foo() wrappers to gain access to buffered I/O rather than calling the I/O layer callbacks directly.
- all core file handlers now check for error on close.
- Backward compatibility: if you hava custom file handlers, you can use i_io_write() etc since they're available as macros in older versions of Imager.
- eliminate the final remnants of io_glue_commit_types().
- bump IMAGER_API_VERSION, since the above may break assumptions.
- removed the long unused i_gen_reader() and i_gen_writer() utility functions.