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 <[email protected]>
Co-authored-by: Peter Zhu <[email protected]>
|
|
* 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
|