BTree v3.0.0 Release NotesRelease Date: 2016-09-24 // about 5 years ago
🚀 This release of BTree provides support for Swift 3.0, which involves extensive breaking API changes.
- 👀 All API names have been reviewed and renamed to follow current Swift guidelines. (See SE-0023, [SE-0005][se0005], SE-0006, SE-0118, and possibly others.) The resulting changes are too numerous to list here. Unfortunately, resource constraints prevented me from including forwarding availability declarations for renamed APIs; fixits won't be available, you'll have to rename usages in your code by hand. (Sorry about that.)
- BTree's collection types now implement the new collection model described in [SE-0065][se0065].
BTreeIndexhas been stripped of its public methods; use the new index manipulation methods in the various collection types instead. The underlying implementation hasn't been changed, but making the standalone index methods internal now allows for experimentation with more efficient indices without breaking API changes in the future.
OrderedSetwas renamed to
SortedSet, to prevent confusion with the similar class in Foundation. For a short while, SE-0086 renamed
OrderedSetin the Foundation framework, leading to a naming conflict with
BTree. This was further aggravated by a naming lookup issue in the language itself that made it impossible to use the explicit name
BTree.OrderedSetto work around the conflict.
NSOrderedSetwas quickly changed back to its original name, but the issue revealed that the two names are much too similar.
SortedSetwas adapted to implement the new
SetAlgebraprotocol in [SE-0059][se0059].
Lists that contain objects now have an
arrayViewproperty that returns an
NSArraywith the exact same values as the
Listin O(1) time. This is useful for using B-tree based lists in APIs that need arrays, without copying elements. (For example, you can now use
- Collection protocol conformance has been improved.
Listnow explicitly conforms to
BidirectionalCollections. This required no major changes as these types already implemented everything that was necessary for conformance to these stricter protocols, but now conformance is made explicit.
⚡️ [se0059]: https://github.com/apple/swift-evolution/blob/master/proposals/0059-updated-set-apis.md 🚚 [se0065]: https://github.com/apple/swift-evolution/blob/master/proposals/0065-collections-move-indices.md