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