summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-04-03* 2021-04-03 [ci skip]git
2021-04-03[ruby/irb] process multi-line pastes as a single entityCody Cutrer
this allows pasting leading-dot chained methods correctly: ```ruby class A def a; self; end def b; true; end end a = A.new a .a .b ``` will properly return `true` instead of erroring on the `.a` line: ``` irb(main):001:1* class A irb(main):002:1* def a; self; end irb(main):003:0> end irb(main):004:0* irb(main):005:0> a = A.new irb(main):006:0* irb(main):007:0> a irb(main):008:0> .a irb(main):009:0> .a => #<A:0x00007f984211fbe8> ``` https://github.com/ruby/irb/commit/45aeb52575
2021-04-02[ruby/reline] Reset @rest_height when clear screenaycabta
https://github.com/ruby/reline/commit/3a7019b0d5
2021-04-02[ruby/irb] Add show_source commandTakashi Kokubun
https://github.com/ruby/irb/commit/108cb04352
2021-04-02Fill the ring-buffer with the fallback valueNobuyoshi Nakada
Fill with the pointer to the root position, instead of zero and comparing later. Also suppress a false warning by Visual C++. ``` file.c(4759): warning C4090: 'function': different 'const' qualifiers ``` Notes: Merged: https://github.com/ruby/ruby/pull/4348
2021-04-02[ruby/irb] Colorize `__END__` as keywordNobuyoshi Nakada
https://github.com/ruby/irb/commit/9b84018311
2021-04-02fix return from orphan Proc in lambdaKoichi Sasada
A "return" statement in a Proc in a lambda like: `lambda{ proc{ return }.call }` should return outer lambda block. However, the inner Proc can become orphan Proc from the lambda block. This "return" escape outer-scope like method, but this behavior was decieded as a bug. [Bug #17105] This patch raises LocalJumpError by checking the proc is orphan or not from lambda blocks before escaping by "return". Most of tests are written by Jeremy Evans https://github.com/ruby/ruby/pull/4223 Notes: Merged: https://github.com/ruby/ruby/pull/4347
2021-04-01[Doc] Update to FrozenError from RuntimeError in Object#freezeKenichi Kamiya
Notes: Merged: https://github.com/ruby/ruby/pull/4346
2021-04-02[ruby/irb] SIGINT should raise Interrupt after IRB sessionKoichi Sasada
https://github.com/ruby/irb/commit/5832cfe75b
2021-04-02* 2021-04-02 [ci skip]git
2021-04-02[ruby/irb] Suppress verbose messages in the parallel testNobuyoshi Nakada
`:VERBOSE` flag needs to be set prior to `IRB::Irb.new`. https://github.com/ruby/irb/commit/78604682d9
2021-04-01Suppress a warningNobuyoshi Nakada
Loop variables of `list_for_each` need to be initialized.
2021-04-01coroutine: Darwin on ARM64 needs alignment of 2^2David CARLIER
2021-04-01* 2021-04-01 [ci skip]git
2021-04-01Refactored sub-seconds normalizationsNobuyoshi Nakada
* separated argument to `timespec2timew` from `timespec` to seconds and nano-seconds. * unified nano-seconds and micro-seconds normalizations. Notes: Merged: https://github.com/ruby/ruby/pull/4343 Merged-By: nobu <nobu@ruby-lang.org>
2021-03-31Use EnvUtil.under_gc_stressNobuyoshi Nakada
2021-03-31skip marking for uninitialized imemo_env.Koichi Sasada
RUBY_INTERNAL_EVENT_NEWOBJ can expose uninitialized imemo_env objects and marking it will cause critical error. This patch skips marking on uninitialized imemo_env. See: http://rubyci.s3.amazonaws.com/centos7/ruby-master/log/20210329T183003Z.fail.html.gz Shortest repro-code is provided by mame-san. Notes: Merged: https://github.com/ruby/ruby/pull/4342
2021-03-31[ruby/openssl] Use #ifdef consistently for HAVE_RB_EXT_RACTOR_SAFETom Stuart
We previously used a mix of both `#if` and `#ifdef`, but the latter is more reliable because it will still work if the macro is undefined. https://github.com/ruby/openssl/commit/e4a622e67e
2021-03-31[ruby/openssl] Fix OpenSSL::Engine build on DebianTom Stuart
On Debian 9 (“stretch”) the `OPENSSL_NO_STATIC_ENGINE` macro is not defined, which causes all the `#if HAVE_ENGINE_LOAD_…` directives to fail with `error: 'HAVE_ENGINE_LOAD_…' is not defined, evaluates to 0 [-Werror,-Wundef]` while building TruffleRuby. We can accomplish the same thing with `#ifdef`, which (of course) works fine when the `HAVE_ENGINE_LOAD…` macros are also undefined. Upstreamed from oracle/truffleruby#2255, which fixed oracle/truffleruby#2254. https://github.com/ruby/openssl/commit/65e2adf1ac
2021-03-31[ruby/openssl] pkcs7: keep private key when duplicating PKCS7_SIGNER_INFOKazuki Yamaguchi
ASN1_dup() will not copy the 'pkey' field of a PKCS7_SIGNER_INFO object by design; it is a temporary field kept until the PKCS7 structure is finalized. Let's bump reference counter of the pkey in the original object and use it in the new object, too. This commit also removes PKCS7#add_signer's routine to add the content-type attribute as a signed attribute automatically. This behavior was not documented or tested. This change should not break any working user code since the method was completely useless without the change above. https://github.com/ruby/openssl/commit/20ca7a27a8
2021-03-31Enclose the code that was accidentally a link in "tt"aycabta
2021-03-31* 2021-03-31 [ci skip]git
2021-03-30Text files should end with a newlineNobuyoshi Nakada
2021-03-30mkmf: fixed install directories of header files in extension libraries [Bug ↵Nobuyoshi Nakada
#17761] When installing an extension library which provides a header, that header should be installed under site_ruby (or vendor_ruby when "--vendor" option was given to extconf.rb). However, currently this file is about to be installed in the core include directory. Notes: Merged: https://github.com/ruby/ruby/pull/4339 Merged-By: nobu <nobu@ruby-lang.org>
2021-03-30Fix `coroutine_type` variable nameKazuhiro NISHIYAMA
2021-03-30Check errno before invoking scheduler in `rb_io_wait_readable/writable`.Samuel Williams
See <https://bugs.ruby-lang.org/issues/17527> for more details. Notes: Merged: https://github.com/ruby/ruby/pull/4338
2021-03-30Test incorrect behaviour of `rb_io_wait_readable/writable`.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/4338
2021-03-30Support for native riscv64 coroutines.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/4337
2021-03-30Disable public interface for now.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/4173
2021-03-30Fix handling of timeout accessing scheduler outside of non-blocking context.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/4173
2021-03-30Improve timeout tests.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/4173
2021-03-30Update method name and add documentation.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/4173
2021-03-30Fix native implementation.Samuel Williams
# Conflicts: # scheduler.c Notes: Merged: https://github.com/ruby/ruby/pull/4173
2021-03-30Fixed a compilation errorNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/4173
2021-03-30Prefer `rb_check_funcall`.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/4173
2021-03-30Update lib/timeout.rbSamuel Williams
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Notes: Merged: https://github.com/ruby/ruby/pull/4173
2021-03-30Add hook for `Timeout.timeout`.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/4173
2021-03-30* 2021-03-30 [ci skip]git
2021-03-30[ruby/irb] Prevent the completion from crashing if rdoc is missingAleksandar Ivanov
There are cases where ruby is installed without rdoc and e.g. lib/irb/cmd/help.rb also handles the LoadError Here is how to replicate the issue: ``` $ docker run -it alpine:3.13.3 sh / # apk add ruby ruby-irb ruby-io-console / # irb irb(main):001:0> Class[TAB][TAB] ``` And you end up with something like: ``` irb(main):001:0> ClassTraceback (most recent call last): 34: from /usr/bin/irb:23:in `<main>' 33: from /usr/bin/irb:23:in `load' 32: from /usr/lib/ruby/gems/2.7.0/gems/irb-1.2.6/exe/irb:11:in `<top (required)>' 31: from /usr/lib/ruby/2.7.0/irb.rb:400:in `start' 30: from /usr/lib/ruby/2.7.0/irb.rb:471:in `run' 29: from /usr/lib/ruby/2.7.0/irb.rb:471:in `catch' 28: from /usr/lib/ruby/2.7.0/irb.rb:472:in `block in run' 27: from /usr/lib/ruby/2.7.0/irb.rb:537:in `eval_input' 26: from /usr/lib/ruby/2.7.0/irb/ruby-lex.rb:150:in `each_top_level_statement' 25: from /usr/lib/ruby/2.7.0/irb/ruby-lex.rb:150:in `catch' 24: from /usr/lib/ruby/2.7.0/irb/ruby-lex.rb:151:in `block in each_top_level_statement' 23: from /usr/lib/ruby/2.7.0/irb/ruby-lex.rb:151:in `loop' 22: from /usr/lib/ruby/2.7.0/irb/ruby-lex.rb:154:in `block (2 levels) in each_top_level_statement' 21: from /usr/lib/ruby/2.7.0/irb/ruby-lex.rb:182:in `lex' 20: from /usr/lib/ruby/2.7.0/irb.rb:518:in `block in eval_input' 19: from /usr/lib/ruby/2.7.0/irb.rb:704:in `signal_status' 18: from /usr/lib/ruby/2.7.0/irb.rb:519:in `block (2 levels) in eval_input' 17: from /usr/lib/ruby/2.7.0/irb/input-method.rb:294:in `gets' 16: from /usr/lib/ruby/2.7.0/forwardable.rb:235:in `readmultiline' 15: from /usr/lib/ruby/2.7.0/forwardable.rb:235:in `readmultiline' 14: from /usr/lib/ruby/2.7.0/reline.rb:175:in `readmultiline' 13: from /usr/lib/ruby/2.7.0/reline.rb:238:in `inner_readline' 12: from /usr/lib/ruby/2.7.0/reline.rb:238:in `loop' 11: from /usr/lib/ruby/2.7.0/reline.rb:239:in `block in inner_readline' 10: from /usr/lib/ruby/2.7.0/reline.rb:270:in `read_io' 9: from /usr/lib/ruby/2.7.0/reline.rb:270:in `loop' 8: from /usr/lib/ruby/2.7.0/reline.rb:311:in `block in read_io' 7: from /usr/lib/ruby/2.7.0/reline.rb:240:in `block (2 levels) in inner_readline' 6: from /usr/lib/ruby/2.7.0/reline.rb:240:in `each' 5: from /usr/lib/ruby/2.7.0/reline.rb:241:in `block (3 levels) in inner_readline' 4: from /usr/lib/ruby/2.7.0/reline/line_editor.rb:820:in `input_key' 3: from /usr/lib/ruby/2.7.0/reline/line_editor.rb:608:in `complete' 2: from /usr/lib/ruby/2.7.0/irb/completion.rb:269:in `block in <module:InputCompletor>' 1: from /usr/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require' /usr/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require': cannot load such file -- rdoc (LoadError) ``` https://github.com/ruby/irb/commit/a2d299c2ac
2021-03-29Add more tests for defined? with method callsJeremy Evans
Notes: Merged: https://github.com/ruby/ruby/pull/4213
2021-03-29Make defined? cache the results of method callsJeremy Evans
Previously, defined? could result in many more method calls than the code it was checking. `defined? a.b.c.d.e.f` generated 15 calls, with `a` called 5 times, `b` called 4 times, etc.. This was due to the fact that defined works in a recursive manner, but it previously did not cache results. So for `defined? a.b.c.d.e.f`, the logic was similar to ```ruby return nil unless defined? a return nil unless defined? a.b return nil unless defined? a.b.c return nil unless defined? a.b.c.d return nil unless defined? a.b.c.d.e return nil unless defined? a.b.c.d.e.f "method" ``` With this change, the logic is similar to the following, without the creation of a local variable: ```ruby return nil unless defined? a _ = a return nil unless defined? _.b _ = _.b return nil unless defined? _.c _ = _.c return nil unless defined? _.d _ = _.d return nil unless defined? _.e _ = _.e return nil unless defined? _.f "method" ``` In addition to eliminating redundant method calls for defined statements, this greatly simplifies the instruction sequences by eliminating duplication. Previously: ``` 0000 putnil ( 1)[Li] 0001 putself 0002 defined func, :a, false 0006 branchunless 73 0008 putself 0009 opt_send_without_block <calldata!mid:a, argc:0, FCALL|VCALL|ARGS_SIMPLE> 0011 defined method, :b, false 0015 branchunless 73 0017 putself 0018 opt_send_without_block <calldata!mid:a, argc:0, FCALL|VCALL|ARGS_SIMPLE> 0020 opt_send_without_block <calldata!mid:b, argc:0, ARGS_SIMPLE> 0022 defined method, :c, false 0026 branchunless 73 0028 putself 0029 opt_send_without_block <calldata!mid:a, argc:0, FCALL|VCALL|ARGS_SIMPLE> 0031 opt_send_without_block <calldata!mid:b, argc:0, ARGS_SIMPLE> 0033 opt_send_without_block <calldata!mid:c, argc:0, ARGS_SIMPLE> 0035 defined method, :d, false 0039 branchunless 73 0041 putself 0042 opt_send_without_block <calldata!mid:a, argc:0, FCALL|VCALL|ARGS_SIMPLE> 0044 opt_send_without_block <calldata!mid:b, argc:0, ARGS_SIMPLE> 0046 opt_send_without_block <calldata!mid:c, argc:0, ARGS_SIMPLE> 0048 opt_send_without_block <calldata!mid:d, argc:0, ARGS_SIMPLE> 0050 defined method, :e, false 0054 branchunless 73 0056 putself 0057 opt_send_without_block <calldata!mid:a, argc:0, FCALL|VCALL|ARGS_SIMPLE> 0059 opt_send_without_block <calldata!mid:b, argc:0, ARGS_SIMPLE> 0061 opt_send_without_block <calldata!mid:c, argc:0, ARGS_SIMPLE> 0063 opt_send_without_block <calldata!mid:d, argc:0, ARGS_SIMPLE> 0065 opt_send_without_block <calldata!mid:e, argc:0, ARGS_SIMPLE> 0067 defined method, :f, true 0071 swap 0072 pop 0073 leave ``` After change: ``` 0000 putnil ( 1)[Li] 0001 putself 0002 dup 0003 defined func, :a, false 0007 branchunless 52 0009 opt_send_without_block <calldata!mid:a, argc:0, FCALL|VCALL|ARGS_SIMPLE> 0011 dup 0012 defined method, :b, false 0016 branchunless 52 0018 opt_send_without_block <calldata!mid:b, argc:0, ARGS_SIMPLE> 0020 dup 0021 defined method, :c, false 0025 branchunless 52 0027 opt_send_without_block <calldata!mid:c, argc:0, ARGS_SIMPLE> 0029 dup 0030 defined method, :d, false 0034 branchunless 52 0036 opt_send_without_block <calldata!mid:d, argc:0, ARGS_SIMPLE> 0038 dup 0039 defined method, :e, false 0043 branchunless 52 0045 opt_send_without_block <calldata!mid:e, argc:0, ARGS_SIMPLE> 0047 defined method, :f, true 0051 swap 0052 pop 0053 leave ``` This fixes issues where for pathological small examples, Ruby would generate huge instruction sequences. Unfortunately, implementing this support is kind of a hack. This adds another parameter to compile_call for whether we should assume the receiver is already present on the stack, and has defined? set that parameter for the specific case where it is compiling a method call where the receiver is also a method call. defined_expr0 also takes an additional parameter for whether it should leave the results of the method call on the stack. If that argument is true, in the case where the method isn't defined, we jump to the pop before the leave, so the extra result is not left on the stack. This requires space for an additional label, so lfinish now needs to be able to hold 3 labels. Fixes [Bug #17649] Fixes [Bug #13708] Notes: Merged: https://github.com/ruby/ruby/pull/4213
2021-03-29[ruby/optparse] bump up to 0.1.1Nobuyoshi Nakada
https://github.com/ruby/optparse/commit/2fe984a603
2021-03-29[ruby/optparse] Fixed error message of unparsed non-optionNobuyoshi Nakada
Close https://github.com/ruby/optparse/issues/3 https://github.com/ruby/optparse/commit/94c5cf4032
2021-03-29[ruby/optparse] Completion scripts themselves are not executableNobuyoshi Nakada
https://github.com/ruby/optparse/commit/65d8aff935
2021-03-29[ruby/optparse] Exclude unnecessary files from the packageNobuyoshi Nakada
https://github.com/ruby/optparse/commit/dfd9380231
2021-03-29[ruby/optparse] Change *opts to *params, to avoid confusionBurdetteLamar
https://github.com/ruby/optparse/commit/f5f5e202dd
2021-03-29[ruby/optparse] Add OptionParser#require_exact accessorJeremy Evans
This allows you to disable allowing abbreviations of long options and using short options for long options. Implements Ruby Feature #11523 https://github.com/ruby/optparse/commit/dfefb2d2e2
2021-03-29[ruby/optparse] Use ZDOTDIR env var to locate .zshrcMartin Rey
https://github.com/ruby/optparse/commit/c4977674bf
2021-03-29sync_default_gems.rb: ignore COPYING file [ci skip]Nobuyoshi Nakada
2021-03-29sync_default_gems.rb: IO#puts prints a newline between each argument [ci skip]Nobuyoshi Nakada