The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Change history for the MongoDB Perl driver:

v0.999.999.5 2015-08-13 17:11:49-04:00 America/New_York (TRIAL RELEASE)

  [!!! Incompatible Changes !!!]

  - The legacy read preference constants in MongoDB::MongoClient have been
    removed, as they are no longer are used with the new
    MongoDB::ReadPreference class.

  [Additions]

  - PERL-554 Implements 'server_selection_try_once' configuration
    option on MongoDB::MongoClient.

  [Bug fixes]

  - PERL-556 Fixes serialization of thread-shared variables.

  - Fixes topology status string output.

  - Fixes a bug in idle socket check.

  [Changes]

  - Changes default connect_timeout_ms to 10,000.

  - Aborts Makefile.PL on Windows before Vista/2008 for better
    error message than subsequent compilation/test failures.

  - MongoDB::QueryResult attributes have become private, as they are an
    implementation detail and not intended for end-users to inspect.

  - Loads Authen::SCRAM::Client only on demand, as its Unicode module
    dependencies are costly when not needed.

  [Testing]

  - Reduced number of threads used in threads testing to avoid
    out of memory errors on memory constrained systems.

  [Prerequisites]

  - Removes Moose, Syntax::Keyword::Junction and Throwable.

  [Documentation]

  - Adds additional details in MongoDB::Upgrading.

  - Corrects errors in MongoDB::Cursor documentation.

  - Fixes formatting and minor typos in MongoDB::Error.

  [~ Internal changes ~]

  - Changes all Moose classes to Moo classes for speed and to minimize
    the deep dependency tree.

  - Implements a 5 second "cooldown" period after a network error during
    topology scanning during which new connection attempts will not be
    made.  This avoids excessive blocking in the driver when it's unlikely
    that the server will be available right away.

  - Inlines and adapts the Throwable CPAN module to avoid deep
    dependencies.

  - Consolidates additional constants to MongoDB::_Constants.

  - Exports only type constraints being used to avoid excessive symbol
    importing and removal (via namespace::clean).

v0.999.999.4 2015-07-31 17:02:21-04:00 America/New_York (TRIAL RELEASE)

  [Additions]

  - Adds support for correctly encoding boolean objects from JSON::XS,
    Cpanel::JSON::XS, JSON::PP, JSON::Tiny and Mojo::JSON.

  - Adds 'reconnect' method to MongoClient to handle reconnection after
    a fork or thread spawn.

  [Bug fixes]

  - Fixes broken authentication due to the BSON encoder not being
    initialized or passed correctly.

  - Fixes incorrect configuration test for GCC atomic operations.

  - Fixes incorrect default value for local_threshold_ms (was 15,000,
    is now 15).

  - Correctly closes sockets on any network error, avoiding undefined
    behavior that could result from re-use.

  - Stops encoding scalar-ref objects as BSON BINARY type. (Throws
    an error instead about an unhandled type.)

  - Raises an error if an array-reference document contains duplicate keys.

  [Changes]

  - PERL-523 Requires a replica set name explicitly to connect to a replica
    set.  Connecting to a single host is always in a 'direct' mode otherwise.

  - Changes 'max_time_ms' MongoClient attribute default to zero for better
    backwards server compatibility.

  - Returns MongoDB::UnacknowledgedResult from unacknowledged writes
    (i.e. { w => 0 } write concern) instead of the corresponding
    result object (i.e. MongoDB::InsertResult for inserts).

  [Removals]

  - Removes the 'connect_type' attribute on MongoClient.

  - Removes automatic fork/thread-spawn detection for speed.  Use of
    'reconnect" is recommended instead.

  - Removes network error warnings during server topology scanning.

  [Prerequisites]

  - Adds Class::XSAccessor, Moo and Type::Tiny::XS.

  - Moves DateTime::Tiny from test_requires to test_recommends.

  - Updates Authen::SCRAM::Client prereq to 0.003.

  - Requires IO::Socket 1.31 on Windows

  - Removes unused Test::Warn.

  [~ Internal changes ~]

  - Changes all Moose classes to be immutable.

  - Optimizes networking code paths substantially.

  - Changes argument handling for CRUD API methods to stop coercing inputs
    to Tie::IxHash.  This makes them significantly faster.

  - Changes most private/internal classes to the Moo framework for greater
    speed.

  - Changes use of 'strerror_s' to 'streeror' to attempt to get C/XS
    linking on Windows XP.

  - Disables many internal class type constraints and runtime assertions
    unless the PERL_MONGO_WITH_ASSERTS environment variable is true.

v0.999.999.3 2015-06-29 12:21:07-04:00 America/New_York (TRIAL RELEASE)

  [!!! Incompatible Changes !!!]

  - PERL-546 MongoDB::DBRef objects no longer have a 'fetch' method or
    'client' attribute.  This is consistent with the design of the MongoDB
    drivers for other language.  For the Perl driver, specifically, it
    decouples the BSON model from the MongoClient model, eliminates a
    circular reference, and avoid Perl memory bugs using weak references
    under threads.

  [Changes]

  - PERL-527 A database name is now optional for MongoDB::DBRef, which
    is consistent with the DBRef specification.

  - PERL-550 DBRefs allow extra fields (for compatibility); this is not
    recommended for new DBRefs.

  - BSON code derived from libbson has been updated to libbson 1.1.7

  [Bug fixes]

  - Use of -Wall compiler flag during smoke testing has been restricted
    to gcc compilers, only.

  - Fixed bug in MongoDB::MongoClient::database_names error handling

v0.999.999.2 2015-06-17 11:34:48-04:00 America/New_York (TRIAL RELEASE)

  [Changes]

  - Configuration options representing times have stricter validation such
    that options that should be non-negative will raise exceptions when
    given negative numbers.

  [Bug fixes]

  - Fixes failing BSON element tests on 32-bit perls.

  - Uses monotonic clock for restarting interrupted select() calls,
    if available via Time::HiRes.

  - Restores v0 behavior of negative connect_timeout_ms and
    socket_timeout_ms meaning "never timeout".

  - Restores v0 behavior of setting TCP_NODELAY and SO_KEEPALIVE
    on sockets.

  [Testing]

  - Skips t/max_tims_ms.t unless $ENV{FAILPOINT_TESTING} is true.

v0.999.999.1 2015-06-10 09:48:53-06:00 America/Denver (TRIAL RELEASE)

  [!!! Incompatible Changes !!!]

  - PERL-442 Connection string options revised to match MongoClient
    options; connection string options always take precedence

  - PERL-470 MongoDB::Cursor globals "slave_ok" and "timeout" no longer
    have any effect and have been removed.

  - PERL-471 MongoDB::Cursor 'snapshot' method now requires a boolean
    argument.

  [*** Deprecations ***]

  - PERL-398 Old 'timeout' and 'query_timeout' options deprecated in favor
    of new, more explicit 'connect_timeout_ms' and 'socket_timeout_ms'

  - PERL-424 MongoDB::Cursor 'count' method has been deprecated.

  - PERL-511 Use new CRUD method names for Bulk API and deprecate old ones

  - PERL-516 Deprecated legacy index management API methods

  - PERL-533 Deprecated 'save' method

  - PERL-534 Deprecated 'validate' method

  [Additions]

  - PERL-413 Added max_time_ms MongoDB::MongoClient configuration option to
    set default for database and collection objects

  - PERL-486 Added 'has_modified_count' method to MongoDB::UpdateResult and
    MongoDB::BulkWriteResult to ease detection of when that attributes is
    supported by a server or not.

  - PERL-490 Added 'list_collections' method on MongoDB::Database

  - PERL-500 Added 'topology_status' method to MongoDB::MongoClient

  - PERL-506 Added support for serializing/deserializing Time::Moment objects

  - PERL-515 Added new MongoDB::IndexView API

  - PERL-533 Added 'save_one' method for idempotent replace-or-upsert

  [Bug fixes]

  - PERL-536 Fixed GridFS to stop throwing an error when a known empty file has
    no chunks; errors will still be thrown if a non-empty file has no chunks.

  - PERL-540 Fixed memory leak in DateTime::Tiny inflation

  - PERL-543 Fixed a bug serializing undef from Tie::IxHash objects

  [Changes]

  - PERL-127 Integers that fit in 32-bits are now encoded as BSON Int32;
    larger integers are encodeed as BSON Int64; Math::BigInt objects are
    always encoded as BSON Int64.

  - PERL-488 MongoDB::WriteConcern method 'is_safe' renamed to
    'is_acknowledged'.

  - PERL-529 Ignores connection string option key case

  - PERL-530 Warns on unsupported connection options

  [Documentation]

  - PERL-524 updated legacy author emails in docs and metadata.

  [Testing]

  - PERL-513 Added maxTimeMS tests for CRUD API methods

  [Removals]

  - PERL-467 Removed outdated MongoDB::Indexing document.

  [~ Internal changes ~]

  - PERL-455 Now using connect timeout as socket timeout for topology scans

v0.999.998.6 2015-05-20 14:28:18-04:00 America/New_York (TRIAL RELEASE)

  [!!! Incompatible Changes !!!]

  - PERL-505 When inserting a document without an '_id' field, the _id will
    be added during BSON encoding, but the original document will not be
    changed.  (This was inconsistent between regular and bulk insertion in
    the v0.x series and during previous alpha releases.)

  - PERL-519 The $MongoDB::BSON::use_binary global variable has been
    removed. Binary data always decodes to MongoDB::BSON::Binary objects
    (which now overload stringification).  This ensures that binary data
    will correctly round-trip.

  - PERL-520 The $MongoDB::BSON::utf8_flag_on global varialbe has been
    removed. BSON strings will always be decoded to Perl character strings.
    This ensures that string data will correctly round-trip.

  - The $MongoDB::BSON::looks_like_number and $MongoDB::BSON::char global
    variables now ONLY have an effect at MongoDB::MongoClient construction.
    Changing them later does not change BSON encoding.  Both are deprecated as
    well and should not be used in new code.  Instead, the enhanced
    MongoDB::BSON codec class has attributes that encapsulate these behaviors.

  - PERL-221 The 'inflate_regexps' MongoDB::MongoClient option has been
    removed.  BSON regular expressions always decode to
    MongoDB::BSON::Regexp objects. This ensure safety and consistency with
    other drivers.

  - The 'inflate_dbrefs' MongoDB::MongoClient option has been removed.
    By default, dbrefs are always inflated to MongoDB::DBRef objects.

  - The 'dt_type' MongoDB::MongoClient option has been deprecated and
    made read-only.  It now only takes effect if C<MongoDB::MongoClient>
    constructs a MongoDB::BSON codec object and is read-only so that any
    code that relied on changing it after client construction will fail
    rather that being silently ignored.

  [*** Deprecations ***]

  - As mentioned above, 'dt_type', '$MongoDB::BSON::looks_like_number'
    and '$MongoDB::BSON::char' have been deprecated in addition to their
    other behavior changes.

  [Additions]

  - Added 'with_codec' method to MongoDB::Collection for easier localized
    changes to codec attributes.

  [Changes]

  - PERL-331 The MongoDB::BSON package is now a full class, implementing
    a BSON encoder-decoder (codec).  It can be supplied as an attribute
    to MongoDB::MongoClient, MongoDB::Database and MongoDB::Collection
    objects.

  [Fixes]

  - PERL-531 Bulk update/replace documents would not validate properly when
    $MongoDB::BSON::char was not '$'.  While that functionality has moved
    to the MongoDB::BSON codec instead of the global variable, all
    update/replace documents (bulk and CRUD API) are now validated after
    key munging.

  - Fixed a number of XS memory leaks from non-mortalized variables
    during BSON encoding.

  - Fixed t/gridfs to work around a bug in MongoDB 3.1.2.

  - Fixed BSON double tests on Perls with long-doubles enabled

  [~ Internal changes ~]

  - PERL-325 Updated vendored ppport.h to version 3.31

  - Refactored and reorganized perl-mongo.h and perl_mongo.c.  Removed
    unused functions and macros.

  - Removed unused vendored libyajl files.

v0.999.998.5 2015-04-30 06:12:39-04:00 America/New_York

  [*** Deprecations ***]

  - MongoDB::CommandResult changed the name of the accessor for the document
    returned by the server to 'output' instead of 'result' for clarity.  The
    'result' method is deprecated.

  [Changes]

  - Generic MongoDB::Error exceptions have been replaced with subclasses
    that have a specific, documented purpose, including: MongoDB::AuthError,
    MongoDB::GridFSError, MongoDB::InternalError and MongoDB::UsageError.

  - Calls to Carp::confess() or die() have been replaced with exceptions
    from MongoDB::Error subclasses, typically MongoDB::UsageError.

  - Failure to create indexes when constructing a GridFS object are
    ignored rather than a fatal error.

  - Now includes a longer list of default OS locations to search for
    root CA files.

v0.999.998.4 2015-03-25 14:37:52-04:00 America/New_York (TRIAL RELEASE)

  [*** Deprecations ***]

  - Legacy MongoDB::Collection CRUD methods (insert, update, etc.) have
    been deprecated in favor of new CRUD API methods

  - PERL-507 MongoDB::Collection::get_collection is deprecated; it implied
    subcollections, which don't actually exist

  [Additions]

  - PERL-502|PERL-503 Implement new common driver CRUD API
    in MongoDB::Collection

  [Bug fixes]

  - PERL-480 retrieving a GridFS file now throws an error if no chunks exist
    instead of returning an empty string

  - Suppressed warning about "Can't locate package MongoDB::WriteResult"
    from MongoDB::BulkWriteResult::ISA

  - Fixed incorrect 'matched_count' result attribute for upserts

  - Ensure topology type is correct whenever a server is marked unavailable

  [Changes]

  - MongoDB::Collection attributes that should not be set in the constructor
    have been made private, but with public accessors for backwards
    compatibility.  Private attributes that are set in the constructor
    (e.g. 'database') are now public.

  [Documentation]

  - PERL-464 Documented deprecation of 'last_error'

  - PERL-510 Documented MongoDB::QueryResult

  - Improved docs for MongoDB::Error with info on exported error codes

  - Clarified docs for MongoDB::Collection::get_collection

  [Removals]

  - PERL-497 The $MongoDB::BSON::use_boolean never worked; BSON boolean
    values were always deserialized as boolean.pm objects.  Rather than
    "fix" this and break people's code, the option has been removed and
    documented as such.

v0.999.998.3 2015-03-25 14:30:00-05:00 America/New_York (TRIAL RELEASE)

  - Broken upload due to TLS bugs

v0.999.998.2 2015-02-23 17:10:36-05:00 America/New_York (TRIAL RELEASE)

  [!!! Incompatible Changes !!!]

  - MongoClient read_preference attribute is now immutable

  - Renamed WriteResult to BulkWriteResult

  [*** Deprecations ***]

  - PERL-464 Deprecated the 'last_error' Database method

  [Additions]

  - PERL-93 implemented awaitData

  - PERL-135 added ability to set write_concern at db and collection level

  - PERL-259 implemented write commands for MongoDB 2.6+ (i.e. doing
    writes via database commands versus via the wire protocol with OP_INSERT,
    OP_UPDATE, etc.)

  - PERL-465 added support for arbitrary options on index creation

  - PERL-466 added read preference attribute to Database and Collection

  - Added 'connect' function to MongoDB class for syntactic sugar
    to create a client object

  - Added the 'get_namespace' method to MongoDB::MongoClient

  - Added 'db' and 'coll' as aliases for 'get_database' and 'get_collection'

  - Added optional read preference argument to 'run_command'

  [Bug Fixes]

  - PERL-401 fixed index creation to always have a non-zero write concern

  - PERL-489 fixed BSON encoding bug; references to scalars with both number
    and string slots internally would crash on BSON encoding, rather than
    encode the string part as a binary.

  - PERL-477 fixed list indexes/collections when responses are too big to fit
    in a single database response

  - Fixed t/database.t for change in server error message

  - Fixed use of slave_ok and $readPreference for communicating read
    preferences to a mongos

  - Made conflicting multi/multiple update options fatal

  [Changes]

  - Renamed DocumentSizeError to a more general general DocumentError

  - Changed minHeartbeatFrequencyMS (delay between server checks when
    a suitable server is unavailable) to 500,000 MS

  [Documentation]

  - PERL-423 improved documentation of cursor snapshot mode

  - Rearranged Collection and Database documentation

  - Documented how to disable returning _id from queries

  [Testing]

  - PERL-371 Added tests for parsing localhost:port

  - PERL-492 Implemented server selection tests

  - Changed text index test to use $text operator, not text command
    (which was removed in MongoDB 3.0)

  [Prerequisites]

  - Added core modules IO::Socket and MIME::Base64 to the dependency
    list for completeness

  - Requires at least Path::Tiny 0.054 (rather than unspecified)

  - Removed core modules File::Copy, File::Path and File::Spec from the
    list of test dependencies

  - Removed Class::MOP::Class as an explicit dependency (still used internally
    by Moose)

  - Removed Data::Types and Data::Dump as test dependencies

v0.999.998.1 2014-11-12 15:10:40-05:00 America/New_York (TRIAL RELEASE)

  [!!! Incompatible Changes !!!]

  - PERL-330 implement pure-Perl networking; SSL and SASL now implemented via
    optional CPAN modules IO::Socket::SSL and Authen::SASL

  - MongoDB::Error exception objects now used consistently throughout
    networking code

  - removed long-deprecated MongoDB::Connection class

  - split Cursor class into new QueryResult class

  - ssl option is now read-only

  - low-level client functions removed

  [*** Deprecations ***]

  - auto_connect, auto_reconnect, find_master, sasl, sasl_mechanism config
    options

  - authenticate method in MongoDB::MongoClient

  - read_preference as a mutator for MongoDB::MongoClient

  [Additions]

  - PERL-131 support connect option in URI

  - PERL-233 Implement SSL certificate support via IO::Socket::SSL options

  - PERL-375 Support adding cursor options to find_one

  - PERL-378 implement deployment and server model and monitoring

  - PERL-379 Implement server-selection and new read preferences

  - PERL-406 Allow count methods to work with query hints

  - PERL-408 Implement SCRAM-SHA-1 and revise handshake

  - PERL-422 add read prefs support for the connection string

  [Bug Fixes]

  - PERL-146 normalize server addresses to lower case

  - PERL-409 add missing declarations for MinGW on Windows

  - PERL-429 fix tag_sets logic

  - PERL-410 die on BSON encoding/decoding if invalid UTF-8 is detected

  - PERL-435 switch to http-style certificate name validation

  - PERL-454 don't warn creating BSON datetime at epoch

  - fixed MSVC compilation: fix unused vars and statements before declarations;
    removed unused, but problematic bcon.c and bcon.h; use Perl memory alloc
    functions instead of malloc

  - removed storage engine dependent code and tests

  - fixed t/cursor.t for new explain format

  - fixed parallel scan test for server version 2.7.x changes

  [Documentation]

  - PERL-425 documented deprecation of drop_dups for index creation

  - added MongoDB::Upgrading document with changes from v0.x

  - added contributors section to MongoDB main documentation based on git
    commit logs

  [Prerequisites]

  - enforced minimum versions for configuration requirements

  - removed JSON module in favor of JSON::MaybeXS

  - removed use of File::Slurp

  [~ Internal changes ~]

  - PERL-133 test that client can connect to RS without primary

  - PERL-433 use listCollections command on 3.0 servers

  - PERL-434 use listIndexes command on 3.0 servers

  - PERL-436 bump maxWireProtocolVersion for 3.0 support

  - re-enabled threads tests

v0.708.4.0 2015-08-11 16:06:55-04:00 America/New_York

  [Bug fixes]

  - Fixes handling of 'safe' option for 'remove'

  - PERL-555 Fixes serialization of thread-shared scalars (and likely
    other tied/magic-using scalars) on Perls before 5.18

v0.708.3.0 2015-07-14 15:42:16-04:00 America/New_York

  [Bug fixes]

  - PERL-543 fix serialization of undef in tied hashes

  - PERL-553 fix duplicate _id bug with Tie::IxHash and array reference
    documents with an existing _id

  - Fix BSON tests on Perl with long doubled enabled

v0.708.2.0 2015-06-05 16:39:00-04:00 America/New_York

  [Bug fixes]

  - PERL-536 fix GridFS to stop throwing an error when a known empty file has
    no chunks; errors will still be thrown if a non-empty file has no chunks.

  - PERL-541 fixed remove() to respect MongoClient write concern

  [Documentation]

  - PERL-525 updated legacy author emails in docs and metadata

v0.708.1.0 2015-04-29 16:51:52-04:00 America/New_York

  [Bug fixes]

  - PERL-479 retrieving a GridFS file now throws an error if no chunks exist
    instead of returning an empty string

  [Removals]

  - PERL-496 The $MongoDB::BSON::use_boolean never worked; BSON boolean values
    were always deserialized as boolean.pm objects.  Rather than
    "fix" this and break people's code, the option has been removed
    and documented as such.

v0.708.0.0 2015-01-20 16:57:11-05:00 America/New_York

  [Additions]

  - Added 'get_namespace' method (and 'ns' alias) to MongoDB::MongoClient
    for getting a collection directly without an intermediate database object.

  - Added 'db' and 'coll' aliases for 'get_database' and 'get_collection'

  [Bug fixes]

  - PERL-489 references to scalars with both number and string slots internally
    would crash on BSON encoding, rather than encode the string part as a
    binary.

  [Diagnostics]

  - Added parenthetical note to "can't get db response" errors to disambiguate
    where they occur.

v0.707.2.0 2014-12-22 05:35:31-05:00 America/New_York

  [Bug fixes]

  - PERL-476 fixed getting lists of collections and indices for changes in
    MongoDB 2.8-rc3 and later.

v0.707.1.0 2014-12-10 12:50:45-05:00 America/New_York

  [Bug fixes]

  - PERL-465 allowed arbitrary options on index creation

  - Fixed t/database.t for change in error message for missing commands

  - Fixed undef warning from get_indexes on older MongoDB versions

  [Prerequisites]

  - Removed Data::Types as a test dependency as it was barely used
    and not necessary

v0.707.0.0 2014-11-12 15:04:46-05:00 America/New_York

  [Additions]

  - Supports MongoDB 3.0; in addition to prior feature support, this release
    fixes tests that were broken against non-default storage engines

  [Bug fixes]

  - PERL-454 suppress warnings storing datetimes at the epoch

v0.706.0.0 2014-10-28 11:30:42-04:00 America/New_York

  [*** Deprecations ***]

  - PERL-425 the 'drop_dups' indexing option is deprecated because it is
    ignored as of server version 2.7.5

  [Additions]

  - PERL-408 added support for SCRAM-SHA-1 (for MongoDB 2.7.8+)

  [Bug fixes]

  - PERL-409 fixed compilation on MSWin32 using the MinGW compiler

  - Fixed compilation errors on MSWin32 using the MSVC compiler

  - Fixed construction of Makefile LIBS argument for some platforms

  - Fixed parallel scan and explain tests for changes in the MongoDB 2.7.x
    development series

  [Diagnostics]

  - Passing the "ssl" parameter to MongoDB::MongoClient will now warn if SSL
    support is not available.

  [Documentation]

  - Revised "run_command" documentation to explain that array references or
    Tie::IxHash should be used.

  [Prerequisites]

  - Added dependency on Authen::SCRAM::Client 0.003

  - Removed (test) dependency on File::Slurp

  - Minimum required versions of configuration dependencies Path::Tiny and
    Config::AutoConf are now enforced in the code, not just specified in
    META.json

  [~ Internal changes ~]

  - PERL-433 uses the listCollections command if available (MongoDB 2.7.8+)

  - PERL-434 uses the listIndexes command if available (MongoDB 2.7.8+)

  - PERL-436 bumped supported maxWireProtocolVersion to 3 (MongoDB 2.7.8+)

v0.705.0.0 2014-09-09 10:04:59-04:00 America/New_York

  [Additions]

  - PERL-406 allow count() to use hints

  [Prerequisites]

  - Clarified that Test::Deep 0.111 is required rather than any version

v0.704.5.0 2014-08-19 14:17:00-04:00 America/New_York

  [Bug fixes]

  - PERL-407 fixed request_id race condition under threads

  - PERL-410 dies on BSON encoding/decoding if invalid UTF-8 is detected

v0.704.4.0 2014-07-30 05:43:11-04:00 America/New_York

  [Testing]

  - Restores behavior of skipping tests if no mongod is available for testing

v0.704.3.0 2014-07-28 17:02:13-04:00 America/New_York

  [Additions]

  - PERL-130 improved support for connection string URI; added support for
    options: ssl, connectTimeoutMS, w, wtimeoutMS, and journal

  [Bug fixes]

  - PERL-130 fixed parsing of connection string to allow for usernames containing :
    and passwords containing @ if they are percent encoded (RFC 3986)

  - PERL-166 fixed tailable cursors with no initial results

  - PERL-290 when find_master is 0, the driver now consistently picks the first
    server in the list

  - PERL-387 made database_names() retry up to three times if the server returns
    a lock error

v0.704.2.0 2014-07-08 12:04:02-04:00 America/New_York

  [Bug fixes]

  - PERL-376 fixed fatal error loading the MongoDB::MongoClient module before
    loading the top-level MongoDB module

  - Fixed cursor to catch query or timeout errors that occur after the initial
    query batch is received

  - Fixed primary server selection to retry for 60 seconds instead of
    immediately failing with an error

  - Changed bulk insert to shallow copy inserted documents before adding
    an '_id' field (if it didn't exist) to avoid modifying the original

  [Testing]

  - Fixed t/database.t for old versions of mongos

  - PERL-355 Added support for parallel testing

  - Finished converting from Test::Exception to the more robust Test::Fatal

  - Improved test coverage

v0.704.1.0 2014-06-17 21:55:18-04:00 America/New_York

  [Bug fixes]

  - PERL-336 fixed unknown command exception with index creation on 2.2 and
    older servers; we now correctly fall back to legacy index creation

  - PERL-349 fixed request ID misordering when reconnecting to a server; this
    fixes the known issue regarding test failures with threads under
    find_master

  - PERL-368 changed all query docs to be coerced to Tie::IxHash; this ensures
    that command queries are properly ordered and fixes a crashing bug when
    using command helpers in concert with read preference

  - PERL-369 fixed segfaults deserializing 64-bit integers from BSON on
    pure 32-bit perls

  - PERL-370 fixed bulk update results for upserts with non OID _id
    on servers prior to 2.6

  - Fixed stale detection of write command support for bulk operations

  - Fixed wire version checks and max BSON size inspection for replica
    sets with multiple hosts in the connection URI

  [Documentation]

  - PERL-366 documented bulk write initializers in Collection docs

  - Updated Example.pod docs for field projection (Johann Rolschewski)

  [Testing]

  - PERL-348 tests report MongoDB version in test diagnostics

  - PERL-351 fixed test failures if the local database has auth enabled;
    tests will skip instead of fail

  - PERL-356 enabled additional tests if the test database is a replica set
    or sharded cluster

  - Added test for field projection (Johann Rolschewski)

  - Fixed various tests to run against a sharded cluster

  - Moved unused orchestration tests out of the main test suite

  [~ Internal changes ~]

  - PERL-357 added developer tools for testing different cluster
    configuration

v0.704.0.0 2014-05-27 13:54:01-04:00 America/New_York

  [!!! Incompatible Changes !!!]

  - PERL-108 removed previously-deprecated AUTOLOAD functions

  [*** Deprecations ***]

  - PERL-320 low-level protocol functions in MongoDB.pm are deprecated

  [Additions]

  - PERL-221 added MongoDB::Regex class to represent stored regexes

  - PERL-251 implemented support for aggregation command cursors

  - PERL-252 added 'max_time_ms' method to cursors

  - PERL-258 added support for '$out' aggregation pipeline operator

  - PERL-262 read preference implementation

  - PERL-278 added explain support for aggregation queries

  - PERL-298 implement parallel_scan method for collections

  - PERL-299 implemented new bulk write API

  - Added nolock support to eval in MongoDB::Database (Ashley Willis)

  [Bug Fixes]

  - PERL-233 Fix find_and_modify error handling

  - PERL-260 ensure_index no longer ignores weights, default_language, and
    language_override options

  - PERL-267 memory leak fixes (Casey Rojas)

  - PERL-307 fix drop_dups option for ensure_index

  - PERL-315 require DateTime 0.78 or later

  - PERL-318 fix compiler warnings

  - PERL-319 fix compilation failures on some platforms

  - PERL-322 change return value and document low-level recv

  - PERL-323 fixed possible socket leaks on communication errors

  - PERL-336 fixed index creation legacy fallback against older mongos

  - Cached client constructor arguments for replica set connections

  - Cleaned Moose class namespaces of imported methods

  - Ensured internal run_command exceptions include correct error string

  - Fixed a bug that would serialize an index direction as a string on some
    older Perls

  - Fixed clock race in OID unit test

  - Fixed exception handling for internal run_command calls

  - Fixed fatal error in DESTROY with find_master and down server

  - Fixed gridfs test for unique keys

  - Fixed hint tests for MongoDB >= 2.5.4

  - Fixed index creation and drop on MongoDB 2.6

  - Fixed memory corruption error on Perl 5.19.1+

  - Fixed several compiler warnings on Perl 5.8

  - Fixed use of re::regexp_pattern for 5.10.0

  - Made t/dbref.t use fresh test database

  - Prevented GridFS MD5 calculation when 'safe' is not set (mapbuh)

  - Provided backwards compatible HeUTF8 macro for Perl v5.10 and v5.8.8 and
    earlier

  - Removed hard-coded compiler flags for Darwin

  - Updated ppport.h to version 3.22

  [Documentation]

  - PERL-217 improved documentation of GridFS::get

  - PERL-287 updated "j" and "fsync" option docs for MongoDB 2.6

  - PERL-311 fix legacy docs authentication link

  - PERL-317 Clarified support for threads

  - PERL-341 Added install documentation including use of non-standard C
    library paths

  - Added abstract to MongoDB::BSON::Regexp documentation

  - Revised main MongoDB module and MongoDB::MongoClient docs

  - Updated Changes file with changes since 0.701

  [Prerequisites]

  - Added namespace::clean

  - Added Test::Deep

  - Added Test::Fatal

  - Added Throwable

  - Added Syntax::Keyword::Junction

  - Changed Test::More requirement to 0.96

  - Removed Devel::Size

  [~ Internal changes ~]

  - PERL-261 use setVersion field in isMaster for replica set discovery (David
    Storch)

  - PERL-264 test for closing connection when MongoClient object leaves scope.
    (Ashley Willis)

  - PERL-269 test libraries for replica set and sharded cluster testing

  - PERL-285 added wire protocol check

  - PERL-296 implemented new index creation command for MongoDB 2.6

  - PERL-312 default GridFS chunk size changed from 1mb -> 255kb

  - Switched BSON implementation to libbson and bundled patched libbson 0.6.4
    to avoid external library dependency

  [~ Known Issues ~]

  - PERL-233 SSL certificate validation not yet implemented

  - PERL-349 changes to the testing framework revealed a bug when
    threads are used with 'find_master' on the client; the offending
    test is marked TODO and the bug will be addressed in the next
    stable release.

  - Some platforms may not compile, including Windows and some Solaris
    and OpenBSD systems; these issues will be addressed in a future release

v0.703.5  2014-05-23 06:26:46-04:00 America/New_York (TRIAL RELEASE)

v0.703.4  2014-04-07 20:12:27-04:00 America/New_York (TRIAL RELEASE)

v0.703.3  2014-04-01 10:32:49-04:00 America/New_York (TRIAL RELEASE)

0.703_2 (TRIAL RELEASE)

0.702.2

  [Bug Fixes]

  - Fix double-from-buffer alignment issue on ARM platform (Robin Lee)

  - Set BSON_MINKEY to 255 if char is unsigned (Robin Lee)

  - Fix test plans in connection.t and delegation.t (Robin Lee)

  [Internal]

  - Copyright update s/10gen/MongoDB/ due to company name change

0.702.1

  [Bug Fixes]

  - Query Fields accept Tie::IxHash and Hashref.. (Colin Cyr)

  - Fix for gridfs and creation of indexes (mapbuh)

0.702.0

  [Enhancements]

  - SASL PLAIN suport added

  - Makefile.PL can enable SSL/SASL builds via environment variables

  [Bug Fixes]

  - PERL-162 set_timeout fix

  - PERL-245 fix fractional seconds in BSON datetime deserialization

  - Fix specifying index keys as an array ref (D. Ilmari Mannsåker)

  - Prevent legacy auth when in SASL mode

  - Drop all created collections in dbref.t (D. Ilmari Mannsåker)

  [Documentation]

  - Deprecated AUTOLOAD functions removed from documenation

  - Various module docs revised and updated

  [Internal]

  - Refactored boilerplate test code to a separate testing module

0.701

  [Enhancements]

  - Support for Kerberos authentication on Linux (EXPERIMENTAL)

  - Add a get_collection method to MongoDB::Collection (@sanbeg, pull #52)

  - Optimizations on inserts and fetch (@ilmari, pull #66, PERL-129)

  - Hash ordering fixes (@ilmari, pull #64)

  - Double and int type helpers (@kenahoo, pull #65, PERL-227)

  - TTL index support (@drtz, pull #60, PERL-222)

  - Restored support for Perl 5.8.

  - Support for native DBRefs.

  [Bug Fixes]

  - UTF-8 fixes (@ilmari, pull #67, #68)

  - DateTime fixes (@kenahoo, pull #65)

  - Don't do aggregation tests when running against MongoDB < 2.2.


0.47 - 0.503.4

  [Enhancements]

  - Ordered hash support for MongoDB::Cursor::hint() (Colin Syr)

  - timegm() implementation for Windows (Stevie-O)

  - aggregate() helper method

  - find_and_modify helper

  - Connection URI support enhancements (Tianon Gravi)

  - MongoClient new top-level object

  - Removing AUTOLOAD method examples from documentation

  - Replacing $conn examples with $client in docs.

  - Deprecation warning for MongoDB::Connection

  - Removed dependence on Any::Moose

  - Support for fsyncLock/unlock (Casey Rojas)

  - Support for dt_type param, DateTime::Tiny and raw epoch times

  - Support for UTF8 hash keys (Roman Yerin)

  - Support for 'j' param to turn on journaling (Casey Rojas)

  [Bug Fixes]

  - Miscellaneous documentation fixes (Andrey Khozov, others)

  - Fixed socket timeout bug (nightlord)

  - Fixed broken regex test for Perls < 5.14.

  - More accurate isUTF8 function (Jan Anderssen)

  - Proper serialization of regex flags via re::regexp_pattern


0.46

  [Enhancements]

  - Added SSL support (Casey Rojas). See new documentation on
    MongoDB::Connection's ssl attribute.

  - Added MongoDB::BSON::Binary type and MongoDB::BSON::use_binary option. See
    the Data Types documentation on using the Binary type instead of string refs
    for binary data.

  - Change default binary type from 2 to 0.  See MongoDB::BSON::Binary for
    more information about the implications of this change.

  [Bug Fixes]

  - Fix auth connection issues (Olly Stephens)

  - Fix driver creating duplicate connections when port isn't specified (Olly
    Stephens)

  - Fix authentication check on some versions of Perl (Olly Stephens)

0.45 - September 7, 2011

  This is a recommended upgrade.  There are no backwards-breaking changes, only
  bug fixes and enhancements.

  [Enhancements]

  - Perl 5.8.4 and higher is now officially supported (5.8.7 was the previous
    minimum version).

  - Improved the way that connecting handles an interrupt signal.  The driver
    now continues to attempt connection for the remaining duration of the
    timeout, instead of erroring out immediately.

  [Bug Fixes]

  - Fixed MaxKey and MinKey deserialization. Deserializing these types would seg
    fault if they hadn't been serialized previously.

  - Fixed Windows compilation (Taro Nishino)

  - Fixed MakeMaker arguments which were causing build problems on 5.14.

0.44 - July 26, 2011

  This is a recommended upgrade.  There are no backwards-breaking changes, only
  bug-fixes and enhancements.

  [Enhancements]

  - Added MongoDB::BSON::looks_like_number flag.

    The Perl driver has always been coy about turning strings into numbers.  If
    you would like aggressive number parsing (if it looks like a number, send it
    to the DB as a number), you can set MongoDB::BSON::looks_like_number to 1
    (defaults to 0, the previous behavior).  See the MongoDB::DataTypes pod for
    more info.

  - Tests should now clean up after themselves, leaving no test databases
    behind.

  [Bug Fixes]

  - Setting a sort in the arguments to MongoDB::Collection::find is now passed
    through correctly to the cursor.

  - Fixed segmentation fault in array serialization: caused by specifying an _id
    field on insert and using an array (not a hash or Tie::IxHash).

  - Fixed segmentation fault in threading: if Mouse was used instead of Moose,
    version 0.43 of the driver would segfault if multiple threads were used.

  - MongoDB::Cursor now inherits the $Mongo::Cursor::slave_okay global setting,
    as well as checking if slave_okay is set on the cursor instance.

  - Fix GridFS functions to only ensure GridFS indexes on writes, allowing
    GridFS API usage on slaves.

0.43 - May 31, 2011

  This is a recommended upgrade.  There are no backwards-breaking changes, only
  bug-fixes and enhancements.

  [Enhancements]

  - Auto-detects max BSON size for inserts, which means documents larger than
    4MB can now be inserted.  See L<MongoDB::Connection/max_bson_size> for
    details.

  - Added the L<MongoDB::Cursor/info> method, which returns meta information
    about the results being returned.

  [Bug Fixes]

  - When high UTF-8 values as hash keys, the driver now croaks instead of
    segfaulting.

  - Added 'use IO::File' before IO::File is used (Michael Langner)

  - Fixed Perl 5.14 compile (Chip Salzenberg)

0.42

  - Fixes for Sparc architecture
  - Fixed PVIV misinterpretations

0.41

  - Re-discover master on "not master" errors
  - Make driver thread safe (Florian Ragwitz)
  - POD fix (Ronald Kimball)
  - Fix GridFS warning (Graham Barr)
  - Allow auto_connect => 0 for replica sets (Graham Barr)

0.40

  - DateTime floating timezones now warn on serialization
  - Attempting to serialize unrecognized object types now croaks
  - MongoDB::Cursor::explain now resets cursor properly
  - Added BSON::encode_bson and BSON::decode_bson (Jason Toffaletti)
  - Safe writes return a hash of information instead of 1 (on success)
  - Improved last_error/safe docs
  - Fixed doc spelling errors (Stefan Hornburg)

0.39

  - Fixed memory leak

0.38

  - Fixed indexing subdocuments (x.y.z)
  - Fixed GridFS to accept non-fs prefixes (Olly Stephens)
  - Fixed compile for old C compilers (Taro Nishino)
  - Added MongoDB::read_documents for handling db replies (Graham Barr)

0.37

  - Fixed cursor not found error condition
  - Fixed compile for old C compilers
  - Fixed weird file behavoir on some machines

0.36

  - Replica set support
  - Deserialize booleans as booleans (instead of ints) (Andrew Page)
  - Fixed OS X build (Todd Caine)
  - Added background option for index creation (Graham Barr)
  - Fixed slurp tests (Josh Rabinowitz)
  - Added MongoDB::Timestamp type

0.35 - 02 July 2010

  - Added MongoDB::BSON::utf8_flag_on (Pan Fan)
  - Added MongoDB::GridFS::File::slurp (Pan Fan)
  - Fixed memory leak

0.34 - 17 June 2010

  - $conn->foo->bar->baz now gets the bar.baz collection in the foo database
  - Slight speed improvements on inserts
  - Added $conn->query_timeout option to control timeout lengths for all queries
    done over a given connection
  - MongoDB::Cursor::tailable and MongoDB::Cursor::immortal
  - Added TO_JSON function to MongoDB::OID
  - Fixed safe save (Othello Maurer)
  - BACKWARD-BREAKING: removed old indexing syntax (if you started using the
    driver less than a year ago, this shouldn't affect you.  If you're an old-
    timer, make sure you're not using the syntax that has been deprecated for a
    year).

0.33 26 April 2010

  - Fixed tests

0.32 21 April 2010

  - BACKWARD COMPATIBILITY BREAK: croak on failed safe
    update/insert/remove/ensure_index (Eric Wilhelm)
  - w and wtimeout (see MongoDB::Connection::w)
  - die correctly on MongoCollection::count errors (help from Josh Rabinowitz)
  - Added MongoDB::Collection::find (same as query)
  - Added get, put, and delete methods to MongoDB::GridFS
  - Perl 5.12 compatibility

0.31 05 April 2010

  - C89 fix (Taro Nishino)
  - Added MongoDB::Code type
  - Use connection format: mongodb://host1,host2:port2,host3...
  - Arbitrary number of hosts supported
  - Auto-reauthentication on dropped connection
  - ensure_index name option

0.30 10 March 2010

  - Support BigInt
  - On 64-bit machines, support 64-bit nums w/out BigInt (Ryan Olson)
  - Added connection timeout option (Othello Maurer)
  - Added clarifying docs on fields (Josh Rabinowitz)

0.29 01 March 2010

  - Added safe options for remove, update, and ensure_index
  - Added save method
  - Fixed bug in UTF8 checking
  - Fixed serialization of "tie %hash, 'Tie:IxHash'"

0.28 28 Jan 2010

  - Fixed undef values (Andrew Bryan)
  - Added GridFS multi-chunk test using File::Temp (Josh Rabinowitz)
  - Allow tie(%h, 'Tie::IxHash') to be used as well as Tie::IxHash->new
  - Fixed GridFS indexes and added chunkSize and uploadDate to metadata
  - Fixed batch_insert doc (Eric Wilhelm)
  - Fixed big endian build

0.27 22 Dec 2009

  - Indexes: Improved ensure_index syntax, added drop_dups option
  - Inserts: Added safe insert, checks object is < 4 MB before inserting
  - Fixed socket closing bug
  - Big-endian support
  - $ can be replaced by any character using MongoDB::BSON::char
  - MongoDB::OIDs: Fixed undefined behavior in serialization (Peter Edwards), added OID::get_time
  - 5.8.7-compatible memory allocation (Peter Edwards)
  - Added MongoDB::MaxKey and MongoDB::MinKey support

0.26  09 Nov 2009

  - Don't force i386 arch (Needed to compile on OS X with x86_64) (Graham Barr)
  - Include inc/ dir for CPAN
  - Memory leak fixes
  - Added tutorial

0.24  15 Oct 2009

  - Fix for uninitialized array values (David Morrison)
  - Boolean support
  - Connection memory leak fix
  - Added MongoDB::Cursor::count

0.23  25 Sept 2009

  Changes in this version by Ask Bjørn Hansen, Florian Ragwitz,
  Orlando Vazquez, Kristina Chodorow, and Eric Wilhelm:

  - Make inserting double's (floats/NV's), undefined/null, Tie::IxHash values
  - Query sorting, snapshot, explain, and hint
  - Added non-unique ensure_index
  - Added GridFS
  - Added regex support
  - find_one takes optional fields parameter
  - DateTime used for dates
  - No C++ driver dependency

0.01  06 May 2009
  - Initial release.

# vim: set ts=2 sts=2 sw=2 et tw=75: