Commit graph

8301 commits

Author SHA1 Message Date
NARUSE, Yui
82c8acbcfd Prevent installing zlib library 2021-12-25 21:01:43 +09:00
Nobuyoshi Nakada
8247b193c0
[ruby/io-console] bump up to 0.5.10
806c65e22b
2021-12-25 18:38:51 +09:00
Nobuyoshi Nakada
9368fa6c30
[ruby/io-console] No longer support dead versions
e9478509e9
2021-12-25 18:38:51 +09:00
Kazuki Yamaguchi
efce9ecf72 [ruby/openssl] Ruby/OpenSSL 3.0.0
bff4080091
2021-12-25 03:31:59 +09:00
Samuel Williams
548c8f5f7a
Prefer to use RTEST when checking result of rb_io_wait. (#5341)
* Prefer to use RTEST when checking result of `rb_io_wait`.

* Consistently use false for signifying no events ready.
2021-12-25 02:26:06 +13:00
Akinori MUSHA
67aab88a22 Import digest v3.1.0 from ruby/digest 2021-12-24 20:06:23 +09:00
Hiroshi SHIBATA
106a0e5195 [ruby/readline-ext] Bump version to 0.1.4
6f86713b19
2021-12-24 17:53:52 +09:00
Kenta Murata
9ccfc78346 [ruby/bigdecimal] Remove unused variable
ac7daa5f15
2021-12-24 09:44:23 +09:00
Kenta Murata
65d35502bd
[ruby/bigdecimal] Version 3.1.1
2ef67c2cc7
2021-12-24 02:29:02 +09:00
Kenta Murata
a1d9fbef05
[ruby/bigdecimal] Fix the result precision of BigDecimal#divmod
a32f6cb9e2
2021-12-24 02:29:01 +09:00
Kenta Murata
680a4ebb3c
[ruby/bigdecimal] Version 3.1.0
c3453d2b97
2021-12-24 02:29:01 +09:00
Burdette Lamar
0262f34905
[ruby/bigdecimal] Enhanced RDoc for BigDecimal (https://github.com/ruby/bigdecimal/pull/209)
* Enhanced RDoc for BigDecimal

* Update ext/bigdecimal/bigdecimal.c

Remove the instance number of `Float::DIG`.

* Update ext/bigdecimal/bigdecimal.c

Add BigDecimal call-seq without ndigits.

* Update ext/bigdecimal/bigdecimal.c

Replace the word sum with value or result in the description of BigDecimal().

* Update ext/bigdecimal/bigdecimal.c

Remove the instance value of Float::DIG.

* Update ext/bigdecimal/bigdecimal.c

Fix mis-description of precision

* Update ext/bigdecimal/bigdecimal.c

Fix the description of precision determination

* Update ext/bigdecimal/bigdecimal.c

Add the description of the precision in the Rational case.

acabb132a4

Co-authored-by: Kenta Murata <3959+mrkn@users.noreply.github.com>
2021-12-24 02:29:01 +09:00
Kenta Murata
79712fc083
[ruby/bigdecimal] Let BigDecimal#quo accept precision
Fix GH-214.

13e0e93f37
2021-12-24 02:29:00 +09:00
Kenta Murata
0b8638cd74
[ruby/bigdecimal] Add TODO comment
ef9cf4e69e
2021-12-24 02:29:00 +09:00
Kenta Murata
98918209b7
[ruby/bigdecimal] Allow passing both float and precision in BigDecimal#div
Fix GH-212.

900bb7fcf5
2021-12-24 02:29:00 +09:00
Jean Boussier
d0897e3f3a
[ruby/bigdecimal] Improve extconf to allow using bigdecimal as a git gem
e.g.
```
gem "bigdecimal", github: "ruby/bigdecimal"
```

It would fail because bundler regenerates the `gemspec`,
so `bigdecimal_version` is gone.

bccaa66f2c
2021-12-24 02:28:59 +09:00
Kenta Murata
84ae7a5df9
[ruby/bigdecimal] Add BigDecimal#precision_scale
c019caeaba
2021-12-24 02:28:59 +09:00
Kenta Murata
ea713009ba
[ruby/bigdecimal] [Doc] Add documentation of BigDecimal#n_significant_digits
ceaf16b03e
2021-12-24 02:28:59 +09:00
Kenta Murata
aca96f7ec7
[ruby/bigdecimal] Add BigDecimal#scale
Fixes GH-198.

4fbec55680
2021-12-24 02:28:58 +09:00
BurdetteLamar
0c63aa11bc
[ruby/bigdecimal] Set rounding mode in example
8fc83dd2fe
2021-12-24 02:28:58 +09:00
BurdetteLamar
a8243d07e1
[ruby/bigdecimal] Set rounding mode in example
42c999f728
2021-12-24 02:28:57 +09:00
BurdetteLamar
de5c14d4d8
[ruby/bigdecimal] Enhanced RDoc for selected methods
0de9298d15
2021-12-24 02:28:57 +09:00
BurdetteLamar
e043829a7f
[ruby/bigdecimal] Enhanced RDoc for selected methods
6139ea1092
2021-12-24 02:28:57 +09:00
Kenta Murata
d905abb457
[ruby/bigdecimal] Fix BigDecimal#precision for single DECDIG case
Fix GH-205

7d198394a2
2021-12-24 02:28:56 +09:00
Kenta Murata
38e98cbdb7
[ruby/bigdecimal] Keep obj-to-Real link when VpReallocReal returns different pointer
252748de17
2021-12-24 02:28:56 +09:00
Kenta Murata
75f552e973
[ruby/bigdecimal] Fix the precision of the adjusted quotient
8dc8cd339d
2021-12-24 02:28:56 +09:00
Kenta Murata
7b2cfce543
[ruby/bigdecimal] Let BigDecimal_DoDivmod use the same precision calculation as BigDecimal_divide
11cb2c8840
2021-12-24 02:28:55 +09:00
Kenta Murata
e1265c8198
[ruby/bigdecimal] Use larger precision in divide for irrational or recurring results
Just in case for irrational or recurring results, the precision of the
quotient is set to at least more than 2*Float::DIG plus alpha.

[Bug #13754] [Fix GH-94]

99442c75d3
2021-12-24 02:28:55 +09:00
Kenta Murata
8ee8ac6423
[ruby/bigdecimal] Fix trailing zeros handling in rb_uint64_convert_to_BigDecimal
Fix GH-192

eebc98b85a
2021-12-24 02:28:55 +09:00
BurdetteLamar
ed7f4c24d7
[ruby/bigdecimal] Respond to review
f528a0006e
2021-12-24 02:28:54 +09:00
BurdetteLamar
ed8ec5dcb3
[ruby/bigdecimal] Respond to review
4eadcdf0a6
2021-12-24 02:28:54 +09:00
BurdetteLamar
44acab76af
[ruby/bigdecimal] Respond to review
6d69422e37
2021-12-24 02:28:53 +09:00
BurdetteLamar
973e508472
[ruby/bigdecimal] Respond to review for #precision
681cd2d81d
2021-12-24 02:28:53 +09:00
BurdetteLamar
5888d3030d
[ruby/bigdecimal] Enhanced RDoc for bigdecimal.c
3a35f92f8b
2021-12-24 02:28:53 +09:00
BurdetteLamar
01b2ccaa95
[ruby/bigdecimal] Enhanced RDoc for bigdecimal.c
31a7a37426
2021-12-24 02:28:52 +09:00
Jean Boussier
ec478d947f
[ruby/bigdecimal] Fix negative Bignum conversion
Introduced in 4792a917d8

`rb_absint_size` return the number of bytes needed to fit
the absolute integer, but negative integers need the sign, so one more
bit, and potentially one more byte.

0f3d5d0eb7
2021-12-24 02:28:51 +09:00
Olle Jonsson
03507498b6
[ruby/bigdecimal] VpCheckException: improve grammar
I added a space before the parenthesis, too.

159af10b17
2021-12-24 02:28:47 +09:00
Nobuyoshi Nakada
40a1af6151
Install ruby/digest.h when from ext/digest 2021-12-23 20:12:45 +09:00
Kazuki Yamaguchi
ac757b218c [ruby/openssl] pkey: use EVP_PKEY_CTX_new_from_name() on OpenSSL 3.0
Replace EVP_PKEY_CTX_new_id() with the new EVP_PKEY_CTX_new_from_name()
which takes the algorithm name in a string instead of in an NID.

d6535d13d1
2021-12-20 23:42:04 +09:00
Kazuki Yamaguchi
61e426ae05 [ruby/openssl] pkey: assume a pkey always has public key components on OpenSSL 3.0
OpenSSL 3.0's EVP_PKEY_get0() returns NULL for provider-backed pkeys.
This causes segfault because it was supposed to never return NULL
before.

We can't check the existence of public key components in this way on
OpenSSL 3.0. Let's just skip it for now.

ccdb6f7bfa
2021-12-20 23:42:04 +09:00
Kazuki Yamaguchi
0b3482c0e7 [ruby/openssl] ssl: add constants for new SSL_OP_* flags
Add all SSL_OP_* constants defined in OpenSSL 3.0.0 which are not
specific to DTLS.

b1ee2f23b2
2021-12-20 23:42:03 +09:00
Kazuki Yamaguchi
b2fb503dab [ruby/openssl] engine: disable OpenSSL::Engine on OpenSSL 3.0
The entire ENGINE API is deprecated in OpenSSL 3.0 in favor of the new
"Provider" concept.

OpenSSL::Engine will not be defined when compiled with OpenSSL 3.0.
We would need a way to interact with providers from Ruby programs, but
since the concept is completely different from the ENGINE API, it will
not be through the current OpenSSL::Engine interface.

69a27d8de4
2021-12-20 23:42:03 +09:00
Kazuki Yamaguchi
c1a7c6df18 [ruby/openssl] hmac: fix wrong usage of EVP_DigestSignFinal()
According to the manpage, the "siglen" parameter must be initialized
beforehand.

6a60c7b2e7
2021-12-20 23:42:02 +09:00
Kazuki Yamaguchi
8ebf597885 [ruby/openssl] pkey: deprecate PKey#set_* methods
OpenSSL 3.0 made EVP_PKEY immutable. This means we can only have a const
pointer of the low level struct and the following methods can no longer
be provided when linked against OpenSSL 3.0:

 - OpenSSL::PKey::RSA#set_key
 - OpenSSL::PKey::RSA#set_factors
 - OpenSSL::PKey::RSA#set_crt_params
 - OpenSSL::PKey::DSA#set_pqg
 - OpenSSL::PKey::DSA#set_key
 - OpenSSL::PKey::DH#set_pqg
 - OpenSSL::PKey::DH#set_key
 - OpenSSL::PKey::EC#group=
 - OpenSSL::PKey::EC#private_key=
 - OpenSSL::PKey::EC#public_key=

There is no direct replacement for this functionality at the moment.
I plan to introduce a wrapper around EVP_PKEY_fromdata(), which takes
all key components at once to construct an EVP_PKEY.

6848d2d969
2021-12-20 23:42:02 +09:00
Kazuki Yamaguchi
b93ae54258 [ruby/openssl] pkey/ec: deprecate OpenSSL::PKey::EC#generate_key!
OpenSSL::PKey::EC#generate_key! will not work on OpenSSL 3.0 because
keys are made immutable. Users should use OpenSSL::PKey.generate_key
instead.

5e2e66cce8
2021-12-20 23:42:02 +09:00
Kazuki Yamaguchi
0d698be04f [ruby/openssl] pkey/dh: deprecate OpenSSL::PKey::DH#generate_key!
OpenSSL::PKey::DH#generate_key! will not work on OpenSSL 3.0 because
keys are made immutable. Users should use OpenSSL::PKey.generate_key
instead.

8ee6a582c7
2021-12-20 23:42:02 +09:00
Kazuki Yamaguchi
50b90c5fc3 [ruby/openssl] pkey/ec: avoid using EC#public_key= in EC#dh_compute_key
Similarly to DH#compute_key, work around it by constructing a
SubjectPublicKeyInfo. This should be considered as a temporary
implementation.

fc9aabc18d
2021-12-20 23:42:01 +09:00
Kazuki Yamaguchi
dc3f37c6cc [ruby/openssl] pkey/dh: avoid using DH#set_key in DH#compute_key
DH#set_key will not work on OpenSSL 3.0 because keys are immutable.
For now, let's reimplement DH#compute_key by manually constructing a
DER-encoded SubjectPublicKeyInfo structure and feeding it to
OpenSSL::PKey.read.

Eventually, we should implement a new method around EVP_PKEY_fromdata()
and use it instead.

46ca47060c
2021-12-20 23:42:01 +09:00
Kazuki Yamaguchi
df6589e418 [ruby/openssl] pkey: use EVP_PKEY_dup() if available
We can use it to implement OpenSSL::PKey::PKey#initialize_copy. This
should work on all key types, not just DH/DSA/EC/RSA types.

66cd8cbaaf
2021-12-20 23:42:01 +09:00
Kazuki Yamaguchi
c1a36ebfda [ruby/openssl] pkey: allocate EVP_PKEY on #initialize
Allocate an EVP_PKEY when the content is ready: when #initialize
or #initialize_copy is called, rather than when a T_DATA is allocated.
This is more natural because the lower level API has been deprecated
and an EVP_PKEY is becoming the minimum unit of handling keys.

74f6c61756
2021-12-20 23:42:01 +09:00