(none) imager-devel
/ help / lists / applications / search /

Imager 0.86 released

From: Tony Cook (
Date: Mon 31 Oct 2011 - 12:51:06 GMT

I haven't done a release notice here in a while.

Imager 0.86 has been released to CPAN.

The main change is a re-work of Imager's internal I/O object to
perform it's own buffering rather than the adhoc buffering done by two
file formats and the callback interface.

While I haven't benchmarked it in particular, it did speed up the TGA
tests on Win32 from about 30 seconds on my test box to about one


Imager 0.86 - 31 Oct 2011

 - improve error reporting for W32 tests

Imager 0.85_02 - 24 Oct 2011

Bug fixes:

 - eliminate unused i_gif_opts type (clean-up)

 - fix combine=0 fill color anti-aliasing on the double/sample path

 - make default text color non-transparent

 - apply the last of the Debian unforwarded spelling fixes

 - the log() method used its message parameter as a C level format

 - provide our own STRLEN typemap entry for older perls.

 - add extra ppport.h configuration to support older perls.

 - depend on Scalar::Util, since we use it and older perls don't have

 - 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

 - actually load the font rather than just adding it to the catalog on

 - Imager::Font->new now produces better error messages for the T1

 - the font has_chars() method now returns perl's true and false
   values in list context rather than integers, which should be more

 - the btm data structure used by the flood_fill code is now
   initialized more efficiently.

 - updated the Thanks list in README

 - check there's at least one coefficient for the convolution filter

 - make the APIRef synopsis ordering consistent, older versions of
   perl could order it differently.

 - 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.

 - fix library detection with MSVC

 - search a few more library directories, so EU::MM doesn't discard
   them. Hopefully fixes:

Imager 0.85_01 - 10 Oct 2011

 - 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 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

   - added several new I/O layer API functions.

   - fix the TGA performance problem, most noticably on Win32

   - TIFF now uses wrapper functions of the correct types to avoid casts

   - 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