Releases: mongodb/mongo-rust-driver
v1.0.0
Description
The MongoDB Rust driver team is pleased to announce the first stable release of the driver, v1.0.0. This release marks the general availability of the driver. Additionally, per semver requirements, no breaking API changes will be made to the 1.x branch of the driver.
Major Features
See the releases notes for v0.11.0 for recent changes made to the driver before this release.
Special thanks
Thanks to everyone who contributed code and/or advice along our path to 1.0, including @nevi-me, @ttdonovan, @petoknm, @judy2k, @freakmaxi, @brunobell, @andywswan, @UmerMIB, @DarkEld3r, @yoshuawuyts, and @LucioFranco!
v0.11.0
Description
The MongoDB Rust driver team is pleased to announce the first release candidate of the driver, v0.11.0.
Major Features
In preparation of stabilizing the API of the driver, we made a number of breaking changes. The
individual changes are listed below in the release notes, each with a short description of why we
made the change.
Release Notes
Breaking Changes
- RUST-261 Mark enums and options struct as non-exhaustible
- In order to ensure that adding new variants to our enums (e.g.
mongodb::error::ErrorKind
) in
the future will not cause breaking changes for users who are pattern matching them, we've
marked some of them as non-exhaustive. Additionally, in order to be able to add new options to
our options structs in the future, we've also marked them as non-exhaustive. This has the
side-effect of making them impossible to instantiate with struct literals. The workaround is to
use the auto-generated builder pattern API for them, which continues to be available as before.
- In order to ensure that adding new variants to our enums (e.g.
- RUST-434 Rewrite ReadConcern as a struct
- In order to allow us to add any potential new read concern options that might be added in the
future, we've changedmongodb::options::ReadConcern
to be a (non-exhaustive) struct rather
than an enum. To ensure that it's easy to use, we've added a helper method for each ReadConcern
level to faciliatate construction.
- In order to allow us to add any potential new read concern options that might be added in the
- RUST-433 Rename "Tag" Acknowledgement case to "Custom"
- The original name for this enum variant was a bit misleading. The official documentation for
write
concerns
has since been updated to describe this type of write concern as "custom" rather than "tag", so
we changed the API of the driver accordingly.
- The original name for this enum variant was a bit misleading. The official documentation for
- RUST-435 Standardize on options exporting strategy
- We previously exported the authentication options exposed by the driver under the namespace
mongodb::options::auth
, whereas the rest of the driver's options were exported directly from
mongodb::options
. We now export the auth options directly frommongodb::options
for
consistency.
- We previously exported the authentication options exposed by the driver under the namespace
Bug fixes
- RUST-408 Sync API not included in the generated documentation
New Features
- RUST-289 Implicit Sessions
- RUST-392 Suppress "ns not found" errors
- RUST-396 run_command should parse server errors
- RUST-409 Add DriverInfoOptions to client metadata
Improvements
- RUST-439 Return errors when unacknowledged write concerns are passed in
v0.10.0
Description
The MongoDB Rust driver team is pleased to announce the first beta of the driver, v0.10.0.
Major Features
Async API
The Rust driver now provides an async API which can be used with either tokio
or async-std
. By default, the driver uses tokio
primitives for things like TcpStreams, although the runtime still must be started before calling into the driver API. To use async-std
instead of tokio
, specify the following in your Cargo.toml:
[dependencies.mongodb]
version = "0.10.0"
default-features = false
features = ["async-std-runtime"]
Sync API
The sync API from previous versions of the driver has been moved to the sync
module and gated under the sync
feature. To enable it, specify the following in your Cargo.toml:
[dependencies.mongodb]
version = "0.10.0"
default-features = false
features = ["sync"]
The sync API wraps the async API and blocks on the results of the async API method calls. It uses async-std under the hood.
Release Notes
Bug fixes
- RUST-397 $readPreference not being set against some topology types
New Feature
- RUST-104 Support polling SRV records for mongos discovery
- RUST-214 Implement non-blocking connection pooling
- RUST-303 Implement async wire protocol
- RUST-298 Implement non-blocking server discovery and monitoring
- RUST-300 Implement async DNS
- RUST-322 Add async client/database API
- RUST-323 Add async collection API
- RUST-324 Add async cursor API
- RUST-215 Implement sync operations wrapping async API
Improvement
- RUST-286 Use system DNS resolver instead of Google
- RUST-306 Disable default features on pbkdf2 crate
- RUST-333 Improve invalid URI option error message
- RUST-351 Add 'allowDiskUse' option to find command
- RUST-352 Support for 'authorizedDatabases' option
Contributors
Thanks to @judy2k, @nevi-me, and @UmerMIB for the pull requests!
v0.9.2
Description
The MongoDB Rust driver team is pleased to announce a new alpha release of the driver, v0.9.2.
Release Notes
Bug fixes
- RUST-258 Replace connection in monitoring threads when errors occur
- RUST-294 Remove unimplemented Display impl for WriteFailure
- RUST-297 Properly detect cluster compatibility changes
- RUST-266 Add sort option to FindOne
- RUST-257 Properly fallback on secondary DNS records
Improvements
- RUST-287 Update trust-dns dependency to eliminate conflict with actix
- RUST-307 Unify behavior around configuration for replica set discovery
- RUST-295 Rename
ErrorKind::DnsName
toErrorKind::InvalidDnsName
Contributors
Thanks to @freakmaxi, @nevi-me, and @ttdonovan for the pull requests!
v0.9.1
Description
The MongoDB Rust driver team is pleased to announce a new alpha release of the driver, v0.9.1.
Release Notes
Bug fixes
New features
- #109 Derive Clone for Database Options
Improvements
- RUST-242 Update server description based on error during handshake
- RUST-246 Batch large inserts
- RUST-268 Improve server selection timeout error messages
- RUST-269 Wrap I/O in buffered streams
- RUST-270 Make command monitoring lazy
- #110 Update trust-dns dependencies
- #108 Fix typos in documentation
Contributors
Thanks to @brunobell, @petoknm, @nevi-me, and @andywswan for the pull requests!
v0.9.0
Description
The MongoDB Rust driver team is pleased to announce the first alpha of the driver, v0.9.0.
Major Features
Supported server versions
The Rust driver supports MongoDB versions 3.6+.
CRUD API
The driver implements the MongoDB CRUD API with the following methods:
Collection::aggregate
Collection::count_documents
Collection::estimated_document_count
Collection::distinct
Collection::find
Collection::find_one
Collection::insert_one
Collection::insert_many
Collection::delete_one
Collection::delete_many
Collection::replace_one
Collection::update_one
Collection::update_many
Database::aggregate
SCRAM-SHA-1 and SCRAM-SHA-256 Authentication
The driver implements SCRAM-SHA-1 and SCRAM-SHA-256 authentication, which can be configured either through URI by using Client::with_uri_str
or through the credential
field of ClientOptions
and using Client::with_options
. When connected to a MongoDB 3.6 server, the driver will default to using SCRAM-SHA-1, and with driver versions 4.0+, the driver will negotiate the mechanism with the server.
TLS
The Rust driver supports using TLS for connections through the rustls
crate. TLS can be configured either through the URI by using Client::with_uri_str
or through the tls
field of ClientOptions
and using Client::with_options
.
SRV
The Rust driver supports using SRV and TXT records to determine the server addresses and Client options by using a "mongodb+srv"
URI with Client::with_uri_str
.
Release Notes
New Feature
- RUST-28 Implement SNI Support
- RUST-46 Implement Initial DNS Seedlist discovery spec
- RUST-186 Implement command monitoring API
- RUST-87 Implement SCRAM-SHA-256
- RUST-146 Implement SCRAM-SHA-1
- RUST-220 Implement write operations
- RUST-221 Implement read operations that don't return a cursor
- RUST-238 Implement aggregate operation
- RUST-222 Implement find and getMore operations
- RUST-78 Implement Handshake Spec
- RUST-191 Implement Rust SDAM/Server selection Specs
- RUST-203 Implement TLS for connections
- RUST-50 OP_MSG support
- RUST-117 Implement Connection Monitoring and Pooling spec