mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 09:24:36 +00:00
* Fix #19052; [backport:1.6.0]
Adds a compile flag to avoid a getrandom syscall, fixing #19052.
This is neccesary when the getrandom syscall is missing, as noted in #19052, particularly in kernel versions < 3.17 when getrandom was introduced. Specifically relevant is this is missing from kernel 3.10, which is the supported kernel throughout RHEL 7 and CentOS 7, which is widely used at many organizations. Without this, versions of nim that include sysrand (i.e. versions >= 1.6.0) will not compile without modification, however with this change a compile flag may be used to fall back using /dev/urandom as done with any unknown Posix OS (preferred here as a fallback since it already supplies a cryptographically secure PRNG and existing code deals with entropy pool init, etc).
The change is placed behind a compile flag, as discussed in github ticket #19052 (summed up here):
* First, I can't seem to catch that a importc such as SYS_getrandom is declared without using it (the declared proc returns true, but compiler throws an undeclared identifier flag when referencing it).
* Second, it seemed preferable to be behaviorally explicit vs implicit when considering this is intended to be a cryptographically secure PRNG.
* Third, if I intend to compile on a kernel >= 3.17 while running the binary on at least one system < 3.17, I'll want to be able to target this without relying on a compile time determination if the getrandom syscall is available.
* Documenting compile flag for -d:nimNoGetRandom and adding changelog entry
Related to #19052 and comments in PR #19053. Also created a new changelog file since none currently exists.
Co-authored-by: Timothy Alexander <talexander@midwestlabs.com>
(cherry picked from commit dde556665a)
Update changelog
After each release, call:
git mv changelog.md changelogs/changelog_0_19_0.md # use correct version
cp changelogs/changelog_X_XX_X.md changelog.md
git add changelog.md
Recent changelogs are saved here (with their git history)
Older changelogs are stored in https://github.com/nim-lang/website
source files:
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2009-12-21-version-086-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2010-03-14-version-088-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2010-10-20-version-0810-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2011-07-10-version-0812-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2012-02-09-version-0814-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2012-09-23-version-090-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2013-05-20-version-092-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2014-04-21-version-094-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2014-10-19-version-096-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2014-12-29-version-0102-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2015-04-30-version-0110-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2015-05-04-version-0112-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2015-10-27-version-0120-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2016-01-18-version-0130-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2016-06-07-version-0140-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2016-06-09-version-0142-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2016-09-30-version-0150-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2016-10-23-version-0152-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2017-01-08-version-0160-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2017-05-17-version-0170-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2017-09-07-version-0172-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2018-03-01-version-0180-released.md
- https://github.com/nim-lang/website/blob/master/jekyll/_posts/2018-09-26-version-0190-released.md
urls:
- https://nim-lang.org/blog/2009/12/21/version-086-released.html
- https://nim-lang.org/blog/2010/03/14/version-088-released.html
- https://nim-lang.org/blog/2010/10/20/version-0810-released.html
- https://nim-lang.org/blog/2011/07/10/version-0812-released.html
- https://nim-lang.org/blog/2012/02/09/version-0814-released.html
- https://nim-lang.org/blog/2012/09/23/version-090-released.html
- https://nim-lang.org/blog/2013/05/20/version-092-released.html
- https://nim-lang.org/blog/2014/04/21/version-094-released.html
- https://nim-lang.org/blog/2014/10/19/version-096-released.html
- https://nim-lang.org/blog/2014/12/29/version-0102-released.html
- https://nim-lang.org/blog/2015/04/30/version-0110-released.html
- https://nim-lang.org/blog/2015/05/04/version-0112-released.html
- https://nim-lang.org/blog/2015/10/27/version-0120-released.html
- https://nim-lang.org/blog/2016/01/18/version-0130-released.html
- https://nim-lang.org/blog/2016/06/07/version-0140-released.html
- https://nim-lang.org/blog/2016/06/09/version-0142-released.html
- https://nim-lang.org/blog/2016/09/30/version-0150-released.html
- https://nim-lang.org/blog/2016/10/23/version-0152-released.html
- https://nim-lang.org/blog/2017/01/08/version-0160-released.html
- https://nim-lang.org/blog/2017/05/17/version-0170-released.html
- https://nim-lang.org/blog/2017/09/07/version-0172-released.html
- https://nim-lang.org/blog/2018/03/01/version-0180-released.html
- https://nim-lang.org/blog/2018/09/26/version-0190-released.html