| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
[Misc #18891]
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
https://hackerone.com/reports/1306859
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[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
|
|
|
|
|
| |
Even though it is called "handle" and prefixed with "H", and its
value looks like a handle.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Because why not. There was no use case of rng->get_bytes before this
changeset.
|
|
|
|
| |
__FreeBSD_version is defined in sys/param.h.
|
|
|
|
|
|
| |
* See [Feature #17752]
* Using this to detect them:
git grep -P 'if\s+HAVE' | grep -Pv 'HAVE_LONG_LONG|/ChangeLog|HAVE_TYPEOF'
|
| |
|
| |
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
|
|
|
| |
* 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.
|
| |
|
|
|
|
| |
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]
|
| |
|
| |
|
|
|
|
| |
To enclose the initialization of Random::Base part.
|
|
|
|
|
|
| |
Added `WITH_REAL` versions to `RB_RANDOM_INTERFACE` macros. Also
these macros including "without real" versions no longer contain
the terminator (semicolon and comma).
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* random.c: separate abstract rb_random_t and rb_random_mt_t for
Mersenne Twister implementation.
* include/ruby/random.h: the interface for extensions of Random
class.
* DLL imported symbol reference is not constant on Windows.
* check if properly initialized.
|
|
|
|
|
| |
* random.c (InitVM_Random): introduce abstract super class
Random::Base.
|
|
|
|
|
|
| |
RARRAY_AREF has been a macro for reasons. We might not be able to
change that for public APIs, but why not relax the situation internally
to make it an inline function.
|
|
|
|
|
| |
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
|
|
|
|
| |
To fix build failures.
|
|
|
|
| |
This shall fix compile errors.
|
|
|
|
|
| |
An expression using `static const` value seems not considered as
`static const` by Visual C.
|
|
|
|
| |
And utilize more bits even if DBL_MANT_DIG > 53.
|
| |
|
|
|
| |
Split ruby.h
|
|
|
|
| |
To prevent from leaking the seed data.
|