Changes
** Bug
* [PHPC-316] - config.w32 should define MONGOC_ENABLE_SASL
* [PHPC-447] - Windows builds should generate libmongoc and libbson config and version files
* [PHPC-481] - Windows reports wrong mongoc and libbson versions
* [PHPC-520] - Document driver dependencies
* [PHPC-525] - Demonstrate non-empty $filter argument in Query constructor example
* [PHPC-530] - Document MongoDB\Driver\Server type constants
* [PHPC-554] - Rephrase unsupported/corrupt BSON messages
* [PHPC-625] - Document that persistent sockets should not be re-used after forking
* [PHPC-673] - Cursor::isDead() returns true despite cursor being alive
* [PHPC-674] - Advise users to install pkg-config for building the driver
* [PHPC-693] - Unacknowledged WriteResults have null counts
* [PHPC-728] - Wrong example on how to provide client certificate
* [PHPC-748] - CursorID is not properly expressed on 32-bit platforms
* [PHPC-756] - fromJSON() should not evaluate bson_error_t.message as boolean
* [PHPC-762] - undefined symbol: mongoc_write_concern_is_acknowledged
* [PHPC-788] - Timestamp on 32-bit platforms breaks
* [PHPC-790] - UTCDateTime constructor should truncate floats
* [PHPC-794] - BulkWrite::update() silently ignores invalid arguments
* [PHPC-801] - Empty ReadConcern and WriteConcern should serialize to BSON documents
* [PHPC-804] - Timestamp and UTCDateTime constructors should accept integers in strict types mode
* [PHPC-838] - Javascript objects are always serialized as BSON code types without scope
** Epic
* [PHPC-542] - Remove dependency on mongoc private symbols
** Improvement
* [PHPC-359] - Ensure read preference tags sets serialize as documents
* [PHPC-424] - Validate that read preference tag set is an array of documents
* [PHPC-433] - Persist topology state between requests
* [PHPC-486] - Add syntax highlighting to BSON persistence articles
* [PHPC-637] - Remind users that connection URIs should be encoded
* [PHPC-654] - Implement comparison handlers for BSON types
* [PHPC-676] - Do not allow BulkWrite objects to be executed multiple times
* [PHPC-684] - Report bypassDocumentValidation in BulkWrite debug output
* [PHPC-705] - Do not unnecessarily wrap filters in $query
* [PHPC-721] - Javascript constructor should throw if code contains null bytes
* [PHPC-724] - Regex constructor should throw if pattern or flags contain null bytes
* [PHPC-726] - Allow cross-platform serialization of Timestamp and UTCDateTime
* [PHPC-731] - Parse Timestamp argument as strings to accept large integers
* [PHPC-739] - Rename "javascript" to "code" in Javascript BSON class
* [PHPC-741] - Use consistent exceptions for BSON initialization methods
* [PHPC-742] - Regex constructor should default flags arg to empty string
* [PHPC-744] - Improve error messages for invalid Decimal128 and ObjectID strings
* [PHPC-746] - Default Manager URI to "mongodb://127.0.0.1/"
* [PHPC-754] - Remove libmongoc-priv system dependency in config.m4
* [PHPC-755] - Remove include of private mongoc-trace.h
** New Feature
* [PHPC-459] - BSON objects should implement JsonSerializable
* [PHPC-460] - BSON classes should support PHP serialization and var_export()
* [PHPC-498] - ReadPreference, ReadConcern, and WriteConcern should serialize to BSON
* [PHPC-536] - UTCDateTime constructor should default to current time and accept DateTimeInterface
* [PHPC-552] - Implement ObjectID::getTimestamp() method
* [PHPC-619] - Implement Decimal 128 type spec
* [PHPC-716] - Support new readConcern level "linearizable"
* [PHPC-729] - Implement __toString() method for Javascript and Binary
* [PHPC-730] - Implement getCode() and getScope() for Javascript
* [PHPC-734] - Support providing collation per operation
* [PHPC-752] - Allow users to set a limit on acceptable staleness
* [PHPC-757] - Implement The MongoDB Handshake Protocol
* [PHPC-786] - Support appname in URI array options
** Question
* [PHPC-723] - Blocking connect() leads to cumulative timeouts for multiple inaccessible servers
** Task
* [PHPC-313] - BSON should throw when encountering 64-bit integer on 32-bit platform
* [PHPC-416] - Document SSL options
* [PHPC-504] - Document how RP, RC, and WC are serialized to BSON
* [PHPC-533] - Remove PHONGO_API macro for exported functions
* [PHPC-584] - Remove MkDocs documentation in favor of PHP.net documentation
* [PHPC-600] - Manager::getServers() should use mongoc_client_get_server_descriptions()
* [PHPC-601] - Cursor::getServer() should not access mongoc_cursor_t.client
* [PHPC-602] - Create command cursors with mongoc_cursor_new_from_command_document()
* [PHPC-603] - Use mongoc_read_prefs_t getters instead of accessing struct fields directly
* [PHPC-604] - WriteConcern::getJournal() should use mongoc_write_concern_journal_is_set()
* [PHPC-605] - Rely on libmongoc's socket handling and SSL implementation
* [PHPC-606] - Use mongoc_server_description_t public API
* [PHPC-607] - Manager::selectServer() should use mongoc_client_select_server()
* [PHPC-609] - Ensure client URI handling uses libmongoc public API
* [PHPC-610] - Client construction should use mongoc_write_concern_is_valid()
* [PHPC-611] - WriteResult::isAcknowledged() should use mongoc_write_concern_is_acknowledged()
* [PHPC-618] - Implement SDAM Monitoring spec
* [PHPC-629] - Upgrade libbson and libmongoc to 1.4.0
* [PHPC-630] - Update bson_visitor_t for unsupported type function pointer
* [PHPC-653] - Document WriteResult, WriteConcernError, and WriteError classes
* [PHPC-659] - Update bson_visitor_t for decimal 128 type function pointer
* [PHPC-662] - Use mongoc_bulk_operation_get_hint()
* [PHPC-663] - Use mongoc_bulk_operation_get_write_concern()
* [PHPC-664] - Use mongoc_write_concern_get_w()
* [PHPC-665] - Remove private libmongoc and libbson header includes
* [PHPC-680] - BulkWrite::count() should return number of operations instead of estimated round-trips
* [PHPC-682] - Do not use mongoc_bulk_operation_t private API in BulkWrite debug handler
* [PHPC-687] - Consolidate struct definitions for PHP 5 and 7
* [PHPC-688] - Do not use mongoc_cursor_t private API in Cursor debug handler
* [PHPC-689] - Query and command execution should use mongoc_cursor_set_hint()
* [PHPC-703] - Update configure scripts for upstream SSL changes
* [PHPC-704] - Do not set "mongodb.debug" based on Manager's $driverOptions["debug"]
* [PHPC-708] - Port http://php.net/manual/en/mongo.security.php to the new docs/driver
* [PHPC-718] - Define extension dependencies
* [PHPC-751] - Document MongoDB\BSON\Decimal128
* [PHPC-758] - Disable Decimal128 for bundled libbson and libmongoc 1.4.0
* [PHPC-761] - Remove BSON_NAMESPACE constant
* [PHPC-769] - Javascript serialization, export, and dump should always include scope field
* [PHPC-777] - Document MongoDB\Driver\ReadConcern::LINEARIZABLE
* [PHPC-779] - Switch serialization from O type to C type
* [PHPC-780] - Document persistent connection behavior
* [PHPC-783] - Use mongoc_collection_find_with_opts() for Query execution
* [PHPC-789] - Remove __wakeup from BSON/* classes
* [PHPC-791] - Upgrade libbson and libmongoc to 1.5.0
* [PHPC-796] - Use flexible opts for BulkWrite update and delete
* [PHPC-799] - Create notice for all third party libraries
* [PHPC-805] - Query "partial" option is now "allowPartialResults"
* [PHPC-806] - Document Query options for mongoc_collection_find_with_opts()
* [PHPC-807] - Document "collation" option for Query and BulkWrite update/delete
* [PHPC-824] - SDAM spec update : Update the topology from each handshake
* [PHPC-826] - Document that socket paths must be URL-encoded
* [PHPC-827] - Update Max Staleness implementation
* [PHPC-829] - BSON Regex flags must be alphabetically ordered