Skip to content
This repository has been archived by the owner on Mar 11, 2024. It is now read-only.

New Roadmap for Ursa #223

Open
9 tasks
appetrosyan opened this issue Feb 19, 2023 · 5 comments
Open
9 tasks

New Roadmap for Ursa #223

appetrosyan opened this issue Feb 19, 2023 · 5 comments
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@appetrosyan
Copy link
Contributor

appetrosyan commented Feb 19, 2023

After several meetings and deliberation with @hartm et al, we settled on the following interim plan for the version 1.0

  • Update all dependencies, handling semver incompatibilities. ([feature] #224: Ursa bump to edition 2021 and trivial dependencies #225, TBD)
  • Replace fail with anyhow and std::error::Error-based workflows.
  • (Optional) only if easy, provisions for no_std.
  • (Optional) Provisions for plugging into miette and more informative error handling projects
  • Removal of feature gates for optional components. LTO is much better at eliminating unused code. The shared object produced must always include every algorithm.
  • Plugin system, such that algorithms are fully self-contained crates. This allows depending on these crates directly for faster compile times, simplifies feature testing, and ensures that algorithms are sufficiently decoupled.
  • Refactoring + linting + CI improvements.
  • CD for multiple packages and architectures. Consider using Aries runners for Apple silicon (aarch64 with x86 extensions, without SVE).
  • extern C, WASM, node, Python (PYO3) and Java interop.
@appetrosyan appetrosyan added the enhancement New feature or request label Feb 19, 2023
@appetrosyan appetrosyan added this to the v1.0 milestone Feb 19, 2023
@appetrosyan appetrosyan self-assigned this Feb 19, 2023
@appetrosyan
Copy link
Contributor Author

@mikelodder7 I don't want to break the codebase too much, so I would appreciate your input before I begin executing on this plan, particularly in relation to feature gates.

@swcurran
Copy link

Not sure if this fits at the level you are talking, but CI that produces artifacts to enable creating container images targetting multiple architectures — including ARM — would be helpful. A CI that enables a trivial change to automatically produce new release artifacts is important.

@mikelodder7
Copy link
Contributor

This proposal is similar to the one I have in mind. Maybe it doesn't need to be here, but a provision for language wrappers like c_ffi, wasm, node, python, and java as needed. Not sure if we need no_std having done a lot of it myself. The no_std rule should be if it doesn't complicate things then fine do it, otherwise it should be optional.

@mikelodder7
Copy link
Contributor

mikelodder7 commented Feb 21, 2023

@swcurran not sure those artifacts are helpful except in the language wrapper case. Also if we're separating primitives individually, and you want a single library that only contains what you need, that requires a separate CI per configuration. Something to keep in mind.

@appetrosyan
Copy link
Contributor Author

I've updated the roadmap with the proposed tasks. We should be able to get these done relatively soon.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Development

No branches or pull requests

3 participants