The MongoDB Rust Driver team is pleased to announce the first beta of the BSON library, v0.15.0.
Major Changes
In preparation of stabilizing the API of the BSON library, 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-345 Improve naming of Bson and ElementType cases
Many of the names of our BSON types were inconsistent with the names used by other official
MongoDB libraries. To better integrate with the existing ecosystem around MongoDB, we changed
the names to match with the other librarires.
RUST-319 Convert variants of the BSON enum to use structs instead of multiple fields
Users have often asked to be able to serialize or deserialize directly to a certain BSON type
rather than to a generic BSON value. Previously, the library was inconsistent in terms of which
BSON types supported direct serialization/deserialization. We standardized this by defining a
struct for each BSON type variant that previously had more than one field.
The library previously implemented the old version of MongoDB's extended JSON format. We've
updated the library to use extended JSON v2, which is the current extended JSON format used by
all official MongoDB BSON libraries.
RUST-429 Move encode_document and decode_document into the Document namespace
Originally, the encode_document and decode_document were defined as free-floating functions
for parity with serde_json. However, unlike serde_json::from_reader and
serde_json::to_writer, our functions are not generic, so it makes more sense to derfine them
as methods on the Document type.
RUST-447 Standardize API with other serde libraries
To better match terminology used in libraries like serde_json, we updated instances of the
terms decode and encode to either use serialize and deserialize or to use terminology
like reader or writer as appropriate.
Back when the Document type was originally changed to preserve the order of elements,
Document was defined as an alias of the OrderedDocument type. Since the indirection can
cause things like compiler error messages to be a little confusing, we've removed the alias and
changed OrderedDocument to just be called Document.
RUST-313 Mark BSON enums as non-exhaustive where appropriate
In order to ensure that adding things like new error variants or new BSON subtypes don't cause
breaking changes for users who pattern match them, we've marked many of the enums in the library
as non_exhaustive.
decode_document_utf8_lossy was originally provided for parity with the standard library's
String::from_utf8_lossy, but the BSON specification requires that all strings are encoded in
UTF-8, so this method isn't particularly useful
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Note: This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.
You can always request more updates by clicking Bump now in your Dependabot dashboard.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
Updates the requirements on bson to permit the latest version.
Release notes
Sourced from bson's releases.
Commits
03cd112
update homepage39ef9f2
bump version to 0.15.0 (#183)4819853
RUST-454 Implement error case BSON corpus tests (#181)7921a71
RUST-390 Implement ordering for Timestamp (#182)ccb6827
RUST-447 Standardize API with other serde libraries (#179)94eba4e
RUST-457 Fix Display implementation for Binary type (#180)9aec6bc
RUST-453 Add binary subtype 6 (#178)dbc863c
RUST-345 Improve naming of Bson and ElementType cases (#164)ed1740a
RUST-445 Round trip decimal128 values (#177)899ea9f
RUST-438 Add more detailed documentation examples (#176)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Note: This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.
You can always request more updates by clicking
Bump now
in your Dependabot dashboard.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired)