Age | Commit message (Collapse) | Author |
---|
| `len` is always at least 1 here. Notes: Merged: https://github.com/ruby/ruby/pull/12215 |
| When loading a crafted marshal data of Random, a pointer to an illegal address was created. I don't think there is any harm since the data is normalized before access, but just to be safe, I add a check to make it an error. Notes: Merged: https://github.com/ruby/ruby/pull/12200 |
| Do not retry `fill_random_bytes` in `Init_RandomSeedCore`, just after it failed first. In other places, `rand_init_default` and `random_seed`, no more tweeks needed once it succeeded |
| Also use a typed data. |
| This `st_table` is used to both mark and pin classes defined from the C API. But `vm->mark_object_ary` already does both much more efficiently. Currently a Ruby process starts with 252 rooted classes, which uses `7224B` in an `st_table` or `2016B` in an `RArray`. So a baseline of 5kB saved, but since `mark_object_ary` is preallocated with `1024` slots but only use `405` of them, it's a net `7kB` save. `vm->mark_object_ary` is also being refactored. Prior to this changes, `mark_object_ary` was a regular `RArray`, but since this allows for references to be moved, it was marked a second time from `rb_vm_mark()` to pin these objects. This has the detrimental effect of marking these references on every minors even though it's a mostly append only list. But using a custom TypedData we can save from having to mark all the references on minor GC runs. Addtionally, immediate values are now ignored and not appended to `vm->mark_object_ary` as it's just wasted space. |
| |
| when the RUBY_FREE_ON_SHUTDOWN environment variable is set, manually free memory at shutdown. Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Co-authored-by: Peter Zhu <peter@peterzhu.ca> |
| * Make its usage more obvious (by providing more detailed examples); * Include mention of it into Random itself; * Small cleanups of docs. Notes: Merged: https://github.com/ruby/ruby/pull/5434 |
| Distinguish initialization by single word from initialization by array. |
| |
| |
| |
| [Misc #18891] Notes: Merged: https://github.com/ruby/ruby/pull/6094 |
| |
| Notes: Merged: https://github.com/ruby/ruby/pull/5382 |
| Notes: Merged: https://github.com/ruby/ruby/pull/5098 |
| |
| |
| |
| https://hackerone.com/reports/1306859 Notes: Merged: https://github.com/ruby/ruby/pull/5239 |
| |
| This is a follow-up for commit 265c0022390e ("Do not allocate ractor-local storage in dfree function during GC", 2021-02-09). The comparison with the default rb_random_mt_t is useless in the first place, since it is never equal: no actual Random object is associated with it. [Bug #17653] https://bugs.ruby-lang.org/issues/17653 Notes: Merged: https://github.com/ruby/ruby/pull/4224 |
| [BCryptGenRandom] is available since Windows Vista / Windows Server 2008. Regarding [CryptGenRandom]: > This API is deprecated. New and existing software should start > using Cryptography Next Generation APIs. Microsoft may remove > this API in future releases. [BCryptGenRandom]: https://docs.microsoft.com/en-us/windows/win32/api/bcrypt/nf-bcrypt-bcryptgenrandom [CryptGenRandom]: https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptgenrandom Notes: Merged: https://github.com/ruby/ruby/pull/4924 |
| Even though it is called "handle" and prefixed with "H", and its value looks like a handle. |
| Notes: Merged: https://github.com/ruby/ruby/pull/4821 |
| Notes: Merged: https://github.com/ruby/ruby/pull/4783 |
| Notes: Merged: https://github.com/ruby/ruby/pull/4762 |
| Because why not. There was no use case of rng->get_bytes before this changeset. Notes: Merged: https://github.com/ruby/ruby/pull/4602 |
| __FreeBSD_version is defined in sys/param.h. Notes: Merged: https://github.com/ruby/ruby/pull/4457 |
| * See [Feature #17752] * Using this to detect them: git grep -P 'if\s+HAVE' | grep -Pv 'HAVE_LONG_LONG|/ChangeLog|HAVE_TYPEOF' Notes: Merged: https://github.com/ruby/ruby/pull/4428 |
| |
| Notes: Merged: https://github.com/ruby/ruby/pull/4289 |
| Security/Authorization.h defines AuthorizationExternalForm by using clang extension which allows variably modified types in a file scope. As we just need high-level accessors only, include Security/SecRandom.h instead. |
| |
| https://man.openbsd.org/getentropy Try to fix https://rubyci.s3.amazonaws.com/openbsd-current/ruby-master/log/20210118T023008Z.fail.html.gz ``` compiling random.c random.c:53:11: fatal error: 'sys/random.h' file not found # include <sys/random.h> ^~~~~~~~~~~~~~ 1 error generated. ``` |
| using getentropy for seeding, reading 256 bytes at a time to avoid the EIO errno since this is the maximum. Notes: Merged: https://github.com/ruby/ruby/pull/4081 |
| |
| |
| Notes: Merged: https://github.com/ruby/ruby/pull/3966 |
| * Closes [Feature #17351]. |
| * Random::DEFAULT is no longer a Random instance, and referencing it is more confusing than helpful. Related to [Feature #17351] |
| To manage ractor-local data for C extension, the following APIs are defined. * rb_ractor_local_storage_value_newkey * rb_ractor_local_storage_value * rb_ractor_local_storage_value_set * rb_ractor_local_storage_ptr_newkey * rb_ractor_local_storage_ptr * rb_ractor_local_storage_ptr_set At first, you need to create a key of storage by rb_ractor_local_(value|ptr)_newkey(). For ptr storage, it accepts the type of storage, how to mark and how to free with ractor's lifetime. rb_ractor_local_storage_value/set are used to access a VALUE and rb_ractor_local_storage_ptr/set are used to access a pointer. random.c uses this API. Notes: Merged: https://github.com/ruby/ruby/pull/3822 |
| |
| default_rand can points a Bignum seed, so it should be marked. |
| Random generators are not Ractor-safe, so we need to prepare per-ractor default random genearators. This patch set `Random::DEFAULT = Randm` (not a Random instance, but the Random class) and singleton methods like `Random.rand()` use a per-ractor random generator. [Feature #17322] Notes: Merged: https://github.com/ruby/ruby/pull/3813 |
| |
| |
| To enclose the initialization of Random::Base part. Notes: Merged: https://github.com/ruby/ruby/pull/3024 |
| Added `WITH_REAL` versions to `RB_RANDOM_INTERFACE` macros. Also these macros including "without real" versions no longer contain the terminator (semicolon and comma). Notes: Merged: https://github.com/ruby/ruby/pull/3024 |
| Notes: Merged: https://github.com/ruby/ruby/pull/3024 |