]> git.imager.perl.org - imager.git/blobdiff - Changes
improve MSVC support some more
[imager.git] / Changes
diff --git a/Changes b/Changes
index e1e12665b328f1ca6ad2c22b80cd7d3e8e93ad3a..1d0f45d1e8e233df9837c5ddde392bfa8574c390 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,8 +1,472 @@
 Imager release history.  Older releases can be found in Changes.old
 
-Imager 0.78 - unreleased
+Imager 0.86 - unreleased
 ===========
 
+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
+
+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
+==============
+
+Development release, this will become 0.85 if CPAN testers is
+favourable.
+
+Bug fixes:
+
+ - the image file limits set by set_file_limits() weren't being
+   checked when reading TIFF files.
+   https://rt.cpan.org/Ticket/Display.html?id=69915
+
+ - Provide more information about file format module load errors on a
+   failed image file read() or write().
+   https://rt.cpan.org/Ticket/Display.html?id=69194
+
+ - use TIFFReadDirectory() instead of TIFFSetDirectory() to iterate
+   through TIFF images, since it checks for IFD loops.
+   https://rt.cpan.org/Ticket/Display.html?id=69914
+
+ - don't leak memory when out of range palette indexes are supplied to
+   setscanline().
+   https://rt.cpan.org/Ticket/Display.html?id=69242
+
+ - require a later version of CPAN::Meta to ensure JSON::PP and
+   CPAN::Meta::YAML are available.
+   https://rt.cpan.org/Ticket/Display.html?id=69008
+
+ - hoist the per-line calculations for the flines implementations, and
+   modernize the tests a bit.
+   https://rt.cpan.org/Ticket/Display.html?id=70126
+
+ - detect snprintf()/vsnprintf() (cheat by using Config.pm) and use
+   them when available.
+   https://rt.cpan.org/Ticket/Display.html?id=69147
+
+ - if t1lib failed to reinitialize it would be left as marked
+   initialized.
+   https://rt.cpan.org/Ticket/Display.html?id=69877
+
+ - update the bundled (and still modified) Devel::CheckLib
+   https://rt.cpan.org/Ticket/Display.html?id=69170
+
+Imager 0.84_01 - 8 Aug 2011
+==============
+
+Development release as a sanity check for the types re-work.
+
+Massive types re-work:
+
+ - the type used internally for pixel co-ordinates and image sizes is
+   now 64-bit on 64-bit platforms (at least sane ones).
+
+ - size_t is now used consistently for memory block sizes.
+
+ - since this changes the binary interface, the Imager API version has
+   been incremented.  Any module that uses the API will need to be
+   rebuilt.  In most cases that will be enough, but calls to any APIs
+   that take a pointer to image sizes may need source changes.
+
+ - you should be able to create very large images on 64-bit systems,
+   if you have enough memory.  Successfully created a 32768 x 49192 x
+   3 channel image, filled with a tiled image and scaled it.  The
+   unscaled image was also successfully saved to a JPEG.
+
+ - check the image size before attempting to write BMP, GIF, JPEG,
+   PNG, SGI, TGA, TIFF images.
+
+ - correctly handle reading TGA images over 32767 pixels wide or tall.
+
+Incidental changes:
+
+ - the gif_left and gif_top tags are now clamped to non-negative
+   values when writing a GIF image.
+
+ - removed dead callback read/write code
+
+The default maximum memory size when reading files is now 1G.
+
+Imager 0.84 - 20 Jun 2011
+===========
+
+ - Imager no longer inherits from Exporter (unless you're running an
+   old, old perl.
+
+ - Imager can now write progressive JPEGs (it could always read them).
+   https://rt.cpan.org/Ticket/Display.html?id=68691
+
+Bug fixes:
+
+ - re-work, document and test Imager's logging facility.
+   https://rt.cpan.org/Ticket/Display.html?id=65227
+
+ - fix META.yml testing and the generated META.yml
+   https://rt.cpan.org/Ticket/Display.html?id=65235
+
+ - test and add error reporting to to_*() family methods
+
+ - add to_rgb_double() method.
+   https://rt.cpan.org/Ticket/Display.html?id=65101
+
+ - Imager no longer exports anything by default
+   https://rt.cpan.org/Ticket/Display.html?id=65228
+
+ - convert colors to grayscale if the supplied (or generated) palette
+   contains only grays when performing error diffusion color
+   translation.
+   https://rt.cpan.org/Ticket/Display.html?id=68508
+
+ - writing a paletted image to GIF wouldn't always use the colors
+   supplied (or generated, eg. via make_colors => "mono"), which was
+   confusing at best.
+   https://rt.cpan.org/Ticket/Display.html?id=67912
+
+ - replace (imager|tony)@imager.perl.org in the doc, since I don't
+   plan to continue receiving mail at that address.
+   https://rt.cpan.org/Ticket/Display.html?id=68591
+
+Imager 0.83 - 21 May 2011
+===========
+
+Bug fixes:
+
+ - diag() the error message on failure for some TIFF tests that are
+   failing on a Solaris smoker.
+   http://www.cpantesters.org/cpan/report/6396db1e-8090-11e0-9682-112b785ebe45
+
+Imager 0.82_01 - 17 May 2011
+==============
+
+Dev release, in case the compose tests are too sensitive.
+
+Bug fixes:
+
+ - Imager::Font::T1 incorrectly checked for absolute filename under
+   Win32.  Thanks to kmx for the report and fix.
+   https://rt.cpan.org/Ticket/Display.html?id=67963
+
+ - compose() with the target, source or mask position off the top or
+   left of the target image didn't clip the source image correctly.
+   https://rt.cpan.org/Ticket/Display.html?id=67220
+
+ - compose() now returns a useful error message on a non-positive
+   opacity.
+
+ - compose.im now at 100% test coverage. (As opposed to, umm, much,
+   much less.)
+
+Imager 0.82 - 14 Mar 2011
+===========
+
+Bug fixes:
+
+ - eliminate calls to i_has_format() from the test suite, since it's
+   no longer a useful way to check for file format support.  Eliminate
+   i_has_format() from the functions exposed via XS.
+   https://rt.cpan.org/Ticket/Display.html?id=65863
+
+ - eliminate calls to note(), which isn't in the (very old) version of
+   Test::More we have as a pre-requisite.  note() is modern enough
+   that I don't feel a need to require a Test::More upgrade for it.
+   https://rt.cpan.org/Ticket/Display.html?id=65864
+
+ - skip the threads tests on Test::More 2.00_*
+   https://rt.cpan.org/Ticket/Display.html?id=65812
+
+ - add an (unshipped) test to check Imager's internal POD links
+   https://rt.cpan.org/Ticket/Display.html?id=65749
+
+ - improve the library detection summary
+   https://rt.cpan.org/Ticket/Display.html?id=9675
+
+ - increase the version of Imager::Font::Type1 so that upgrades don't
+   downgrade the version in this file.
+   https://rt.cpan.org/Ticket/Display.html?id=66250
+
+ - if we see an -rpath (or -R) option in $Config{lddlflags} supply
+   that option for the directories that would normally go in
+   LD_RUN_PATH.  Typically an explicit -rpath overrides LD_RUN_PATH.
+   https://rt.cpan.org/Ticket/Display.html?id=65955
+
+Imager 0.81 - 14 Feb 2011
+===========
+
+ - added coverage tests for masked images (maskimg.c @100% test coverage)
+
+ - add hsv() method to Imager::Color
+   Thanks to Leolo (Philip Gwyn)
+   https://rt.cpan.org/Ticket/Display.html?id=65385
+
+ - split libt1 Type 1 font support into a sub-module
+   https://rt.cpan.org/Ticket/Display.html?id=49616 (partial)
+
+ - add a preload() class method for use in forking servers, and to
+   work around limitations in PAR.
+   https://rt.cpan.org/Ticket/Display.html?id=65665
+
+Bug fixes:
+
+ - paletted writes to a masked image are now masked correctly.
+   Revealed by new coverage tests.
+
+ - update the filter plugin documentation.
+   https://rt.cpan.org/Ticket/Display.html?id=56513
+
+ - add the matrix() method to Imager::Matrix2d to allow creation of a
+   matrix with specified co-efficients.  You can now multiple an
+   Imager::Matrix2d object by a 9 element array ref or a number.
+   https://rt.cpan.org/Ticket/Display.html?id=29938
+
+ - really fix loading TTF fonts with FT2 when FT1 isn't available.
+   Thanks to Leolo (Philip Gwyn)
+   https://rt.cpan.org/Ticket/Display.html?id=65386
+   https://rt.cpan.org/Ticket/Display.html?id=62855
+
+ - make sure each test script that needs testout/ creates it.
+   https://rt.cpan.org/Ticket/Display.html?id=65088
+
+ - handle a slightly different warning from libtiff 4.x
+   https://rt.cpan.org/Ticket/Display.html?id=65268
+
+ - the sat transform2() op returned an incorrect saturation.
+   https://rt.cpan.org/Ticket/Display.html?id=65391
+
+Imager 0.80 - 17 Jan 2011
+===========
+
+ - added coverage tests for Imager::Fountain and Imager::Color::Float
+
+ - Imager is now maintained in git
+   http://git.imager.perl.org/imager.git
+   git://git.imager.perl.org/imager.git
+
+Bug fixes:
+
+ - images with an translucent alpha channel were not scaled correctly
+   by the default (qtype=normal) scaling method.
+   https://rt.cpan.org/Public/Bug/Display.html?id=63922
+
+ - Imager::Color::Float now translates "#FFFFFF" to white instead of
+   just a little darker.
+
+ - make the default color map build algorithm "mediancut".  This
+   changes the default color map builder for writing GIFs back to what
+   it was in 0.77, reverting a performance regression.
+   https://rt.cpan.org/Ticket/Display.html?id=64785
+
+ - handle failure to create a masked image correctly
+
+Imager 0.79 - 10 Dec 2010
+===========
+
+ - add Imager::Test to the POD coverage tests and document the missing
+   functions.
+
+ - the convert() method now optimizes the case where all output
+   channels are either 0, sourced from a single input channel or 1.
+   This significantly speeds up presets like "addalpha", "green".
+   https://rt.cpan.org/Ticket/Display.html?id=51254
+
+ - add wiggle.pl sample, as suggested by Dan Oppenheim.
+
+ - add the combine() method to combine channels from multiple source
+   images into a new image
+   https://rt.cpan.org/Ticket/Display.html?id=11872
+
+Bug fixes:
+
+ - treat the co-efficients for convert() as doubles instead of floats.
+
+ - If a higher (earlier) priority font handler failed to load, that
+   would crash preventing loading of later font handlers.
+   https://rt.cpan.org/Ticket/Display.html?id=62855
+
+ - parse defines from the options returned by pkg-config --cflags
+   https://rt.cpan.org/Ticket/Display.html?id=63223
+
+ - a regen of the MANIFEST revealed that GIF and FT2 tests weren't
+   included in the tarball.  They are now included.
+
+Imager 0.78 - 4 Oct 2010
+===========
+
+Bug fixes:
+
+ - don't access deprecated members of the png_structp.
+   https://rt.cpan.org/Ticket/Display.html?id=60242
+
+ - document that using color objects is faster than supplying colors
+   by name, etc.
+   https://rt.cpan.org/Ticket/Display.html?id=61047
+
+ - Imager::Probe now accepts array references for incpath and libpath.
+   https://rt.cpan.org/Ticket/Display.html?id=60244
+
+Imager 0.77_02 - 27 Sep 2010
+==============
+
+ - moved Win32, FreeType 2 font support into sub-modules.
+   https://rt.cpan.org/Ticket/Display.html?id=49616 (partial)
+   Uses Imager::Probe now.
+   https://rt.cpan.org/Public/Bug/Display.html?id=61328
+
+ - tested successfully with jpeg-8b
+   https://rt.cpan.org/Ticket/Display.html?id=60221
+
+Bug fixes:
+
+ - from _01: look for missing file support test files in the right
+   places.
+
+ - flood_fill() wouldn't fill the right side of a single scan-line
+   fill area.
+   Thanks to Nicolas Roggli for reporting this.
+
+ - flood_fill wouldn't fill to the left edge of the image if the
+   starting line didn't reach the left edge.
+   Thanks to Nicolas Roggli for reporting this.
+
+Imager 0.77_01 - 13 Sep 2010
+==============
+
  - add each library-directory/pkgconfig/ to the pkg-config search path
    in Imager::Probe.
    Thanks to Justin Davis.
@@ -26,10 +490,18 @@ Bug fixes:
    https://rt.cpan.org/Ticket/Display.html?id=60509
 
  - fix the cache check for the X rgb.txt loader.  This is typically
-   used for color translation on Unix-like systems, and improves
-   performance of supplying colors by name by about 80 times.  Test
-   code that managed 3400 10x10 pixel boxes/second sped up to 25700
-   boxes/second.
+   used for color translation on Unix-like systems, and the fix
+   improves performance of supplying colors by name by about 80 times.
+   Test code that managed 3400 10x10 pixel boxes/second sped up to
+   25700 boxes/second.
+
+ - clarify that Imager doesn't write EXIF metadata to images.
+   https://rt.cpan.org/Ticket/Display.html?id=60637
+
+ - Imager::Probe can now search subdirectories under its include path.
+   Used by the PNG Makefile.PL to find headers and libraries when they
+   aren't in the base directory, as in cygwin.
+   https://rt.cpan.org/Ticket/Display.html?id=60635
 
 Imager 0.77 - 11 Aug 2010
 ===========