"Fossies" - the Fresh Open Source Software Archive

Member "vips-8.12.1/ChangeLog" (24 Nov 2021, 144492 Bytes) of package /linux/privat/vips-8.12.1.tar.gz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "ChangeLog": 8.12.0_vs_8.12.1.

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