attaswift/BTree

Support for Swift 3.0?

cliffordh opened this issue · 3 comments

Can you explain your plans for supporting Swift 3.0? Are you interested in having some help with that?

Cliff

BTree will receive a full API upgrade for Swift 3; I'm just waiting for Swift's master branch to stabilize a little bit before I migrate the package to it. I expect a couple major new things will land during WWDC, then things will settle down a lot. The Great API Renaming and the new collection model will require plenty of changes in BTree, too. (And a couple swift-evolution proposals also seem relevant. BTree uses binary search a lot, for example.)

My plan is to take a day or two during the conference to upgrade BTree to the snapshot we get there. (I hoped to be able to do that in the labs, within shouting distance of Apple's Swift team, but Fortuna didn't smile on my lottery entry this year.)

If you have time to start adapting BTree to Swift 3 earlier than that, I'd be very much interested & grateful!
We need to keep the Swift 2 version working until Swift 3 is ready for use in production code, so I opened a swift3 branch to receive upgrade-related changes.

The swift3 branch now compiles under Swift 3 (as of snapshot 2016-05-31), with most of the API updated to the new naming convention. The package has been adapted to the new Collection API. OrderedSet now implements the new SetAlgebra protocol.

Nothing is stable yet; I'm still getting used to the new rules, and some things will need to be refactored to be more Swifty. (Also, it is likely Swift 3 will receive some major new features this month; some of those might affect this package.)

The test suite has not yet been updated yet; it doesn't even compile. This is next on my list, but until it's fixed, the Swift 3 code remains completely untested. It is likely that I introduced some new bugs, due to mistakes I made during the manual API upgrade.

I just released the first release candidate for BTree v3.0.0 with full support for Swift 3.0. Unless new issues come to light in last-minute tests, the final 3.0.0 release will come later this week.