> Performance update
After profiling extensively[^1] and using `cain` at a larger scale for a while (see [`translatepynext`](https://github.com/Animenosekai/translate/tree/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`](./README.md) file
A comparison from the previous release can be found here [`v1...v1.1`](https://github.com/Animenosekai/cain/compare/v1...v1.1)
A comparison from the current branch can be found here [`v1.1...main`](https://github.com/Animenosekai/cain/compare/v1.1...main)
[^1]: Profiled using tools: [`cProfile`](https://docs.python.org/3/library/profile.html#module-cProfile), [`pyinstrument`](https://github.com/joerick/pyinstrument) and [`line_profiler`](https://github.com/pyutils/line_profiler)
> 🍡 Animenosekai
v1
First release for `cain`!