114/6/21 started 8.12
2- all tools support `--version`
3- add vips_svgload_string() convenience function
4- fix thumbnail with small image plus crop plus no upsize [Andrewsville]
5- rename speed / reduction-effort / etc. params as "effort"
6- add gifsave [lovell]
7- arrayjoin minimises inputs during sequential processing, saving a lot of
8  memory and file descriptors
9- add vips_image_get_format_max()
10- flatten handles out of range alpha and max_alpha correctly
11- don't use atexit for cleanup, it's too unreliable
12- tiff writer loops for the whole image rather than per page [LionelArn2]
13- fix VipsSource with named pipes [vibbix]
14- added restart_interval option to jpegsave [manthey]
15- add IIIF3 support to dzsave [martimpassos]
16- add atan2 to math2 [indus]
17- improve buffer and target save file format selection
18- added VipsForeignPpmFormat, format arg to ppm savers
19- add fail-on to give better control over loader error sensitivity
20- add hyperbolic functions sinh, cosh, tanh, asinh, acosh, atanh [hroskes]
21- add untiled jp2k load
22- "insert" will minimise in seq mode
23- better EXIF string handling [lovell]
24
2516/8/21 started 8.11.4
26- fix off-by-one error in new rank fast path
27- add "unlimited" flag to png load [joshuamsager]
28- improve filtering of .v enums [lovell]
29- better logic to prevent shrink to nothing in thumbnail [kleisauke]
30
3114/7/21 started 8.11.3
32- build threadpool later [kleisauke]
33- add jxlsave prototypes [adil-benameur]
34- limit text chunks in PNGs [randy408]
35
3615/6/20 started 8.11.2
37- better libdir guessing [remi]
38- fix tiff pyramid creation with jp2k compression (was broken by 8.11.1)
39- don't load modules if we're built without modules
40
4118/6/21 started 8.11.1
42- add more example code to C docs
43- update libtool support in configure.ac
44- more startup info if VIPS_INFO is set
45- command-line programs set glib prgname (no longer set for you by VIPS_INIT)
46- enable strip chopping for TIFF read [DavidStorm]
47- disable modules by default for static builds [kleisauke]
48- fix jpeg tiff pyramid save
49
5014/8/20 started 8.11
51- add vips_jpegload_source() and vips_svgload_source() to public C API
52- integrate doxygen in build system to generate C++ API docs
53- improve C++ API doc comments
54- add VipsInterpolate and guint64 support to C++ API
55- add VImage::new_from_memory_steal [Zeranoe]
56- vipsthumbnail supports stdin / stdout thumbnailing
57- have a lock just for pdfium [DarthSim]
58- get pdfium load building again [Projkt-James]
59- add _source load support for pdfium
60- add "seed" param to perlin, worley and gaussnoise
61- add vips_source_g_input_stream_new() to load images from a GInputStream
62- add openslideload_source(), vipsload_source(), vipssave_target()
63- add hist path to rank for large windows on uchar images
64- better 8/16-bit choice for pngsave
65- avoid NaN in mapim [afontenot]
66- hist_find outputs a double histogram for large images [erdmann]
67- fix ref leaks in mosaicing package
68- run libvips leak test in CI
69- add vips_fitsload_source(), vips_niftiload_source()
70- png and gif load note background colour as metadata [781545872]
71- add vips_image_[set|get]_array_double()
72- add GIF load with libnsgif
73- add jp2kload, jp2ksave
74- add jp2k compression to tiff load and save
75- add JPEG-XL load and save
76- add black_point_compensation flag for icc transforms
77- add "rgba" flag to vips_text() to enable full colour text rendering
78- move openslide, libheif, poppler and magick to loadable modules [kleisauke]
79- better detection of invalid ICC profiles, better fallback paths
80- add "premultiply" flag to tiffsave
81- new threading model has a singe threadpool shared by all pipelines [kleisauke]
82
8330/4/21 start 8.10.7
84- better vips7 PNG load compatibility [SkyDiverCool]
85- fix load of large PPM images from a pipe [ewelot]
86
8722/12/20 start 8.10.6
88- don't seek on bad file descriptors [kleisauke]
89- check for null memory sources [kleisauke]
90- improve ppmload, fixing a couple of small bugs
91- improve EOF detection in jpegload [bozaro]
92- improve error detection in spngload [randy408]
93- fix includes of glib headers in C++ [lovell]
94- fix build with more modern librsvg [lovell]
95- fix a possible segv with very wide images [f1ac]
96- fix issue thumbnailing RGBA images in linear mode [jjonesrs]
97- improve vipsthumbnail profile handling
98- fix tiff deflate predictor setting [Adios]
99- fix vector path for composite on i386 [kleisauke]
100
10118/12/20 started 8.10.5
102- fix potential /0 in animated webp load [lovell]
103
10414/12/20 started 8.10.4
105- fix spng detection
106
10718/10/20 started 8.10.3
108- relax heic is_a rules [hisham]
109- fix vips7 webp load [barryspearce]
110- fix out of bounds exif read in heifload
111- fix out of bounds read in tiffload
112- fix tiffsave region shrink mode [imgifty]
113- add missing flushes on write to target [harukizaemon]
114- hide info messages you could get with some older glibs [kleisauke]
115- fix --no-strip on dzsave with icc-profiles [altert]
116- better GraphicsMagick image write [bfriesen]
117- add missing read loops to spng, heif, giflib and ppm load [kleisauke]
118- block zero width or height images from imagemagick load [Koen1999]
119- check for overflow in gifload height [lovell]
120- fix msb_first default in ppm load and save [ewelot]
121- force binary mode on win for connection read / write [Alreiber]
122- better testing for output to target [barryspearce]
123- ppmload_source was missing is_a [ewelot]
124- improve webpload rounding and blending behaviour [lovell]
125- fix range clip in int32 -> unsigned casts [ewelot]
126- fix precision error in clip of float -> int casts [ewelot]
127- fix load of HEIC images with 0 length metadata [ddennedy-gpsw]
128- revise rounding in reduce [kleisauke]
129
1306/9/20 started 8.10.2
131- update magicksave/load profile handling [kelilevi]
132- better demand hint rules [kaas3000]
133- fix tiff thumbnail from buffer and source [vansante]
134- in jpegsave, don't set JFIF resolution if we set EXIF resolution
135- bump minimum libheif version to 1.3 [lovell]
136- dzsave in iiif mode could set info.json dimensions off by one [Linden6]
137- pdfload allows dpi and scale to both be set [le0daniel]
138- allow gaussblur sigma zero, meaning no blur
139- better heif signature detection [lovell]
140- fix vips_fractsurf() typo [kleisauke]
141- better heif EOF detection [lovell]
142- fix gir build with g-o-i 1.66+ [László]
143- improve seek behaviour on pipes
144- add "speed" param to heifsave [lovell]
145- fix regression in C path for dilate / erode [kleisauke]
146- fix build with libheif save but no load [estepnv]
147
1489/8/20 started 8.10.1
149- fix markdown -> xml conversion in doc generation
150- remove typedef redefinitions to please old gccs
151- fix regression in tiff pyramid thumbnailing [tand826]
152- stop 0-length buffer being passed to imagemagick [lovell]
153- convert no-profile CMYK to RGB on save [augustocdias]
154- ensure SVG loader skips input with chars outside x09-x7F range [lovell]
155- better mask sizing in gaussmat [johntrunc]
156- fix tiffsave "squash" handling [barryspearce]
157- fix jpegload autorotate [chregu]
158- only start the background render thread on first use
159
16024/1/20 started 8.10.0
161- more conformat IIIF output from dzsave [regisrob]
162- add @id to dzsave to set IIIF id property [regisrob]
163- add max and min to region shrink [rgluskin]
164- allow \ as an escape character in vips_break_token() [akemrir]
165- tiffsave has a "depth" param to set max pyr depth
166- libtiff LOGLUV images load and save as libvips XYZ
167- add gifload_source, csvload_source, csvsave_target, matrixload_source,
168  matrixsave_source, pdfload_source, heifload_source, heifsave_target,
169  ppmload_source, ppmsave_target
170- revise vipsthumbnail flags
171- add VIPS_LEAK env var
172- add vips_pipe_read_limit_set(), --vips-pipe-read-limit,
173  VIPS_PIPE_READ_LIMIT
174- revise gifload to fix BACKGROUND and PREVIOUS dispose [alon-ne]
175- add subsample_mode, deprecate no_subsample in jpegsave [Elad-Laufer]
176- add vips_isdirf()
177- add PAGENUMBER support to tiff write [jclavoie-jive]
178- add "all" mode to smartcrop
179- flood fill could stop half-way for some very complex shapes
180- better handling of unaligned reads in multipage tiffs [petoor]
181- mark old --delete option to vipsthumbnail as deprecated [UweOhse]
182- png save with a bad ICC profile just gives a warning
183- add "premultipled" option to vips_affine(), clarified vips_resize()
184  behaviour with alpha channels
185- improve bioformats support with read and write of tiff subifd pyramids
186- thumbnail exploits subifd pyramids
187- handle all EXIF orientation cases, deprecate
188  vips_autorot_get_angle() [Elad-Laufer]
189- load PNGs with libspng, if possible
190- deprecate heifload autorotate -- it's now always on
191- revised resize improves accuracy [kleisauke]
192- add --vips-config flag to show configuration info
193- add "bitdepth" param to tiff save, deprecate "squash" [MathemanFlo]
194- tiff load and save now supports 2 and 4 bit data [MathemanFlo]
195- pngsave @bitdepth parameter lets you write 1, 2 and 4 bit PNGs
196- ppmsave also uses "bitdepth" now, for consistency
197- reduce operation cache max to 100
198- rework the final bits of vips7 for vips8 [kleisauke]
199- --disable-deprecated now works [kleisauke]
200- vipsheader allows "stdin" as a filename
201- gifload allows gifs with images outside the canvas
202- wasm compatibility patches [kleisauke]
203- webpsave has a @profile param
204
20524/4/20 started 8.9.3
206- better iiif tile naming [IllyaMoskvin]
207
20831/1/19 started 8.9.2
209- fix a deadlock with --vips-leak [DarthSim]
210- better gifload behaviour for DISPOSAL_UNSPECIFIED [DarthSim]
211- ban ppm max_value < 0
212- add fuzz corpus to dist
213- detect read errors correctly in source_sniff
214- fix regression in autorot [malomalo]
215- thumbnail on HEIC images could select the thumbnail incorrectly under some
216  size modes [ZorinArsenij]
217
21820/6/19 started 8.9.1
219- don't use the new source loaders for new_from_file or new_from_buffer, it
220  will break the loader priority system
221- fix thumbnail autorot [janko]
222- fix a warning with magicksave with no delay array [chregu]
223- fix a race in tiled tiff load [kleisauke]
224- better imagemagick init [LebronCurry]
225- lock for metadata changes [jcupitt]
226
22720/6/19 started 8.9.0
228- add vips_image_get/set_array_int()
229- disable webp alpha output if all frame fill the canvas and are solid
230- support arrays of delays for animated images [deftomat]
231- add "unlimited" flag to svgload
232- disable webp alpha output if all frames fill the canvas and are solid
233- add "compression" option to heifsave [lovell]
234- support webp and zstd compression in tiff
235- loaders use "minimise" to close input files earlier
236- integrate support for oss-fuzz [omira-sch]
237- add vips_switch() / vips_case() ... fast many-way ifthenelse
238- better const handling for arithmetic operators fixes comparisons against out
239  of range values
240- sharpen restores input colourspace
241- handle alpha in heifload / heifsave [meyermarcel]
242- add @interpretation and @format to rawload
243- nifti load/save uses double for all floating point metadata
244- add vips_error_buffer_copy()
245- add VipsSource and VipsTarget: a universal IO class for loaders and savers
246- jpeg, png, tiff (though not tiffsave), rad, svg, ppm and webp use the
247  new IO class
248- rewritten ppm load/save is faster and uses less memory
249- add @no_strip option to dzsave [kalozka1]
250- add iiif layout to dzsave
251- fix use of resolution-unit metadata on tiff save [kayarre]
252- support TIFF CIELAB images with alpha [angelmixu]
253- support TIFF with premultiplied alpha in any band
254- block metadata changes on shared images [pvdz]
255- RGB and sRGB are synonmous
256
25717/9/19 started 8.8.4
258- improve compatibility with older imagemagick versions
259- remove realpath, since it can fail on systems with grsec
260
26131/8/19 started 8.8.3
262- revert sharpen restoring the input colourspace
263- xres/yres tiffsave params were in pixels/cm [f--f]
264
2659/7/19 started 8.8.2
266- better early shutdown in readers
267- don't attempt to save large XMP to jpeg [tnextday]
268- always fetch HEIC metadata from the main image [zhoux2016]
269- fix loop in malformed ppm [Kyle-Kyle]
270- better support for PNGs with long comment names
271- fix build with GM
272- add locks for pdfium load
273- fix build with MSVC
274- fix a problem with shinkv tail processing [angelmixu]
275- fix a read one byte beyond buffer bug in jpegload
276- make GIF parsing less strict
277- better feof() handling in GIF load
278- clip coding and interpretation on vips image read
279- check image bounds for GIF load
280- prevent over-pre-shrink in thumbnail [kleisauke]
281- fix sharpen with sigma 0.5 [2h4dl]
282- sharpen restores input colourspace
283- verify bands/format for coded images
284- improve data_length handling for jpeg metadata
285
28624/5/19 started 8.8.1
287- improve realpath() use on older libc
288- better magickload error messages
289- more consistent behaviour for page-height metadata
290- fix for composite with many small images and some combinations of blend modes
291- fix memleak in tiff pyr save to memory [scossu]
292- istiff attempts to read the first directory rather than just testing the
293  magic number [przemyslawpluta]
294- much faster ismagick() [jcupitt]
295- better behaviour for vips_region_fetch() if request lies partly ouside image
296- remove 256 band limit in arithmetic.c [erdmann]
297- disable Orc if building with CET [lovell]
298- fix vipsthumbnail with pyr tiff [kleisauke]
299- text autofit could occasionally terminate early [levmorozov]
300- fewer warnings on tiffload [chregu]
301- vips_resize() breaks aspect ratio and limits shrink to prevent <1px
302  dimensions [lovell]
303
30421/9/18 started 8.8.0
305- much faster smartcrop [lovell]
306- add low/high to smartcrop [jcupitt]
307- add XMP support to png read/write [jcupitt]
308- deprecate thumbnail auto_rotate, add no_rotate [jcupitt]
309- implement thumbnail shrink-on-load for openslide images [jcupitt]
310- add animated webp support [jcupitt]
311- revise vips_cast() to improve behaviour with uint images [erdmann]
312- add bandand()/or()/eor() to cplusplus binding [clcaalu]
313- implement shrink-on-load for tiff pyramids [jcupitt]
314- added vips_image_set_blob_copy() [jcupitt]
315- don't stop composite on first non-transparent image [felixbuenemann, GDmac]
316- add vips_rect_overlapsrect()
317- composite is much faster at positioning subimages
318- stop tiff pyr layers if width or height drop to 1 [gvincke]
319- dzsave has a new skip_blanks option
320- add vips_CMYK2XYZ() and vips_XYZ2CMYK(), plus associated routes
321- include cmyk and srgb fallback profiles
322- add vips_profile_load() and use it everywhere
323- fix race in temp filename creation [lhecker]
324- add @reduction_effort param to webpsave [lovell]
325- add @option_string param to thumbnail_buffer [kleisauke]
326- add XMP, IPCT, ICC, EXIF etc. support to magickload/magicksave
327- much lower memuse for gifload
328- tilecache speedups
329- add vips_heifload(), vips_heifsave()
330- add heif thumbnail support to vips_thumbnail()
331- free threadpool earlier, reducing mem growth for some long-running
332  processes [jtorresfabra]
333- add vips_region_fetch() / _width() / _height() for language bindings
334- vips_text() supports justification
335- move vips_image_set_kill() and iskilled() to the public API
336- dzsave to szi sets suffix correctly [martinweihrauch]
337- dzsave szi writes "scan-properties.xml"
338- add vips_image_(get|set)_image()
339- add openslideload option to attach all associated images as metadata
340- dzsave to szi will write all associated images
341- remove old c++ and python interfaces
342- vipsthumbnail can thumbnail animated and multipage images
343- deprecate webpload @shrink, use @scale instead
344
34531/3/19 started 8.7.5
346- better buffer sizing in tiff reader [omira-sch]
347
3484/1/19 started 8.7.4
349- magickload with magick6 API did not chain exceptions correctly causing a
350  memory leak under some conditions [kleisauke]
351- zero memory on allocate to prevent write of uninitialized memory under some
352  error conditions [Balint Varga-Perke]
353
35421/11/18 started 8.7.3
355- fix infinite loop for autofit with non-scaleable font
356- mapim was not offsetting by window offset [erdmann]
357- better rounding for scale [kleisauke]
358- fix a memleak in magick6load [kleisauke]
359
36021/11/18 started 8.7.2
361- more info output for temp files to help diagnose problems
362- vips_text() could set the wrong DPI
363- vips_text() leaked in autofit mode
364
36523/9/18 started 8.7.1
366- update function list in docs [janko-m]
367- test for g_str_to_ascii() [jcupitt]
368- fix temp file open on Windows and fallback on linux [lovell]
369
37023/12/17 started 8.7.0
371- add magicksave, save image with libMagick [dlemstra]
372- remove jpeg thumbnail from EXIF if "jpeg-thumbnail-data" has been removed by
373  user
374- hough_line scales width to 0 - 180, not 0 - 360
375- hough_line is 4x faster
376- hough_circle is 2x faster
377- add vips_sobel() and vips_canny() edge detectors
378- add vips_rotate() ... a convenience method for vips_similarity()
379- svgload was missing is_a [lovell]
380- better header sniffing for small files
381- drop incompatible ICC profiles before save
382- better hasalpha rules
383- create funcs always make MULTIBAND (ie. no alpha)
384- use O_TMPFILE, if available [Alexander--]
385- set "interlaced=1" for interlaced JPG and PNG images
386- add PDFium PDF loader
387- jpegload adds a jpeg-chroma-subsample field with eg. 4:4:4 for no
388  chrominance subsampling.
389- tiffload, pdfload, magickload set VIPS_META_N_PAGES "n-pages" metadata item
390- add fontfile option to vips_text() [fangqiao]
391- add vips_transpose3d() -- swap major dimensions in a volumetric image
392- remove vips7 stuff from default API ... you must now #include it explicitly
393- added vips_argument_get_id() to fix derived classes on win32 [angelmixu]
394- fix compile with MSVC 2017 [angelmixu]
395- pdfload has a option for background
396- vips7 C++ interface defaults off
397- make members, getters and operators "const" in cpp API
398- composite has params for x/y position of sub-images [medakk]
399- add Mitchell kernel
400- pyramid builders have a choice of 2x2 shrinkers [harukizaemon]
401- add `palette` option to pngsave [felixbuenemann]
402- add basic nifti load/save support
403- support writing string-valued fields via libexif
404- paste in the test suite from pyvips
405- get EXIF tag names from tag plus ifd [@Nan619]
406- escape ASCII control characters in XML
407- magickload now sniffs some file types itself
408- update radiance load from upstream
409- add region_shrink to tiffsave
410- mapim could fail for float index images with coordinates out of int range
411- scale openexr alpha to 0 - 255
412- close input earlier, when we can [kleisauke]
413- add vips_object_get_args() for language bindings [kleisauke]
414
41512/3/18 started 8.6.4
416- better fitting of fonts with overhanging edges [Adrià]
417- revise C++ example [fangqiao]
418- strict round down on jpeg shrink on load [davidwood]
419- configure test for g++ 7.2 and composite.cpp
420- don't Ping in magickload, too unreliable
421- ensure WebP can add metadata when compiled with libwebpmux [lovell]
422- improve accuracy of vector path convolution [felixbuenemann]
423
42412/2/18 started 8.6.3
425- use pkg-config to find libjpeg, if we can
426- better clean of output image in vips_image_write() fixes a crash
427  writing twice to memory
428- better rounding behaviour in convolution means we hit the vector path more
429  often
430- fix a crash if a delayed load failed [gsharpsh00ter]
431- icc_import attaches the fallback profile if it used it
432
4335/1/18 started 8.6.2
434- vips_sink_screen() keeps a ref to the input image ... stops a rare race
435- fix a minor accidental ABI break in 8.6.0 -> 8.6.1 [remicollet]
436- fix read of plane-separate TIFFs with large strips [remicollet]
437- fix a C++ warning in composite.cpp [lovell]
438- remove number of images limit in composite
439- composite allows 1 mode ... reused for all joins
440- fix race in vips_sink() for seq read
441
44210/12/17 started 8.6.1
443- fix mmap window new/free cycling
444- fix some compiler warnings
445- remove the 64-image limit on bandary operations
446- better version date [bmwiedemann]
447- bump wrapper script version [bgilbert]
448- fix a memleak on error during jpeg buffer write [lovell]
449- fix misspelling of IPTC as IPCT [lovell]
450- seq could be set on small images opened in random-access mode [aferrero2707]
451- fix small memleak in dzsave [lovell]
452- small speedup for rgb->g [lovell]
453
45415/4/17 started 8.6.0
455- supports fits images with leading non-image HDUs, thanks benepo
456- add vips_image_new_from_image() and vips_image_new_from_image1() ... make a
457  constant image
458- add new_from_image() to Python as well
459- slight change to cpp new_from_image() to match py/C behaviour
460- vips_conv(), vips_compass(), vips_convsep() default to FLOAT precision
461- add FORCE resize mode to break aspect ratio
462- add vips_thumbnail_image()
463- better prefix guessing on Windows, thanks tumagonx
464- savers support a "page_height" option for multipage save
465- rename 'disc' as 'memory' and default off
466- add vips_find_trim(), search for non-background areas
467- remove lcms1 support, it had bitrotted
468- `join` tagged as seq
469- support tiffsave_buffer for pyramids, thanks bubba
470- thumbnail and vipsthumbnail have an option for rendering intent, thanks
471  kleisauke
472- set file create time on Windows, thanks dlong500
473- remove python tests ... moved to pyvips test suite
474- vips7 and vips8 python bindings default to off ... use the new pyvips
475  binding instead
476- better svgload: larger output, handle missing width/height, thanks lovell
477- add vips_gravity() ... embed, but with direction rather than position
478- vips_text() can autofit text to a box, thanks gargsms
479- add vips_composite() / vips_composite2(): merge a set of images with
480  a set of blend modes
481- better gobject-introspection annotations, thanks astavale
482- vips_image_write() severs all links between images, when it can ... thanks
483  Warren and Nakilon
484- vector path for convolution is more accurate and can handle larger masks
485- linear and cubic kernels for reduce are higher quality
486- added vips_value_set_blob_free()
487- "--size Nx" to vipsthumbnail was broken, thanks jrochkind
488- fix build with gcc 7
489- add vips_fill_nearest() ... fill pixels with nearest colour
490- add VIPS_COMBINE_MIN, a new combining mode for vips_compass()
491- vips_hist_find_indexed() now has a @combine parameter
492- vips_affine() and vips_similarity() have a "background" parameter
493- fix nasty jaggies on the edges of affine output, thanks chregu
494- add gif-delay, gif-comment and gif-loop metadata
495- add dispose handling to gifload
496- dzsave outputs extra right and bottom overlap-only tiles, for closer spec
497  adherence
498- deprecate the "centre" option for vips_resize(): it's now always on
499- setting the EXIF data block automatically sets other image tags
500- add "extend" option to affine; resize uses it to stop black edges
501
50229/8/17 started 8.5.9
503- make --fail stop jpeg read on any libjpeg warning, thanks @mceachen
504- don't build enumtypes so often, removing perl as a compile dependency
505- fix a crash with heavy use of draw operations from language bindings,
506  thanks @Nakilon
507
5082/8/17 started 8.5.8
509- fix transparency detection in merge, thanks Haida
510- define env var VIPS_WARNING to hide warning messages
511- shut down dzsave output earlier to help mark-sweep bindings
512- fix webp thumbnail upscale, thanks Kleis
513
5149/6/17 started 8.5.7
515- better smartcrop
516- transform cmyk->rgb automatically on write if there's an embedded profile
517  and the saver does not support cmyk
518- fix DPI mixup in svgload ... we were writing images about 20% too large,
519  thanks Fosk
520
52119/5/17 started 8.5.6
522- tiff read with start page > 0 could break edge tiles or strips
523- raise b64 limit to allow for huge profiles (thanks jaume)
524- fix error return in blob save (thanks jaume)
525- tag vipsprofile as py2 (thanks ioquatix)
526- don't cache thumbnail (thanks tomasc)
527
52823/4/17 started 8.5.5
529- doc polishing
530- more improvements for truncated PNG files, thanks juyunsang
531- improve corrupted jpg handling, thanks juyunsang
532- fix small test suite issues on os x
533
53423/4/17 started 8.5.4
535- don't depend on image width when setting n_lines, thanks kleisauke
536
5377/4/17 started 8.5.3
538- more link fixing in docs
539- revise cache sizing again to help out of order errors under heavy load, thanks
540  kleisauke
541
54225/3/17 started 8.5.2
543- better behaviour for truncated PNG files, thanks Yury
544- missing proto for vips_tiffsave_buffer(), thanks greut
545- move some docs from the wiki and blog into core libvips docs
546- add support for markdown in docs
547
54825/3/17 started 8.5.1
549- init more classes earlier, thanks David
550
55113/10/16 started 8.5.0
552- rewritten buffer system is safer and frees memory earlier
553- added tiff save to buffer
554- added dzsave save to buffer (zip only)
555- revise header get/set functions
556- better vipsheader behaviour with complex field types
557- added vips_image_hasalpha()
558- added vips_thumbnail() / vips_thumbnail_buffer()
559- webpload/webpsave read and write icc, xmp, exif metadata
560- better >4gb detect for zip dzsave output [Felix Bünemann]
561- all loaders have a @fail option, meaning fail on first warning, though it
562  only does anything for jpg and csv
563- add vips_image_get_fields() to help bindings
564- add tiff multi-page read/write
565- add VIPS_META_PAGE_HEIGHT metadata
566- IM6/IM7 magickload supports page/n/page-height, all_frames deprecated
567- gifload supports n/page-height
568- added #defines for VIPS_SONAME, VIPS_LIBRARY_CURRENT, VIPS_LIBRARY_REVISION,
569  VIPS_LIBRARY_AGE
570- better support for bscale / bzero in fits images
571- deprecate vips_warn() / vips_info(); use g_warning() / g_info() instead
572- vipsthumbnail supports much fancier geometry strings, thanks tomasc
573- vips_thumbnail() has new @size option
574- fix --vips-cache-max etc.
575- add compute reordering, plus some new API to support it:
576  vips_reorder_margin_hint() and vips_reorder_prepare_many(), thanks
577  aferrero2707
578- kick load operations from cache on read error, thanks gaillard
579- fix return from C++ assignment operator overloads (+=, -= etc)
580- add @max_slope to vips_hist_local() to implement CLAHE, thanks hunter-87
581- vips_gaussnoise() pixels are reproducible on recalc, thanks MvGulik
582- max/min sort values by y and x coordinate
583- tiff read uses libtiff scanline API if rows-per-strip is large
584- vips_region_shrink() knows about alpha, helps dzsave and tiffsave
585- use expat, not libxml, for XML load ... removes a required dependency, since
586  we get expat as part of glib
587- new sequential mode infrastructure is faster and more flexible
588- add vips_smartcrop(), based on sharp's smartcropper
589- vipsthumbnail has a --smartcrop option
590- added vips_rot90() etc. convenience functions
591- fix vips_resize() bug when hscale and vscale were very different
592
5938/12/16 started 8.4.5
594- allow libgsf-1.14.26 to help centos, thanks tdiprima
595
59611/11/16 started 8.4.4
597- fix crash in vips.exe arg parsing on Windows, thanks Yury
598
59918/10/16 started 8.4.3
600- fix error detection in gif_close, thanks aaron42net
601- fix tiny threading memleak
602- improve compatibility with very old glib, see #548
603
60427/9/16 started 8.4.2
605- small doc improvements
606- fix error message for metadata fetch type mismatch
607- resolve a race condition in thread shutdown, thanks Lovell
608
6091/5/16 started 8.4
610- many more wepsave options [Felix Bünemann]
611- added quant_table option to wepsave [Felix Bünemann]
612- added @n option to pdfload, thanks andris
613- dzsave won't write empty tiles in google mode, thanks bverem, perog,
614  felixbuenemann
615- allow nested [] in CLI args
616- restore BandFmt on unpremultiply in vipsthumbnail
617- better python detection and build [Felix Bünemann]
618- max-alpha defaults to 65535 for RGB16/GREY16
619- added radsave_buffer [Henri Chain]
620- support tiff orientation tag
621- autorotate option for tiff load
622- tiffsave converts for jpg if jpg compression is turned on
623- tiffsave supports --strip
624- conversions to GREY16 could lock
625- free pixel buffers on image close as well as thread exit ... stops main
626  thread buffers clogging up the system
627- dzsave can write compressed zips [Felix Bünemann]
628- vips_image_write() only refs the input when it has to ... makes it easier to
629  combine many images in bounded memory
630- VImage::write() implementation was missing
631- VImage::write() return value changed from void to VImage to help chaining
632- added C++ arithmetic assignment overloads, += etc.
633- VImage::ifthenelse() with double args was missing =0 on options
634- better accuracy for reducev with smarter multiplication
635- better quality for vips_resize() with linear/cubic kernels
636- pyvips8 can create new metadata
637- better upsizing with vips_resize()
638- add imagemagick v7 support, thanks sachinwalia2k8
639- added vips_worley(), vips_perlin() noise generators
640- added vips_convf(), vips_convi(), vips_convasep(), vips_conva() ...
641  im_conv*() functions rewritten as classes
642- vips_convsep() calls vips_convasep() for the approximate case
643- new fixed-point vector path for convi is up to about 2x faster
644- gif loader can make 1, 2, 3, or 4 bands depending on file contents
645- support --strip for pngsave
646- add svgz support [Felix Bünemann]
647- rename boostrap.sh -> autogen.sh to help snapcraft
648- support unicode filenames on Windows
649- added VIPS_ROUND as well as VIPS_RINT
650- resize/reduce*/shrink*/affine now round output size to nearest rather than
651  rounding down, thanks ioquatix
652- better support for tile overlaps in google maps mode in dzsave
653- dzsave puts vips-properties.xml in the main dir for gm and zoomify layouts
654- resize and reduce have @centre option for centre convention downsampling
655- vipsthumbnail uses centre convention to better match imagemagick
656_ add vips_foreign_get_suffixes()
657
65819/8/16 started 8.3.4
659- better transparency handling in gifload, thanks diegocsandrim
660
66130/7/16 started 8.3.3
662- fix performance regression in 8.3.2, thanks Lovell
663- yet more robust vips file reading
664
66518/5/16 started 8.3.2
666- more robust vips image reading
667- more robust tiff read [Matt Richards]
668
66915/4/16 started 8.3.1
670- rename vips wrapper script, it was still vips-8.2, thanks Benjamin
671- export C++ operator overloads for MSVC linking [Lovell]
672- fix magickload @page with GraphicsMagick
673- add giflib5 support
674- allow resize >1 on one axis, <1 on the other
675- vips_resize has an optional @kernel argument
676- fix giflib4 detection [felixbuenemann]
677
67829/1/16 started 8.3
679- add vips_reduce*() ... a fast path for affine downsize
680- vips_resize() uses vips_reduce() with lanczos3
681- bicubic is better on 32-bit int images
682- add pdfload, svgload, gifload for PDF, SVG and GIF rendering
683- vipsthumbnail knows about pdfload and svgload
684- added @page param to magickload
685- matload is more specific (thanks bithive)
686- lower mem use for progressive jpg decode
687- sharpen has a new @sigma param, @radius is deprecated
688- sharpen allows a much greater range of parameters
689- sharpen defaults now suitable for screen output
690- better handling of deprecated args in python
691- much better handling of arrayimage command-line args
692- faster hist_find (Lovell Fuller)
693- webpload has a @shrink parameter for shrink-on-load
694- vipsthumbnail knows about webp shrink-on-load
695- better behaviour for vips_cast() shift of non-int types (thanks apacheark)
696- python .bandrank() now works like .bandjoin()
697- vipsthumbnail --interpolator and --sharpen switches are deprecated
698- switches to disable PPM, Rad and Analyze support
699- added VIPS_COUNT_PIXELS(), overcomputation tracking
700- @out_format in vips_system() can contain [options]
701- webpsave_buffer no longer ignores @lossless, thanks aaron42net
702- float tiff tagged as scRGB to match photoshop convention, thanks Murat
703- better jpeg autorot, thanks otto
704
70524/3/16 started 8.2.4
706- fix nohalo and vsqbs interpolators, thanks Rafael
707
70827/1/16 started 8.2.3
709- fix a crash with SPARC byte-order labq vips images
710- fix parsing of filenames containing brackets, thanks shilpi230
711- fix hist_entropy (lovell)
712- small fixes to radiance load
713
71412/1/16 started 8.2.2
715- changes to ease compiling C++ binding with MSVC [Lovell Fuller]
716- reorder file tests to put slow loaders last
717- ifthenelse needs less C stack during eval
718- better rounding in bilinear interpolator
719- fix to "make check" in non-C locales [felixbuenemann]
720- use compiler builtins isnan, isinf, fabs, fmin, fmax, ceil, floor when
721  possible [Lovell Fuller]
722- tune vips_shrinkh(), 30% faster [Lovell Fuller]
723- remove SEQ hint from vips_subsample(), fixes cli performance [erdmann]
724- fix double free on attach ICC profile from file in tiff write [erdmann]
725- use g_assert_not_reached()
726- better vips-from-C docs
727- remove Duff from im_conv() / im_conv_f() for a 25% speedup [Lovell Fuller]
728
7291/1/16 started 8.2.1
730- add a compat stub [Benjamin Gilbert]
731- python bandjoin is now just an instance function
732- small doc improvements
733- small vips7 C++ improvement
734- remove exception specifications from vips8 C++ interface [Lovell Fuller]
735- VImage::get_typeof() now returns GType
736
7377/10/15 started 8.2.0
738- added im_bufmagick2vips(), a vips7 wrapper for magick load from buffer
739- fetch unset property now returns default value rather than warning
740- many more const declarations to help gobject-introspection
741- rewritten vips_shrink() is 2x faster, much lower memuse, now handles complex
742- only allow [] for filename options
743- add memory.h to Python API .. makes tracked highwater visible
744- added bandjoin_const to add constant bands to an image
745- better alpha handling for tiff write, thanks sadaqatullahn
746- better cache sizing for vips_resize()
747- sizealike / formatalike / bandsalike elide completely if they can for
748  a x2 saving in C stack use in many cases
749- added vips_mapim() ... resample with an index image, plus test
750- try to improve vips_resize() quality a little more
751- vips_resize() can do non-square resizes
752- dzsave removes tile metadata by default, thanks Benjamin
753- jpeg strip option removes a little more, thanks Benjamin
754- added vips_image_new_from_memory_copy()
755- improve vips_sink_screen() stability under heavy load
756- added vips_arrayjoin()
757- Python x.bandjoin(y) is now x.ibandjoin(y), sorry
758- faster and lower-mem TIFF read
759- faster bilinear interpolator
760- TIFF loads and saves IMAGEDESCRIPTION
761- add --properties flag to tiffsave
762- dzsave defaults changed: now writes 256x256 jpegs for non-edge tiles, thanks
763  Daniel
764
7657/5/15 started 8.1.1
766- oop, vips-8.0 wrapper script should be vips-8.1, thanks Danilo
767- fix vips7 pathname parsing on windows, thanks Lovell
768
7697/5/15 starteld 8.1.0
770- add vips_premultiply(), vips_unpremultiply()
771- change the alpha range rules for vips_flatten() to match vips_premultiply()
772- vipsthumbnail uses vips_resize() rather than its own code
773- vipsthumbnail uses vips_premultiply() for better alpha quality
774- added bandand() bandor() bandeor() convenience funcs to Python
775- oops, base64 encode could pad by up to two zero bytes
776- added VipsRefString as a thing that gi bindings can unpack
777- support "with Vips.Image as i:" in Python
778- try to support DOS CSV and PPM files on linux
779- add vips_byteswap(), remove byteswap option from vips_copy()
780- add vips_bandfold()/vips_bandunfold()
781- dzsave supports zip output > 4gb, thanks benjamin
782- add support for HSV colourspace [Jonas Øgaard]
783- skip oversized markers in jpeg write
784- jpeg exif tags saved as name rather than title
785- can now set any jpeg exif tag, not just modify existing tags
786- add vips_hist_entropy()
787- vips_log(), vips_log10() are zero-avoiding
788- better overlap handling for dzsave, thanks robclouth
789- add @spacing option to vips_text()
790- tiff loads and saves IPCT and Photoshop data
791
7927/5/15 started 8.0.3
793- dzsave and tif pyr write could fail for some image dimensions, thanks Jonas
794
7954/5/15 started 8.0.2
796- fix a refcount error in C++ wrapper, thanks huskier
797- better C++ api test
798- test suite improvements
799- remove a couple of stray header decls, thanks benjamin
800
80125/4/15 started 8.0.1
802- fix some compiler warnings
803- work around a glib bug that can cause segv under load
804- add some notes on threading to the docs
805- better leak reporting
806
80711/2/15 started 8.0
808- remove old doc stuff, lots of doc improvements
809- add fliphor(), flipver(), rot90(), rot180(), rot270(), median(), dilate(),
810  erode() convenience methods to Python and C++
811- python: use [] to index and slice image bands, use () to get a point
812- c++: use [] to band index, () returns a vector<double>
813- add shift option to cast
814- sRGB2scRGB and scRGB2sRGB scale 16-bit alpha to and from 8-bit
815- add magickload_buffer() [mcuelenaere]
816- add vips_foreign_is_a_buffer() [mcuelenaere]
817- added test_foreign.py, plus more test images
818- added vips_region_shrink(), fast x2 shrinker
819- rewritten tiff writer is about 3 - 4x faster at making pyramids
820- jpg, magick, png, tiff readers now use only 1 fd per input image
821- added vips_info_set(), vips_progress_set(), vips_profile_set() ... bindings
822  can now support all the vips command-line options if they wish
823- better conversion to greyscale, thanks bkw
824- add vips_image_copy_memory(), improves stability with heavy threading
825- jpegsave supports new mozjpeg features [lovell]
826- add vips_vipsload(), vips_vipssave() ... why not
827
82826/3/15 started 7.42.4
829- im_maxpos_avg() avoids NaN
830- small tiffsave doc improvements
831- better thresholding for tiffsave "squash" mode
832- add @miniswhite mode to tiffsave
833
8346/2/15 started 7.42.3
835- bump version for back-compat ABI change
836- added vips_image_memory(), an alias for vips_image_new_memory()
837- improvements to configure for python
838- remove --disable-cxx configure flag
839- python imageize preserves interpretation
840- fix dzsave as a target format
841
84230/12/14 started 7.42.2
843- C++ required output params were broken, thanks Lovell
844- remove VImage::scale() to get scale from header, it clashed with the
845  VipsScale operator, thanks Lovell
846- allow c++ set enum from string
847- display param default and range in usage
848- better docs
849- more tests
850- renamed VIPS_FOREIGN_DZ_DEPTH_1 as VIPS_FOREIGN_DZ_DEPTH_ONE etc. to help
851  bindings
852- vipsthumbnail will return an error code if one or more conversions failed
853- disable chroma subsample in jpeg-tiff if Q >= 90
854- try to handle tiffs with old-style 8-bit colormaps
855- rename vipsthumbnail -o as -f, -o stays as a hidden flag
856- fix some small leaks
857- faster openslide load, thanks Benjamin
858- add VInterpolate class to cplusplus binding, thanks Lovell
859- add lower-level operation cache access
860- turn on leak testing in test suite
861- don't use isnormal() to test for crazy FP numbers, thanks Murat
862- much faster RGB16 -> sRGB path
863
86424/12/14 started 7.42.1
865- add gobject-2.0 to Requires: in vips and vips-cpp .pc files
866- bump soname
867- fix VipsBlob read
868- remove "future" dependency, thanks bgilbert
869
8704/11/14 started 7.42.0
871- better default resolution for png load
872- better pbm (one bit) load, better pfm (float) load/save
873- added pbm (one bit) save
874- changed vips_gaussblur() parameters, sorry
875- add .szi as a dzsave zip synonym
876- support tiff XMP metadata
877- support @density arg to magickload [Lovell]
878- support python3.4 and python2.7 in new python binding
879- vips_gaussmat() and vips_logmat() are now int by default, to match
880  vips_conv(), and use @precision, not @integer
881- added --disable-pyvips8 switch to turn off new py binding
882- "vips thing" exit status can now be used to test for optional components
883
88425/7/14 started 7.41.0
885- start working on --disable-deprecated
886- fix pngload with libpng >1.6.1
887- add vips_resize()
888- return of vips_init(), but just for bindings
889- revised type.c to make it more binding-friendly
890- add @background arg to save: the colour to flatten against
891- add VIPS_ARGUMENT_MODIFY flag ... used for draw_circle etc, meaning an op
892  which modifies its argument
893- rename VIPS_OPERATION_RELATIONAL_NOTEQUAL as VIPS_OPERATION_RELATIONAL_NOTEQ
894  for consistency
895- python vips8 binding
896- python vips8 test suite: test_arithmetic.py, test_colour.py,
897  test_conversion.py
898- move zoomify ImageProperties file, now a better match to the offical tool
899- rename VIPS_ANGLE_180 as VIPS_ANGLE_D180 etc. to help python
900- remove cimg support, we have a gmic plugin now instead
901- add support for vips8 plugins
902- added "autorotate" option to jpeg load
903- added autorot operator
904- added @filter option to pngsave (Lovell)
905- C++ vips8 binding
906
90727/10/14 started 7.40.12
908- better tiff detection (Lovell)
909- fix memleak in sharpen (Lovell)
910- fix profile handling in XYZ2scRGB, thanks Lovell
911
9128/10/14 started 7.40.11
913- rework extra band handling for colour functions
914- set interpretation of matlut output more carefully
915
9168/9/14 started 7.40.10
917- icc_import and icc_transform checks the input profile for compatibility
918  with the image, thanks James
919- try to make vips_thread_shutdown() optional
920
9218/9/14 started 7.40.9
922- support jfif resunit "none"
923- support GRAY as an input and output ICC space
924- fix a read loop with setjmp() in png read, if the png file is broken
925- fix vipsthumbnail with both input cmyk and output rgb profiles specified
926- vipsthumbnail retries with specified input profile if embedded profile is
927  broken
928- add @profile option to pngsave, matching tiff and jpeg
929- fix a race in the operation cache [Lovell]
930
9318/9/14 started 7.40.8
932- fix configure on rhel6 [Lovell]
933- mono <-> rgb converters were not handling extra bands, thanks James
934- support jpeg resunit "none"
935
93621/8/14 started 7.40.7
937- width and height were swapped in matlab load
938- set interpretation more carefully on matlab load
939- fix memleak in tilecache [Lovell]
940- fix memleak in VipsArray [Lovell]
941- fix memleak in webp load from buffer [Lovell]
942- fix memleak in png save to buffer [Lovell]
943- make out of order read in png and jpg a fatal error
944- add thread_shutdown() to C++ (and thereby to python)
945
94612/8/14 started 7.40.6
947- more doc fixes
948- fix similarity rotate+scale, thanks Topochicho
949- fix 16-bit PNG save, thanks John
950- fix dzsave date on Windows, thanks John
951- fix vipsthumbnail on many-core systems, thanks James
952
95325/7/14 started 7.40.5
954- fix a race in im_maxpos_avg()
955- limit n_thr on tiny images
956- don't exit() on memleak detected, just warn
957- add "autocrop" option to openslide load
958- argh fix affine, again, there were sometimes black bars with nohalo and the
959  vips8 interface
960- pngsave in interlaced mode makes a copy of the image, so it's always seq
961- vipsthumbnail shrinks to 1/2 window_size
962- vipsthumbnail has an anti-alias filter between shrink and affine
963- vipsthumbnail defaults to bicubic
964- better rounding behaviour for fixed-point bicubic reduces noise
965- fix pngload with libpng >=1.6.11
966- fix colour for openslide read associated
967
9684/7/14 started 7.40.4
969- fix vips_rawsave_fd(), thanks aferrero2707
970- fix im_point()
971- vips_scale() now does round to nearest to avoid rounding errors
972- improve im_openout() compat macro
973- more vips7 compatibility fixes, thanks steve
974- more robust vips_system()
975- add webp support to vips7
976
97730/6/14 started 7.40.3
978- fix interlaced thumbnails in vipsthumbnail, thanks lovell
979- fix use of "header" in benchmark/, thanks David
980- fits save now caches the image before write, so it's top-to-bottom
981- add --properties argument to dzsave, thanks bgilbert, jhenriksen
982
98325/6/14 started 7.40.2
984- dzsave write to zip stops at 4gb, thanks bgilbert
985- improve short option name handling, thanks bgilbert
986- added --enable-docs configure option to help freebsd
987- removed a bash-ism from configure to help freebsd
988- don't assume GType fits in an int to help freebsd
989
99024/6/14 started 7.40.1
991- revise man.1 pages
992- fix vips_guess_prefix()
993
99423/6/14 started 7.40.0
995- version bump
996- renamed "header" as "vipsheader" and "edvips" as "vipsedit"
997
99821/1/14 started 7.39.0
999- auto-decode for (almost) all operations, see vips_image_decode()
1000- background render thread cleans up and quits neatly
1001- colourspace has a source_space option
1002- operations can be tagged as "deprecated"
1003- redo im_draw_circle(), im_draw_flood(), im_draw_line(), im_draw_mask(),
1004  im_draw_image(), im_draw_rect(), im_draw_point(), im_read_point(),
1005  im_draw_smudge(), im_label_regions() as classes
1006- better rounding in vips_flatten()
1007- VipsStatistic operations are sequential
1008- vipsthumbnail has --rotate auto-rotate option
1009- removed embedded thumbnail reader from vipsthumbnail: embedded thumbnails
1010  are too unlike the main image
1011- fix to vipsthumbnail --crop, thanks Alessandro
1012- add vips_sum()
1013- add vips_hough base class and vips_hough_line()
1014- add "mode" param to vips_draw_image()
1015- add vips_hough_circle()
1016- reduce default cache size to 1,000 operations
1017- added "postbuild" signal
1018- vips_system() now supports many input images and you can change image
1019  argument order
1020- support 16-bit palette TIFFs, plus palette TIFFs can have an alpha
1021- libgsf-1 is now an optional dependency
1022- dzsave can directly write a ZIP file
1023- add ".vips" as an alternative suffix for vips files
1024- added vips_tiffload_buffer()
1025- added vips_image_new_from_buffer(), vips_image_write_to_buffer()
1026- added vips_object_set_from_string()
1027- added @container option to dzsave
1028- support 1/2/4 bit palette tiff images with alpha
1029- vips_system() now uses g_spawn_command_line_sync()
1030- added im_tile_cache_random() to help nip2
1031- added hough_circle() to vips7 C++ API
1032- added Travis CI config, thanks Lovell
1033- im_*merge(), im_*mosaic(), im_match*(), im_global_balance*(), im_remosaic(),
1034  im_*mosaic1(), im_*merge1() redone as classes
1035- better filename tracking for globalbalance
1036- revised vips8 image load/save API, now simpler and more logical
1037- operations emit "invalidate" if any of their input images invalidate
1038- operation cache drops ops on invalidate
1039- skipahead is back, thanks to a new threadpool tweak
1040
10416/3/14 started 7.38.6
1042- grey ramp minimum was wrong
1043- vipsthumbnail --crop could fail for very non-square images, thanks
1044  Alessandro
1045- fix a crash in vips_rawsave(), thanks Andrea
1046- updated German translation, thanks Chris
1047- fix coordinate error in affine, thanks ferryfax
1048
104924/2/14 started 7.38.5
1050- jpeg load from buffer could write to input, thanks Lovell
1051- fix webpload from buffer, thanks Lovell
1052- vips_sequential() could fail under heavy load
1053- remove support for seq mode read for operations like extract
1054
105513/2/14 started 7.38.4
1056- --sharpen=none option to vipsthumbnail was broken, thanks ferryfax
1057- more locking on property create and lookup to help very-threaded systems,
1058  thanks Nick
1059
106022/1/14 started 7.38.3
1061- undeprecate VIPS_MASK_IDEAL_HIGHPASS and friends, ruby-vips was using them,
1062  thanks ahacking
1063
106422/1/14 started 7.38.2
1065- auto RAD decode for affine
1066- falsecolour was not working for some image types
1067- foreign memory buffer images did not have the right dhint, broke
1068  command-line falsecolour on sequential images
1069- support many Radiance readers active at once
1070- add secret "rgbjpeg" flag to vips_tiffsave() to help IIP
1071
107219/1/14 started 7.38.1
1073- bump soname, thanks benjamin
1074- better conversion to and from scrgb/xyz for rad (hdr)
1075- fix --interpolate flag to vipsthumbnail, thanks Lovell
1076
107718/1/14 started 7.38.0
1078- version bump
1079
108019/10/13 started 7.37.0
1081- redone im_rotate_*mask45(), im_gauss_*mask*(), im_log_*mask(), im_dilate(),
1082  im_erode(), im_rank_image(), im_compass(), im_linedet(), im_gradient(),
1083  im_convsep(), im_convsep_f(), im_fastcor(), im_spcor(), im_sharpen()
1084  as classes
1085- im_gradcor() deprecated
1086- vips_init() now does some ABI compat checking, though this change requires
1087  an ABI break
1088- add "interlace" option to vips_jpegsave()
1089- remove vips_image_copy_fields() and vips_demand_hint() and add
1090  vips_image_pipeline() to do both jobs
1091- vipsthumbnail allows non-square bounding boxes, thanks seth
1092- add vips_matrixprint()
1093- add @point subsample mode to vips_subsample()
1094- im_contrast_surface() deprecated: it was slower than calling conv a few
1095  times
1096- radiance load supports sequential read
1097- rewritten radiance decode is much faster
1098- add vips_crop(), a synonym for vips_extract_area()
1099- rename vips_gammacorrect() as vips_gamma(), now takes 1 / exp
1100- vips_gamma() works for any format
1101- add --linear mode to vipsthumbnail
1102- support XYZ as a PCS for vips_icc_import() and vips_icc_export()
1103- add --strip option to jpegsave
1104- added vips_gaussblur() convenience function
1105- added --vips-profile, records and dumps thread timing and memory use info
1106- added vipsprofile, visualises --vips-profile output
1107- auto-vectorization-friendly inner loops
1108- added vips::init() and vips::shutdown() to C++ API
1109- reuse pixel buffers on sharing to reduce mem cycling
1110- conv is SMALLTILE, huge mem use saving on wide images
1111- vipsthumbnail has a --crop option
1112- remove video4linux1 code, it was useless on all modern linuxes
1113- redone freq filter builders as classes
1114- redone im_fwfft(), im_invfft(), im_freqflt(), im_disp_ps(), im_fractsurf(),
1115  im_phasecor() as classes
1116- vips_colourspace() allows B_W, GREY16, RGB16 as source / target
1117- added vips_thread_shutdown(), thanks Lovell
1118- vips_linear() has a uchar output mode
1119- redone im_cntlines(), im_rank() as classes
1120- move im_zerox() to deprecated, it wasm't very useful
1121
11229/1/14 started 7.36.6
1123- fix some clang compiler warnings
1124
112520/11/13 started 7.36.5
1126- better cache sizing in unbuffered sequential mode
1127- allow larger tile_size in dzsave
1128- remove use of PATH_MAX to help gnu hurd
1129- fix vips_hist_match()
1130
113115/11/13 started 7.36.4
1132- improve compat with im_init_world()
1133
113418/10/13 started 7.36.3
1135- fix compiler warnings in ubuntu 13.10
1136- reverse similarity rotation direction to match the convention used
1137  elsewhere in vips
1138- fix blocked caching of sequential load operations
1139- fix cache flags
1140- fix --delete option to vipsthumbnail
1141
114210/10/13	started 7.36.2
1143- better jpeg startup
1144- rename jpeg bool type to reduce confusion between libraries
1145
11463/10/13	started 7.36.1
1147- fix to help OS X build
1148
11493/10/13	started 7.36.0
1150- version bump
1151
11521/7/13 started 7.35.0
1153- added vips_matrixload() and vips_matrixsave(), load and save vips mat format
1154- rename image arrays as image matrices ... INTERPRETATION_ARRAY ->
1155  INTERPRETATION_MATRIX etc.
1156- rewrite im_buildlut(), im_identity*(), im_maplut(), im_falsecolour(),
1157  im_gammacorrect(), im_histgr(), im_histcum(), im_histnorm(), im_heq(),
1158  im_histnD(), im_histindexed(), im_histspec(), im_invertlut(), im_lhisteq(),
1159  im_stdif(), im_project(), im_profile(), im_tone_build*(), im_mpercent*(),
1160  im_ismonotonic() as classes
1161- vips_hist_local(), vips_stdif() do any number of bands
1162- thin vips8 wrapper for im_histplot()
1163- added vips_error_freeze() / vips_error_thaw()
1164- used freeze() / thaw() to stop file format sniffers logging spurious errors
1165- vipsthumbnail uses embedded jpg thumbnails if it can
1166- rename vips_diag() as vips_info(), add --vips-info flag
1167- deprecate im_hsp()
1168- added vips_webpload(), vips_webpload_buffer(), vips_webpsave(),
1169  vips_webpsave_buffer(), vips_webpsave_mime()
1170- tiff reader allows separate planes for strip read
1171- tiff reader and writer allow many more formats, eg. 32-bit int, complex, etc.
1172- tiff reader and writer allow any number of bands
1173- added vips_image_new_matrixv()
1174- dzsave basename param now called filename, so you can use .dz as a
1175  destination (basename is still there but deprecated)
1176- new _UNBUFFERED sequential mode saves memory in some important cases
1177- vips_conv() is a simple wrapper over the old convolution functions
1178- new optimize_coding param for jpeg write produces optimal Huffman tables,
1179  thanks Lovell
1180- im_tone_map() and im_tone_analyse() deprecated
1181- new --band arg to vips_maplut() replaces im_tone_map() functionality
1182- added vips_similarity(), simple wrapper for vips_affine() that lets you
1183  give a scale and rotate
1184
11853/7/13 started 7.34.2
1186- lower priority for Matlab load to reduce segvs from Mat_Open(), thanks
1187  Michael
1188- null-terminate libexif strings, thanks Mike
1189- openslide always outputs solid pixels
1190
119128/6/13 started 7.34.1
1192- fix morphological operators on non-uchar images
1193- remove any ICC profile when we use vips to go to srgb
1194
11957/6/13 started 7.34.0
1196- version bump
1197- oops, VImage.PIL_mode_from_vips() failed for CMYK, thanks Alessandro
1198- fix no-pango build
1199- add im_vips2dz(): run the deepzoom writer from vips7
1200- vips_magickload() has an option to read all images in a sequence
1201- redo im_make_xy(), im_*eye(), im_zone*(), im_sines() as classes
1202- added vips_pngload_buffer()
1203- faster --centre option to dzsave, thanks Kacey
1204
120512/3/13 started 7.33.0
1206- vipsthumbnail lets you specify the sharpening mask
1207- turn off caching for im_copy()/vips_copy(), we use copy to stop sharing, and
1208  it's cheap so caching doesn't help anyway
1209- auto rshift down to 8 bits on save, if necessary
1210- im_gaussnoise(), im_copy_file(), im_grid(), im_scale(), im_scaleps(),
1211  im_wrap(), im_rotquad(), im_zoom(), im_subsample(), im_msb(), im_text(),
1212  im_system(), im_system_image()
1213  redone as classes
1214- add --angle option to dzsave
1215- another vips_shrink() fix argh
1216
121714/5/13 started 7.32.4
1218- icc import and export could segv on very wide images
1219- fix centos 5 build, thanks re-boot
1220
122116/4/13 started 7.32.3
1222- rename GETTEXT_PACKAGE as vips7.32 to help Debian (thanks Jay)
1223- added "persistent" option to tilecache
1224
122512/3/13 started 7.32.2
1226- removed some left-over debugging code from configure.ac
1227- better handling of args without values, thanks Ruven
1228- better error messages from vips.c
1229- fix demand hints so "vips shrink" works again, thanks Jan
1230- im_jpeg2vips.c builds without jpeglib.h, thanks Alessandro
1231
12326/2/13 started 7.32.1
1233- fix --without-lcms, thanks speckins
1234- updates to licence, thanks Benjamin
1235- remove "fred" from dist
1236- better bootstrap on OS X
1237
123822/1/13 started 7.32.0
1239- tilecache in threaded mode could deadlock if the downstream pixel source
1240  raised an error (thanks Todd)
1241- fix another dzsave corner-case (thanks Martin)
1242- neater output for "header"
1243- added VIPS_META_LOADER: record the loader name
1244= header displays this loader hint
1245- vipsthumbnail is better at cache sizing
1246
124731/8/12 started 7.31.0
1248- redone im_Lab2XYZ(), im_XYZ2Lab(), im_Lab2LCh(), im_LCh2Lab(), im_UCS2LCh,
1249  im_LCh2UCS(), im_XYZ2Yxy(), im_Yxy2XYZ(), im_float2rad(), im_rad2float(),
1250  im_Lab2LabQ(), im_LabQ2Lab(), im_Lab2LabS(), im_LabS2Lab(), im_LabQ2LabS(),
1251  im_LabS2LabQ(), im_LabQ2disp(), im_XYZ2disp(), im_disp2XYZ(),
1252  im_icc_import*(), im_icc_export*(), im_icc_transform*(), im_dE_fromLab(),
1253  im_dECMC_fromLab(), im_dE00_from_Lab(), im_icc_ac2rc() as classes
1254- added vips_colourspace(), vips_colourspace_issupported(), replaces all
1255  derived conversions
1256- faster and more accurate sRGB <-> XYZ conversion
1257- support 16-bit sRGB import and export
1258- rename UCS colourspace as CMC
1259- dzsave can write zoomify and google maps layout as well
1260- tilecache supports threaded access, so openslide read now threads
1261- openslide2vips gets underlying tile size from openslide
1262- embed has 'background' option
1263- dzsave --layout google has a @background option
1264- dzsave has a --depth option
1265- update for new glib threading API
1266- remove no threads option, glib no longer support it
1267- better --help output for vips driver prog
1268- vipsthumbnail -o allows absolute file names
1269- much better exif handling for jpg images (thanks Gary)
1270- preserve jpeg app13 (photoshop ipct)
1271- vips_max() / _min() track the top n maxima / minima
1272- deprecate im_maxpos_avg(): too specialised to be worth maintaining
1273- deprecate im_linreg(): easily done by combining other operators
1274- deprecate im_point(): easily done by combining other operators
1275- add binary complex operations, with cross_phase as the only one so far
1276- added vips_bandbool(), with vips_bandand(), _bandor(), _bandeor() as
1277  convenience functions
1278- added scRGB colourspace, linear light float space with sRGB primaries
1279- all interpolators use corner convention ... we had round-to-nearest in
1280  several of them before, causing a range of annoying problems
1281- redone im_affine*() as a class
1282- added input space displacement to affine
1283- VipsArea is threadsafe
1284- dzsave has a --centre option
1285
128631/12/12 started 7.30.8
1287- png icc profile write was broken
1288
128931/12/12 started 7.30.7
1290- better option parsing for "vips", thanks Haida
1291- small fixes to help OS X
1292- backported threaded tile cache from next version, im_tile_cache() now
1293  uses it to prevent a deadlock, see comment there
1294
129514/11/12 started 7.30.6
1296- capture tiff warnings earlier
1297
129814/11/12 started 7.30.5
1299- fix libtool version mess up (thanks Benjamin)
1300
13012/10/12 started 7.30.4
1302- remove options from format string in .dzi (thanks Martin)
1303- vipsCC.pc required the wrong version of vips (thanks Alessandro)
1304- larger max tile size for dzsave
1305- linecache is 50% larger to leave some slop room
1306
130713/9/12 started 7.30.3
1308- linecache sized itself too large
1309- fix a compile failure if libtiff was not found (thanks Martin)
1310- dzsave did not work for images with an odd number of scanlines
1311  (thanks Martin)
1312
13134/9/12 started 7.30.2
1314- sequential stops all threads on error
1315- sequential delays ahead threads rather than blocking them completely
1316
13176/8/12 started 7.30.1
1318- fixes to dzsave: shrink down to a 1x1 pixel tile, round image size up on
1319  shrink, write a .dzi file with the pyramid params, default tile size and
1320  overlap now matches the openslide writer
1321- wrap VipsInterpolate for C++
1322- so affinei and affinei_all appear in Python
1323- be more cautious enabling YCbCr mode in tiff write
1324- add "DEPRECATED" flag to arguments
1325- jpeg load/save note and use the preferred resolution unit
1326- better error msgs for enum args
1327- fix compiler warnings in production build (thanks Dmitry)
1328- fix spurious warnings about exif updates
1329- VipsSequential has an integrated cache and stalls out of order threads
1330- add a line cache ... sizes up dynamically with request size
1331- tilecache / linecache use a hash table not a linear list
1332
133320/7/12 started 7.30.0
1334- support "rs" mode in vips7
1335- add --vips-version cmdline arg
1336- fix --without-tiff / exr / jpeg / png / magick
1337- add --vips-fatal flag
1338
133919/3/12 started 7.29.0
1340- sanity-check PNG read geometry
1341- nearest-neighbor interpolation rounds coordinates to nearest instead of
1342  rounding down (thanks Nicolas)
1343- add dzsave, save in deep zoom format
1344- rework im_shrink() as a class
1345- remove im_rightshift_size(), just a convenience function now
1346- vipsthumbnail no longer removes profiles by default
1347- much more gentle sharpening in thumbnails
1348- added "minimise" signal, used by tilecache to drop
1349- add :seq support to im_tiff2vips(), im_jpeg2vips() ... helps ruby-vips
1350- better thread safety for vips8 operation dispatch
1351- better thread safety for upstream / downstream image linking
1352- added "rs" open mode, removed "rd"
1353- added vips_operation_get_flags() ... system for attaching sets of flags to
1354  operations
1355- added VIPS_OPERATION_SEQUENTIAL flag
1356- vips8 command-line interface uses this to turn sequential mode on
1357  automatically when possible
1358- better handling of input files in vips7 command-line interface
1359- sequential can skip ahead, so extract / insert are now seq
1360
136116/7/12 started 7.28.10
1362- wopconst was broken
1363- vips_sign() was broken
1364- png save compression range was wrong
1365- more/moreeq was wrong
1366- vips7 ppm save with options was broken
1367- don't cache write operations
1368
136918/6/12 started 7.28.9
1370- slightly more memory debugging output
1371- remove references to the static bicubic interpolator from the docs
1372- fix temp file handling on Windows --- was breaking for non-vips files
1373  over 100mb
1374- better support for using images from multiple threads
1375
137618/6/12 started 7.28.8
1377- fixes for centos5 portability
1378
137918/6/12 started 7.28.7
1380- add vips_flatten() -- flatten RGBA to RGB
1381- better alpha handling in PNG load
1382- don't save RGBA PNG as CMYK JPG (thanks Tobsn)
1383- fix a crash with malformed jpg files (thanks Grigoriy)
1384- vipsthumbnail enables sequential mode more and caches lines better
1385
138619/4/12 started 7.28.6
1387- better resolution unit handling in deprecated im_vips2tiff()
1388- use TIFF_CFLAGS output from pkg-config (thanks Jay)
1389- much faster vips_argument_map()
1390- make jpeg pyramids work with tiff4
1391- tiff loader always offers THINSTRIP (thanks Diuming)
1392- add "nocache" operation flag, set for sequential load (thanks Diuming)
1393- fix a crash in the tiff reader for huge values of RowsPerStrip (thanks
1394  Nicolas)
1395- remove use of G_DEFINE_BOXED_TYPE() to help compat (thanks Jake)
1396
139719/4/12 started 7.28.5
1398- ifthenelse blend mode was broken
1399- small blend speedup
1400- default to libtiff-4
1401
140217/4/12 started 7.28.4
1403- up max buffer size for vipsbuf
1404
14056/4/12 started 7.28.3
1406- vips_divide() failed for int arguments
1407- fix warning for unused vips7 gvalue argument
1408- fix openslide read: always return png-style rgba, im_argb2rgba() becomes a
1409  NOP
1410- cast to unsigned int now removes <0 values
1411- vips7 interface to openslide now supports :,level,associated options (thanks
1412  Benjamin)
1413- make vips8 cache smaller
1414- more accurate progress reporting
1415
141613/3/12 started 7.28.2
1417- xres/yres tiffsave args were broken
1418
141913/3/12 started 7.28.1
1420- add ICC profile read/write for png files
1421
142230/1/12 started 7.28.0
1423- version bump
1424- added vips_foreign_find_save_options()/vips_foreign_find_load_options()
1425- delayed write to foreign via a "w" image was not working
1426- support operations with many returns in Python
1427- sequential read mode
1428- better im_shrink()
1429- added vips_sequential()
1430- new vips_sink_memory() keeps read ordering
1431- tiff, jpeg, png readers support sequential read
1432- max/min avoid NaN
1433- oop, histnorm was broken by the new vipsstats
1434- never use IM ping to get a header, fixes BMP load
1435- set @filename for non-vips formats in vips7 compat layer
1436- make Xres/Yres double
1437- completely disable debug by default in production builds
1438
143920/8/11 started 7.27.0
1440- version bump for new dev cycle
1441- im_subtract(), im_avg(), im_min(), im_minpos(), im_copy(), im_embed(),
1442  im_flophor(), im_flipver(), im_insert(), im_insert_noexpand(), im_lrjoin(),
1443  im_tbjoin(), im_extract_area(), im_extract_bands(), im_extract_areabands(),
1444  im_replicate(), im_clip2fmt(), im_gbandjoin(), im_bandjoin(), im_invert(),
1445  im_lintra(), im_lintra_vec(), im_black(), im_rot90, im_rot180(), im_rot270()
1446  im_sintra(), im_costra(), im_tantra(), im_asintra(), im_acostra(),
1447  im_atantra(), im_exptra(), im_exp10tra(), im_logtra(), im_log10tra(),
1448  im_abs(), im_sign(), im_max(), im_maxpos(), im_deviate(), im_divide(),
1449  im_multiply(), im_stats(), im_measure(), im_recomb(), im_floor(), im_ceil(),
1450  im_rint(), im_equal*(), im_notequal*(), im_less*(), im_lesseq*(), im_more*(),
1451  im_moreeq*(), im_remainder*(), im_and*(), im_or*(), im_eor*(), im_shift*(),
1452  im_pow*(), im_exp*(), im_ifthenelse(), im_blend(), im_c2amph(), im_c2rect(),
1453  im_bandmean(), im_c2real(), im_c2imag(), im_ri2c(), im_jpeg*2vips(),
1454  im_vips2jpeg*(), im_tiff2vips(), im_vips2tiff(), im_exr2vips(),
1455  im_fits2vips(), im_vips2fits(), im_analyze2vips(), im_raw2vips(),
1456  im_vips2raw(), im_magick2vips(), im_png2vips(), im_png2*(), im_ppm2vips(),
1457  im_vips2ppm(), im_mat2vips(), im_rad2vips(), im_vips2rad()
1458  redone as classes
1459- added argument priorites to help control arg ordering
1460- generate has a 'stop' param to signal successful early termination
1461- added optional output args, eg. x/y for min
1462- CLI supports optional output args
1463- in im_vips2tiff, enable YCbCr compression for jpeg write
1464- VipsMin stops search early if it can
1465- C API supports optional output args
1466- switch back to int-valued operations
1467- add the operation cache, various --vips-cache-* flags
1468- fallback vips_init()
1469- vips_tracked_malloc() tracks allocation size and can report total mem usage
1470- cache limits, drop, init, flush plus command-line controls
1471- remove dmalloc support, was never used and valgrind is better
1472- im_csv2vips() allows quoted strings, including escaped quotes
1473- added vips_shutdown()
1474- added --vips-leak flag
1475- more VipsImage props
1476- added vips_image_write(), old one becomes vips_image_write_to_file()
1477- added vips_region_paint_pel()
1478- added VipsArea as a public struct
1479- added array members and arguments
1480- added nary
1481- remove VipsPool, vips_object_local_array() is much better
1482- cache.c now drops if you have too many open files
1483- CLI args to change max files
1484- new format for handling exif tags
1485- switch SMALLTILE to 128, 512 was just too big
1486- oop mode "rd" was not always being used for images
1487- added ARRAY interpretation for images
1488- VipsStats tracks minpos/maxpos as well
1489- moved mask/ to deprecated
1490- use atexit() to call vips_shutdown()
1491- set _O_TEMPORARY on delete-on-close temp images if possible
1492- unlink temps on rewind on *nix, less likely to leave temps on a crash
1493- added complex conj as a basic operation
1494- rect/polar/conj work on any format, not just complex
1495- new VipsFile system for load/save in image formats
1496- options now introspectable, try "vips jpegsave"
1497- copy swap uses glib byteswap macros, about 2x faster
1498- edvips can change vips header byte ordering
1499- "header" is terse by default
1500- "header" outputs filenames if working on many files
1501- added openslide support (Benjamin Gilbert)
1502- allow new-style load/save options in filenames to
1503  vips_image_new_from_file() etc.
1504- VipsFormat is deprecated
1505- remove outchecks from documented API
1506- support gobject-introspection
1507- new Python binding based on gobject-introspection
1508- only spot options at the end of arg strings
1509- add vips_cache() as a vips8 operator
1510- remove the old fft fallback
1511- remove fftw2 support
1512- much faster im_draw_smudge()
1513
151414/1/12 started 7.26.8
1515- interpolate CLI args were broken (thanks speckins)
1516
15175/12/11 started 7.26.7
1518- lazy read from tiled tiff from layers other than 0 was broken
1519- optional args to vips_call*() do not work, disabled (fixed correctly in
1520  master)
1521- address calculations in files over 4gb were broken on 32-bit platforms
1522  (broken since March 2011, oops)
1523
152412/10/11 started 7.26.6
1525- NOCACHE was not being set correctly on OS X causing performance
1526  problems with large files
1527- update Orientation exif tag on jpeg write
1528
152912/10/11 started 7.26.5
1530- jpeg read/write copies over XMP data
1531- handle offset correctly in separable convolutions (thanks Nicolas)
1532- macros for class arg boilerplate
1533- class arg order set by new 'priority' param
1534- VipsExtend, VipsDirection enums added
1535
153612/9/11 started 7.26.4
1537- fallback vips_init()
1538- im_openout() compat stub was wrong, breaking ruby-vips
1539- vips_class_map_concrete_all() needed a compat macro too
1540- vips_class_map_all() was broken
1541
154210/8/11 started 7.26.3
1543- don't use G_VALUE_COLLECT_INIT(), many platforms do not have a glib this
1544  recent
1545- don't leave image->kill set when we detect termination
1546- test for a working C++ compiler, disable C++ parts of none found
1547
154810/8/11 started 7.26.2
1549- oops, im_benchmark.c had some stuff turned off
1550- configure option --without-cfitsio was broken (thanks Mike)
1551
155226/7/11 started 7.26.1
1553- doc fixups
1554- oops, ==0 missing from a strcmp() in vips7compat
1555- fixed a race in im_XYZ2Lab() table build
1556- added im_concurrency_get() to operation db
1557- better benchmarkn.sh runs for the correct number of CPUs automatically, runs
1558  three times for each one, and just reports the fastest
1559
156026/7/11 started 7.26.0
1561- version bunp for 7.26
1562- various fixes to get win32 and OS X building
1563
15646/12/10 started 7.25.0
1565- attach the jpeg thumbnail and multiscan fields (thanks Mike)
1566- faster tiff read for some common cases
1567- faster im_tile_cache()
1568- if we use C++ in libvips, add -lstdc++ to vips-7.xx.pc
1569- im_vips2png() / im_png2vips() set / get png resolution (thanks Zhiyu Wu)
1570- updated README
1571- don't use tables for bilinear on float data for a small speedup (thanks
1572  Nicolas Robidoux)
1573- no tables for uchar either, about a 15% speedup (thanks Nicolas)
1574- dmask write was broken
1575- lr/tbmerge() cast images to match, like im_insert()
1576- lr/tbmosaic() work for any mix of image formats / bands
1577- removed ancient balance stuff from im_lr/tbmosaic()
1578- gtk-doc for mosaicing
1579- add im_fits2vips() to the operation database
1580- im_fits2vips() is lazy and much faster
1581- im__file_open_write() / _read() has a flag for text_mode, get rid of all the
1582  remaining fopen()s
1583- move cooc_* and glds_* to deprecated
1584- move im_dif_std() to almostdeprecated
1585- move im_simcontr() to almostdeprecated
1586- add im_sines() to operation db
1587- move im_spatres() to almostdeprecated
1588- done gtk-doc for other
1589- --vips-progress tells you about nthreads, tile size, nlines
1590- gtk-doc for interpolate
1591- move im_stretch3() to deprecated
1592- move im_clamp() to deprecated
1593- gtk-doc for video ... all operators done! amazing argh
1594- set MAP_NOCACHE on OS X, otherwise performance dives off a cliff with
1595  files larger than memory
1596- removed man pages, we are all gtk-doc now
1597- im_jpeg2vips() ignores weird APP1 chunks
1598- im_add() for int/uint was broken
1599- im_ri2c() was broken
1600- added VIPS_FORMAT_BIGENDIAN format flag
1601- moved IMAGE and REGION to VipsImage and VipsRegion, classes over VipsObject
1602- Rect -> VipsRect
1603- libpng-1.5 supported
1604- better png read for 1-bit and palette images
1605- fits write
1606- better fits metadata support
1607- renamed all header fields, old names still supported, hopefully
1608- all of iofuncs moved to vips_ namespace
1609- lots of old iofuncs API moved to deprecated
1610- added VipsOperation, an abstract base class for all vips operations
1611- added VipsAdd, the first operation object
1612- im_tiff2vips() int/uint mixup for rows_per_strip, thanks Bubba
1613- removed the links feature, won't work with vips8
1614- got rid of the tools/ subdirs
1615- added im_bufjpeg2vips()
1616- tiff reader can do 1, 2, 4, 8 bit palette images
1617- tiff palette read can do mono images
1618- im_bufjpeg2vips() has a "header_only" parameter
1619- added vips_image_get_data()
1620- updated German translation (thanks Chris)
1621- fixed typo in im_conv() overflow estimation which could cause errors
1622- vips.c has new action syntax, knows about vips8 operations
1623- add now has sizealike
1624- vips7 binops all do sizealike too, also gbandjoin and ifthenelse
1625- new API is now functional
1626- vips.c generates GOption flags for vips8 operations
1627- added im_gauss_dmask_sep()
1628- laplacian generator lost -ve lobes for large sigma
1629- added im_aconv(), approximate convolution
1630- bumped smalltile to 512x512 for testing
1631- added VipsPool, got rid of floating refs again, argh
1632- VIPS_EXEEXT is now part of the exported API
1633- im_blend() also does sizealike, oops
1634- jpeg write was not inverting CMYK, thanks Ole
1635- im_falsecolour() converts to mono 8-bit for you
1636- im_icc_import*/export*() cast inputs for you
1637- im_vips2tiff() uses im__temp_name() for intermediates
1638- added vips_wrap7 ... wrap up vips7 operations as vips8 classes
1639- man pages are back for commands
1640
164130/11/10 started 7.24.0
1642- bump for new stable
1643- added im_dmask2imask(), im_imask2dmask()
1644- im_rotate_*mask90() can do masks of any size (thanks Adam Turcotte)
1645
164618/7/10 started 7.23.0
1647- im_vips2bufjpeg() writes to a linked list, so it will work for any size
1648  image and header
1649- added im_vips2bufpng()
1650- use GetTempPath() to pick a temp dir on Windows
1651- added "rd" mode to im_open()
1652- vipsthumbnail and vips use "rd"
1653- im_divide spots /0
1654- remove liboil dependency, we will use Orc instead
1655- various small cleanups (thanks Tim)
1656- add lcms2 support
1657- VImage(filename) defaults to "rd" mode
1658- revise window_offset / window_size, again
1659- fix a mixup with ANY hints that caused performance problems on the main
1660  benchmark
1661- rewritten im_circle as im_draw_circle, im_circle moved to almostdeprecated
1662- added IM_TYPE_RW args for inplace ops --- nip2 uses this to wrap inplace ops
1663  automatically
1664- special-case 3x3 masks in im_conv() for a 20% speedup
1665- add IM_TYPE_RW flag for im__rw_image, helps nip2 auto-wrap inplace ops
1666- im_insertplace() casts and bandalikes
1667- copy iconv.m4 and friends in bootstrap, thanks Mike
1668- moved the stupid _copy() versions of the inplace ops to deprecated, since
1669  nip2 can call inplace ops directly now
1670- added im_draw_rect(), moved im_paintrect() to deprecated
1671- added im_draw_image(), moved im_insertplace() to deprecated
1672- added im_draw_line(), now clips, moved im_fastline() to deprecated
1673- added im_draw_line_user(), now clips, moved im_fastlineuser() to deprecated
1674- added im_draw_mask(), now wrappable, moved im_plotmask() to deprecated
1675- added im_draw_point(), moved im_plotpoint() to deprecated
1676- added im_read_point(), now partial, moved im_readpoint() to deprecated
1677- added im_draw_smudge(), moved im_smudge() / im_smear() to deprecated
1678- convolution functions support complex images
1679- im_blend() can have any format condition image and it's converted to uchar
1680- security fix for vips-7.23 wrapper script (thanks Jay)
1681- im_affine() has a larger safety margin
1682- fix gtk-doc warnings
1683- small mask load/save improvements
1684- mask gtk-doc done
1685- add cfitsio dependency
1686- add FITS reader
1687- land the vector branch and the orc dependency ... we have SSE
1688  erode/dilate/add/conv
1689- add IM_SWAP
1690- dilate/erode do (!=0) on non-uchar images
1691- add multipass Orc to im_conv(), 3.5x faster for 5x5 mask
1692- im_profile() works for any image format, any number of bands
1693- im_rank_image() works for mix of formats, bands
1694- morph gtk-doc done
1695- oops, missing braces in debug.h and util.h, thanks Laurence
1696- update C++/Python binding
1697- oop, bool constants are always (int) now, so (^-1) works for unsigned types,
1698  thanks Nicolas Robidoux
1699- much lower memuse for im_cache() in complex pipelines
1700- im_scale_dmask() normalises to 20, not 100 ... we hit the fast
1701  conv path more often
1702
170312/5/10 started 7.22.2
1704- the conditional image of ifthenelse can be any format, a (!=0) is added if
1705  necessary
1706- oops vipsthumbnail sharpening was turning off for integer shrinks,
1707  thanks Nicolas Robidoux
1708- im_vips2jpeg() could fail for very small images (thanks Tim)
1709- threadpool wasn't stopping on allocate errors (thanks Tim)
1710- vips_sink_disc() could block if allocate failed (thanks Tim)
1711
171212/5/10 started 7.22.1
1713- fix a problem with tiff pyramid write and >1cpu, thanks Ruven
1714- constant ops clip to target range
1715- oops, moreconst and moreeqconst were the same
1716- better buffer handling in sinkdisc for single-line images
1717- less chatty errors from "vips"
1718- oops, don't rename "copy_set" as "copy_", thanks Ole
1719
172012/5/10 started 7.22.0
1721- bump and rename
1722- vipsthumbnail has a manualpage and sharpens correctly
1723- more interpolator work
1724- fixes to --disable-cxx mode (thanks Mike)
1725- added German translation, thanks Chris Leick
1726- fixed typos in some messages, thanks Chris Leick
1727- fix gettext startup
1728- all "colour" in messages changed to "color", have a proper en_GB
1729  translation file
1730- vipsthumbnail delete profile failed if there was a profile
1731- interpolate cli unref was broken
1732- more accurate, slightly faster bilinear and bicubic (thanks Nicolas Robidoux)
1733
173421/3/10 started 7.21.3
1735- added progress feedback to threadpool
1736- --vips-wbuffer2 switch does all wbuffer use now
1737- im_wbuffer2() renamed as vips_discsink(), some cleanups
1738- im_gammacorrect() can do 16-bit images too
1739- im_histplot() could fail for signed int histograms
1740- im_fwfft() and im_invfft() could free their output image too early
1741- added im_local_imask(), im_local_dmask()
1742- added im_mpercent_hist()
1743- im_maplut() casts the index image to one of the uint types
1744- fixed a couple of /0 problems with scale == 0 masks
1745- set G_LOG_DOMAIN to VIPS so we can use g_warning etc.
1746- added VIPS_DEBUG_MSG() macro
1747- --vips-wbuffer2 turns on threadpool for im_iterate as well
1748- im_vips2tiff() uses vips_sink() instead of threadgroup
1749- strip out threadgroup
1750- add --enable-debug=xxx flag
1751- im_iterate() -> vips_sink()
1752- better number-of-bands detection for im_magick2vips()
1753- added im_get_argv0()
1754- added PFM read / write
1755
175616/1/10 started 7.21.2
1757- "invalidate" is careful to keep images alive, so invalidate callbacks can do
1758  im_close()
1759- flood_blob could loop if start point == ink
1760- added im_meta_remove()
1761- added remove profile option to vipsthumbnail
1762- added vips_bandfmt_iscomplex() and friends, im_iscomplex() and friends
1763  deprecated
1764- im_bandjoin()/im_gbandjoin() work with images of varying formats
1765- added im_copy_native(), deprecated im_copy_from() and friends
1766- im_check*() name rationalisation
1767- finally removed old flood stuff
1768- im_insert*() bandalike and formatalike
1769- im_*join() bandalike and formatalike
1770- im_ri2c() bandalike
1771- im_vips2png() saves 16-bit PNGs, if necessary
1772- vipsthumbnail has selectable interpolators, optional sharpen
1773- moved a lot of stuff (eg. im_iscomplex()) from deprecated to
1774  almostdeprecated to avoid breakage
1775- im_csv2vips(): allow lines that end with EOF rather than \n
1776- im_vips2tiff has a bigtiff option
1777- oops, im_lineset() needs to ask for WIO of mask and ink
1778- move cache invalidation to REGION, fixes a race
1779- don't im_invalidate() after paint, it can cause horrible performance
1780  problems ... for example, im_plotmask() used as the action operator for
1781  im_fastlineuser() is terrible
1782- instead, users of the inplace operations need to call im_invalidate() at the
1783  end of a set of paint actions to trigger an update
1784- parent/child renamed as upstream/downstream in DAG
1785- set VIPS_ICC_DIR in configure
1786- ICC profiles are looked for in VIPS_ICC_DIR as a fallback
1787- im_render() mask image generation no longer triggers image calc
1788- threadgroups scale output buffers with number of threads for smalltile ...
1789  improves SMP scaling for narrow images on many-way machines
1790- default to max number of processors (--vips-concurrency and IM_CONCURRENCY
1791  set >0 can override) on linux and win32
1792- better nprocs guesser
1793- im_render() fixes to help the paintbox, some speedups too
1794- added im_wbuffer2(), a new distributed threading system, and --vips-wbuffer2
1795  to enable it, thank you Christian
1796
179715/1/10 started 7.21.1
1798- added "written" callbacks, used to implement write to non-vips formats
1799
180026/11/09 started 7.21.0
1801- branch for new dev cycle
1802- argh, missing init from colour.c (thanks Peter)
1803- argh, im_measure() was not looping over bands correctly (thanks Peter)
1804- removed mmap_limit, we now always use windows ... reduces VM use hugely,
1805  because mmap windows are freed when their regions are freed, while images
1806  are only unmapped when they are closed
1807- have a min bytes for mmap windows as well, so we don't make too many tiny
1808  windows
1809- im_disp2Lab() was broken
1810- deprecated.h is now defined in terms of current functionality, rather than
1811  repeating stuff
1812- im_flood() and friends rewritten, typically 4x faster
1813- removed --with-cimg option, added --disable-cxx
1814- added im_system_image() (thanks Roland)
1815- added postclose callbacks
1816- added vipsthumbnail
1817- oops, generate C++/Python wrappers for deprecated operations by default
1818- read TIFF images strip-wise, not scanline-wise
1819- better TIFF YCbCr reading (thanks Ole)
1820- isanalyze generates fewer silly error messages
1821
182226/11/09 started 7.20.3
1823- updated en_GB.po translation
1824- file_length is gint64 to avoid win32 breakage
1825
182623/11/09 started 7.20.2
1827- GETTEXT_PACKAGE now includes lib version number (thanks Jay)
1828
182911/11/09 started 7.20.1
1830- oop, im_clip2fmt() was missing PTOP flag, should get a small speedup
1831- im_conv() / im_convf() didn't like all-zero masks
1832- small updates to im_convf() from im_conv()
1833- im_read_imask() produced an incorrect error message if passed a doublemask
1834- rename im_convf(), im_convsepf() as _f()
1835- vips.c drops _f suffix when overloading
1836- regenerate C++ binding, don't make deprecated package
1837
18389/11/09 started 7.20.0
1839- removed vips-7.x.spec.in, shouldn't really have this in SVN
1840- bumped version to 7.20
1841- fixes to get "make dist" working again
1842
18433/4/09 started 7.19.0
1844- version bump
1845- tiny conv speedup
1846- catch lcms error messages
1847- fix includes for gtk+-3.0
1848- report virtual memory too in im__print_all()
1849- cosmetic changes to nohalo
1850- im_magick2vips() needs to invert alpha
1851- now (more or less) passes -Wextra
1852- added "fail" option to im_jpeg2vips: fail with an error on any warning
1853  (thank you Ole)
1854- started gtk-doc changes
1855- renamed im_meta_get_type() and im_header_get_type() as
1856  im_meta_get_typeof() and im_header_get_typeof() to prevent confusion with
1857  GObject type definers (was breaking gtkdoc object scan)
1858- revised more names, limited documented API
1859- im_buildlut() could segv for non-zero based tables (thanks Jack)
1860- VIPS_BUF_STATIC() does not take length arg
1861- check for SetImageOption() so we work with GraphicsMagick too
1862- "header" sets a non-zero exit code if anything failed
1863- add and use im_check_uncoded() and friends
1864- matlab load handles column-major and plane-separated images (thanks Mikhail)
1865- JPEG save allows "none" for profile, meaning don't attach a profile
1866- saner, simpler, faster typecasting for im_add(), im_subtract(),
1867  im_multiply(), im_divide(), im_remainder()
1868- im_remainder() has a float result for float types
1869- im_measure() allows sel == NULL, meaning all patches
1870- added "deprecated" package
1871- faster, simpler, better im_max(), im_min, im_avg(), im_deviate()
1872- im_max() returns true modulus, not square of modulus, for complex images
1873- im_avg() works for complex, returning average modulus
1874- im_system() fix (thanks Roland)
1875- im_system() rewrite
1876- im_maxpos()/im_minpos() are partial and work for complex
1877- im_max()/im_min() are now convenience functions
1878- im_maxpos_avg() handles complex and multi-band images
1879- added im_point(), rewrite im_point_bilinear() in terms of this
1880- close callbacks now happen *after* images have closed resources (such as
1881  open files) ... this lets them delete temps and stuff. Expect breakage :(
1882- added vips_interpolate_get_window_offset()
1883- boolean revised: smaller, more general, faster
1884- im_remainderconst_vec() renamed to im_remainder_vec() for consistency
1885- added im_shift*_vec()
1886- renamed im_eor_vec() as im_eorimage_vec() for consistency, also and, or
1887- renamed im_eorconst() as im_eorimage_const() for consistency, also and, or
1888- relational revised: smaller, more general, faster
1889- im_blend()/im_ifthenelse() allows many-band conditional, 1-band then/else
1890- im_blend()/im_ifthenelse() allows band and format to differ between then
1891  and else parts
1892- better im_check() functions
1893- added im_flood_other() as start of simple segmentation operator
1894- added im_label_regions()
1895- im_printlines(), im_debugim() deprecated (use im_vips2csv() instead)
1896- meta, header, callback, error, region, check, generate, memory gtkdocs
1897- removed printlines tool, vips2csv is much better
1898- removed other useless tools as well: debugim, binfile
1899- fix up addr calcs on 64-bit machines with >2gb images and inplace ops
1900  (thanks Christoph)
1901- im_generate() checks that im_demand_hint() has been called for this image
1902- im_jpeg2vips.c, set scale_num on shrink (thanks Guido)
1903- heh argh reading history always stopped after the first line (thanks Haida)
1904- added im_histindexed
1905- new im_iterate() calls start and stop functions from workers so resources
1906  they make are owned by the worker thread ... this makes it possible to have
1907  start functions which create mutiple regions and therefore allows
1908  im_iterate() to scan more than one image at once
1909- threadgroup no longer has any default action, you must attach a work
1910  function
1911- added im_copy_file()
1912- added im_insertset()
1913- im_insertplace() allows small to be outside big
1914- added im__colour_difference(), colour ops now work on any image format
1915- added im_col_display_get_table(), so display tables are now shared by name
1916- added im__colour_unary()
1917- drop "set" postfix from names, so "insert" can now take a vector of positions
1918- deprecate all the "_raw" variants, not really necessary now
1919- removed "contrib", not very useful anymore
1920- added im_header_as_string()
1921- im_malloc()/im_free() now call g_try_malloc()/g_free() ... removes confusion
1922  over whether to use im_free() or g_free() for things like im_header_string()
1923- added im_history_get(), im_getexp(), im_printdesc() as wrapped functions ...
1924  so you no longer need the "header" program
1925- image vectors from Python work, woo
1926
192725/3/09 started 7.18.0
1928- revised version numbers
1929- updated vipsmanual
1930- revised manpages
1931- removed name and "changed" from vipsobject since we don't use them yet
1932- explicitly link with stdc++ for nohalo etc. stuff
1933- wrap im_gauss_imask_sep in C++/Python
1934
19356/3/09 started 7.17.3
1936- revised nohalo
1937- remove fading stuff from im_render() -- cleaner and simpler
1938- configure spots support for "restrict"
1939- reset dcm:display-range on magick read to help DICOM
1940- saner im_buildlut() behaviour
1941- added im_gauss_imask_sep()
1942- allow open and view of truncated images (thanks Joe & Rachel)
1943- revising rounding on im_affine*() coordinate transforms to make them more
1944  stable
1945- added Radiance write
1946- added im_float2rad()
1947- added IM_CODING_RAD, support where it makes sense (extract, flip, rotate,
1948  etc.)
1949- IM_PROGRESS env var
1950- docs for rad2float and IM_CODING_RAD
1951
19523/3/09 started 7.17.2
1953- im_magick2vips.c: allow funky bit depths, like 14 (thanks Mikkel)
1954- isradiance was returning TRUE too often
1955- radiance loader now loads packed RGBE/XYZE instead of unpacking to float
1956- added im_rad2float()
1957
195811/10/08 started 7.17.0
1959- merge vips-7.16 brach back into trunk
1960- bumped version number to 7.17.0
1961- re-added type.[hc]
1962- added vipsinterpolate and im_affinei
1963- added yafrsmooth interpolation
1964- added yafrtest
1965- added yafrnohalo
1966- ubuntu 8.10 changes
1967- interpolators get an output pointer, not region
1968- tuning for bicubic
1969- revised transform / clip code, we now do corner not centre
1970- yafr-smooth reworked along the lines of bicubic
1971- cleanups after yafr hacking
1972- added affinei_all
1973- don't set im_error() on failed callback
1974- moved im_format_t to VipsFormat, now sits over VipsObject
1975- IM_FORMAT_FLAG_PARTIAL -> VIPS_FORMAT_PARTIAL
1976- updated docs
1977- interpolators use type introspection
1978- added vips --list classes, does formats too
1979- include sys/param.h to get PATH_MAX in more places
1980- added vips_format_get_flags()
1981- oop, forgot to check for cancel during tiled tiff write
1982- don't use mmap for tiff read: no performance advantage, chews up VM
1983- VIPS_INTERPOLATE_SHIFT bumped to 12, we need the extra precision for u16 gel
1984  data
1985- added string->double transform for cmdline args
1986- merged class-params branch back into trunk
1987- IM_FREE() can do "const char*" variables
1988- im_buf_t renamed as VipsBuf
1989- added vips_object_to_string()
1990- added "nickname" and "description" properties to VipsObject
1991- shift/and/or/eor ops were broken for non-int types
1992- added nohalo interpolator
1993- updated format docs
1994- IM_INPUT_INTERPOLATE() now used by affinei and affinei_all
1995- added vips_object_new
1996- resamplers/interpolators now in a resample package
1997- removed yafrnohalo.c
1998- added matio as a dependency
1999- added Matlab save file read
2000- added Radiance file read
2001- better file-not-found messages
2002
200311/9/08 started 7.16.3
2004- oop typo in manpage for im_project()
2005- doc fixes
2006- returning non-zero from eval callbacks was not always stopping computation
2007
200811/9/08 started 7.16.2
2009- added --without-v4l option
2010- added -no-undefined to libsrcCC build, so we get a libvipsCC.dll
2011- removed the swig dependency: we include the generated bindings in the
2012  distribution tarball
2013
20146/9/08 started 7.16.1
2015- trigger eval callbacks on tiled tiff write
2016- added vips as an im_format_t
2017- added im_format_write()/_read() convenience functions
2018- more cleanups for the format API, argh
2019- removed win32/ directory now mingw finally makes DLLs correctly
2020- removed the windowed spcor for now, it has some edge effects
2021
202224/8/08 branch for 7.16
2023- renames and version numbers
2024- load plgs from libdir as well as libdir/vips-x.x for compat
2025- complex -> complex conversion was broken
2026- refstring <-> gstring transforms
2027- better behaviour with Magick non-presence
2028- added --enable-links switch to configure ... we no longer make the bin/im_*
2029  links by default
2030- started a 'format' section in the docs
2031- configure fails if no gettext found
2032- revised po/
2033- released as 7.16.0!
2034
203525/5/08 fork for loadable image format branch
2036- image load/save in non-vips format code moved to own dir
2037- simple format searching added
2038- some cleanups for vips load
2039- im_open() simplified
2040- add im_format_flags
2041- only consider formats with a save method in im_format_for_name()
2042- oops, format sort order was reversed
2043- im_filename_suffix() includes "." in suffix
2044- merge back into trunk for 7.15.1
2045- remove im_ispng(), im_png2vips_header() etc. & friends
2046- add "vips --list formats"
2047- rename VBuf as im_buf_t for consistency
2048- add type.[hc], start of new type system
2049- removed man pages for IM_MIN, MAX and RINT to avoid case confusion on
2050  OS X / win
2051
20527/3/08 started 7.15.0
2053- MAGIC constants should be tagged as unsigned
2054- write MAGIC correctly on sparc/powerpc machines (thanks Joe)
2055- oop, we were still making fade threads even when not fading
2056- tiny cond jump fixes for valgrind in colour.c
2057- remove -lstdc++ from libs, except on windows
2058- push Magick cflags earlier in the include order to make it easier to pick
2059  GraphicsMagick over ImageMagick (thanks Mikhail)
2060- fix the en_GB translation
2061- use meta to preserve resunit between tiff load and save
2062- small doc improvements
2063- read and write CMYKA tiff (thanks Doron)
2064- performance improvements for morphology ops, esp. when zooming out
2065- oop, im_render() was broken for mask == NULL
2066- better support for multiple Python installs (thanks Jay)
2067- better IM_SETSTR() stops some warnings
2068- im_histcum() works for signed histograms
2069- better rounding for im_conv(), im_convsep()
2070- tiny speedup for im_conv()
2071- better /0 test for remainderconst
2072- revise i18n configure, get rid of intltool
2073- command-line IMAGVEC input could segv with non-vips image output
2074- added .tobuffer()/.frombuffer(), .tostring()/.fromstring() to Python binding
2075- add PIL_mode_from_vips () and vips_from_PIL_mode () utility functions
2076- update docs for new Python stuff
2077- FIND_ macros no longer search for stuff, you have to specify prefixes if the
2078  packages are not on the default path (or in $prefix). This avoids some
2079  accidents on some platforms
2080- configure prints a summary of optional packages found at the end
2081- im_lhisteq() checks for window too small
2082- added invalidate callbacks
2083- now tests for MagickWand before ImageMagick (thanks Adam Turcotte)
2084- added "-rotate" option to vips2dj
2085- added man page for im_resize_linear
2086- better jpeg-in-tiff YCbCr read (thanks Ole)
2087- oops, invalidatefns were not being freed on im__close()
2088- VMask() can init from std::vector, so Python can init from []
2089- added IM_LIBDIR, im_guess_libdir()
2090- load plugins from libdir/vips-x.x on startup
2091- added meta get/set int/double/string/area/blob/GValue to C++ API
2092- include time_t in vips.h, thanks Nicolas Robidoux
2093- lock global image list (thanks lee)
2094
209525/1/08 started 7.14.0
2096- bump all version numbers for new stable
2097- better CMYK JPEG read (thanks Ole)
2098- add __str__ to VError in Python (thanks Ole)
2099- revert the dynamic wrapping for Python :-( next version!
2100- added VImage::convert2disc (thanks Ole)
2101- you can now set the jpeg quality factor for tiff pyramids (thanks Joe)
2102- you can now shrink jpegs during read, see "man im_jpeg2vips"
2103- added CMYK JPEG write
2104- optionally use GraphicsMagick (thanks Bob Friesenhahn)
2105- look for MAGICKCORE_HDRI_SUPPORT (thanks Marcel)
2106- set icc profiles in tiff pyramids explicitly (thanks Joe)
2107- add --without-cimg configure option
2108- add im_maxpos_subpel
2109- make im_abs compile without liboil
2110- add im_align_bands
2111- fix type overflow in complex division
2112- fix im_cross_phase and im_addgnoise (Tom)
2113- updated docs, C++ and python
2114- header no longer stops on error
2115- C++ dummy2.cpp helps OS X linking
2116
211712/12/07 started 7.13.3
2118- added "include <cstring>" to VImage.cc to help gcc 4.3
2119- started moving the python binding to dynamic wrapping
2120- added im_wrap(), im_wraptwo(), im_phasecor_fft(), im_cross_phase() (Tom)
2121- memleak plugged in im_save_string_setf()
2122- bugfix in and docs for im_gradcor() (Tom)
2123- use Glib macros to make im_msb work on big-endian platforms (Tom)
2124- use Glib macros to get rid of needless compile warnings (Tom)
2125- fix type overflow in im_c2ps/im_abs (Tom)
2126
212731/10/07 started 7.13.2
2128- build cimg on windows fixes
2129- various include cleanups, updated man pages
2130- break im_wbuffer() out to a separate API
2131- use im_wbuffer() to make im_vips2jpeg() compress in the background
2132- also im_vips2png(), im_vips2tiff(), im_vips2ppm()
2133- revised evaluation progress system
2134- new evalstart/evalend/preclose callbacks fix over/underflow reporting
2135- but the meaning of evalend has changed in a non-backwards-compatible way :(
2136  use preclose instead ito get the old behaviour
2137- added "--vips-progress" flag to turn on a simple eval progress tracker
2138- make im_spcor[12] static, im_spcor is wrapper (Tom)
2139
214028/9/07 started 7.13.1
2141- vips2dj can print RGB images
2142- oop, include <stdexcept> missing
2143- add protos for generate/iterate function args, fix warnings
2144- add cimg package, we now have C++ source inside VIPS, sigh
2145- added OUTPUT_DOUBLEVEC and OUTPUT_INTVEC, use for im_maxpos_vec() and friends
2146
214729/8/07 started 7.13.0
2148- we now have a trunk and the version is 7.13.x, woo!
2149- move manpages into a separate man/ dir ... speeds up builds a lot on windows
2150- don't install malkovich
2151- don't fail on unknown args for python (thanks Simon)
2152
21531/8/07 started 7.12.5
2154- im_embed() is more general ... x and y can be negative
2155- predicate.c is smaller and cleaner
2156- libsrcCC link improvement from Pablo
2157- support 32/64-bit ImageMagick as well (thanks Marcel)
2158- better im_magick2vips() for Q8 ImageMagick
2159- split repository to trunk/branches ready for a stable 7.12.x branch
2160
216127/7/07 started 7.12.4
2162- proto.h had vars called small, breaking on win32
2163- more python fixing, we now have working matricies too
2164
216517/7/07 started 7.12.3
2166- fix to VImage.i for gcc 4.2 (thanks Damir)
2167- eek, off by 1 for more than 1 band hists
2168- needed a slightly larger worst-case buffer in im__b64_encode()
2169- tiny cleanup for make_hI() prevents cond jump on ui in valgrind
2170- --disable-threads was broken again
2171- remove .svn dirs from dist
2172- now passes distcheck again
2173
217417/7/07 started 7.12.2
2175- added im_bandmean()
2176- added support for TIFFTAG_PREDICTOR (Andrey Kiselev)
2177- fix TIFFOpen() mode snafu (Andrey Kiselev)
2178
217911/5/07 started 7.12.1
2180- memory.c abort()s with DEBUG
2181- oops, im_bits_of_fmt() manpage was not being installed
2182- im_histcum() can do all image types
2183- updated NEWS
2184- added im_csv2vips_header()
2185- command-line csv read was broken (thanks Tom)
2186- removed length limit on argument vectors (Tom)
2187- added IM_PREFIX, configure-time install prefix
2188- oop, turned off memory.c DEBUG
2189- fix some bogus gcc 4.1 warnings with im_open_local_array()
2190- better vips usage message
2191- oops, IM_ANY missing from im_demand_hint() manpage (thanks Shahid)
2192- just warn if plugins fail to load in im_init_world()
2193- expose Vargv and make refblock public rather than private so that
2194  subclasses of VImage can add vips-style member operations (thanks Pablo)
2195- oops, im_initdesc() needed to have bbits set correctly (thanks Shahid)
2196- make VError derive from std::exception more officially
2197- woo, got exceptions working in SWIG
2198- soname version bumped to 12.x.x
2199- oops, added vector ops to Python
2200- check for overflow of int in return of strtol in dispatch system (Tom)
2201- add im_[di]mask_[xy]size to dispatch system (Tom)
2202- add im_gradcor(), im_grad_[xy] (Tom)
2203
220426/3/07 started 7.11.21
2205- ooo, added %include "std_except.i" & friends to VError.i, VImage.i
2206- im_init_world() is more lenient about recursive invocation
2207- im_gbandjoin() falls back to im_copy() for 1 input image
2208- race condition fixed in im_render.c (thanks Simon)
2209- bump for 7.12!!!
2210
221126/1/07 started 7.11.20
2212- another fix to im_region_image() (thanks Mikkel)
2213- tiny speed up to im_rect_includesrect()
2214- avoid recursive invocation in im_init_world() (thanks Christian)
2215- fix to extract_prefix (thanks Christian)
2216- buffer cache is now per thread
2217- combine buffer unref and ref in a single operation to reduce malloc/free
2218  cycles
2219- new internal API for passing regions between threads means we can remove
2220  buffer locks
2221- more buffer/region sanity checks, plus a memory barrier
2222- lock around error buffer changes
2223- im_vips2mask() was wrong for nx1 m-band images
2224- liboil back to "test"
2225- add buffer_cache_list to avoid GHashTable _insert()s
2226- oop, --vips-concurrency was broken
2227- renamed (in dispatch layer) im_and/or/eor_const -> im_and/or/eorimageconst
2228  for consistency
2229- C++ API wraps IMAGEVEC, DOUBLEVEC, INTVEC arguments
2230- oop, IMAGE % vector<double> was broken
2231
223221/12/06 started 7.11.19
2233- added im_linreg() (Tom)
2234- various C++ API polishes, plus a bugfix (Dennis Lubert)
2235- vips.spec split to devel and python too (Dennis Lubert)
2236- be more explicit about sizeof(magic)
2237- init magic to native order by default (thanks Dennis)
2238- Hist becomes im_history_get()
2239- new history mechanism is faster, uses much less memory, and removes
2240  duplicate lines
2241- added im_get_option_group()
2242- added official im_concurrency_set()/_get()()
2243- don't read bbits from vips files ... set ourselves from bandfmt
2244- oops add RGB16 and GREY16 to C++ header
2245- --list packages option to vips.c
2246- updated docs to 7.12
2247- oops, im_region_image() snafu was causing a lot of recomputation
2248- make im_mpercent() suck a little less
2249- EXIF save was a bit bOrked ... cause of mac crashes?
2250- im_histgr(), im_heq(), im_hist() all number bands from zero now
2251- fix stride in liboil calls
2252- set RGB16 on 16-bit RGB ICC export
2253
225429/11/06 started 7.11.18
2255- added im_buffer_t so regions can share calculated pixels: 2-3x speedup on
2256  the benchmark
2257- im_region_local() -> im_region_buffer()
2258- im_sharpen() order change to help sharing
2259- im_invalidate() clears buffer caches
2260- add sentinel attributes
2261- add some missing im_demand_hint()s
2262- paint ops invalidate the output image
2263- fix nothread eval
2264- raise threads limit to 1024 (thanks Christian)
2265- manual redone
2266- vipsCC python init() hooks
2267- add liboil dependency
2268- use liboil for im_abs(), im_add(), im_divide(), im_floor(), im_multiply(),
2269  im_subtract(), im_lintra(), im_avg(),im_deviate()
2270- quiet libtoolize test (thanks Tom)
2271- im_benchmarkn now regrows image each time
2272- strip meta from sample2.v ... saves a lot of mem (esp. Hist)
2273- added im_isscalar() (Tom)
2274- added IM_REGION_ADDR_TOPLEFT() (Tom)
2275- reduce size of im_rightshift_size.c to help compile (Tom)
2276- make im_stop_many(NULL) safe (Tom)
2277
227824/11/06 started 7.11.17
22791;5Q
2280- better benchmark script makes graphing easier
2281- double-buffer image file writes
2282- reuse write threads
2283- clean up threadgroup / iterate / generate
2284- added im_benchmarkn to make it easier to make a CPU-bound op on large
2285  machines
2286- im_cache() failed for cpus > 1
2287
22881/11/06 started 7.11.16
2289- moved im__convert_saveable() into im_copy() (thanks Christian)
2290- missing gobject dependency (thanks Christian)
2291- --enable-threads was broken (thanks Christian)
2292- eval without theads was broken (thanks Christian)
2293- LIBADD libvips.la to libvipsCC.la (thanks Simon)
2294- benchmark.sh is now plain sh, not bash
2295- set ORIENTATION_TOPLEFT in im_vips2tiff (thanks Josef)
2296- oops, im_vips2csv() output separator was broken
2297- added im_benchmark2
2298- move XYZ2Lab LUT build outside the eval thread
2299
230030/10/06 started 7.11.15
2301- print leaked windows
2302- oops, race condition in im_window_unref()
2303- integrated im_region_window() into im_region_image(), tiny speed up
2304
23056/10/06 started 7.11.14
2306- ifthenelse and affine dhints revised
2307- buildlut no longer outputs x cods
2308- configure asks for glib >= 2.6 (we need GOption)
2309- configure uses AC_TOOL_CHECK to find tool names to help cross-compiling.
2310- better configure test for libexif
2311- add </libexif/ prefix if required
2312- test for glibtoolize during bootstrap to help OS X
2313- add --version to vips main prog
2314- don't set Type in im_scale, want to be able to scale hists, for example
2315- im_vips2mask() allows multiband hists as well
2316- im_vips2csv() lets you specify an output separator
2317- vips.c cleanups in arg handling
2318- removed python binding to C layer, too hard to get it working right
2319- leak test python test program
2320- added throw() decls to C++ to help SWIG
2321- no longer derive VError from std::exception, can't get it to work with SWIG
2322- added mmap window manager to share windows between regions ... big reduction
2323  in VM use for large workspaces and for SMP
2324- add im_spcor2 (with sliding window) (Tom)
2325
232615/9/06 started 7.11.12
2327- python vips wrapper hooks into init to start vips
2328- oop, python detect was broken again
2329- im_file_length() error return was wrong (thanks Christian)
2330- im_csv2vips() isnored last column if there was no trailing
2331  whitespace/quoting
2332- test for NULL filename/mode, common if you forget to check argc
2333  (thanks Bruno)
2334- im_break_token() returns NULL on trailing whitespace ... helps read_dmask
2335  work with trailing whitespace on matrix headers
2336- added im_buildlut(3)
2337- removed extra im_free() in im_copy() fallback in im_msb()
2338- added GValue input/output args
2339- various C++ binding improvements (thanks Dennis): namespace support,
2340  VError inherits from std::exception, small fixups
2341- remove im_msb() warning on fallback to copy for uchar ... not very serious,
2342  happens a lot in nip2
2343- added <vips/vips> C++ include ... include in a namespace
2344- added im_benchmark / SMP benchmark script
2345- add im_maxpos_avg() and im_point_bilinear() (Tom)
2346- make im_region_free(NULL) safe (Tom)
2347- link in manpages for im_contrast_surface (Tom)
2348
23498/9/06 started 7.11.11
2350- add im_norm_dmask()
2351- removed old code for gradient and lindetect
2352- internal decls split from proto.h to help SWIG
2353- test for python and SWIG during configure
2354- added python dir for the binding
2355- python binding done!
2356- oops, --without-python was broken (thanks Tom)
2357- added python/test
2358- add im_lu_decomp() im_lu_solve(), rewrite NR type functions in terms of these (Tom)
2359
236023/6/06 started 7.11.10
2361- still more im_affine() rounding/clipping tweaks
2362- ignore "--" arguments to vips.c
2363- im_init_world() also sets g_*_prgname() and loads plugins
2364- add manpage for im_init_world() (oops)
2365- error_exit() prints prgname
2366- various cygwin fixes
2367- fix cache thread assert failure (thanks Joe)
2368- "header" now uses GOption, slightly different args, will loop over args
2369- fixed assert() overenthusiasm in im_prepare()
2370- im_csv2vips() now has separate whitespace / separator tables
2371- add im_rightshift_size() (Tom)
2372- add im_maxpos_vec(), im_minpos_vec() (Tom)
2373- add im_norm_dmask() (Tom)
2374- make im_free_[di]mask(NULL) safe (Tom)
2375
237623/6/06 started 7.11.9
2377- back on sourceforge CVS again
2378- require openexr 1.2.2 or greater
2379- range check xy on im_insert*() for sanity
2380- VMask::invertlut decl removed (thanks Jean)
2381- added \"all\" option to vips.c
2382
238317/5/06 started 7.11.8
2384- debrokened openexr read
2385- added im_tile_cache()
2386- added tiled read to im_exr2vips()
2387- im_tiff2vips() now uses im_tile_cache() rather than its own cache ...
2388  faster in some cases, less RAM use in some cases, saves 200+ lines
2389- removed 'broken' read option from im_tiff2vips()
2390- read/write doubles with g_ascii_strtod() and friends where appropriate
2391- add a "thread" member to region to help sanity check region ownership
2392- saner threadgroup fixes a race problem on gcc 4.0.3 / amd64
2393- added im_vips2csv()
2394- im_open() now does CSV read/write too
2395- oops, broke vips main prog for function name in argv1 case
2396
239722/4/06 started 7.11.7
2398- split vips_png.c to im_vips2png.c and im_png2vips.c
2399- added OpenEXR dependency
2400- added im_exr2vips(), im_exr2vips_header()
2401- added im_isexr(), im_open() knows about OpenEXR
2402- added im_contrast_surface(), im_contrast_surface_raw() (Tom)
2403- added im_msb(), im_msb_band() (Tom)
2404- im_scale() sets Type on output
2405- added RGB16, GREY16 types
2406- im_*2vips() set these types if appropriate
2407- configure fixes for mac
2408- vips main prog uses GOption
2409- im_icc_* locks around calls to cmsDoTransform() to avoid corruption on SMP
2410  machines
2411- add im_prepare_many() (Tom)
2412
241310/3/06 started 7.11.6
2414- typo in manpage and header for im_rect_dup() (Tom)
2415- don't abort image load if XML read fails
2416- added im_video_test() ... test video source
2417- oops, lcms .pc finder was not working
2418- clipping problem in im_affine() fixed (thanks Clare)
2419- test for attr support in libmagick
2420- im_text() returns an error for empty string
2421- im_falsecolour() scale reversed
2422- im_remosaic() could crash on bad mosaics
2423- configure changes to fix --without-magick, lcms and fftw (but sadly we now
2424  require .pc files for these libs)
2425- im_vips2jpeg() automatically converts to 1 or 3 band sRGB uchar for write
2426- also im_vips2png()
2427- added im_project()
2428
242920/2/06 started 7.11.5
2430- added im_csv2vips()
2431- commas in filename options can be escaped with a '\'
2432- raise tile buffer limit (thanks Ruven)
2433- im_spcor() and im_fastcor() have prettier borders
2434- im_fastcor() returns sum of squares of differences, not sum of abs of
2435  differences
2436
243718/11/05 started 7.11.4
2438- small win32 fixes, thanks Juan
2439- added im_flood_blob_copy() ... a temporary hack
2440- much faster im_histplot()
2441- read RGBA palette-ized PNG images more robustly (thanks Tom)
2442- turn on -ms-bitfields automatically for mingw
2443
244426/9/05 started 7.11.3
2445- better error recovery for im_binfile() file too large
2446- all raw files now use mmap windows, so (eg.) ppm and analyze reads can go
2447  >2GB
2448- remove DISABLE_COMPAT ... you now have to define IM_ENABLE_DEPRECATED to get
2449  broken #defines
2450- fix to build without exif, thanks Chas
2451- use native win32 API for seek()/truncate() to work with large files
2452- use attribute to check printf-style args with gcc
2453- fix gcc4 warnings
2454- removed ebuild, since it's in gentoo now
2455- im_magick2vips() sets meta from attributes (good for dicom)
2456- im_magick2vips() writes many-frame images as tall thin VIPS images
2457- im_histcum() was broken for vertical histograms
2458- im_histnorm() is neater
2459- simpler and faster inner loop for im_conv() and im_convf() avoids gcc4 bug
2460- appendc() was reading past the end of the buffer on MSB machines
2461
246213/6/05 started 7.11.2
2463- im_copy_set() was messed up in 7.11.1
2464- put into CVS, phew
2465- fixed a rounding bug in im_affine() ... should no longer get black edges on
2466  image resize
2467- if TIFF open fails in im_open(), try going through libmagick
2468- merge requires all bands == 0 for transparency (used to just check 1st
2469  band)
2470- 16 bit LAB TIFF read/write was wrong
2471- new GType for refstring makes it visible from im_header_map()
2472- jpeg loader attaches exif data (and human-readable meta fields)
2473- jpeg saver writes any exif data
2474- meta not wiped by im_*incheck() in a "w" image
2475- meta keeps traverse order
2476- now require glib >= 2.4
2477- require libxml-2.0 for meta save and new history mechanism
2478- no more .desc files, history saved in XML after pixel data
2479- i/s/d meta fields saved there too
2480- added base64 encode/decode
2481- added blob header write
2482- added a save string type: types which define transforms to and from the
2483  save format get serialized
2484- GValue meta API now exposed, since we can serialise anything
2485- jpeg loader loads ICC profiles
2486- jpeg saver saves ICC profiles from the VIPS header
2487- src/header.c knows about meta system
2488- added im_analyze2vips(), im_grid(), im_raw2vips()
2489- extract/grid/replicate/zoom were not setting TRANSFORM flag
2490- better falsecolour LUT
2491- less stupid + more portable read/write of VIPS header
2492- better im_updatehist()
2493- jpeg load sets vips xres/yres from exif, if possible
2494- jpeg save sets exif xres/yres from vips, if possible
2495- icc_export and icc_transform  attach profiles and intents to output images
2496- added im_icc_import_embedded() to import with an embedded profile
2497- split vips_jpeg.c into two, it was getting too big
2498- added im_cp_descv(), im_cp_desc_array(), funcs use them
2499- removed im_append_Hist() from API
2500- fixed meta copy bug
2501- better history copy, removed nonsense about 1st line of Hist being special
2502- tiff read/write now reads/writes ICC profile from meta
2503- edvips rewritten to remove stupidness, and can now set xml
2504- header can now print xml extension block
2505- IM_ prefix for colour temp names
2506
25071/6/05 started 7.11
2508- added im_copy_morph()
2509- im_region_region() allows Bands and BandFmt to differ, provided
2510  sizeof( pel ) is the same ... makes im_copy_morph() work
2511- added im_meta*() functions (MW)
2512- im_header_*() rewritten for meta
2513- added im_header_exists(), im_header_map()
2514- use pkg-config to find libpng and ImageMagick
2515- added im_lineset()
2516- added im_extract_areabands() (JF)
2517- added im_copy_from() (JF)
2518
251915/4/05 started 7.10.12
2520- im_ifthenelse just evals left/right for region all zero/all one
2521- also im_blend
2522- swap g_setenv() back to plain setenv() so we work with glib 2.2
2523
25249/4/05 JC started 7.10.11
2525- docs no longer have broken links
2526- fixed memleak in im_text()
2527
25288/4/05
2529- one bit tiff read was sometimes reading a byte too far in each scanline
2530
253114/1/05 started 7.10.9
2532- im_filename_split() will now usually work for filenames containing ':'
2533  characters
2534- added im_render_fade() for fancier nip2 image repaint
2535- added "ccittfax4" as a TIFF compression option
2536- fix all 64-bit compiler warnings
2537- "," allowed as column separator in mask read
2538- better at spotting singular matricies
2539- small im_render() tidies
2540- glib dependency reduced to just 2.0, but untested ... helps people building
2541  on older systems who aren't interested in nip2
2542- removing leading spaces from IMAGEVEC arguments
2543- load non-interlaced PNGs more efficiently
2544- 1 point mosaic functions work on more image types
2545- better memory allocation debugging info
2546- local memory on regions can shrink as well as grow
2547- shut down threadgroups on render if no dirty tiles
2548- limit number of simultaneous renders
2549- higher mmap window threshold
2550- allow max == -1 for unlimited render cache
2551- 'priority' marks non-suspendable renders
2552- im_embed() mode == 4 paints white pels
2553- im_tiff2vips() was broken with --disable-threads
2554- oops, im_errormsg() compat macros were GCC only
2555- larger default tile size and strip height
2556- tiff write sets PHOTOMETRIC_CIELAB for vips TYPE_LAB images ... so we can
2557  write float LAB as well as float RGB (thanks Ruven)
2558- also 16 bit LAB TIFF write
2559- im_render() rewritten
2560
256120/11/04 started 7.10.8
2562- im_sharpen() is ~15% faster
2563- more quoting for MAGICK finder
2564- im_XYZ2Lab() uses a LUT rather than cbrt(), 5x faster
2565- --disable-threads removes gthread dependency completely (thanks Simon)
2566- intercept TIFF warnings as well as errors ... stops occasional libMagick
2567  exceptions
2568- add im_init_world() to im_init() as well to help backwards compat (thanks
2569  Simon)
2570- im_icc_present() function description was broken, thanks Jay
2571- oops, libtool library versioning was wrong, thanks Jay
2572- can now make TIFF pyramids of any non-complex image type (was uchar and LAB
2573  only), thanks Ruven
2574- 1st order mosaic code now works for LABQ too
2575- build system changes to make "make distcheck" work
2576- RPM .spec files fixed up and updated by configure (thanks Simon)
2577- tiny cleanups for vdump
2578- use g_setenv()/g_getenv()
2579- tiny improvements to IM_FREE*()
2580- tiny VImage debug print fixes (thanks Jay)
2581- swap off_t for gint64 to fix LARGEFILE support on win32
2582- computation feedback now uses gint64 for number of pels, so we give feedback
2583  correctly on images with >2**31 pels
2584- other small fixes for >2**31 pels in an image
2585
258610/11/04 started 7.10.7
2587- im_histnD() was not checking BandFmt (thanks Kirk)
2588- improvements to threading system speed up non-vips output in some cases
2589- use cbrt(x) where we can ... 10x faster than pow(x,1.0/3) on win32
2590- typeo in im_text() when built without PANGOFT2 (thanks Stefan)
2591
25921/11/04 styarted 7.10.6
2593- tiny doc fixes
2594- scripts now only depend on 'vips' program
2595- im_open( "r" ) is now lazier ... for non-VIPS formats, we delay read until
2596  the first ->generate()
2597- so im_open_header() now deprecated since im_open("r") is identical
2598- now looks for fftw3 as well as fftw2 ... slightly faster ffts
2599
260019/10/04 started 7.10.5
2601- fix to light_correct (thanks Jay)
2602- edvips knows about xoffset/yoffset
2603- better vips enum<->char conversions
2604
26054/10/04 started 7.10.4
2606- man page fixes (thanks Jay)
2607- removed last csh scripts (thanks Jay)
2608- scripts default VIPSHOME to $prefix (thanks Jay)
2609- doc build system tidies
2610- im_rank() edge padding was wrong
2611- im_vips2tiff() can now embed ICC profiles
2612
261322/9/04 started 7.10.3
2614- mildly better im_vips2tiff()
2615- *, -, +, /, % between two images now work for mixed number of bands
2616- im_free() was missing a man page
2617- revised documentation
2618
26191/9/04 started 7.10.2
2620- C++ .pc files were still set for 7.9, grr
2621- im_insertplace() didn't check compatibility of images (thanks Matt)
2622
262327/7/04 started 7.10.1
2624- set default stack size explicitly to help platforms with a very low default
2625- 16 bit RGB tiff read was broken (bug introduced in 7.9.5, thanks Haida)
2626- !pangoft2 was broken, thanks Kenneth
2627- win32 build fixes
2628
262912/7/04 renamed as 7.10.0
2630- added NOCACHE function flag ... stops nip memoising video & paint ops
2631- added im_extract_bands() ... takes out many bands from an image
2632- im_vips2tiff() scanline write speed up for area pipelines
2633
263410/6/04 started 7.9.6
2635- tiny polishing of im_ppm2vips()
2636- im_blend() can now work on labq
2637- boolean ops all work on float/complex images (by casting to int)
2638- im_maplut() was broken for 1 band image + many band lut + >8 bit output
2639- im_lintra_vec() now handles 1 band image and many band vector to make many
2640  band image
2641- oops, im_lintra_vec() was missing a man page
2642- im_measure() can work on labq
2643- im_lhisteq() uses new embed mode, _raw() version is one pixel smaller, sets
2644  Xoffset/Yoffset for new origin scheme
2645- generalised im_tone_build() to any image type to make im_tone_build_range()
2646
264720/5/04 started 7.9.5
2648- tiff output res can be a single number too
2649- added im_text() to make a bitmap from a string with pango
2650- im_tiff2vips() does 16 bit RGBA
2651- im_binfile() was broken since 7.9.2 due to im_mapfile() change
2652- im_ppm2vips() now works for 16 bit images
2653- added im_copy_swap() ... copies, reversing byte order
2654- im_resize_linear() was broken for some images, thanks Javi
2655
26568/3/04 started 7.9.4
2657- oops, config.h include missing in a few places
2658- im_vips2tiff() can now write 1 bit images
2659- im__find_lr/tboverlap() now exported to nip
2660- better edge tile handling for tiff read/write (thanks Ruven)
2661- added extend-pixels-from-edge mode to im_embed()
2662- im_conv*(), im_rank(), im_stdif(), im_dilate(), im_erode() all use it to
2663  expand their input, so their output now has guess borders, not black borders
2664- im_fastcor() now does an im_embed( 1 ) on the output ... the zero borders
2665  were very annoying before, since you would usually be searching for the
2666  minimum point
2667- no change to im_spcor(), since you will usually be searching for the maximum
2668- better im_render() cache behaviour under heavy loads
2669- im_affine() revised
2670	* clip, resample and transform is now pixel-perfect for all
2671	  inputs (I hope)
2672	* uses the new embed to make sure there are no black borders
2673	  from edge interpolation
2674	* about 20 - 30% faster
2675- policy change: Xoffset and Yoffset are now set by all operations to record
2676  the position of the input origin in the output
2677- im_replicate() is much faster for some cases
2678- added tile and mirror flags to im_embed()
2679- added im_cache() convenience function
2680- better ETA for image calculation
2681- im_tiff2vips() now has a "broken" option so it can read tiled tiffs made
2682  with earlier versions of vips
2683- on convert float to int format, now does floor() not rint() ... more
2684  'mathematical'
2685- added im_rint()
2686- im_sharpen() now uses a gaussian mask
2687- im_convsep() more resistant to int overflow problems
2688- added im_make_xy(), avoids rounding problems with the old float-based thing
2689- im_profile() now makes vertical images for a vertical profile
2690- added im_vips2tiff() option to set the resolution in inches not cm (thanks
2691  Andrey)
2692- im_binfile() is now exported
2693
26946/2/04 started 7.9.3
2695- added an im_init_world() to im_open(), to help old progs
2696- renamed VSemaphore as im_semaphore_t
2697- started using libtool library versioning
2698- now uses g_module_*() in place of dlopen()
2699- now uses pkg-config instead of vips-config (thanks Simon)
2700- fixes to vips.h for _ADDR() with DEBUG on (thanks Konrad)
2701
270210/12/03 started 7.9.2
2703- patches for freebsd, thanks Lev Serebryakov
2704- vips2dj knows about my colour laser printer
2705- added i18n support, glib/gmodule/gthread dependency
2706- im_error*() API revised to be more i18n friendly
2707- List type removed, now uses g_slist
2708- VBuf added, some more utility funcs pushed down from nip
2709- im_thread stuff removed, now uses g_thread
2710- im_lock stuff removed, now uses g_mutex
2711- im_semaphore_t renamed to VSemaphore, not sure this is a good idea
2712- build with --disable-threads to turn off threaded render
2713- #include <vips/vips.h> now pulls in most of the public API, you shouldn't
2714  need other vips includes very often
2715- im_close() is better at cleaning up if there's an error
2716- inverse FFTs could fail for wider-than-high images with fftw
2717- better im_icc_transform error messages
2718- bug fix in im_render with large caches
2719- im_binfile() now has an offset parameter
2720- im_mapfile()/im_unmapfile() now work on IMAGE and record the length of the
2721  file they mapped ... this lets VIPS successfully unmap a file if it changes
2722  size while it's open
2723
272420/10/03 started 7.9.1
2725- threadgroups now have their own kill flag
2726- im_plotmask() now does anti-aliasing
2727- im_iterate() fix for operations on mmap window images (thanks Clare)
2728- im_writeline() stops on kill
2729- fix for im_fwfft() segv for wider-than-high real images (thanks Andrey)
2730- fix for im_fwfft() to work for non-square real images (thanks Andrey)
2731- can now read and write 32-bit IEEE float TIFF (Andrey Kiselev)
2732- clean-ups for colour.c (Andrey Kiselev)
2733- no longer lets you make an image with width|height|bands == 0 (thanks Joe)
2734- im_vips2tiff(), im_vips2*jpeg*(), im_vips2png(), im_vips2ppm() could
2735  sometimes fail for mmap window input images (thanks David)
2736- added IM_RECT_HCENTRE(), IM_RECT_VCENTRE() macros
2737
273820/8/03 JC
2739- started 7.9.0
2740- added im_rank_image() ... im_maxvalue() a special case of this
2741- im_subtract() goes up to int earlier for better value preserving, thanks
2742  Haida
2743- im_rank() much faster for large windows, correct result on all platforms
2744  (dratted memcpy() was causing problems before)
2745- fixed problem with libMagick config if installed somewhere strange
2746- fixed problem with include order in library compile
2747- added --without-magick configure option
2748- added im_render(), threaded background image paint
2749- added im_replicate(), replicate an image horizontally and vertically
2750
275131/5/03 JC
2752- started 7.8.11
2753- fixed a problem with relational operators and some combinations of input
2754  types (bug introduced in 7.8.9), thanks Haida
2755- vips-7.8 script overrides VIPSHOME environment variable
2756- better im_guess_prefix
2757- stupid light_correct script no longer uses /pics/tmp
2758- added batch_crop script
2759
276022/5/03
2761- started 7.8.10
2762- the JPEG writer can embed ICC profiles in output images ... although I've
2763  yet to see it make any difference :-( test this carefully at some point
2764- fixed a possible coredumper in jpeg write
2765- jpeg read now spots truncated files
2766- im_invertlut() now makes an image, not a mask ... sorry :-(
2767- im_histnD() makes an n-dimensional histogram from an n-band image
2768- im_col_pythagoras() patch
2769- IM_NUMBER() now returns int not size_t
2770- new win32 build system from Juan and friends, based on tmake
2771- sample project files for MSVC added, thanks Juan
2772- win32/ subdir now has the win32 build systems
2773- spec/ subdir now has the spec files for building RPMs
2774- dist now includes formatted documentation
2775- license change: VIPS is now LGPL, nip stays GPL ... this means proprietary
2776  programs can link against the vips library
2777- had a report of a working VIPS build on a 64 bit system (!)
2778- im_log_dmask() now includes all of the negative lobe, thanks matt
2779- vips-7.8 start script now auto-relocates
2780- im_spcor_raw(), im_fastcor_raw() now exported
2781
278229/4/03
2783- started 7.8.9
2784- changes to build to help MSVC
2785- oops, makedef.pl missed out function names with an initial cap, and
2786  error_exit()
2787- im_min() and im_max() gave random wrong results for >1 thread on >1 CPU
2788  machines (bug introduced in 7.7.20), thanks Joe
2789- vips.c no longer generates C++ wrappers for functions with no image argument
2790  (thanks Haida)
2791- im_invertlut() now wrapped by hand in VMask.cc
2792- C++ docs updated
2793- added im_open_header(), returns an IMAGE with just width/height/etc and no
2794  data
2795- ... so now "header" will print useful stuff even on truncated files
2796- tiff writer knows about alpha (thanks Jenny)
2797
27987/2/03
2799- started 7.8.8
2800- build failed with lcms turned off
2801- im_spcor() could segv for 16bit images (thanks Joe)
2802- im_tiff2vips() read resolution expressed as pixels/cm incorrectly
2803- im_vips2tiff() tries not to write mad resolutions
2804- header and im_open file type tests reordered for slight speedup
2805- im_copy_set() had a broken dispatch function for xres/yres
2806- im_fwfft() exploits libfftw real -> complex transform if possible for a 2x
2807  speed-up (thanks Matt)
2808- im_invfftr() added for complex -> real inverse transform for 2x speed-up
2809  (thanks Matt)
2810- im_freqflt() now uses im_invfftr() for real result and speedup
2811- im_flipver() could segv on some inputs, thanks Clare
2812- relational operators now work on complex
2813- relational rewritten ... now fractionally slower, but 1/3 the size
2814- vips2dj -1:1 produced incorrect height
2815- better overlap-too-small detection in mosaicing code
2816- im_system() can have NULL output
2817- global balance ignores overlaps with only transparent pixels
2818
28193/1/03
2820- started 7.8.7
2821- worked in patch from Hans Breuer (thanks!)
2822	- png read/write with im_png2vips(), im_png2vips_header(),
2823	  im_vips2png(), im_ispng()
2824	- im_errorstring() and im_col_displays() are now functions not externs
2825	  (helps DLLs)
2826	- many include fixes to help native win32 build
2827- added libMagick support, 78 file formats now loadable with
2828  im_magick2vips(), im_magick2vips_header() and im_ismagick(), w00t
2829- now installs vips.m4 to $prefix/share/aclocal
2830- added im_icc_export_depth() ... export to device space with a specified bit
2831  depth (8 or 16)
2832- vips.def now rebuilt with custom rule in libsrc/Makefile.am
2833- removed externs im_Type, im_BandFmt, im_Coding, im_Compression to simplify
2834  DLL build
2835- im_mmap() -> im__mmap(), since it's supposed to be an internal function
2836- new vips-7.8.x/proj directory holds unsupported sample makefiles and
2837  config.h for building with the MSC toolchain
2838- new scripts batch_image_convert and batch_rubber_sheet (thanks Joe)
2839- added the RPM .spec files to the main distribution
2840- InitializeMagic() now passed "" rather than NULL to avoid assert() problems
2841  on some libMagic versions
2842
28432/12/02
2844- started 7.8.6
2845- now reads 8-bit RGBA tiff
2846- C++ build guide fixes (thanks fsicre)
2847- im_Type2char array text slightly messed up
2848- global_balance is safer for complex mixed mosaics
2849- removed im_lintra() fallback to im_copy() for scale == 1, offset == 0 ...
2850  too confusing
2851- im_tiff2vips() now reads 16-bit LAB
2852- added im_Lab2LabS() and im_LabS2Lab()
2853
28545/11/02
2855- started 7.8.5
2856- fix for mmap window of local region ... caused im_iterate() to break
2857  sometimes for large images, in turn occasionally breaking
2858  im_max()/im_min()/etc. (thanks Joe)
2859- tiny speed up for im_rot90()/270()
2860- on install on win32, add .exe suffix for links
2861- vips.c knows to remove .exe suffix for linked commands
2862- added im_errormsg_system() ... decode win32 error codes too
2863- pagesize calcs for roving mmap windows were messed up on win32 (thanks Kirk)
2864- some TODO cleanups
2865- global balance broke horribly if you had filenames with spaces in (thanks
2866  Clare)
2867
286831/10/02
2869- started 7.8.4
2870- im_unmapfile() includes mixed up on mac os x
2871- libtool patched for mac os x
2872- vips.c sets numeric locale to "C"
2873
287427/10/02
2875- started 7.8.3
2876- configure fixes help mac os x
2877- im_guess_prefix() adds ".exe" suffix on w32 if not there
2878- changed im_measure() error messages to number bands from 1
2879- added func descriptor for im_read_dmask() to help nip, updated C++ API, docs
2880
288121/10/02 JC
2882- started 7.8.2
2883- tries rand() if random() is not available
2884- tries mktemp() if mkstemp() is not available
2885- turns off realpath() if not available
2886- added IM_DIR_SEP/IM_DIR_SEP_STR directory separator character/string
2887- added IM_PATH_SEP/IM_PATH_SEP_STR path separator character/string
2888- added im_path_is_absolute()
2889- vips.c knows to link to vips.exe on win32
2890- spot mingw* and set BINARY_OPEN
2891- open images in binary too (since we now read() the header)
2892
289310/10/02 JC
2894- im_lintra() and im_lintra_vec() were broken for complex images :-( thanks
2895  matt
2896- renamed im_and() as im_andimage(), im_eor() as im_eorimage() and im_or() as
2897  im_orimage() ... avoids breakage in the C++ layer
2898- added im_dE00_fromLab()
2899- limited release as vips-7.8.0
2900
29012/10/02
2902- renamed as vips-7.8, woohoo
2903- revised documentation
2904
290519/9/02 JC
2906- started sorting out VIPS #defines ... there are now a sensible set of new
2907  names (eg. NOCODING becomes IM_CODING_NONE, LAB becomes IM_TYPE_LAB)
2908- define IM_NO_VIPS7_COMPAT to turn off the old names
2909- added im_mmap()/im_munmap() layer for windows portability
2910- removed the contents of history.h .. obsolete
2911- added IM_IMAGE_ADDR() macro
2912
291310/9/02 JC
2914- handle errors from TIFF lib correctly
2915- configure fixes for cygwin
2916- CMYK TIFF write fixed
2917- configure fixes for mingw
2918
29195/9/02 JC
2920- im_cp_desc() now copies Xoffset/Yoffset
2921
292221/8/02 JC
2923- started 7.7.24
2924- reads CMYK TIFF
2925- reads dpi from TIFFs
2926- better float Xres/Yres
2927
292814/8/02 JC
2929- new header fields Xoffset and Yoffset ... used by functions to hint
2930  the position of the origin in output images
2931- support added to c++ api and to header
2932- im__lrmerge(), im__tbmerge(), im__affine(), im_insert(),
2933  set Xoffset/Yoffset
2934- now uses <lcms.h>, not <lcms/lcms.h> for better suse w0rkage
2935- better configure for fftw (uses libdfftw name if libfftw not found)
2936
29378/8/02 JC
2938- large file support with mmap() windows ... had to change
2939  im_prepare_inplace() to im_prepare_to()
2940
2941  benchmark:
2942
2943  - system
2944
2945	hardware: 2 x 2.5GHz P4, 1GB RAM, 15k SCSI, ReiserFS
2946	os: suse 8 (kernel 2.4.18)
2947	compiler: gcc 2.95.3, -O2, threads turned on
2948	images: fred.v, fred2.v; both 4k by 4k LABPACK (64MB)
2949	images: jim.v, jim2.v; both 15k by 15k LABPACK (900MB)
2950	time: smallest real of 5 runs, system idle
2951	vips: 7.7.23, debug on in im_openin.c, window limit set with an
2952	  environment variable
2953
2954  - benchmarks
2955
2956	cpu-bound: im_sharpen fred.v fred3.v 11 1.5 20 50 1 2
2957	io-bound: im_insert fred.v fred2.v fred3.v 4000 0
2958	worst-case: im_rot90 fred.v fred3.v
2959
2960  - results
2961
2962	desktop:
2963
2964			no mmap windows		mmap windows
2965
2966	cpu-bound	real    0m3.712s	real    0m3.970s
2967			user    0m6.010s	user    0m6.390s
2968			sys     0m0.900s 	sys     0m1.110s
2969
2970	io-bound	real    0m1.813s	real    0m1.865s
2971			user    0m0.900s	user    0m0.990s
2972			sys     0m1.720s 	sys     0m1.520s
2973
2974	worst-case	real    0m1.344s	real    0m3.039s
2975			user    0m1.270s	user    0m2.230s
2976			sys     0m0.850s	sys     0m3.050s
2977
2978  not quite sure why sharpen is a little slower (4%?) ... IO speed is about
2979  the same though ... worst-case is having to constantly move windows about
2980  (500,000 page faults, vs 10,000 for no windows)
2981
2982  again, with an image larger than RAM
2983
2984  			no mmap windows		mmap windows
2985
2986	io-bound 	real    2m52.759s	real    2m11.172s
2987			user    0m14.940s	user    0m14.890s
2988			sys     0m29.940s	sys     0m26.560s
2989
2990	worst-case	real    3m35.391s	real    3m50.760s
2991			user    0m19.850s	user    0m26.600s
2992			sys     0m12.650s 	sys     0m43.130s
2993
2994  mmap windows actually slightly faster in this case ... plus they stress the
2995  OS less
2996
299731/7/02 JC
2998- added -lm for better lcms detect
2999- README notes for fftw on suse8
3000- im_profile() sets HISTOGRAM for output image
3001- im_copy()/im_copy_set() function descriptor no longer sets PTOP ... helps
3002  avoid LUT problems
3003- im_subsample()/im_zoom() fall back to im_copy() for shrink/grow == 1
3004- im_lintra() falls back to im_copy() for scale == 1, offset == 0
3005- no longer use Type == LUT ... all just Type == HISTOGRAM now
3006- im_blend() was messed up for > 1 band images :(
3007
300816/7/02 JC
3009- started 7.7.23
3010- im_XYZ2sRGB() wasn't setting Type = sRGB
3011- im_icc_import() was broken for rgb
3012- im_header_string() had wrong return type in function database
3013
301413/7/02 JC
3015- added im_flood_blob()
3016- added im_open_local_array() ... C API convenience function
3017- oop, im_flood() was missing a man page
3018- Type == FOURIER added to help visualisation
3019- released as 7.7.22
3020
302130/6/02 JC
3022- JPEG, TIFF and PPM import all now set sRGB Type for RGB import
3023- im_header_int(), im_header_double() and im_header_string() added to aid
3024  UIs
3025- now uses gettimeofday(), not time()
3026- for consistency with other trig functions, im_c2amph() now returns degrees
3027  not radians (ouch)
3028- added im_c2rect() ... turn (amp, phase) to rectangular
3029- added im_sign() ... unit vector in direction of value
3030- better im_scaleps() ... old code was terrible
3031- rewritten im_rotquad() ... now partial
3032- im_icc_export()/_import() now do ABSOLUTE correctly
3033- added im_icc_ac2rc() ... converts absolute to relative colorimetry
3034
303525/6/02 JC
3036- added im_copy_set(3) ... like im_copy(), but set informational header fields
3037
303820/6/02 JC
3039- added im_ceil(), im_floor()
3040- im_Lab2LabQ was not clipping a/b range correctly
3041- im_icc_export(), own ABSOLUTE mode
3042- released as 7.7.21
3043
304428/5/02 JC
3045- im_remainderconst_vec broken for float/double
3046- added Yxy colourspace
3047
304816/05/02 JC
3049- auug, libtool was all messed up ... redone all the autotools stuff
3050- uses libtool convenience libraries to build vips in sections
3051- uses config subdir for temp files and .m4 things
3052- patched stupid suse config.guess
3053- vips2dj patched for better raw cmyk
3054- released as 7.7.20
3055
305612/5/02 JC
3057- im_vips2jpeg*() and im_vips2ppm() now both partial
3058- started updating the C++ guide
3059- had to change the location of the C++ headers :-( all C++ progs should now
3060  have:
3061
3062	#include <vips/vipscpp.h>
3063
3064  this is so things can work on systems which do not have case sensitive
3065  file systems
3066
3067- changes for Mac OS X
3068  * im_system() TRUE/FALSE removed
3069  * searches /*/[lib|include] to get fink libs for tiff and jpeg
3070
307130/4/02 JC
3072- several functions were missing IM_FN_PIO in their descriptor ... this was
3073  harmless for nip/ip/C, but broke the ref counting in the C++ layer
3074- im_system() now defaults "/tmp" for temp files
3075- STRING input and output args were broken for C++ :-(
3076- threads exit more quickly on error
3077- im_min()/im_max() now partial (at last)
3078- im_remainderconst()/im_remainderconst_vec() added
3079- --with-dmalloc configure switch
3080- vips2dj does CMYK and mono too
3081- im_vips2tiff() allows any number of bands (but not the right way to
3082  write CMYK, see TODO)
3083
308426/4/02 JC
3085- old ICC profile reader removed
3086- little cms wrapped ... configure spots it, im_icc_transform() uses it to map
3087  between two images
3088- also im_icc_import() and im_icc_export() so you can see PCS images
3089- im_icc_present() to test for existence of lib
3090- README fixes
3091
30924/4/02 JC
3093- TODO changes
3094- oops, DEBUG left on in im_invertlut()
3095
30962/4/02 JC
3097- im_fwfft.c/im_invfft.c now use libfftw if available ... about 5x speed up
3098  and double precision
3099- added FIND_FFTW autoconf macro
3100- include/vips/proto.h changes
3101
310226/3/02 JC
3103- started 7.7.19
3104
310525/3/02 JC
3106- im_log_dmask() was broken (thanks matt)
3107- casts between VDMask and VIMask were broken (thanks matt)
3108- various error msgs improvements and tiny man page fixes
3109
311013/3/02 JC
3111- tb/lr merge first/last cache moved to per-call state for better sharing
3112- im_remosaic() bails out faster on error and makes better error messages
3113
311413/3/02 ruven
3115- im_vips2tiff() pyramids stop at tilesize, not 64x64
3116
311725/02/02 JC
3118- im_remosaic() is smarter, and works better with im_global_balance()
3119- im_affine() 2x faster
3120
312114/2/02 JC
3122- started 7.7.18
3123- vips.m4 and libsrc/Makefile.am fixes for IRIX
3124
312511/02/02 JC
3126- vips/thread.h and vips/threadgroup.h were missing extern "C" for C++
3127- VImage::write() now tracks dependencies, so you can write() to a partial
3128  safely ... although it's not a very useful thing to do (thanks Mike)
3129- new VImage::print() function for debugging
3130- added im_print()
3131
313222/01/02 JC
3133- started 7.7.17
3134
313515/01/02 JC
3136- im_rect_unionrect() and im_rect_intersectrect() safer for repeated args
3137- im_video_v4l() no longer perrror()s on ioctl fail for less spam
3138
313903/01/02 JC
3140- started 7.7.16
3141- im_version_string() really does return the date as well now
3142
314312/12/01 JC
3144- im_guess_prefix() extra smartness for relative path names
3145- VImage() no longer uses tmpnam() (thanks Paul)
3146
314711/12/01 JC
3148- renamed im_fexists() as im_existsf()
3149
31507/12/01 JC
3151- ppm man pages added (doh)
3152
315328/11/01 JC
3154- warnings on g++ 2.96 fixed
3155
315622/11/01 JC
3157- started 7.7.15
3158- im_video_v4l() failed to compile on non-linux platforms
3159
31607/11/01 JC
3161- im_remosaic() added
3162- im_*merge() are more intelligent about transparency in bizarre overlaps
3163- grr! putenv() semantics change on more recent clibs ... should be safer
3164  now
3165
316619/10/01 JC
3167- VDisplay( "display name" ) segved on unknown display :-( thanks mike
3168
316926/9/01 JC
3170- contrib tools get data files from share/vips/xxx area now
3171- im_vipshome() renamed as im_guess_prefix(), reworked for new package layout
3172- doc/ build sorted out
3173- ... but of course, docs still need updating for 7.8
3174
317520/9/01 JC
3176- fix to im_vipshome()
3177- ip2 renamed as nip
3178- split to library only ... separate ip and nip packages
3179- new VIPS_VERSION_* macros set from configure.in in vips/version.h.in
3180- vips.m4 VIPS finder
3181- reworked README, doc/README and TODO
3182- now installs to /usr/local/ by default
3183- fmask4th.c was including varargs.h ... d'oh
3184- include area reorganised: everything inside <vips/..> now ... hopefully the
3185  only user-visible change is that all plain C progs need to change:
3186
3187	#include <vips.h>
3188
3189  to:
3190
3191	#include <vips/vips.h>
3192
3193  the C++ API should be unaltered
3194
319521/8/01 ruven
3196- im_setupout() was missing some #includes
3197
319820/8/01 JC
3199- started 7.7.14
3200
320115/8/01 JC
3202- added libxml dependency for ip2
3203
320427/7/01 JC
3205- im_conv(), im_convf(), im_convsep(), im_convsepf() now reject masks with
3206  scale == 0
3207
320826/7/01 JC
3209- started 7.7.12
3210
321125/7/01 JC
3212- started 7.7.11
3213- oop, im_histeq() and im_tonemap() also missed
3214- better error messages from im_run_command()
3215
321623/7/01 JC
3217- started 7.7.10
3218- im_sharpen() failed due to change in im_band_extract() offset
3219
322020/7/01 JC
3221- started 7.7.9
3222
32234/7/01 JC
3224- im_open(,"w") open() delayed until im_setupout(), very slightly safer
3225- updated im_open() man page
3226- im_tiff2vips() now embeds index in filename ... and it's page number (from
3227  0), not subsample factor
3228- finally bit the bullet ... im_extract()/im_extract_band() now number from
3229  zero (sorry!)
3230- and im_lrmosaic()/im_tbmosaic() bandno param too
3231
323229/6/01 JC
3233- im_region_free() now frees immediately
3234
323527/6/01 JC
3236- im_vips2tiff() man page updated for deflate, 2 years late
3237
323822/6/01 JC
3239- oops, limit wrong on im_rank()
3240
324121/6/01 JC
3242- better post_install for --prefix outside VIPS's tree
3243- -ltiff needs -lm in acinclude.m4 ... fixes configure on redhat 7.x
3244
324513/6/01 JC
3246- started 7.7.8
3247
32486/6/01 JC
3249- im_invertlut() added
3250
325131/5/01 JC
3252- im_colour_temperature, im_XYZ2Lab_temp, im_Lab2XYZ_temp added
3253- ... colour temp stuff needs sorting out properly
3254
325525/5/01 JC
3256- added vips-config script, cf. gtk-config
3257- --without-threads option added
3258- did a bit of work on the C++ API docs
3259
326024/5/01 JC
3261- added im_tiff2vips_header(), im_jpeg2vips_header() and im_ppm2vips_header()
3262- header uses these to print fields quickly
3263- switched to config.h
3264- configure.in rewritten ... much nicer, fewer options, more automatic
3265
326617/5/01 JC
3267- im_matinv() didn't free stuff correctly on singular matrix
3268
326916/5/01 JC
3270- vips2dj now knows about 5000ps printers
3271- allow RW mode for non-native VIPS image files, for 8 bit images
3272
32732/5/01 JC
3274- started 7.7.7
3275
32761/5/01 JC
3277- im_addgnoise() did not work for >1 band images
3278
327923/4/01 JC
3280- configure options to remove support for JPEG and TIFF ... helpful for a no-
3281  dependencies build
3282
328320/4/01 JC
3284- im_(v)snprintf() added
3285- all sprintf()s removed
3286
328715/4/01 JC
3288- im_affine() had a rounding problem
3289
329011/4/01 JC
3291- tiny mosaicing bug fixed in im__lrcalcon
3292- started 7.7.6
3293
329421/3/01 JC
3295- new iblend code in im_tbmerge() was typo-d
3296- mosaic1 was broken by affine too
3297
329820/3/01 JC
3299- im_image() failed for FMTUCHAR
3300
330112/3/01 JC
3302- started 7.7.5
3303- im_sharpen() uses seperable convolution for big speed up
3304- new "Print" menu
3305
330611/3/01 JC
3307- REALVEC renamed as DOUBLEVEC
3308- added IMAGEVEC
3309- added IM_INPUT_IMAGEVEC
3310- gbandjoin now has function description
3311- new function im_maxvalue()
3312- im_compass()/im_lindetect() reimplemented with im_conv()/im_maxvalue(),
3313  about 15% faster, works for any type, partial
3314- im_gradient() reimplemented with im_conv()/im_abs()/im_add(), about 30%
3315  slower, works for any type, partial
3316
331710/3/01 JC
3318- new function, im_clip2fmt() converts between any image formats ...
3319  slightly faster than the old im_clip()
3320- legacy im_clip2us() etc. functions now just call this
3321
33229/3/01 JC
3323- im_conv() rewritten, simpler, about 10% faster
3324- im_convsep() rewritten, now does any non-complex type, partial, 20% faster
3325- new functions: im_convf(), im_convsepf() for DOUBLEMASK
3326- raw versions of each
3327- legacy convolvers (eg. im_convbi()) removed
3328
33298/3/01 JC
3330- new function im_blend()
3331- new function im_lab_morph()
3332- speed up to im_ifthenelse()
3333- speed up to im_*merge() (uses integer arithmetic for integer blends)
3334
33354/3/01 JC
3336- tiny speed ups to im_histgr()
3337- speed ups to im_maplut()
3338
33393/3/01 JC
3340- new functions: im_histnorm(), im_histcum()
3341- im_histeq() more general
3342- im_vipshome() --- better behaviour for relative paths
3343
33442/3/01 JC
3345- new video package
3346- im_video_v4l1() (video for linux) added
3347- configure.in switches to turn v4l1 on and off
3348
33491/3/01 JC
3350- new im_histspec() implementation ... more general, bugs removed
3351
335214/2/01 JC
3353- better vips2dj usage message
3354
335513/2/01 JC
3356- im_image_sanity() added, called in various places in iofuncs
3357
33589/2/01 JC
3359- added 'check' and 'name' class member stuff to ip from ip_gtk2
3360- new "Plot" menu
3361- new "Overlay" menu
3362- more stuff in _stdenv/_list ... curried forms of head/tail etc.
3363
33647/2/01 JC
3365- started 7.7.4
3366- vips2dj and vdump now use im_vipshome()
3367
33685/2/01 JC
3369- new im_vipshome() function
3370- min()/max() macros renamed as MIN()/MAX()
3371- new im_load_plugins() function
3372- vips.exe and ip now load $VIPSHOME/lib plugins at startup
3373
33742/2/01 JC
3375- mosaicing functions now have an extra max blend width parameter
3376
337730/1/01 JC
3378- fixed tbmerge no overlap detect
3379
338013/12/00 JC
3381- started 7.7.3
3382
338330/12/00 JC
3384- vips.h fixes for cygwin/wingdi conflict
3385
338627/11/00 JC
3387- added im_vips2ppm(), im_open() imports and exports it
3388- fixed nasty implicit output conversion problem for PIO dispatch() calls
3389
339021/11/00 JC
3391- added im_ppm2vips()
3392
339316/11/00 JC
3394- configure.in fixes ... jpeg found correctly now
3395- searches for libz as well
3396
339716/11/00 JC
3398- started 7.7.2
3399
34005/11/00 JC
3401- speed up to lab2labq
3402
340319/10/00 JC
3404- started 7.7.1
3405
340613/1/00 JC
3407- oops, im_open() was missing an 'else' in jpeg/tiff load
3408
34095/8/00 JC
3410- im_vips2tiff() now has mode string embedded in output filename
3411- im_vips2jpeg() now has qfac in output filename
3412- im_open() understands this
3413
341411/7/00 JC
3415- new im_image() function ... wraps a VIPS image around a memory buffer
3416- C++ layer changes:
3417	* now use #include <vips/Vips.h>
3418	* error renamed as VError
3419	* new VMask() constructors
3420	* new VImage() constructor
3421	* new VImage::data() access member
3422	* more operator equivalences: <, >, <=, >=, ==, !=, &, |, ^, %
3423
342417/6/00 JC
3425- more consts added to vips protos
3426
342710/5/00 JC
3428- minor configure.in changes to help solaris
3429- removed _TIFFmalloc() and _TIFFfree() calls
3430
34319/3/00 JC
3432- fixed rounding problem in generate grid
3433
34348/3/00 JC
3435- fixup to im_system() temp dir
3436
34377/3/00 JC
3438- added im_system()
3439- small tidies
3440
34411/3/00 JC
3442- better plugin test in configure.in
3443
344426/2/00 JC
3445- fixes to Makefile.am in ip/src* and configure.in, to help ip find the right
3446  gtk includes on systems with more than one gtk-xxx installed
3447
344821/2/00 JC
3449- now builds ip and ip_gtk2
3450
345116/2/00 JC
3452- configure.in fixes for xil and some TIFF/JPEG strangeness
3453
345415/2/00 JC
3455- im_global_balancef() was broken! d'oh
3456- note in README about enabling video cards
3457
345810/2/00 JC
3459- configure now searches for xil ... FIND_XIL macro
3460- im_zoom() spots integer overflow
3461- better shape set on region drag end in ip
3462- better zoom-too-far handling in ip
3463
346413/1/00 JC
3465- fixes to configure etc. to help cygwin
3466- jpeg is now searched for too ... FIND_JPEG macro
3467
346810/1/00 JC
3469- global_balance() now uses new affine() atuff
3470
347127/12/99 JC
3472- mosaic1 stuff now uses new affine() funcs
3473
347421/12/99 JC
3475- added Joe's docs
3476- im_LabS2LabQ() rounding on a/b slightly broken for a/b == 0
3477
347820/12/99 JC
3479- new function: im_affine()
3480- similarity*() now in terms of affine()
3481- tests for error return in reduce.c from maplut
3482- small clean-ups
3483
348415/12/99
3485- im_version() added, new iofuncs package for it
3486- ip did not call zero-input-arg vips functions
3487- vips.c did not like zero-input-arg functions
3488
34896/12/99 JC
3490- Sobel filter was a bit broken
3491
34923/12/99 JC
3493- menu reorganisation
3494- generate gauss mask dialog
3495
34962/12/99 JC
3497- reworked text file IO, better error messages
3498
34991/12/99 JC
3500- reworked .iprc filename stuff, cleaner
3501
350230/11/99 JC
3503- better menu set switcher in calc preferences
3504- ip now thinks it's 7.7
3505- did a spellcheck on the ip guide
3506
350729/11/99 JC
3508- 7.7 started!
3509- srgb D65->D50 converter
3510- Negate added to arith
3511- find similar pixel value dialog
3512- find similar colour dialog
3513- paste into background dialog
3514
351519/11/99 JC
3516- adjust labq was mising
3517- shrink image defaulted to /2 not /1
3518- sharpdropshadow broken
3519- Rotate.* broken
3520- vips-7.6.3 release
3521
352218/11/99 JC
3523- ip didn't report space free on >2GB filesystems correctly
3524- ip did not link statically against libXpm on solaris7
3525
352617/11/99 JC
3527- im_histplot() failed for all 0's histogram
3528- new profile_image dialog
3529- man pages for im_sRGB2XYZ/im_XYZ2sRGB were broken
3530- new colourize image dialog
3531- new shrink image image dialog
3532- new expand image image dialog
3533- better doc Makefiles
3534
353516/11/99 JC
3536- more menu reorganising
3537- new image_to_mask/mask_to_image buttons
3538- new match_two_images dialog
3539- new measure_colour_chart dialog
3540
354115/11/99 JC
3542- new custom LABQ sharpen in Image menu
3543- configure support for SGI video (thanks Ruven)
3544- menu fiddling in ip
3545- new "resize canvas" menu item
3546- im_insert_noexpand() added, no docs tho'
3547
354811/11/99 JC
3549- new ip menu item: Image=>Adjust white/black/saturation of LabQ
3550- fixed bug in decompose complex number
3551- browse-icons now ignores errors
3552- better error msg for "12 12" etc cases
3553
355410/11/99 JC
3555- open hi-res gives proper error msg if no file found
3556- made file-select boxes a bit more compact and clearer
3557- updated configure.in for vips-examples-7.6
3558
35599/11/99 JC
3560- new column start point moved
3561- vdump now defaults to subsample 1, portrait
3562- navigation boxes were broken
3563- no longer shrink-to-fit if loading as high res
3564- better positioning of zoom windows
3565- removed some old cruft
3566
35678/11/99 JC
3568- ooops, im_remainder() got lost somehow
3569- refguide converted to latex and updated
3570- cppguide updated
3571
35725/11/99 JC
3573- libguide converted to latex and updated
3574
35754/11/99 JC
3576- ip guide now latex2htmls cleanly ... still needs updating tho'
3577- cpp/app guide latex2html redone
3578
35792/11/99 JC
3580- configure no longer adds -32 to IRIX builds for you
3581- some more stuff in README
3582- simple DEBUGM malloc tracking, made libsrc/iofuncs/memory.c
3583- changed im_malloc() to return void *
3584- removed duplicate im_malloc() proto from util.h
3585- changed all malloc/free to go through im_malloc()/im_free()
3586
358723/10/99 JC
3588- double-click on error image now pops a load browser and an error dialog
3589- add-new-column no longer scrolls to right edge of workspace
3590- better scroll-to-bottom on item add
3591- load ws twice does not cause 'already open' errors
3592- memorise directory button in fsb
3593
359418/10/99 JC
3595- new FIND_TIFF/FIND_MOTIF macros for acinclude.m4
3596- new ./configure switches, see ./configure --help
3597- enabled static libs
3598
35998/10/99
3600- broke action_proc_bop() into smaller functions, stops bad code gen on
3601  gcc2.95.1 (and others, prolly)
3602- restored old Makefiles in doc/src/ipguide
3603- vips7.6 script renamed as vips-7.6
3604
36055/10/99
3606- replace image was broken
3607- some menu reorganisation
3608- 'reload all menus' button
3609
36104/10/99
3611- computed regions in ip were broken
3612- updated system.iprc defaults
3613- new menu item: adjust white/black points
3614
36152/10/99
3616- browse icons was broken
3617- greyscale 16-bit tiled tiff was broken
3618- extra mutex locks for TIFF*() in im_tiff2vips()
3619
36201/10/99
3621- some automake probs fixed
3622- squished two ip bugs
3623
362430/9/99
3625- fixed problem with pthreads, now works on suse6.2 as well
3626- new API stuff for threaded evaluation with im_threadgroup_t
3627- new public interface provide platform independent threads/locks/semaphores
3628- no error box if you zoom out too far now
3629
363026/9/99
3631- lr/tb merge blend was not quite right ... should be smoother now
3632- histplot broken for float images
3633
363424/9/99
3635- better mono->labq converter
3636- more portable ispoweroftwo detect for freq filter stuff
3637
363823/9/99
3639- better graphics expose handling
3640
364117/9/99
3642- >/< stuff in ip was a bit mixed up
3643- ink preview fixed for mono images
3644- help popup fixed
3645
364615/9/99
3647- linedetect and sobel filters for ip, thnx Kirk
3648
364914/9/99
3650- Find_histogram was broken
3651- im_profile() man pages was broken
3652- ooops, ip had old set of macros
3653
365410/9/99
3655- im_and/im_or/im_eor now work for any integer type
3656
3657Summer hols: (2nd half August '99)
3658- initial heap block larger to avoid start gcs
3659- def slicer fixed
3660- larger max heap
3661- toolkits with initial '_' hidden by default
3662- custom recomb
3663- dialog.def removed
3664- ... other menu fixes
3665- generate grid menu
3666- im_remainder() added
3667- new cursor change code, hglass rotates during comp!
3668- dialog.c handles cursor changes better
3669- rubber band in paintbox displays
3670- mag widget stays on right!
3671- undo/redo single pixel paint ops
3672- heap size control from prefs
3673- cancel for reductions as well as for image calc
3674- browse stuff reworked, no more .icon.v files
3675- save stops you overwriting open .v files
3676- better animate_countdown() handling
3677- better resize behaviour for bars added to images
3678- better code generation, bug fixed in state tracking
3679- auto recover from crash
3680