Libbson 1.1.2
=============

It is my pleasure to announce to you the release of Libbson-1.1.2.

This release is a minor patch release with one bug fix for mingw.

* sscanf_s doesn't exist for mingw.

-- Jason Carey

Libbson 1.1.0
=============

It is my pleasure to announce to you the release of Libbson-1.1.0.

This release is a stable release with some ABI additions and bugfixes.

The below changes include the changes mentioned in the rc0.

ABI/API changes include:
 * RC0
   * Deprecation of bson_copy_to_excluding
   * Addition of bson_copy_to_excluding_noinit
 * Removal of MIN, MAX and ABS macros in favor of BSON_MIN, BSON_MAX and
   BSON_ABS.  Note this is a breaking source level change if you relied on
   these from bson.h.  Also note that this is not a breaking ABI change.
 * Addition of BSON_ERROR_BUFFER_SIZE macro

Other changes include:
 * RC0
   * Addition of a versioned ABI for the libbson shared library
   * fixed bson_get_monotonic_time fallback when a system monotonic clock can not
     be found.  Formerly failed to compile with an incorrect call to
     bson_gettimeofday
   * Allow the "dbref" convention in bson_validate when BSON_VALIDATE_DOLLAR_KEYS
     is present
   * Support for ISO-8601 or $numberLong dates in bson <-> json parsing
   * Quiet various compiler warnings

Thanks to everyone who contributed to the development of this release candidate for
Libbson.

 * Adam Midvidy
 * Christian Hergert
 * Daniel Colchete
 * Ivan Suvorov
 * Hannes Magnusson
 * Jason Carey
 * Jérôme Lebel
 * Samantha Ritter

-- Jason Carey

Libbson 1.1.0-rc0
=================

It is my pleasure to announce to you the release of Libbson-1.1.0-rc0.

This release is a release candidate release with some ABI additions and bugfixes.

ABI changes include:
 * Deprecation of bson_copy_to_excluding
 * Addition of bson_copy_to_excluding_noinit

Other changes include:
 * Addition of a versioned ABI for the libbson shared library
 * fixed bson_get_monotonic_time fallback when a system monotonic clock can not
   be found.  Formerly failed to compile with an incorrect call to
   bson_gettimeofday
 * Allow the "dbref" convention in bson_validate when BSON_VALIDATE_DOLLAR_KEYS
   is present
 * Support for ISO-8601 or $numberLong dates in bson <-> json parsing
 * Quiet various compiler warnings

Thanks to everyone who contributed to the development of this release candidate for
Libbson.

 * Adam Midvidy
 * Christian Hergert
 * Daniel Colchete
 * Ivan Suvorov
 * Jason Carey
 * Jérôme Lebel

-- Jason Carey

Libbson 1.0.2
=============

It is my pleasure to announce to you the release of Libbson-1.0.2.

This release is a minor point release with no ABI changes and mostly small
bugfixes.

Changes include:
 * bson_init_from_json supports top level arrays
 * fixes for bson_strerror_r
 * fix for timeouts on OS X
 * house cleaning for various integer types

Thanks to everyone who contributed to the development of this point release for
Libbson.

 * Adam Midvidy
 * Christian Hergert
 * Jason Carey
 * Jérôme Lebel
 * Tyler Brock

-- Jason Carey

Libbson 1.0.0
=============

It is my very distinct pleasure to announce to you the release of
Libbson-1.0.0!

This is the culmination of just over a year of work and could not have been
done without the help of our wonderful community.

Thanks to everyone who contributed to the development of Libbson!

 * Christian Hergert
 * Jason Carey
 * Jose Sebastian Battig
 * Maxim Zakharov
 * Jérôme Lebel
 * Itay Neeman
 * Mike Manilone
 * Michael Kuhn
 * Kyle Suarez
 * Josh Blum
 * Jason Choy
 * mntmnt7@gmail.com
 * Tyler Brock
 * Stefan Kaes
 * Paul Melnikow
 * Matt Cotter
 * Gary J. Murakami
 * Toon Schoenmakers
 * Máximo Cuadros
 * Michael Whittaker
 * Kota Yamaguchi
 * Justin Case
 * Jeff Yemin
 * Ivan Suvorov
 * Hannes Magnusson
 * Eric Daniels
 * Anil Kumar
 * A. Jesse Jiryu Davis

Happy Hacking!

-- Christian Hergert


Libbson 0.98.0
==============

One more step closer to a 1.0!

This release has a few fixes as we near the finish line of a 1.0 release.
We have bumped the version to 0.98.0 to sync up with MongoDB C driver, which
is the primary consumer of this library.

This release includes a new memory callback vtable to help in embedding
situations that have their own custom allocator such as various language
runtimes.

A few compilation fixes for various C++ compilers have also been included.

A special thanks to:

 * Itay Neeman
 * Michael Whittaker

Happy Hacking!

-- Christian


Libbson 0.8.4
=============

Another incremental release with a couple of new functions and bugfixes.

In this release you will find the following changes:

 * Alignment fixes for Solaris Studio C compiler.
 * RPM and Debian packaging helpers.
 * bson_gettimeofday() has dropped the deprecated timezone field used
   when calling posix gettimeofday(). This eases portability concerns.
   It is technically an ABI break, but since the field was never set,
   in reality it shouldn't be an issue.
 * Multi-byte optimizations for bson_oid_to_string() have been disabled
   on non-x86 based platforms. This should aid in architecture portability.
 * The JSON parser can now support $numberLong.
 * bson_ascii_strtoll() has been added, which is a portable strtoll()
   implementation. This is primarily useful for Windows users and is
   used by the JSON parser.
 * A bug was fixed in bson_iter_find_descendent() where the wrong field
   could be matched if it's prefix matched the query.
 * bson_array_as_json() has been added to convert a bson_t as a top-level
   array.

Thanks to:
 * Kyle Suarez
 * Itay Neeman

Happy Hacking!


Libbson 0.8.2
=============

A bugfix release is here as a follow up to 0.8.0.

In this release you will find the following changes:

 * A fix for BCON when used from C++.
 * Change bson_next_power_of_two() to accept size_t. This should not be
   an ABI break since it is static inline.

Happy Hacking!


Libbson 0.8.0
=============

It's that time again, time for another Libbson release!

This cycle includes much, much more documentation for your perusing. There is
much more cross-referencing and structure for your navigation pleasure.

We've improved support for Libbson on a few more exotic platforms. SPARC
support is looking pretty good these days.

You'll also find some new examples in this release to help you get started a
bit faster. If there is something you'd like to see, just ask!

There are a few ABI breaks this cycle, as we are well on the road to a 1.0 and
would like things as clean as possible. I anticipate a few more during the next
couple of cycles, but we will try to keep them to a minimum.  With that said,
you *WILL* need to recompile your application against 0.8.0.

Happy Hacking!


Libbson 0.6.8
=============

Quickly following up on the 0.6.6 release is 0.6.8. This release contains
a couple of bugfixes and more support for older architectures.

On big-endian systems, bson_append_date_time() was not properly converting
to little-endian. This is now fixed.

We've added support for Sun Pro C Compiler on Solaris 10 and 11. This includes
support for SPARC systems as well as x86_64. In particular, intrinsics were
added for the Solaris/SPARC/SunProC combination. If you are running SunProC
on a non-Solaris platform, a fallback path will be used which is slower than
native support for atomics. Additionally, bson_gettimeofday() does not fully
support timezones under SunProC as struct timezone is not defined.

Libbson will now check for GLibc 2.19 to remove various warnings with both
_GNU_SOURCE and _BSD_SOURCE defined.

Happy Hacking!


Libbson 0.6.6
=============

Another release for your hacking pleasure!

First off, note that there are two ABI breaks as part of this release. We
felt they were important as they will help us stablize towards a 1.0 release.
It is recommended that you recompile against this version of libbson.

Lots of small fixes went into this release to help get things building better
on various platforms. Windows support should be improved and many warnings have
been cleaned up.

The signature of bson_realloc_func has changed to allow for context to be
provided. This should help in situations where a pointer to the memory pool is
required.

bson_destroy_with_steal() has been added so that you can steal a buffer instead
of freeing it when bson_destroy() is called.

bson_new_from_buffer() has been added so that you can provide your own realloc
function to manage the underlying buffer. This will be useful for bindings that
want to integrate their memory manager for bson documents.

bson_value_t is a new container type that can hold any bson type.

I'd like to thank everyone who contributed to this release.

    Gary Murakami
    Jason Carey
    Jose Sebastian Battig
    Máximo Cuadros
    Paul Melnikow
    Stefan Kaes

Happy hacking!

Libbson 0.6.4
=============

This is just a followup release of libbson as we work towards stablizing for
the new mongo-c-driver release. In fact, it only includes build work and a
new macro, bson_clear().

Happy hacking!


Libbson 0.6.2
=============

A new Libbson release is already here as a follow up to the 0.6.0 release.

This release includes a few build and installation fixes. In particular,

 * Windows build fixes
 * CMake build fixes
 * C++ build fixes.

The monotonic clock is now more accurately calculated on Windows as well.
If you'd like to build on Windows, check out the section in README.md for
information on how to do so.

Happy hacking!


Libbson 0.6.0
=============

Many changes have gone into this release!

TL;DR

 * C99 types (from C89).
 * JSON parsing.
 * Lots of Operating System support, including Windows.
 * Parallel Test Suite.
 * Revamped build system.
 * A couple ABI breaks.

First off, 0.6.0 has gone through a significant amount of build system cleanup.
This should simplify using libbson as a submodule for those that wish to do so.
For example, the mongo-c-driver now does this using autotools.

Windows Vista and higher is now supported as a build target through the use of
cmake. See README.md for the instructions. Other platforms should continue to
use autotools.

The test suite has been improved and more tests added. We now generate random
seeds on every run to help catch more errors with additional fuzzing passes.
By default, the test suite will run all tests in parallel with subprocesses.
This should speed up execution of `make test' for contributors.

bson_string_t went through an ABI break to support power-of-two growth.

JSON parsing has been added through the bson_json_reader_t type. You can also
now use bson_init_from_json() for a simplified interface.

Types were revamped to appear to be using C99 types. If C99 types are
available, they will be used. If not, they will be emulated. This means you
can just go on using uint64_t and similar. We even use bool now.

Many functions have been made portable to deal with inconsistencies with Win32.

This release has been tested on the following operating systems:

 * RedHat Enterprise 5, 6, and 7 beta.
 * CentOS 6.5
 * Ubuntu 12.04 LTS
 * Fedora 20
 * Windows 7
 * FreeBSD 10
 * DragonFly BSD
 * Solaris 11
 * SmartOS
 * mingw64

Thanks again and enjoy using libbson!

Libbson 0.4.0
=============

This release includes a few bug fixes and copious documentation. Additionally,
we improved our fuzz testing and found a couple issues in the process.  It is
suggested that everyone upgrade their installations to 0.4.0.

We have been busy adding a lot of documentation that we hope you will like.
Many `man' pages have been added for various API endpoints and structures.  If
you use vim, remember that you can jump to the documentation with <shift>k
while on a symbol.

Thanks and enjoy using libbson!

Libbson 0.2.4
=============

This release includes some more performance improvements and bug fixes.

It contains an important fix for dealing with invalid string lengths that could
cause an integer overflow when checking to see if the string length fits within
the end of the buffer.

There is preliminary support for Solaris on x86_64 and SPARC.

Generating OIDs is now simpler with the use of bson_context_get_default(). This
function will return a thread-safe generic bson_context_t implementation.
Alternatively, you may pass NULL to bson_oid_init() for the context and the
default context is automatically used.

The fuzz tests now use srand() with a 32-bit integer derived from /dev/urandom.

Endianess conversions are now performed by __builtin_bswap*() functions when
available with the GCC compiler.

Endianness conversions for the double type are now properly handled on
big-endian systems.

bson_reinit() has been added to cleanup code that needs to destroy and then
initialize a bson_t.

Validation of Code with Scope fields was absent from bson_validate(). This is
now supported.

Libbson 0.2.2
=============

This release includes a few performance improvements and bug fixes.

The bson_t structure is more efficient when growing allocated buffers.
The use of memalign() was unnecessary for allocated bson_t structures
and has therefore been removed. Performance sensitive allocations now
use bson_malloc() instead of calloc() and initialize fields directly.
Stack alignment of bson_t is now enforced through compiler intrinsics.

The unit tests can now support running inside of valgrind to check for
various memory leaks. Simply defing VALGRIND=valgrind when running
`make test`.

Enjoy libbson-0.2.2!


Libbson 0.2.0
=============

This is the initial release of Libbson. It has not yet reached API and ABI
maturity and is therefore subject to change without notice.  Developers are
encouraged to start using Libbson as we journey on the road to 1.0, where ABI
stability will be guaranteed.

Libbson is Apache 2.0 licensed so that it can be embedded in a multitude of
scenarios. This means that we try hard to not rely on external libraries.
Therefore, Libbson contains useful routines to help in portability as well
as BSON support.

Libbson is the basis of a new MongoDB C driver that will follow shortly.

Please see the doc/ directory for documentation on how to use Libbson. We
would love for you to contribute to Libbson, whether that is code,
documentation or packaging.

You can contact Libbson's author, Christian Hergert at
christian.hergert@mongodb.com if you have questions about using Libbson.
