Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Auto-allocate stack in runtime #260

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

marcbrevoort-cyberhive
Copy link
Contributor

@marcbrevoort-cyberhive marcbrevoort-cyberhive commented May 15, 2024

McEliece keys, in particular, take up a large amount of stack space.

Not only do we currently have to configure this manually for builds for each individual platform,
but since the stack space is set in compile time, this RAM will be held on to indefinitely,
even while no keys are being generated.

This pull request solves both issues by running the KEM key generation in a separate thread.
This allows the stack to be created in runtime, which has two benefits:

  1. Compile time configuration is no longer required and
  2. Rather than taking up memory for the entire duration of the runtime, it is only in use when needed.

Running as before is still supported through a feature flag.

EDIT:

The macos CI build couldn't find libcrypto. I'm not sure why this is but does not seem to be an issue related to this update. I have commented out RUST_MIN_STACK in ci.yml as it is no longer needed.

I have also commented out macos-latest from the OS matrix as it was getting in the way of the windows/ubuntu builds runing their test. Once the build issue has been overcome on your side, this will have to be uncommented again.

@marcbrevoort-cyberhive marcbrevoort-cyberhive changed the title Auto-allocate stack in runtime feat: Auto-allocate stack in runtime May 15, 2024
@marcbrevoort-cyberhive marcbrevoort-cyberhive force-pushed the improvement/auto_stack branch 2 times, most recently from bfb3c06 to 5912b50 Compare July 11, 2024 16:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant