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

Use rust stable instead of nightly-2020-11-09 ? #141

Closed
twitchyliquid64 opened this issue Jan 15, 2021 · 3 comments
Closed

Use rust stable instead of nightly-2020-11-09 ? #141

twitchyliquid64 opened this issue Jan 15, 2021 · 3 comments

Comments

@twitchyliquid64
Copy link

Heya,

Looks like this builds fine on stable, is there a non-historical reason its pinned to nightly?

Or is it more of a 'we've verified some crypto generates without timing side channels on X version' kinda thing?

Cheers!
Tom

@jrose-signal
Copy link
Contributor

It builds on stable for x86, but not for aarch64, due to the use of intrinsics in the AES-GCM-SIV part. Additionally, cbindgen's support for macros requires nightly as well due to the use of unstable rustc flag --pretty=expanded. Rather than test against two different configurations, we decided to stick with nightly for now.

@twitchyliquid64
Copy link
Author

Sounds good, thanks for the explanation!

@jrose-signal
Copy link
Contributor

jrose-signal commented Aug 10, 2022

Pinning this issue for FAQ purposes! We do now test the Rust crates against stable in CI, but still use nightly as the canonical compiler for several reasons:

  1. All our Rust -> $LANG interface generation relies on the unstable rustc flag -Zunpretty=expanded, either directly or through cbindgen.
  2. The Mac Catalyst build for the Swift package depends on the unstable Cargo flag -Zbuild-std. (There is no Catalyst version of Signal at this time, but we want to keep the option open.)
  3. We want to make sure we're using armv8 intrinsics where relevant for our cryptographic operations. (It's possible these have all been added to stable by now! But because of the other reasons there's no urgency to check.) EDIT (2023-08-24): All of the intrinsics used by the aes and polyval crates are available in stable now.

I believe everything else that depends on unstable flags is minor, and that that's all that's "keeping" us from stable. But (1) and (2) aren't likely to change any time soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants