Skip to content

v1.2.0

Compare
Choose a tag to compare
@kmahar kmahar released this 09 Nov 21:19
· 91 commits to main since this release

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

Contributors

Thanks to everyone who contributed to this release!