v1.2.0
We are pleased to announce the 1.2.0 release of the Swift driver.
This release most notably adds support for the following features:
MongoDB Versioned API
MongoDB 5.0 introduced supported for the versioned API, which will make it much easier for users to upgrade their server versions without experiencing backward-breaking changes.
To specify an API version for your application, provide a version via MongoClientOptions
(currently, the only supported API version is 1):
let opts = MongoClientOptions(
serverAPI: MongoServerAPI(version: .v1)
)
// Create an async client
let client = try MongoClient("mongodb://localhost:27017", using: myEventLoopGroup, options: opts)
// Or, create a sync client
let client = try MongoClient("mongodb://localhost:27017", options: opts)
Serverless MongoDB Support / Load Balancer Support
This release adds support for using the driver with Serverless MongoDB, which is currently in preview.
This is enabled via new support for connecting to a MongoDB cluster behind a TCP load balancer, which is supported via the loadBalanced
connection string option or by setting the loadBalanced
property on MongoClientOptions
.
MongoDB 5.0 Support
This release adds full support for using new MongoDB 5.0 features, including creating and working with time series collections as well as extended support for the “snapshot” read concern; see the MongoDB 5.0 release notes for more details.
OCSP Support
The driver previously had implicit support for the Online Certificate Status Protocol (OCSP) via the underlying C driver, however as part of this release we have added explicit testing for this from Swift along with support for configuring it programmatically via MongoClientOptions
, using the tlsDisableCertificateRevocationCheck
and tlsDisableOCSPEndpointCheck
options.
Please see our TLS Guide for more information.
Below are a selected list of tickets with user-facing implications; for a full list of completed tickets see this Jira query.
Included Tickets
Bug
- SWIFT-1322 - listCollections does not respect batchSize option
- SWIFT-1347 - ClientSession.pinnedServerAddress leaks memory (in tests only)
New Feature
- SWIFT-787 - OCSP Support
- SWIFT-1025 - Versioned MongoDB API for Drivers
- SWIFT-1094 - Load Balancer Support
- SWIFT-797 - Allow hinting the delete command
- SWIFT-801 - support ability to pass hint to update
- SWIFT-788 - Allow passing hint to findAndModify update and replace operations
- SWIFT-904 - Add connectTimeoutMS option to MongoClientOptions
- SWIFT-1157 - Implement ExpressibleByXLiteral for IndexHint
- SWIFT-1102 - Snapshot reads on Secondaries
- SWIFT-560 - Add the ability to specify a pipeline to an update command
- SWIFT-1108 - Time-series Collections
- SWIFT-1225 - Support ‘let’ option for aggregate command
- SWIFT-1100 - Support truncatedArrays field in ChangeStream update descriptions
- SWIFT-1307 - Expose serviceId in command monitoring events
Improvement
- SWIFT-910 - Lift restriction on authSource without credentials
- SWIFT-1099 - Change estimatedDocumentCount() to use the $collStats Agg Stage Instead of Count Command
- SWIFT-1107 - Mitigate pain of using field names with dots and dollars
- SWIFT-1211 - Use “hello” command for monitoring if supported
- SWIFT-1173 - Use “hello” command when API version is declared
Task
- SWIFT-1256 - Vendor libmongoc 1.19.0
- SWIFT-1363 - Vendor libmongoc 1.19.1
- SWIFT-1409 - Vendor libmongoc 1.19.2
- SWIFT-1224 - Increase maxWireVersion for MongoDB 5.0
Contributors
Thanks to everyone who contributed to this release!
- @agolin95
- @bynn
- @isabelatkinson
- @kmahar
- @patrickfreed