Changelog #
Notable changes to notmuch.zig. The format is loosely Keep a Changelog, and the versions are semantic — while the major version is 0, a breaking change raises the minor.
0.3.0 #
Fixed #
-
An iterator no longer panics when notmuch declines to build an item.
ThreadsIterator.nextandMessagesIterator.nextaskednotmuch_threads_getandnotmuch_messages_getfor the item at the cursor and wroteorelse unreachable, on the reasoning thatnotmuch_*_validhad just said there was one. That is not a guarantee libnotmuch makes: the item is built out of the database when it is asked for, and the header says plainly that NULL comes back if the build fails. Both now returnerror.XapianException.It is reachable on any archive that is read while it is written. A writer committing underneath a running search invalidates the reader, the next item fails to build, and a daemon serving that search died on the spot — about once a minute under a search load with deliveries running alongside it.
Changed #
-
ThreadsIterator.NextErrorandMessagesIterator.NextErrorgainedXapianException. This is why the minor version moved: an exhaustiveswitchover either set no longer compiles. A caller that propagates withtry, or switches with anelse, is unaffected.It is reported as a Xapian exception rather than as
OutOfMemory, which is the only cause libnotmuch's header names, because the allocator is rarely the real one — and a caller that treats running out of memory as fatal would give up on something it should have retried.Directoryalready maps a NULL return the same way.
0.2.0 and earlier #
Not recorded here; see the commit history.