70364 Commits

Author SHA1 Message Date
Samuel Williams
71bbc40ffa Rename to_str -> get_string and add support for encodings. 2021-12-21 12:25:42 +13:00
Samuel Williams
49166fc74a Improved exception usage/classes. 2021-12-21 12:25:42 +13:00
Samuel Williams
71bf5cef75 Fix handling of frozens strings. 2021-12-21 12:25:42 +13:00
Samuel Williams
9de5c4ec76 Fix mapping invalid non-file object. 2021-12-21 12:25:42 +13:00
Burdette Lamar
6ad8cf7071
[DOC] Enhanced RDoc for IO (#5307)
Treated:

    #sync
    #sync=
    #fsync
    #fdatasync
    #fileno
    #pid
    #inspect
    #to_io
2021-12-20 16:28:58 -06:00
David Rodríguez
7bd25b9753 [rubygems/rubygems] Print warning when running potentially problematic rubygems + ruby combinations
https://github.com/rubygems/rubygems/commit/d6df0b7de0

Co-authored-by: André Arko <andre@arko.net>
2021-12-21 06:48:27 +09:00
David Rodríguez
01f95ede0e [rubygems/rubygems] Rename BUNDLE_SPEC_RUN environment variable
The `BUNDLE_` prefix should be reserved to first class settings that
should be listed when running `bundle config`. This one is just a hacky
environment variable that has not corresponding documented setting.

https://github.com/rubygems/rubygems/commit/7e255c5058
2021-12-21 06:48:27 +09:00
David Rodríguez
a350ed4123 [rubygems/rubygems] Remove ancient check
https://github.com/rubygems/rubygems/commit/d647ab5607
2021-12-21 06:48:26 +09:00
Alan Wu
39cf0b5314
Show whether object is garbage in rb_raw_obj_info()
When using `rp(obj)` for debugging during development, it may be
useful to know that an object is soon to be swept. Add a new letter to
the object dump for whether the object is garbage. It's easy to forget
about lazy sweep.
2021-12-20 16:13:34 -05:00
Brandon Fish
8b1b4e384f [rubygems/rubygems] Skip find_in_unresolved_tree test for TruffleRuby due to longer runtime
https://github.com/rubygems/rubygems/commit/36b8fbc508
2021-12-21 04:57:23 +09:00
Jeremy Evans
3bd5f27f73 Remove Class#descendants 2021-12-20 11:02:15 -08:00
Nobuyoshi Nakada
c57ac4c6e0 Fix location of extensions in bundled gems when static-linked-ext
Install bundled gem extension files to the gem extension directory
under DESTDIR, when static-linked-ext as well as non-static case.
2021-12-21 02:01:57 +09:00
zverok
81f08edbd6 [DOC] Document Thread::Backtrace.limit 2021-12-20 08:56:03 -08:00
aycabta
37aea9d798 [ruby/reline] Finalize when exception occurred
https://github.com/ruby/reline/commit/1f8a3aee43

Co-authored-by: Alex Gittemeier <me@a.lexg.dev>
2021-12-21 00:49:03 +09:00
aycabta
c3a3f65b45 [ruby/reline] Split off set_signal_handler method
In some tests, the LineEditor#reset method is always called, but doesn't
need to set the signal handlers there, so cuts it out to a separate
method.

https://github.com/ruby/reline/commit/b143c4f5f9
2021-12-21 00:13:19 +09:00
aycabta
95c61c8d82 [ruby/reline] Remove unnecessary clearing signal handler
https://github.com/ruby/reline/commit/7a758e73dc
2021-12-21 00:13:18 +09:00
git
e54e99bd16 * 2021-12-21 [ci skip] 2021-12-21 00:11:19 +09:00
Kazuki Yamaguchi
6b67f06312 test/fiber/test_io_buffer.rb: fix file descriptor leaks
I got the warning while running "make test-all":

	Leaked file descriptor: TestFiberIOBuffer#test_write_nonblock: 9 : #<UNIXSocket:fd 9>
	Closed file descriptor: TestFiberIOBuffer#test_read_write_blocking: 9
	Leaked file descriptor: TestFiberIOBuffer#test_timeout_after: 10 : #<UNIXSocket:fd 10>
	Closed file descriptor: TestFiberIOBuffer#test_read_nonblock: 10
2021-12-21 00:05:24 +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.

https://github.com/ruby/openssl/commit/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.

https://github.com/ruby/openssl/commit/ccdb6f7bfa
2021-12-20 23:42:04 +09:00
Kazuki Yamaguchi
2df917ed4f [ruby/openssl] ssl: update test_options_disable_versions
Use the combination of TLS 1.2 and TLS 1.3 instead of TLS 1.1 and TLS
1.2 so that will the test case will be run on latest platforms.

https://github.com/ruby/openssl/commit/e168df0f35
2021-12-20 23:42:04 +09:00
Kazuki Yamaguchi
15eefd30ad [ruby/openssl] ssl: update test_accept_errors_include_peeraddr test case
Use a different invalid data example to prevent SSLSocket#accept from
reaching EOF.

https://github.com/ruby/openssl/commit/2e089c1916
2021-12-20 23:42:03 +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.

https://github.com/ruby/openssl/commit/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.

https://github.com/ruby/openssl/commit/69a27d8de4
2021-12-20 23:42:03 +09:00
Kazuki Yamaguchi
79a6f4349d [ruby/openssl] hmac: skip test_dup on OpenSSL 3.0 for now
EVP_MD_CTX_copy() doesn't seem to work as intended on HMAC EVP_MD_CTX
on OpenSSL 3.0.0 and causes a double free. I haven't found the root
problem yet, but let's skip the test case for now.

https://github.com/ruby/openssl/commit/4699581639
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.

https://github.com/ruby/openssl/commit/6a60c7b2e7
2021-12-20 23:42:02 +09:00
Kazuki Yamaguchi
cfcdd2b4bd [ruby/openssl] cipher: update test_ciphers
Do not attempt to actually use all algorithms. Not all algorithms listed
in OpenSSL::Cipher.ciphers are always available.

https://github.com/ruby/openssl/commit/91d04f991f
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.

https://github.com/ruby/openssl/commit/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.

https://github.com/ruby/openssl/commit/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.

https://github.com/ruby/openssl/commit/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.

https://github.com/ruby/openssl/commit/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.

https://github.com/ruby/openssl/commit/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.

https://github.com/ruby/openssl/commit/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.

https://github.com/ruby/openssl/commit/74f6c61756
2021-12-20 23:42:01 +09:00
Kazuki Yamaguchi
02a58fbfd1 [ruby/openssl] pkey: do not check NULL argument in ossl_pkey_new()
Passing NULL to ossl_pkey_new() makes no sense in the first place, and
in fact it is ensured not to be NULL in all cases.

https://github.com/ruby/openssl/commit/316cb2a41f
2021-12-20 23:42:00 +09:00
Kazuki Yamaguchi
6ef0f272eb [ruby/openssl] pkey: use OSSL_DECODER to load encrypted PEM on OpenSSL 3.0
OpenSSL 3.0 has rewritten routines to load pkeys (PEM_read_bio_* and
d2i_* functions) around the newly introduced OSSL_DECODER API.

This comes with a slight behavior change. They now decrypt and parse
each encountered PEM block, then check the kind of the block. This used
to be the reverse: they checked the PEM header to see the kind, and then
decrypted the content. This means that the password callback may now be
called repeatedly.

Let's use the OSSL_DECODER API directly on OpenSSL 3.0 so that the
return value from the password callback will be reused automatically.

https://github.com/ruby/openssl/commit/a84ea531bb
2021-12-20 23:42:00 +09:00
Kazuki Yamaguchi
582606dc58 [ruby/openssl] pkey: test parsing concatenated PEM string
PEM-encoded private keys are sometimes stored together with irrelevant
PEM blocks, such as the corresponding X.509 certificate.

PEM_read_bio_*() family automatically skips unknown PEM blocks, but on
OpenSSL 3.0 we will be using the new OSSL_DECODER API instead due to
some breaking changes around the password callback.

Let's add a test case so that we won't break the current behavior.

https://github.com/ruby/openssl/commit/8c185e0ae5
2021-12-20 23:42:00 +09:00
Yusuke Endoh
1c72c95d99 test/ruby/test_ast.rb: Avoid a "method redefined" warning 2021-12-20 19:45:25 +09:00
Nobuyoshi Nakada
26c9ef6a89
[DOC] Skip tests if only NEWS.md changed 2021-12-20 19:33:58 +09:00
git
7700e9a5cc Update bundled gems list at 2021-12-20 2021-12-20 09:50:16 +00:00
Yusuke Endoh
d2e63af474 Update TypeProf to 0.21.0 2021-12-20 18:36:50 +09:00
Hiroshi SHIBATA
87b968c903
[ruby/psych] psych depends stringio only CRuby
https://github.com/ruby/psych/commit/e7bbf26cb2
2021-12-20 18:26:58 +09:00
git
4db88173d8 Update default gems list at 706c7a27fa00f72ec4f5d2f3af8151 [ci skip] 2021-12-20 09:26:42 +00:00
Hiroshi SHIBATA
706c7a27fa [ruby/psych] Bump version to 4.0.3
https://github.com/ruby/psych/commit/75ab76e788
2021-12-20 18:25:50 +09:00
Hiroshi SHIBATA
24f7a41aed
Update logger version on NEWS 2021-12-20 18:02:19 +09:00
Hiroshi SHIBATA
e22c8e63e1 [ruby/logger] Bump version to 1.5.0
https://github.com/ruby/logger/commit/cdeddb2f67
2021-12-20 18:01:50 +09:00
aycabta
7b0f2d618e [ruby/irb] Remove unnecessary space in regexp
https://github.com/ruby/irb/commit/c24a8e2483
2021-12-20 16:19:37 +09:00
aycabta
b96ef7684c [ruby/irb] Add East Asian Ambiguous Width to irb_info command
https://github.com/ruby/irb/commit/4cade4b7e5
2021-12-20 16:19:36 +09:00
git
145f7c094f Update bundled gems list at 2021-12-20 2021-12-20 07:05:44 +00:00
aycabta
6ccc15c2ab [ruby/reline] Rename an unused variable name for CI
https://github.com/ruby/reline/commit/ba97f3bd87
2021-12-20 15:52:51 +09:00