JErnestoMtz / rapl

Rank Polymorphic array library for Rust.
103 stars 3 forks source link

Stabilization #25

Closed JErnestoMtz closed 1 year ago

JErnestoMtz commented 1 year ago

The stable port for rapl is almost ready and can be found on the stable branch at https://github.com/JErnestoMtz/rapl/tree/stable . The README and other minor details are currently being updated and will be available shortly.

While it's not a full shape type checking (it never was), I made sure to retain the Rank type checking with almost the same interface. I find this to be incredibly useful as it provides type hinting for methods that are specific to arrays with certain ranks. Additionally, it provides hints at compile time of operations that transform the rank, such as mat_mult and outer_product. This type checking was achieved using the typenum crate and the inclusion of a new Dim struct. Although some parts of the library are a bit uglier thanks to all the trait requirements, I believe that the stabilization is worth it because it will make rapl much more accessible.

I also think keeping the nightly implementation in a secondary branch is a good idea for the possible const generic stabilization in the future.

But before pushing to main I would really appreciate the feedback from others. Please feel free to review and share your thoughts. Your feedback is greatly appreciated and will help us improve the the library.