]> git.imager.perl.org - imager.git/blob - Changes
missed some t/testtools.pl usage
[imager.git] / Changes
1 Imager release history.  Older releases can be found in Changes.old
2
3 Imager 0.64 - 23 April 2008
4 ===========
5
6 This is a bug fix release.  This includes a fix for a possible
7 security issue.
8
9 Bug fixes:
10
11  - Possible security issue: The floating point sample path for image
12    based fills had a buffer overflow.  This would overwrite the end of
13    a malloc()ed buffer with double precision floats.
14    http://rt.cpan.org/Ticket/Display.html?id=35324
15    CVE-2008-1928
16
17  - check that the result of fileno($fh) is defined rather than simply
18    true when read() or write() is supplied with an fh parameter.
19    http://rt.cpan.org/Ticket/Display.html?id=35139
20
21  - i_scale_axis() wasn't checking the result of i_img_new_ch()
22    resulting in a SIGSEGV when attempting to scale an image to a size
23    too large to fit in memory.  This is a NULL pointer access issue,
24    not a buffer overflow.
25    Added a check for the failure.
26    scale_calculate() (and hence scale()) will now fail if any of the
27    scale size parameters are a reference.
28    http://rt.cpan.org/Ticket/Display.html?id=35172
29
30  - Regression: filling a greyscale image with a hatch used the wrong
31    color channels from the supplied fg/bg colors.
32    https://rt.cpan.org/Ticket/Display.html?id=35278
33
34  - fixed a related problem for image fills.
35
36 Imager 0.63 - 7 April 2008
37 ===========
38
39 This release primarily contains changes to improve ease of use -
40 rather than you having to convert images to the appropriate number of
41 channels, Imager handles it internally.  How to handle drawing colors
42 and the default combine mode is a thornier problem left for some other
43 release.
44
45  - the font libraries are now only initialized when needed.
46    http://rt.cpan.org/Ticket/Display.html?id=28825
47
48  - moved the imtoc.perl code into Imager::Preprocess
49
50  - paste() and rubthrough() now adapt the source image data to the
51    destination, so you can now safely paste/rubthrough from greyscale
52    images to color images or back, or from alpha channel images to
53    noalpha channels or back.
54    https://rt.cpan.org/Ticket/Display.html?id=30908
55
56  - rubthrough() now falls back to pasting when the source doesn't have
57    an alpha channel.  This effectively treats the source as having a
58    max alpha channel, the right thing to do.
59    http://rt.cpan.org/Ticket/Display.html?id=29944
60
61  - re-worked most of the area filling code to use a common set of
62    functions when filling.
63    Corrected normal combine mode.
64    Rewrote most of the combine modes to match the way the SVG draft
65    defines them with respect to a translucent source and destination.
66    Added tests for translucent source and destination.
67    Added tests to check 8-bit/sample and double/sample combines work
68    similarly.
69    https://rt.cpan.org/Ticket/Display.html?id=29879
70
71  - writing a 2 or 4 channel image to a JPEG file will now write that
72    image as if composited against a background, black by default,
73    overridable with the i_background tag/parameter.
74    https://rt.cpan.org/Ticket/Display.html?id=29876
75
76  - writing a 2 or 4 channel image to a PGM/PPM file will now write
77    that image as if composited against a background, black by default,
78    overridable with the i_background tag/parameter.
79    http://rt.cpan.org/Ticket/Display.html?id=30074
80
81  - writing a 2 or 4 channel image to a BMP file will now write that
82    image as if composited against a background, black by default,
83    overridable with the i_background tag/parameter.
84    http://rt.cpan.org/Ticket/Display.html?id=30075
85
86 Bug fixes:
87
88  - Imager::Matrix2d->translate() now only requires one of the x or y
89    parameters.
90    http://rt.cpan.org/Ticket/Display.html?id=29937
91
92  - mixing qtype scaling now sets all channels of a pixel to zero if
93    the pixel has zero coverage (zero alpha).  This should produce more
94    compressible output files.
95    http://rt.cpan.org/Ticket/Display.html?id=32324
96
97  - removed the pointless #! line from lib/Imager/Font/Wrap.pm
98    Noticed when I saw:
99    https://bugzilla.redhat.com/show_bug.cgi?id=166254
100    I'm not changing the #! lines of the sample code, since it's sample
101    code, not intended for installation.
102    http://rt.cpan.org/Ticket/Display.html?id=33408
103
104  - some TGA images weren't being detected correctly as TGA images
105    https://rt.cpan.org/Ticket/Display.html?id=32925
106
107  - handling of the left-over bit for 16-bit/pixel TGA images has been
108    changed to match the behaviour of the GIMP.  Previously the bit
109    being set was treated as an opaque pixel, but one user reported a
110    problem with loading such an image.  I haven't been able to find any
111    tools beyond the GIMP that handle alpha-channel 16-bit TGAs, so
112    I'll match it's behaviour.  See issue 114913 in the GIMP's
113    bugzilla.
114    http://rt.cpan.org/Ticket/Display.html?id=32926
115
116 Imager 0.62 - 10 December 2007
117 ===========
118
119  - Makefile.PL now expands ~/path supplied to --incpath or --libpath
120    to /path under your home directory.
121    http://rt.cpan.org/Ticket/Display.html?id=29484
122
123  - the old dynaload code used Mach API functions to load dynamic
124    libraries on Mac OS X.  These APIs have been deprecated in OS X
125    10.5 and were causing some build problems.
126    So henceforth Imager uses the dlopen() family of functions, and you 
127    will need version 10.3 or later of OS X.
128
129  - added the det() function to the transform2() engine.
130    added the sample quad_to_square.pl
131    Courtesy Richard Fairhurst.
132    http://rt.cpan.org/Ticket/Display.html?id=31244
133
134 Bug fixes:
135
136  - samples/gifscale.pl sourced the base value for gif_top from
137    gif_left.
138    Thanks to Eleneldil G. Arilou for pointing this out.
139
140  - t/t82inline.t no longer loads B at runtime, to work around a bug
141    in some 5.005_0[45] installations.
142    http://rt.cpan.org/Ticket/Display.html?id=30508
143
144  - work around Module::Depends::Intrusive bug #21229
145    http://rt.cpan.org/Ticket/Display.html?id=30520
146
147  - the hardinvert filter no-longer inverts the alpha channel.
148    http://rt.cpan.org/Ticket/Display.html?id=30002
149
150  - the hardinvert filter now supports large samples
151
152 Imager 0.61_02 - 28 November 2007
153 ==============
154
155  - major TIFF support re-work
156    http://rt.cpan.org/Ticket/Display.html?id=20329
157
158  - added a C level image interface for accessing samples from 1-32
159    bits, exposed this at the perl level in getsamples()
160
161  - the conv filter now works at floating point precision for high bit
162    images
163
164  - added is_bilevel method to test whether an image should be written as
165    a bilevel image if the image format supports it.
166
167  - added -log-stderr as an Imager import list option
168
169  - added some important types to Imager::APIRef
170
171  - added test_image_double() to Imager::Test
172
173 Bug fixes:
174
175  - Imager::Fountain couldn't read GIMP gradient files with 10 or more
176    segments
177
178  - the scale() method with qtype mixing now handles images with an
179    alpha channel correctly.
180
181  - fixed a broken link from the "animated GIF" entry in the concept index.
182    Thanks to Slaven Rezic.
183    http://rt.cpan.org/Ticket/Display.html?id=30889
184
185  - on some perl's the infix expression parser test would fail due to
186    actions in the grammar returning false.  Made sure all actions return
187    a true value.
188    Thanks to Richard Fairhurst for spending a lot of time in tracking
189    down this problem.
190    http://rt.cpan.org/Public/Bug/Display.html?id=29562
191
192 Imager 0.61 - 5 November 2007
193 ===========
194
195  - added samples/gifscale.pl, which adjusts the screen size/position tags
196    when scaling an animated gif
197    http://rt.cpan.org/Ticket/Display.html?id=27591
198
199 Bug fixes:
200
201  - correct handling of sz in matrix_transform() - this should allow
202    perspective type transformations to work now.
203    http://rt.cpan.org/Ticket/Display.html?id=29936
204
205  - prevent a cast to integer warning on x64 builds in datatypes.c
206    also fixed some other type warnings
207    https://rt.cpan.org/Ticket/Display.html?id=30204
208
209  - some sub-directory tests depended on files produced by the parent
210    directory tests
211    http://rt.cpan.org/Ticket/Display.html?id=30203
212
213  - Imager::Font::Wrap doesn't correctly set savepos
214    thanks to Nikita Dedik and Eleneldil G. Arilou for reporting this.
215    http://rt.cpan.org/Ticket/Display.html?id=29771
216
217  - test 171 in t/t01introvert.t was failing on perls configured to
218    use long double.
219    http://rt.cpan.org/Ticket/Display.html?id=29413
220
221  - the code for the transform2() uminus operator was missing a break.
222    Added tests for better code coverage of the ops.
223    http://rt.cpan.org/Ticket/Display.html?id=29296
224
225  - the SGI RLE compression code could overflow its compression buffer
226    http://rt.cpan.org/Ticket/Display.html?id=30334
227
228  - the 32-bit output function used by the SGI code only handled values
229    under 0x10000.  This was most noticable when writing large RLE images.
230    http://rt.cpan.org/Ticket/Display.html?id=30335
231
232  - validate chan_count for chans == NULL for each of the i_gsamp()
233    implementations.
234    http://rt.cpan.org/Ticket/Display.html?id=28985
235
236  - attempt to work around the test failure at 
237    http://www.nntp.perl.org/group/perl.cpan.testers/2007/09/msg650810.html
238    http://rt.cpan.org/Ticket/Display.html?id=29562
239
240  - improve the error messages produced when attempting to read or write
241    an unknown image file format.
242    http://rt.cpan.org/Ticket/Display.html?id=30103
243
244  - improve the transform2() documentation
245    http://rt.cpan.org/Ticket/Display.html?id=29267
246
247  - correctly generate the author key in META.yml
248    http://rt.cpan.org/Ticket/Display.html?id=30377
249
250  - correctly blend a rotated (or matrix_transformed()) image when
251    performing interpolation in the presence of an alpha channel.
252    Also corrected the centring of the rotated image on the output
253    image.
254
255 Imager 0.60 - 30 August 2007
256 ===========
257
258  - Finished/rewrote Arnar's old SGI RGB file format support, so Imager
259    now has full SGI RGB image format, including RLE and 16-bit/sample
260    images.
261    https://rt.cpan.org/Ticket/Display.html?id=8666
262
263  - logging functions are now available in the API
264
265  - applied Gabriel Vasseur's patch
266    added documentation, further tests, and support for greyscale images
267    Obviously problems are my fault :)
268    https://rt.cpan.org/Ticket/Display.html?id=28142
269
270  - the mask for ICO/CUR images is now applied as an alpha channel to
271    the returned image.  For the old behaviour, supply ico_masked => 0
272    to read() or read_multi().  This should be less confusing when
273    using Imager as a general image processor.
274    https://rt.cpan.org/Ticket/Display.html?id=29001
275
276 Bug fixes:
277
278  - in some cases it's possible for giflib/libungif to return color 
279    indexes outside the range of colors defined by the image's palette.
280    We now expand the palette to match the indexes used.
281    Thanks to Gabriel Vasseur for reporting this.
282
283  - fixed various memory leaks that could occur when failing to read png,
284    jpeg, bmp or tga files.
285
286  - to avoid confusion, channels not present in the image are returned as
287    zero by getscanline().  This has no effect on the C level i_glin()
288    and i_glinf() API functions which continue to not set the unused
289    channels.
290
291  - the convert() method now returns an image of the same sample size as
292    the source image.
293    https://rt.cpan.org/Ticket/Display.html?id=28492
294
295  - remove repeated text in Imager::Files
296    http://rt.cpan.org/Ticket/Display.html?id=27589
297
298  - be even more explicit that scale() and friends don't modify the source
299    image, but return a new image.
300    http://rt.cpan.org/Ticket/Display.html?id=28570
301
302  - improve the error message from errstr() when you try to load a font
303    for which the driver hasn't been built in Imager.
304    http://rt.cpan.org/Ticket/Display.html?id=27571
305
306  - transparency is now enabled by default when writing GIF images
307    http://rt.cpan.org/Ticket/Display.html?id=27615
308
309  - Imager would not load on Windows 98
310    http://rt.cpan.org/Ticket/Display.html?id=27653
311
312 Imager 0.59 - 14 June 2007
313 ===========
314
315 Bug fixes:
316
317  - fixes a regression introduced by the fixes for RT 11972
318    http://rt.cpan.org/Ticket/Display.html?id=27546
319
320  - cropping outside the image would return an Imager object with
321    no low-level image object, instead of returning false.
322    Fixed by: Philip Gwyn (Leolo)
323    http://rt.cpan.org/Ticket/Display.html?id=27509
324
325 Imager 0.58 - 16 May 2007
326 ===========
327
328 No significant changes from 0.57_01.
329
330 Imager 0.57_01 - 11 May 2007
331 ==============
332
333  - added to_rgb16 to produce a 16-bit/sample version of an image
334
335  - improve freetype 1.x text output efficiency
336
337 Bug fixes:
338
339  - search another place for rgb.txt, and check all the places 
340    Imager::Color checks when deciding whether to skip testing it
341    http://rt.cpan.org/Ticket/Display.html?id=26064
342
343  - use a convolution kernel size based on the stddev rather than a
344    fixed size when performing a gaussian blur
345    http://rt.cpan.org/Ticket/Display.html?id=25645
346
347  - document the difference() method's mindist parameter, and debug it.
348
349  - put the Imager release number in the Inline::C generated code to
350    regenerate Inline code when a new release of Imager is installed.
351    http://rt.cpan.org/Ticket/Display.html?id=26278
352
353  - fix rendering on alpha channel images for the FreeType 1.x driver.
354    http://rt.cpan.org/Ticket/Display.html?id=11972
355
356  - fix rendering on alpha channel images for the T1lib driver.
357    http://rt.cpan.org/Ticket/Display.html?id=11972
358
359  - reworked library probing, we can now set more than one probe
360    function for a library.  Disabled the default (non-freetype-config)
361    library probe and added an extra probe function that searches for
362    both ft2build.h and whatever it includes, and adds -I as needed.
363    Hopefully this will fix build problems like
364    http://www.nntp.perl.org/group/perl.cpan.testers/2007/05/msg472281.html
365    http://rt.cpan.org/Ticket/Display.html?id=26086
366
367 Imager 0.57 - 30 Apr 2007
368 ===========
369
370 This is a maintenence release fixing a security issue in Imager.
371
372  - CRITICAL: a specially crafted compressed BMP file can cause a buffer
373    overflow in malloced memory.  There will be further discussion of
374    this issue in the ticket below.
375    http://rt.cpan.org/Ticket/Display.html?id=26811
376    CVE-2007-2459  CVE-2007-2413
377    The descriptions at cve.mitre.org varied in quality, please see the
378    ticket at rt.cpan.org for a more accurate description of the issue.
379
380 Imager 0.56 - 1 Apr 2007
381 ===========
382
383  - added support for reading 16-bit/sample PGM/PPM images
384
385  - added support for writing 16-bit/sample PGM/PPM images
386
387  - improved performance of reading PBM/PGM/PPM images
388
389  - added support for writing PBM images if the image is paletted and
390    contains only black and white
391
392  - added a new make_colors value - "mono"
393
394  - switched from the svn log Changes to a manual Changes to reduce
395    noise
396
397  - new sample code - samples/flasher.pl
398
399 Bug fixes:
400
401  - CRITICAL: the "Imager" typemap entry (not used by Imager itself)
402    was returning an image object with an extra reference, this
403    resulted in a memory leak.
404    http://rt.cpan.org/Ticket/Display.html?id=24992
405
406  - fix rendering on alpha channel images for the FreeType 2.x driver
407    http://rt.cpan.org/Ticket/Display.html?id=11972
408
409  - reading bmp files now consitently handles short reads.  You can now
410    supply a parameter to treat a short read as successful and set
411    i_incomplete
412    http://rt.cpan.org/Ticket/Display.html?id=8426
413
414  - previously, reading ASCII PBM files required spaces between samples,
415    even though the format doesn't require that
416
417  - improved documentation of the unsharpmask filter (I hope)
418    http://rt.cpan.org/Ticket/Display.html?id=25531
419
420  - force flushing of the output from i_tt_dump_names() and test output
421    in t/t35ttfont.t to prevent output from being mixed up.
422    https://rt.cpan.org/Ticket/Display.html?id=24859
423
424  - rewrite a conditional expression as an if() to hopefully work around
425    a bug in the pre-4.0 GCC Apple shipped with OS X 10.4.
426    https://rt.cpan.org/Ticket/Display.html?id=25561
427
428  - avoid Data::Dumper in regops.perl to support older releases of perl
429    https://rt.cpan.org/Ticket/Display.html?id=24391
430
431 Imager 0.55 - 16 Dec 2006
432 ===========
433
434 This is primarily a bug fix release.
435
436 Note: Test::More is now a pre-requisite for Imager and is no longer bundled.
437
438 There is one new feature:
439
440  - the Win32 font driver now supports UTF8 (RT 22166)
441    http://www.cpanforum.com/threads/3276
442    http://rt.cpan.org/Ticket/Display.html?id=22166
443
444 Several bugs were fixed:
445
446  - the string() method would not output the string "0"
447    http://rt.cpan.org/Public/Bug/Display.html?id=21770
448
449  - fills.c was failing to compile on Solaris 10 (compiler unknown)
450    http://rt.cpan.org/Public/Bug/Display.html?id=21944
451
452  - the gif_disposal and gif_user_input tags weren't being read from
453    the file correctly
454    http://rt.cpan.org/Public/Bug/Display.html?id=22192
455
456  - gif.c was failing to build under MSVC
457    http://rt.cpan.org/Ticket/Display.html?id=23922
458
459  - in some cases strings passed to the string() method were treated as
460    terminated by NUL (chr 0)
461    http://rt.cpan.org/Public/Bug/Display.html?id=21770
462
463  - on "MSWin32" perl builds we now link to -lzlib instead of -lz since
464    that's the default build name for zlib on Win32.
465    http://rt.cpan.org/Ticket/Display.html?id=23064
466
467  - search $Config{incpath} for headers too, which we should have been
468    doing all along.
469
470 Win32 font driver fixes:
471
472  - the global descent value from bounding box was the wrong sign
473    http://www.cpanforum.com/threads/3276
474
475  - if the first or last glyph overflowed the left or right side of the
476    advance width they would be clipped
477
478
479 Imager 0.54 - 14 Sep 2006
480 ===========
481
482 This is primarily a feature release:
483
484  - a new qtype value 'mixing' has been added to the scale()
485    method. This is faster than 'normal', slower than 'preview'. This
486    is based on the method used by pnmscale, and seems to produce less
487    blurry results than normal.
488    http://rt.cpan.org/Public/Bug/Display.html?id=20677
489
490  - the rubthrough() method can now render onto images with an alpha
491    channel.
492    http://rt.cpan.org/Ticket/Display.html?id=20678
493
494  - the read_multi() method now falls back to calling doing a single
495    image read via the read() method and write_multi() will now fall
496    back to calling write() if a single image is supplied. This means
497    you can simply call the read_multi() or write_multi() functions
498    without having to check if the type is formatted by that method.
499    http://rt.cpan.org/Ticket/Display.html?id=19457
500    http://rt.cpan.org/Ticket/Display.html?id=19458
501
502  - the GIF loop extension can now be written. If you don't have
503    libungif/giflib 4.1.4 (or some distribution's bugfixed equivalent) you
504    should upgrade.
505    http://rt.cpan.org/Ticket/Display.html?id=21185
506
507  - getscanline() and setscanline() can now read/write palette index
508    based data from/to the image for paletted images, by setting type to
509    'index'.
510    http://rt.cpan.org/Ticket/Display.html?id=20338
511
512  - we no longer hassle you to disable GIF support
513    http://rt.cpan.org/Ticket/Display.html?id=20687
514
515  - minor documentation fixes
516
517
518 Imager 0.53 - 26 Jul 2006
519 ===========
520
521 This is a bugfix release.
522
523 Some test code was left in a code path not covered by the test
524 suite. A test was added to cover this code path and the test code was
525 removed.
526 http://rt.cpan.org/Public/Bug/Display.html?id=20705
527
528
529 Imager 0.52 - 25 Jul 2006
530 ===========
531
532 This is primarily a feature release, but contains a fair few bug
533 fixes, new features:
534
535  - ability to read and write MS Windows ICO and CUR files
536
537  - you can now add file format plugins to support new file formats
538
539  - add POD coverage tests
540
541  - setcolors() and addcolors() now accept color names and so on
542    instead of requiring Imager::Color objects.
543    http://rt.cpan.org/Ticket/Display.html?id=20056
544
545  - flood_fill() can now fill to a specified border color instead of
546    just to the area the same color as the seed.
547    http://rt.cpan.org/Ticket/Display.html?id=19618
548
549
550 Bug fixes:
551
552  - bounding_box for the T1 driver wasn't converting UTF8 to ascii when
553    calculating the advance width.
554    http://rt.cpan.org/Public/Bug/Display.html?id=20554
555
556  - bounding_box for the T1 driver wasn't including leading and
557    trailing spaces in the bounding box as the other drivers did, it also
558    produced strange results for empty strings or strings containing only
559    spaces
560
561  - when reading CMYK jpeg images they were being transferred to the
562    image object as is, producing a four channel image. It only looked ok
563    due to an old still unfixed Photoshop bug. We now convert from the
564    inverted CMYK that photoshop (and Corel for example) produce into RGB.
565    http://rt.cpan.org/Ticket/Display.html?id=20416
566
567  - reading a CYMK TIFF would result in a 4 channel image, reading any
568    image with more than 4 channels (eg. RGB with 2 alpha channels) would
569    result in an error.
570    http://rt.cpan.org/Ticket/Display.html?id=20415
571
572  - added /usr/local/include to the default include search path, since
573    we were already searching /usr/local/lib for libraries.
574
575 And various minor fixes and documentation updates.
576
577
578 Imager 0.51 - 23 Apr 2006
579 ===========
580
581  - fix a validation bug when processing JPEG EXIF data that can cause
582    a crash
583    http://rt.cpan.org/Public/Bug/Display.html?id=18496
584
585  - fix mis-processing of the src_maxx and src_maxy parameters of the
586    paste() method
587    http://rt.cpan.org/Public/Bug/Display.html?id=18712
588
589  - fix a problem in Imager's "smart" handling of the color parameter
590    to various methods.
591    http://rt.cpan.org/Public/Bug/Display.html?id=18561
592
593
594 Imager 0.50 - 29 Mar 2006
595 ===========
596
597  - CRITICAL: fixes a segmentation fault from attempting to write a 2
598    or 4 channel image to jpeg or a 2 channel image to tga where the
599    output is an in-memeory buffer.
600    http://rt.cpan.org/Public/Bug/Display.html?id=18397
601
602  - fixes an incorrect pointer parameter in the PNG code
603    http://rt.cpan.org/Public/Bug/Display.html?id=18051
604
605  - skip Inline::C tests when building in a directory with spaces
606    http://rt.cpan.org/Public/Bug/Display.html?id=18049