<feed xmlns='http://www.w3.org/2005/Atom'>
<title>notmuch/lib, branch 0.19_rc2</title>
<subtitle>thread-based email index, search, and tagging</subtitle>
<id>https://git.notmuchmail.org/git/notmuch/atom?h=0.19_rc2</id>
<link rel='self' href='https://git.notmuchmail.org/git/notmuch/atom?h=0.19_rc2'/>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/'/>
<updated>2014-11-05T23:10:03Z</updated>
<entry>
<title>lib: bump LIBNOTMUCH_MAJOR_VERSION to 4</title>
<updated>2014-11-05T23:10:03Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2014-11-05T23:10:03Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=74bd4ea2ed8b5dc45643273c1fcc5797af47157a'/>
<id>urn:sha1:74bd4ea2ed8b5dc45643273c1fcc5797af47157a</id>
<content type='text'>
This should have been done at the same time as the SONAME bump.
</content>
</entry>
<entry>
<title>lib: Remove unnecessary thread linking steps when using ghost messages</title>
<updated>2014-10-25T17:46:19Z</updated>
<author>
<name>Austin Clements</name>
<email>amdragon@mit.edu</email>
</author>
<published>2014-10-23T12:30:41Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=70f15b37fb226160acea591632b73ebe1e48809c'/>
<id>urn:sha1:70f15b37fb226160acea591632b73ebe1e48809c</id>
<content type='text'>
Previously, it was necessary to link new messages to children to work
around some (though not all) problems with the old metadata-based
approach to stored thread IDs.  With ghost messages, this is no longer
necessary, so don't bother with child linking when ghost messages are
in use.
</content>
</entry>
<entry>
<title>lib: Enable ghost messages feature</title>
<updated>2014-10-25T17:31:27Z</updated>
<author>
<name>Austin Clements</name>
<email>amdragon@mit.edu</email>
</author>
<published>2014-10-23T12:30:39Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=ee476f1e7616fa53c492b8077b55af35662eec82'/>
<id>urn:sha1:ee476f1e7616fa53c492b8077b55af35662eec82</id>
<content type='text'>
This fixes the broken thread order test.
</content>
</entry>
<entry>
<title>lib: Implement upgrade to ghost messages feature</title>
<updated>2014-10-25T17:30:08Z</updated>
<author>
<name>Austin Clements</name>
<email>amdragon@mit.edu</email>
</author>
<published>2014-10-23T12:30:38Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=d1e8c80b7239705b05bfa3e129c5de1c7099498a'/>
<id>urn:sha1:d1e8c80b7239705b05bfa3e129c5de1c7099498a</id>
<content type='text'>
Somehow this is the first upgrade pass that actually does *any* error
checking, so this also adds the bit of necessary infrastructure to
handle that.
</content>
</entry>
<entry>
<title>lib: Implement ghost-based thread linking</title>
<updated>2014-10-25T17:27:07Z</updated>
<author>
<name>Austin Clements</name>
<email>amdragon@mit.edu</email>
</author>
<published>2014-10-23T12:30:37Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=58a4277d3b2ad88bc285f2dae998626b0aa73299'/>
<id>urn:sha1:58a4277d3b2ad88bc285f2dae998626b0aa73299</id>
<content type='text'>
This updates the thread linking code to use ghost messages instead of
user metadata to link messages into threads.

In contrast with the old approach, this is actually correct.
Previously, thread merging updated only the thread IDs of message
documents, not thread IDs stored in user metadata.  As originally
diagnosed by Mark Walters [1] and as demonstrated by the broken
T260-thread-order test, this can cause notmuch to fail to link
messages even though they're in the same thread.  In principle the old
approach could have been fixed by updating the user metadata thread
IDs as well, but these are not indexed and hence this would have
required a full scan of all stored thread IDs.  Ghost messages solve
this problem naturally by reusing the exact same thread ID and message
ID representation and indexing as regular messages.

Furthermore, thanks to this greater symmetry, ghost messages are also
algorithmically simpler.  We continue to support the old user metadata
format, so this patch can't delete any code, but when we do remove
support for the old format, several functions can simply be deleted.

[1] id:8738h7kv2q.fsf@qmul.ac.uk
</content>
</entry>
<entry>
<title>lib: Internal support for querying and creating ghost messages</title>
<updated>2014-10-25T17:26:54Z</updated>
<author>
<name>Austin Clements</name>
<email>amdragon@mit.edu</email>
</author>
<published>2014-10-23T12:30:36Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=bc9c50602d20ce712188ea2cc3c5d30647d4d3f5'/>
<id>urn:sha1:bc9c50602d20ce712188ea2cc3c5d30647d4d3f5</id>
<content type='text'>
This updates the message abstraction to support ghost messages: it
adds a message flag that distinguishes regular messages from ghost
messages, and an internal function for initializing a newly created
(blank) message as a ghost message.
</content>
</entry>
<entry>
<title>lib: Introduce macros for bit operations</title>
<updated>2014-10-25T17:26:43Z</updated>
<author>
<name>Austin Clements</name>
<email>aclements@csail.mit.edu</email>
</author>
<published>2014-10-24T12:49:15Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=d99491f27440d83f937131a861ca547bffb8bdf1'/>
<id>urn:sha1:d99491f27440d83f937131a861ca547bffb8bdf1</id>
<content type='text'>
These macros help clarify basic bit-twiddling code and are written to
be robust against C undefined behavior of shift operators.
</content>
</entry>
<entry>
<title>lib: Update database schema doc for ghost messages</title>
<updated>2014-10-25T17:26:03Z</updated>
<author>
<name>Austin Clements</name>
<email>amdragon@mit.edu</email>
</author>
<published>2014-10-23T12:30:34Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=d9f5da00bb7707f3244654b4e44df2284e3634be'/>
<id>urn:sha1:d9f5da00bb7707f3244654b4e44df2284e3634be</id>
<content type='text'>
This describes the structure of ghost mail documents.  Ghost messages
are not yet implemented.
</content>
</entry>
<entry>
<title>lib: Add a ghost messages database feature</title>
<updated>2014-10-25T17:25:54Z</updated>
<author>
<name>Austin Clements</name>
<email>amdragon@mit.edu</email>
</author>
<published>2014-10-23T12:30:33Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=1cdb96d3c4a2fc5ddf3a6e5c73c59c0f0e65cae2'/>
<id>urn:sha1:1cdb96d3c4a2fc5ddf3a6e5c73c59c0f0e65cae2</id>
<content type='text'>
This will be implemented over the next several patches.  The feature
is not yet "enabled" (this does not add it to
NOTMUCH_FEATURES_CURRENT).
</content>
</entry>
<entry>
<title>lib: Handle empty date value</title>
<updated>2014-10-11T05:10:12Z</updated>
<author>
<name>Austin Clements</name>
<email>amdragon@mit.edu</email>
</author>
<published>2014-10-06T23:17:09Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=7487e2e2214b27407e542df164a4d23520bbd8d8'/>
<id>urn:sha1:7487e2e2214b27407e542df164a4d23520bbd8d8</id>
<content type='text'>
In the interest of robustness, avoid undefined behavior of
sortable_unserialise if the date value is missing.  This shouldn't
happen now, but ghost messages will have blank date values.
</content>
</entry>
</feed>
