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

* 0.1.8 - <2014-05-22 Thu>

** Feature: Connection recovery cache

This new feature makes the replica set support easier to use, and more
robust. New functions include: `mongo_sync_conn_recovery_cache_new`, 
`mongo_sync_conn_recovery_cache_free`,
`mongo_sync_conn_recovery_cache_discard`, 
`mongo_sync_conn_recovery_cache_seed_add`, and
`mongo_sync_connect_recovery_cache`.

** New function: mongo_sync_cmd_get_last_error_full

The new `mongo_sync_cmd_get_last_error_full` function can be used to
retrieve the last server-side error as a full BSON object, not just
the textual error message.

** New function: mongo_sync_conn_get_last_error

Returns the last cached error message.

** Portability: Test suite improvements

The test suite was improved to work properly on even more platforms.

** Bugfix: Support reconnecting to Unix domain sockets

When a replica-set is set up using unix domain sockets, reconnecting
failed. This has been corrected in this version.

** Bugfix: Fix random reconnect failures

When reconnecting, only close the old connection if it differs from
the new one.

** Bugfix: Memory leak in an error-case

When sending a packet to MongoDB, while enforcing being connected to a
master node, if ensuring that connection failed, memory was leaked.
The hole has been plugged.

* 0.1.7.1 - <2014-03-12 Wed>

** Portability: Support HP-UX

Compatibility code was added to make libmongo-client portable to HP-UX.

** Portability: prove made optional

On platforms where the `prove' utility is not readily available, a
custom test runner can be used by setting the PROVE environment
variable when running `make check'.

** Bugfix: Safe-mode robustness improvement

When safe mode is turned on, the code now verifies not only that
getLastError() doesn't return an error, but also verifies that the
command succeeds, too.

* 0.1.7 - <2013-12-10 Tue>

** Feature: Automatic re-authentication

This release adds support for automatically re-authenticating when
reconnecting, by storing the credentials used for the last
authentication in a safe, memory-locked area.

** New function: mongo_sync_cmd_user_add_with_roles()

A new function was added to create users with their roles already set
at the same time.

** Bugfix: Enable subdir-objects for automake

Since we have sources that reside in a subdirectory, to avoid
conflicts and a lot of automake warnings, enable the subdir-objects
automake option.

* 0.1.6.3 - <2013-08-27 Tue>

Another bugfix release with a couple of important bugfixes, and a few
minor improvements here and there.

** Improvement: configure.ac updated to modern autotools

The configure.ac script was updated to not use obsolete macros, and to
work with automake 1.13+ (where the aforementioned macros were
removed).

** Bugfix: Fix chunked GridFS file retrieval

When retrieving files via the chunked GridFS API, order the chunks by
their number, so reassembling them will succeed.

** Bugfix: Stop crashing in case verification fails

When safe-mode is enabled, but getLastError() fails, the library
crashed due to an uninitialised pointer. This has been fixed in this
release.

* 0.1.6.2 - <2012-12-21 Fri>

Another bugfix release with mostly minor improvements and
documentation updates.

** Feature: Support for the Binary subtype in GridFS

The GridFS support in the library only supported the "Generic"
subtype until now, but with this release, the (obsolete) "Binary"
subtype is supported aswell.

** Bugfix: Plugged a memory leak in the GridFS code

The GridFS code (the chunked file constructor, in particular) leaked
the generated ObjectId. This has been corrected.

** Documentation: New tutorials

New tutorials were written for showing how to handle indexes, and how
to run custom commands.

* 0.1.6.1 - <2012-10-14 Sun>

This is a quick bugfix release, that restores ABI compatibility with
versions prior to 0.1.6, and cleans up a few other minor issues.

* 0.1.6 - <2012-10-14 Sun>

With this release, thanks to Conrad Hoffmann <ch@bitfehler.net>, it is
now possible to connect to mongodb via unix sockets.

See the documentation and the updated mongo-dump example for details.

* 0.1.5 - <2012-04-13 Fri>

This is a bugfix release, without any new functionality. It is
expected that this will be the last release before a complete overhaul
of the library.

** Bugfix: Restore glib 2.12 compatibility

The examples used features not available in glib 2.12, they were
changed to not do that, and work with this old version too.

** Bugfix: Do not accept invalid index specifications

When creating an index, the library now bails out early with an error
in case the index specification is not acceptable.

** Bugfix: Fix glib sanity check when glib is on a non-standard path

In case glib was installed to a path that is not on the compiler's
default search path, the sanity check at configure time failed. This
has been corrected.

** Bugfix: bson_cursor_find() & co. must match the whole key

Due to a silly matching logic in bson_cursor_find(), and anything that
built on it (bson_find() included) was able to match keys of which the
sought name was a prefix of.

This is now fixed, and the find functions will correctly match the
whole key.

** Bugfix: Fixed OID generation on 64-bit big-endian machines

Due to a rounding error, OID generation on certain 64-bit big-endian
platforms resulted in the timestamp part always being zeroed out,
which made OIDs generated on such platforms useless.

The rounding error was eliminated.

* 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.
