Tags: enquo/enquo-core
Tags
The "Quality is Queen" Release (with bonus API breakage) I've enabled a whole pile of lints and cleaned up a bunch of ugliness for this release, which necessitated some adjustments to APIs and storage formats. On the upside, I'm now far more comfortable with how the whole thing hangs together, so with a bit of luck things might start stabilising in the near future.
Less Panic, More Magnus The big ticket item in this release is that the Ruby bindings have been rewritten to use [Magnus](https://github.com/matsadler/magnus), which made it feasible to do pretty much everything in pure Rust. More generally, there was a bit of an internals cleanup to return more `Result`s, which means fewer places where a `panic!` can ruin your day.
Datatypes! Datatypes! Datatypes! The major theme of this release is, you guessed it, datatypes. We've got a new `Boolean` data type, which stores an encrypted, orderable, comparable, true or false. There's also two major improvements to the `Text` data type: **ordering** and **encrypted length**. Binary gems targeting Ruby 3.2 are now also being built, which makes life a lot easier for those people living on the cutting edge.
Static key handling refactor, Ruby GC bugfix If you're using the Rust bindings, then you can no longer use a `Vec<u8>` as a root key, you need to turn it into a `key_provider::Static`. Also fixes a bug in the Ruby bindings so they don't potentially SEGV after a GC.
Smaller, Safer, Siphertexts Serialized ciphertexts are now significantly smaller, now I found the button to not encode byte strings as lists of integers. Also made API changes that mean that you can't accidentally leak left ciphertexts, because you have to explicitly ask for them now.