Skip to content

Releases: Animenosekai/cain

v1.1

15 Aug 17:06
Compare
Choose a tag to compare

cain v1.1

Performance update

After profiling extensively1 and using cain at a larger scale for a while (see translatepy@next for more information), this is an update bringing better performance in decoding using the cain data format. (this was enough to be able to see a 1.5~2x performance improvements during decoding)

New

  • Added an Enum datatype

Updates

  • Adding examples in datatypes docstring
  • Using Datatype._cain_value instead of Datatype. to avoid conflicting attributes
  • Using Datatype.__root__ instead of Datatype.origin to avoid conflicting attributes
  • Speeding up annotations parsing (introducing DatatypeMeta.__type_hints__)
  • Using the current Object instead of the built-in dict for the decoding result
  • Other minor performance improvements

Everything is detailed in the README.md file

A comparison from the previous release can be found here v1...v1.1

A comparison from the current branch can be found here v1.1...main

🍡 Animenosekai

  1. Profiled using tools: cProfile, pyinstrument and line_profiler

v1

11 Aug 16:04
Compare
Choose a tag to compare
v1

First release for cain!

cain v1.0

Welcome to cain, your new way of formatting data!

Cain is a new data interchange format which aims at providing the smallest possible size to encode data.

It is based on pre-defined schemas, which leverages the need to specify it within the final encoded data.

Features

  • Encode using the cain data format
  • Decode using the cain data format
  • Encode schemas
  • Decode schemas
  • Complete CLI
  • CLI tests
  • Extensibility with custom encoders

Everything is detailed in the README.md file

✨Animenosekai