<feed xmlns='http://www.w3.org/2005/Atom'>
<title>notmuch/lib/notmuch-private.h, branch 0.12</title>
<subtitle>thread-based email index, search, and tagging</subtitle>
<id>https://git.notmuchmail.org/git/notmuch/atom?h=0.12</id>
<link rel='self' href='https://git.notmuchmail.org/git/notmuch/atom?h=0.12'/>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/'/>
<updated>2012-01-17T01:06:35Z</updated>
<entry>
<title>lib: Add support for automatically excluding tags from queries</title>
<updated>2012-01-17T01:06:35Z</updated>
<author>
<name>Austin Clements</name>
<email>amdragon@MIT.EDU</email>
</author>
<published>2012-01-15T00:17:33Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=3b76adf9e2c026dd03b820f4c6eab50e25444113'/>
<id>urn:sha1:3b76adf9e2c026dd03b820f4c6eab50e25444113</id>
<content type='text'>
This is useful for tags like "deleted" and "spam" that people
generally want to exclude from query results.  These exclusions will
be overridden if a tag is explicitly mentioned in a query.
</content>
</entry>
<entry>
<title>Store "from" and "subject" headers in the database.</title>
<updated>2011-11-14T21:10:58Z</updated>
<author>
<name>Austin Clements</name>
<email>amdragon@MIT.EDU</email>
</author>
<published>2011-11-06T17:17:36Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=567bcbc294b3aed632d18eb22056840292bdeb1e'/>
<id>urn:sha1:567bcbc294b3aed632d18eb22056840292bdeb1e</id>
<content type='text'>
This is a rebase and cleanup of Istvan Marko's patch from
id:m3pqnj2j7a.fsf@zsu.kismala.com

Search retrieves these headers for every message in the search
results.  Previously, this required opening and parsing every message
file.  Storing them directly in the database significantly reduces IO
and computation, speeding up search by between 50% and 10X.

Taking full advantage of this requires a database rebuild, but it will
fall back to the old behavior for messages that do not have headers
stored in the database.
</content>
</entry>
<entry>
<title>xutil.c: remove duplicate copies, create new library libutil.a to contain xutil.</title>
<updated>2011-10-31T02:09:49Z</updated>
<author>
<name>David Bremner</name>
<email>bremner@debian.org</email>
</author>
<published>2011-10-23T15:05:13Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=1dedfc90f6eee7cad10f1a1ceb39a7a1c4dbd1b1'/>
<id>urn:sha1:1dedfc90f6eee7cad10f1a1ceb39a7a1c4dbd1b1</id>
<content type='text'>
We keep the lib/xutil.c version. As a consequence, also factor out
_internal_error and associated macros.  It might be overkill to make a
new file error_util.c for this, but _internal_error does not really
belong in database.cc.
</content>
</entry>
<entry>
<title>lib: Remove message document directly after removing the last file name.</title>
<updated>2011-09-24T01:50:39Z</updated>
<author>
<name>Austin Clements</name>
<email>amdragon@mit.edu</email>
</author>
<published>2011-06-11T04:07:54Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=bfe4555325086d5cb99e3962424128f94d1c921d'/>
<id>urn:sha1:bfe4555325086d5cb99e3962424128f94d1c921d</id>
<content type='text'>
Previously, notmuch_database_remove_message would remove the message
file name, sync the change to the message document, re-find the
message document, and then delete it if there were no more file names.
An interruption after sync'ing would result in a file-name-less,
permanently un-removable zombie message that would produce errors and
odd results in searches.  We could wrap this in an atomic section, but
it's much simpler to eliminate the round-about approach and just
delete the message document instead of sync'ing it if we removed the
last filename.
</content>
</entry>
<entry>
<title>Mark some structures in the library interface with visibility=default attribute.</title>
<updated>2011-05-11T20:27:15Z</updated>
<author>
<name>Carl Worth</name>
<email>cworth@cworth.org</email>
</author>
<published>2011-05-11T20:23:13Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=d5523ead90b6be2b07d4af745b8ed9b980a6b9f1'/>
<id>urn:sha1:d5523ead90b6be2b07d4af745b8ed9b980a6b9f1</id>
<content type='text'>
As of gcc 4.6, there are new warnings from -Wattributes along the lines of:

	warning: ‘_notmuch_messages’ declared with greater visibility
	than the type of its field ‘_notmuch_messages::iterator’
	[-Wattributes]

To squelch these, we decorate all such containing structs with
__attribute__((visibility("default"))). We take care to let only the
C++ compiler see this, (since the C compiler would otherwise warn
about ignored visibility attributes on types).
</content>
</entry>
<entry>
<title>Implement an internal generic string list and use it.</title>
<updated>2011-03-21T06:45:18Z</updated>
<author>
<name>Austin Clements</name>
<email>amdragon@mit.edu</email>
</author>
<published>2010-12-09T00:26:05Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=f3c1eebfaf8526129ae6946cbcd44a3c602563d6'/>
<id>urn:sha1:f3c1eebfaf8526129ae6946cbcd44a3c602563d6</id>
<content type='text'>
This replaces the guts of the filename list and tag list, making those
interfaces simple iterators over the generic string list.  The
directory, message filename, and tags-related code now build generic
string lists and then wraps them in specific iterators.  The real wins
come in later patches, when we use these for even more generic
functionality.

As a nice side-effect, this also eliminates the annoying dependency on
GList in the tag list.
</content>
</entry>
<entry>
<title>Add support for folder-based searching.</title>
<updated>2011-01-15T23:37:43Z</updated>
<author>
<name>Carl Worth</name>
<email>cworth@cworth.org</email>
</author>
<published>2011-01-15T22:09:04Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=99cfa2703080c2474e6b8aec0cae86135ae23f1d'/>
<id>urn:sha1:99cfa2703080c2474e6b8aec0cae86135ae23f1d</id>
<content type='text'>
A new "folder:" prefix in the query string can now be used to match
the directories in which mail files are stored.

The addition of this feature causes the recently added
search-by-folder tests to now pass.
</content>
</entry>
<entry>
<title>Optimize thread search using matched docid sets.</title>
<updated>2010-12-08T00:40:05Z</updated>
<author>
<name>Austin Clements</name>
<email>amdragon@MIT.EDU</email>
</author>
<published>2010-11-17T19:28:26Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=b3caef1f0659dac8183441357c8fee500a940889'/>
<id>urn:sha1:b3caef1f0659dac8183441357c8fee500a940889</id>
<content type='text'>
This reduces thread search's 1+2t Xapian queries (where t is the
number of matched threads) to 1+t queries and constructs exactly one
notmuch_message_t for each message instead of 2 to 3.
notmuch_query_search_threads eagerly fetches the docids of all
messages matching the user query instead of lazily constructing
message objects and fetching thread ID's from term lists.
_notmuch_thread_create takes a seed docid and the set of all matched
docids and uses a single Xapian query to expand this docid to its
containing thread, using the matched docid set to determine which
messages in the thread match the user query instead of using a second
Xapian query.

This reduces the amount of time required to load my inbox from 4.523
seconds to 3.025 seconds (1.5X faster).
</content>
</entry>
<entry>
<title>notmuch_message_tags_to_maildir_flags: Do nothing outside of "new" and "cur"</title>
<updated>2010-11-11T22:32:17Z</updated>
<author>
<name>Carl Worth</name>
<email>cworth@cworth.org</email>
</author>
<published>2010-11-11T22:32:17Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=95dd5fe5d7e9cd8169a6e3174ea27376acd92870'/>
<id>urn:sha1:95dd5fe5d7e9cd8169a6e3174ea27376acd92870</id>
<content type='text'>
Some people use notmuch with non-maildir files, (for example, email
messages in MH format, or else cool things like using sluk[*] to suck
down feeds into a format that notmuch can index).

To better support uses like that, don't do any renaming for files that
are not in a directory named either "new" or "cur".

[*] https://github.com/krl/sluk/
</content>
</entry>
<entry>
<title>lib: Add new, public notmuch_message_get_filenames</title>
<updated>2010-11-11T11:40:19Z</updated>
<author>
<name>Carl Worth</name>
<email>cworth@cworth.org</email>
</author>
<published>2010-11-11T08:07:24Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=1d02dd64afe245a2b5a8461feeba975e61f0c233'/>
<id>urn:sha1:1d02dd64afe245a2b5a8461feeba975e61f0c233</id>
<content type='text'>
This augments the existing notmuch_message_get_filename by allowing
the caller access to all filenames in the case of multiple files for a
single message.

To support this, we split the iterator (notmuch_filenames_t) away from
the list storage (notmuch_filename_list_t) where previously these were
a single object (notmuch_filenames_t). Then, whenever the user asks
for a file or filename, the message object lazily creates a complete
notmuch_filename_list_t and then:

	For notmuch_message_get_filename, returns the first filename
	in the list.

	For notmuch_message_get_filenames, creates and returns a new
	iterator for the filename list.
</content>
</entry>
</feed>
