#+STARTUP: indent showall			-*- org -*-

* 0.1.4 - <2011-08-27 Sat>

This release is a minor update, with neither new functionality, nor
any bugfixes, except in the packaging.

It does come with slightly more documentation, however.

* 0.1.3 - <2011-07-19 Tue>

** New feature: GridFS support.
This version introduces a set of GridFS APIs, to ease working with
GridFS, be that retrieving files chunk by chunk, listing and removing
files, or offering a file-like streaming API.

** New function: mongo_sync_cmd_create()
A new helper function was introduced to aid us in creating capped and
pre-allocated collections.

** New function: mongo_sync_cmd_exists()
Another new helper function to aid in retrieving information about a
collection - whether it exists, and if so, with what parameters.

** New function: mongo_util_oid_as_string()
When one needs to print the value of an ObjectId in human-readable
hexadecimal format, this new function is the one to turn to.

** New index options: background & sparse.
It is now possible to create sparse indexes, and create them in the
background, using two new option flags: MONGO_INDEX_BACKGROUND and
MONGO_INDEX_SPARSE.

* 0.1.2 - <2011-07-01 Fri>

** Bugfix: mongo_packet_recv() waits for all data.
Previously, mongo_packet_recv() did not wait for all data to arrive,
and returned whatever already arrived at the time of reading.

This has been corrected, mongo_packet_recv() correctly blocks now.

** Implemented support for passive secondaries.
Support was added for passive secondaries, they're now automatically
discovered too.

** New feature: Index handling functions
Implemented some helper functions to create and delete indexes.

** New function: bson_cursor_find()
Combining the powers of bson_find() and bson_cursor_find_next(), this
new function can find a key anywhere in a BSON object, yet, maintains
the ability to continue a previous scan.

** New function: mongo_connection_set_timeout()
On systems that support it (most modern systems should), sets a
timeout for send and receive operations. Setting the timeout to zero
clears the timeout, and these calls will block forever.

The timeout is not preserved accross reconnects, if using the Sync
API, however.

** Removed dependency on OpenSSL
Instead of using OpenSSL's MD5 functions, use the checksum
capabilities of glib 2.16 and newer. This halves the dependencies of
the library!

* 0.1.1 - <2011-06-16 Thu>

** Cursor-based query iterator API
The new cursor-based query iterator API makes it possible to grab the
results of a mongo_sync_cmd_query(), and conveniently iterate over the
results, hiding the get_more() calls underneath.

The implementation is clever enough to only query the database when it
needs to, and when it does, query in bulk (asking for the same amount
of documents that the last query returned).

Thanks to Federico Rodriguez <fed.rod@gmail.com> for the suggestion.

** New function: bson_validate_key()
With this new function, one can validate BSON keys: whether they can
contain dots (allowed when using dot-notation, forbidden otherwise),
or whether they start with a '$' sign.

It is up to the application developer to decide when to validate a
key, and what restrictions make sense in the given context.

The function does NOT do UTF-8 validation, that is completely left up
to the application developer.

** New function: bson_cursor_find_next()
When we know that key G always comes after key A, but we do not care
how far apart they may be, and we do not want to use a separate cursor
(due to, for example, performance reasons), this new function can
help: unlike bson_find(), this will start scanning from the current
cursor position.

** New function: bson_stream_doc_size()
A little helper function to help determine the size of a BSON document
when it's only available as a bytestream. This is mostly for use with
bson_new_from_data().

** Symbol versioning
The symbols of the library can now be versioned, if configured with
the --with-versioned-symbols configure flag (not enabled by default).

* 0.1.0 - <2011-05-25 Wed>

** Shared library
The configure script now defaults to enabling shared library building
by default (along with a static library).

** Bug fixes
The pkg-config file was setting an incorrect include directory in it's
Cflags. This is now fixed.

** C++ Compatibility
The public headers are now guarded by extern "C" {} wrappers, so that
they can be included in C++ projects.

** Performance enhancements
A minor performance issue was corrected in the BSON code, that had the
possibility of forcing unneccessary memory allocations. The library
now allocates the proper amount of memory at the soonest time
possible, so it doesn't have to grow it later on unnecessarily.

Anoter performance issue was corrected in the BSON library:
bson_find() was comparing key names in BSON objects with the sought
for key using strcmp(), which was unacceptably slow when dealing with
BSON objects that have a lot of keys. We now use memcmp(), which means
we don't have to traverse the sought for key all the time.

* 0.0.2 - <2011-05-07 Sat>

** Replica set seeding support
It is now possible to add seeds to a connection, so that the library
can try connecting to those in case automatic discovery fails (or if
the seeds are hidden).

** Failover redesign
Instead of preemptively pinging & checking for a master before each
and every command, the library does so only upon errors. This way,
when everything's working as expected, there is no extra
overhead. Yet, if things go wrong, failover will still work.

By design, automatic failover only occurs when an error is detected
during a write operation. When an error occurs during read, it will be
propagated back to the application.

Automatic failover is disabled by default, and can be turned on via
the mongo_sync_conn_set_auto_reconnect() function.

** safe-mode support
With safe mode enabled, extra care will be taken to ensure that data
gets to the server, and that the library does everything within its
power to maintain a connection.

This means that after insert and update operations, the library will
issue a getLastError command, and only return successfully if that
command did not signal an error.

Safe-mode also enables the previously default preemptive connection
checks (along with the post-mortem failover).

Safe-mode is off by default.

* 0.0.1 - <2011-04-10 Sun>

Initial public release.
