X-Git-Url: http://git.imager.perl.org/imager.git/blobdiff_plain/7ef6338c1c5c68a27228a3fc55a4fb3a8e61f385..62adede52b9074b0842981ab33e6942fc36eaa13:/Changes diff --git a/Changes b/Changes index 79b475b3..caf6e6da 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,422 @@ Imager release history. Older releases can be found in Changes.old +Threads work + - mutex for gif + - mutex for tiff + + - improved thread safety + - the internal error stack and log file handle are now in a per-thread + context object + - JPEG now captures IPTC information in a thread-safe way + - avoid globals where possible for warning capture in libtiff + + +Imager 0.92 - 14 Aug 2012 +=========== + + - giflib 4.2 eliminates the GIF_LIB_VERSION macro, handle that + correctly for both probing and runtime. + https://rt.cpan.org/Ticket/Display.html?id=77672 + + - allow building JPEG/imexif.c on C89 compilers. + + - allow building GIF/imgif.c on C89 compilers. + +Imager 0.91 - 4 Jun 2012 +=========== + +Bug fixes: + + - The size of rotated images is no longer rounded up so aggressively. + Added rounding to the linear interpolation done for rotate() and + matrix_transform() for 1 and 3 channel 8-bit images. + Adjusted the two tranlate matrices used to build the final rotation + matrix to use the distance between the outlier pixels rather than + the pixel dimensions (ie. dimension-1). + With all of this the output of rotate(degrees => 270) on an 8-bit + image exactly matches the output of rotate(right => 270). + https://rt.cpan.org/Ticket/Display.html?id=77063 + +Other changes: + + - eliminate the old IIM_new(), IIM_DESTROY() names from Imager's + internals, those names only matter for the XS interface. + + - improve error reporting when PERL_INITIALIZE_IMAGER_CALLBACKS finds + the API level compiled into a loadable module such as + Imager::File::GIF doesn't match that of Imager. Previously it + could be difficult to determine exactly which module was failing to + load. + https://rt.cpan.org/Ticket/Display.html?id=77173 + + - added Imager->check_file_limits() as an interface to the + i_int_check_image_file_limits() API. + + - Imager->set_file_limits(reset => 1) now resets the limits to the + defaults rather than setting them all to unlimited. + + - wrote a brief security note as Imager::Security + https://rt.cpan.org/Ticket/Display.html?id=68910 + +Imager 0.90 - 30 Apr 2012 +=========== + +Bug fixes: + + - Imager::Test::is_imaged() attempted to process an "epsilon" + parameter but the prototype didn't allow for the extra parameter. + Corrected the prototype. + + - when downconverting samples (eg. from floating point to 8 bit) + Imager now rounds the sample value rather than attempting to + allocate input values over output values equally. The old + behaviour had the probably surprising effect of converting a + floating point 2.1/255.0 into an 8-bit 3 rather than the expected + 2. + This may result in slightly different 8 or 16-bit output images. + + - BI_BITFIELD BMP images were handled incorrectly, both in + incorrectly calculating the space required for the masks and in + processing the image data itself. + https://rt.cpan.org/Ticket/Display.html?id=76736 + + - some odd width BMP BI_RLE4 images use run lengths that run one off + the edge of the image. Imager now allows this, discarding the + extra column. + + - odd length RLE4 runs in BMP images were decoded incorrectly. + + - pkg-config could sometimes return a library that was in a directory + EU::MM / $Config{libpth} doesn't know about, but the compiler did. + If no -L is included in the pkg-config library information check if + EU::MM can find the library, and if not, search our configured + directories and insert that into the library flags. + https://rt.cpan.org/Ticket/Display.html?id=75869 + + - Imager::Probe can now probe for libraries with dependent libraries, + common for static linking, eg. libpng requires libz. + https://rt.cpan.org/Ticket/Display.html?id=74043 + + - libpng 1.5 specific probes were looking for libpng 1.4 filenames. + + - added alternative probe configurations that try to link libz, to + handle a statically linked libpng. + https://rt.cpan.org/Ticket/Display.html?id=74043 + + - if a probe includes testcode, Imager::Probe now checks that code as + part of the process of checking each configuration rather than as a + post test of the found configuration. This allows alternate + configurations to be checked if a matching but non-working + configuration is found. + https://rt.cpan.org/Ticket/Display.html?id=74043 + +Other changes: + + - when reading or writing images via callbacks, the default callbacks + now push an error message indicating that a required callback was + called but not supplied. + https://rt.cpan.org/Ticket/Display.html?id=76782 + + - clarify which callbacks are required for reading and writing TIFF + images. + + - improve logging for creation of callback I/O layers. + + - a little more documentation for Imager::Probe. + + - the i_get_file_background() and i_get_file_backgroundf() APIs now + return int to indicate whether the i_background tag was found. + + - PNG rework + - improve error reporting + - add png_interlace, png_bits tags + - read paletted images as paletted images, including transparency + - read 1 bit greyscale images as a type suitable for other file + handlers to write as bilevel + - read 16 bit/sample PNG as 16-bit/sample Imager images + - write "bilevel" paletted images as 1 bit grayscale images + - write paletted images as paletted images + - write 16-bit (or higher)/sample images as 16-bit/sample PNG + images + - improved metadata support + https://rt.cpan.org/Ticket/Display.html?id=29268 + +Imager 0.89 - 18 Mar 2012 +=========== + +Bug fixes: + + - getpixel(..., type => "float") and the API i_gpixf() have been + broken on paletted images since they were implemented. + https://rt.cpan.org/Ticket/Display.html?id=75258 + +Other changes: + + - links in the METHOD INDEX now point at the method documentation + rather than the heading you can find them under. + https://rt.cpan.org/Ticket/Display.html?id=71495 + + - Imager (and the bundled dynamic modules) no longer fallback to + using DynaLoader if loading via XSLoader fails. + For the bundled modules this could hide useful error messages. + https://rt.cpan.org/Ticket/Display.html?id=75560 + + - IM_DEBUG_MALLOC mymalloc() no longer sn?printfs() a string to a + buffer in the array of allocations, but just stores the filename + pointer and line number. + https://rt.cpan.org/Ticket/Display.html?id=70388 + +Imager 0.88 - 22 Feb 2012 +=========== + + - describe how to build libgif etc on OS X in such a way as to be + compatible with a fat binary perl (such as the system perl), in + README. + https://rt.cpan.org/Ticket/Display.html?id=73371 + + - update the change notes for 0.77_01 to indicate that libungif + support was removed. + + - add some other imaging modules to SEE ALSO + https://rt.cpan.org/Ticket/Display.html?id=73906 + + - note that the generator of the apparently non-DFSG-free postscript + in MMOne.pfb is a Debian package. + + - setsamples() is now a true complement to getsamples() - it can + write 8-bit or floating point samples from a scalar or array + reference. This adds i_psamp() and i_psampf() to the C level API. + + - the XS interfaces to i_gsamp(), i_gsampf() and i_gsamp_bits() have + changed to make better use of the typemap, but these aren't part of + the perl level API anyway. There were no changes to the C level + interfaces to these functions. + + - getpixel() and setpixel() now accept a mix of scalar and array + references for the x and y parameters, and unequal array lengths is + no longer an error. + https://rt.cpan.org/Ticket/Display.html?id=73697 + +Bug fixes: + + - correctly calculate the size of a rotated image + https://rt.cpan.org/Ticket/Display.html?id=69261 + + - fix incorrect rounding of color values for matrix_transform() and + rotate(). + https://rt.cpan.org/Ticket/Display.html?id=69261 + + - Win32 text output is now done in normal combine mode, the alpha + component of the color is now significant. + https://rt.cpan.org/Ticket/Display.html?id=70014 + + - remove long unused gif case from read() + https://rt.cpan.org/Ticket/Display.html?id=69244 (partial) + + - the getsamples() target parameter was being treated as a hashref + when it's meant to be an array reference. + https://rt.cpan.org/Ticket/Display.html?id=74882 + + - getpixel() and setpixel() now returns an empty list when invalid + parameters are supplied. + Invalid values for type now result in an error for getpixel(). + https://rt.cpan.org/Ticket/Display.html?id=73697 + +Imager 0.87 - 03 Jan 2012 +=========== + + - document the return value of the filter() method. + https://rt.cpan.org/Ticket/Display.html?id=72369 + + - document i_gsamp_bits() and i_psamp_bits(). + https://rt.cpan.org/Ticket/Display.html?id=68815 + + - properly increment the Imager::Matrix2d $VERSION. + + - actually include the Imager::Test tests in the dist + + - correctly read and write 256x256 pixel ICO files + https://rt.cpan.org/Ticket/Display.html?id=69599 + + - make the error message from read() or read_multi() when they can't + identify the file type match reality. + https://rt.cpan.org/Ticket/Display.html?id=72475 + + - read() now uses $FORMATGUESS if it can't determine the file type + based on the file header, to match read_multi(). + + - re-work and add tests for def_guess_type(). def_guess_type() no + longer returns any random file extension as the file type. + + - add gray4, gray16 and gray as presets for make_colors. + https://rt.cpan.org/Ticket/Display.html?id=67911 + + - add make_palette() method that produces a palette from one or more + images. + + - fix the Imager dependency for the separately distributed font + drivers. + https://rt.cpan.org/Ticket/Display.html?id=72643 + + - fix i_render_color() to properly draw in "normal" mode - ie. when + writing to a 1 or 3 channel image the second or fourth channel of + the source color was being ignored, it is now significant. + https://rt.cpan.org/Ticket/Display.html?id=71564 + +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) + https://rt.cpan.org/Ticket/Display.html?id=69245 + + - fix combine=0 fill color anti-aliasing on the double/sample path + https://rt.cpan.org/Ticket/Display.html?id=71309 + + - make default text color non-transparent + https://rt.cpan.org/Ticket/Display.html?id=71469 + + - apply the last of the Debian unforwarded spelling fixes + https://rt.cpan.org/Ticket/Display.html?id=70656 + + - the log() method used its message parameter as a C level format + string. + https://rt.cpan.org/Ticket/Display.html?id=71653 + + - provide our own STRLEN typemap entry for older perls. + https://rt.cpan.org/Ticket/Display.html?id=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 + https://rt.cpan.org/Ticket/Display.html?id=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. + https://rt.cpan.org/Ticket/Display.html?id=69158 + + - the btm data structure used by the flood_fill code is now + initialized more efficiently. + https://rt.cpan.org/Ticket/Display.html?id=68994 + + - updated the Thanks list in README + https://rt.cpan.org/Ticket/Display.html?id=71607 + + - check there's at least one coefficient for the convolution filter + https://rt.cpan.org/Ticket/Display.html?id=68993 + + - make the APIRef synopsis ordering consistent, older versions of + perl could order it differently. + https://rt.cpan.org/Ticket/Display.html?id=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. + https://rt.cpan.org/Ticket/Display.html?id=71642 + + - fix library detection with MSVC + + - search a few more library directories, so EU::MM doesn't discard + them. Hopefully fixes: + https://rt.cpan.org/Ticket/Display.html?id=71643 + +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. + + - 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 + https://rt.cpan.org/Ticket/Display.html?id=70037 + + - TIFF now uses wrapper functions of the correct types to avoid casts + https://rt.cpan.org/Ticket/Display.html?id=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. + +Imager 0.85 - 29 Aug 2011 +=========== + +The main changes in the release versus 0.84 are: + + - on 64-bit systems, 64-bit types are consistently used for image + dimensions and co-ordinated, and for memory block sizes. + + - handle IFD loops in TIFF files correctly. Previously this would + lead to an infinite loop. + +Bug fixes: + + - fix the link in the getheight() entry in the method index + Imager 0.84_02 - 22 Aug 2011 ============== @@ -331,6 +748,8 @@ Imager 0.77_01 - 13 Sep 2010 preparation for separate distribution. https://rt.cpan.org/Ticket/Display.html?id=49616 (partial) + Note: this removed support for libungif from Imager. + - optimize filled box drawing (color, not fill) Bug fixes: