Greetings all! Wanted to update everybody on a change of plans for the upcoming 3.30.0 release.
Our original plan was that 3.30.0 would consist of three main features along with a set of other changes. The three features were:
- Replace nose with pytest for all testing (PYTHON-1297)
- Enhance vector support by properly supporting arbitrary subtypes (PYTHON-1369)
- Make asyncio reactor production-ready and make it a default option for Python 3.12 (PYTHON-1375)
(1) is complete and merged and (2) should be joining it in the next few days. (3) has proven to be much more difficult, however. Despite some excellent collaboration from folks at Scylla and others in the community we've been unable to get a good grip on the actual problem let alone any kind of meaningful solution. It's been increasingly clear to me that fixing (3) above requires more time and work. And then we have another factor to consider.
Apache Cassandra 5.0 looks to be getting very, very close. There's a release candidate (5.0-rc1) available for download now and from the sounds of things a full 5.0 release isn't far off. With that in mind we want to make sure our users have a good, working Python driver for Apache Cassandra 5.0 as soon as it's released. With that in mind the functionality behind
PYTHON-1393 has taken on a new significance.
After considering all of the information above I've decided to make the following changes to our release plan:
- PYTHON-1375 will be replaced in the upcoming release by PYTHON-1393. Support for Apache Cassandra 5.0 will replace default support for asyncio as the third main feature of that release.
- This release will be rebranded 3.29.2. Without the asyncio conversion there isn't a backwards incompatible change in the release so a patch version increment makes more sense.
- 3.29.2 will be the first release with explicit support for Apache Cassandra 5.0. Other versions might work as well but this will be the first release with explicit support.
- The next release we'll aim for after 3.29.2 will be 3.30.0. Adding the asyncio reactor as a default choice will continue to be one of the main features we hope to include in that release.
This change isn't in any way meant to suggest that the experience of using the driver on Python 3.12 is optimal. It is not and we need to make it better. It is an acknowledgement that fixing that problem has proven to be much more difficult than we expected... and that we have another significant milestone (the impending release of 5.0) that we need to account for as well. We are certainly not abandoning our efforts to fix the asyncio issues; we're really just moving things around a bit to squeeze in another release to meet another objective first.
Thanks all!
- Bret -