Releases: enquo/enquo-core
Ciborium update fix
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, 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.
Text value support
This is the one everyone's been waiting for. Store encrypted text, and query for equality.
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.
Now with date support!
You can now encrypt and decrypt dates, with ORE-encrypted parts for all your sorting and querying needs.
Make ORE ciphertexts optional
If you want an i64 to be encrypted, but don't need to query on it, then you can now do that,
by just calling drop_ore_ciphertext()
.
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.
Initial Release
Provides support for unsigned 64 bit integers for Rust and Ruby.
Much more to come. Stay tuned.