Replace rand_core's std feature with alloc
#8
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
The
stdfeature fromrand_coreactivates theallocfeature and thegetrandomfeature, which ends up includinggetrandomas a dependency.For WebAssembly targets, it's only possible to obtain entropy if there's an external function that provides that. Because of this,
getrandomonly works if there are Javascript APIs enabled. If there aren't, it fails to build.Solution
The source of entropy isn't needed inside the library, therefore, the
getrandomfeature does not need to be enabled. Therefore it's enough to replace enabling thestdfeature with enabling just theallocfeature.There is a use case in a documentation test, which uses
OsRng. However, it's still not necessary to manually enable thegetrandomfeature indev-dependencies, because thecurve25519-dalekdependency'sdefaultfeature enablesrand_core'sstddependency.Release Notes
I believe this is a backward compatible change. I think there could be a situation where some project has a dependency on
rand_corewithout its default features and onmerlin, and unknowingly usesgetrandom, which with this PR would fail to compile. However, the solution would be to fix therand_coredependency to enable the required feature.