What's New in 7.16
- New nip2 macros
- Cluster, Shrink Within, Custom header get, Cache.
- Better image repaint
- nip2 now handles its own repaints so screen updates should be faster and smoother.
- Better progress feedback
- There used to be an annoying popup progress bar. This now appears on the right side of the main window status bar. More actions trigger this as well so it should now be impossible to lock nip2 up. Hopefully.
- Better multiple select open
- If you select many image files in the Open dialog and cick OK, you now get a Group. This makes it possible to batch-process much larger groups of images.
- New Snip features
- A couple of minor new features, $name and a => b, see below.
- Pluggable image formats
- Thanks to Jesper Friis, VIPS now lets you add support for new image file formats easily. A plugin can register a new file format and support for that format will automatically be added to all VIPS interfaces. There's a section in the VIPS manual on this, and a man page with full details. Try typing "vips --list formats" at the command-line to see all the formats that VIPS knows about.
- Better Python bindings
- There are several important improvements to the Python binding. You can swap images between VIPS and PIL efficiently and the mask constructor actually works now.
- Metadata API now wrapped by C++ and Python
- The VIPS metadata API was C only. Now you can use it from C++ and Python too.
- Various bugfixes, speedups and portability improvements. There's also now a test suite with around 2,000 tests that can be run when you build VIPS, so hopefully that'll help us catch bugs earlier.
The What's New in 7.14 page is still there, if you're curious.
New Snip features
nip2's programming language, Snip, has two new features: tags and a pair syntax.
Tags are a shorthand for strings which follow the same rules as variables names: letters, numbers, underscore and apostophy.
$fred == "fred"
Pairs are formed with the => operator.
a => b == [a, b]
The left-hand-side of the => operator has to be a string, the right-hand sde can be anything. You can combine these two to make something that looks a bit like named parameters.
[$fred => 1, $jim => 2] == [["fred", 1], ["jim", 2]]
These features are supposed to be useful when we get graphic overlays, a feature planned for the next version.
There has been a non-backwards compatible change too, sadly. We've had to change the list comprehension syntax. You ow use double colon, ::, to separate the output expression from the first generator. For example:
[a => b :: a <- [$c, $d]; b <- [1.. 10]]
We used to use pipe, |, for this, but the syntax was too confusing with expressions that used pipe as bitwise or as well. The nip2 manual has a section on list comprehensions, => and $.