summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-11-22YJIT: Skip padding jumps to side exits on Arm (#6790)Takashi Kokubun
YJIT: Skip padding jumps to side exits Co-authored-by: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com> Co-authored-by: Alan Wu <alansi.xingwu@shopify.com> Co-authored-by: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com> Co-authored-by: Alan Wu <alansi.xingwu@shopify.com> Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-11-22Increment max_iv_count on class based on number of set_iv in initialize (#6788)Jemma Issroff
We can loosely predict the number of ivar sets on a class based on the number of iv set instructions in the initialize method. This should give us a more accurate estimate to use for initial size pool allocation, which should in turn give us more cache hits. Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-11-22Use `enum` over `int`Nobuyoshi Nakada
2022-11-22Use dedicated assertions for warningsNobuyoshi Nakada
2022-11-22Avoid unnecessary use of global variablesNobuyoshi Nakada
2022-11-22Use valid tokens as cookie namesNobuyoshi Nakada
2022-11-22Update default gems list at 805d70f716c782e82ec77ca623b217 [ci skip]git
2022-11-22[ruby/cgi] Bump up 0.3.5Hiroshi SHIBATA
https://github.com/ruby/cgi/commit/daf88c2a75
2022-11-22[ruby/cgi] Relax domain label restrictionsNobuyoshi Nakada
https://github.com/ruby/cgi/commit/b46d41c363
2022-11-22Update default gems list at 3f960cf445dd387a5497ffad897ea6 [ci skip]git
2022-11-22[ruby/cgi] Bump up 0.3.4Hiroshi SHIBATA
https://github.com/ruby/cgi/commit/3649a27bf4
2022-11-22[ruby/cgi] Prevent CRLF injectionYusuke Endoh
Throw a RuntimeError if the HTTP response header contains CR or LF to prevent HTTP response splitting. https://hackerone.com/reports/1204695 https://github.com/ruby/cgi/commit/64c5045c0a
2022-11-22[ruby/cgi] Check cookie name/path/domain charactersNobuyoshi Nakada
https://hackerone.com/reports/1204977 https://github.com/ruby/cgi/commit/30107a4797
2022-11-21Fixup spec/ruby/optional/capi/rbasic_spec.rb for mswinMSP-Greg
Notes: Merged: https://github.com/ruby/ruby/pull/6772
2022-11-21YJIT: Lower the required Rust version from 1.58.1 to 1.58.0 (#6780)Takashi Kokubun
Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-11-21Let SHAPE_BITS take 32 bits on debug buildsPeter Zhu
The ractor_belonging_id has been moved out of the headers, so object shapes can take the top 32 bits of the flags on debug builds. Notes: Merged: https://github.com/ruby/ruby/pull/6763
2022-11-21Add RVALUE_OVERHEAD and move ractor_belonging_idPeter Zhu
This commit adds RVALUE_OVERHEAD for storing metadata at the end of the slot. This commit moves the ractor_belonging_id in debug builds from the flags to RVALUE_OVERHEAD which frees the 16 bits in the headers for object shapes. Notes: Merged: https://github.com/ruby/ruby/pull/6763
2022-11-22[Bug #19016] `SyntaxError` with parser error messagesNobuyoshi Nakada
Raise a `SyntaxError` with the parser error message, in the case reading from a file instead of the `-e` option or standard input. So syntax_suggest can get the message from the caught error. Notes: Merged: https://github.com/ruby/ruby/pull/6778
2022-11-22[Bug #19016] re-order error handling at cleanupNobuyoshi Nakada
Build and store the error message with `#detailed_message` before terminating all Ractors, then show the message later. Notes: Merged: https://github.com/ruby/ruby/pull/6778
2022-11-21Speed up shape transitionsPeter Zhu
This commit significantly speeds up shape transitions as it changes get_next_shape_internal to not perform a lookup (and instead require the caller to perform the lookup). This avoids double lookups during shape transitions. There is a significant (~2x) speedup in the following micro-benchmark: puts(Benchmark.measure do o = Object.new 100_000.times do |i| o.instance_variable_set(:"@a#{i}", 0) end end) Before: 22.393194 0.201639 22.594833 ( 22.684237) After: 11.323086 0.022284 11.345370 ( 11.389346) Notes: Merged: https://github.com/ruby/ruby/pull/6751
2022-11-21Refactor obj_ivar_set and vm_setivarPeter Zhu
obj_ivar_set and vm_setivar_slowpath is essentially doing the same thing, but the code is duplicated and not quite implemented in the same way, which could cause bugs. This commit refactors vm_setivar_slowpath to use obj_ivar_set. Notes: Merged: https://github.com/ruby/ruby/pull/6732
2022-11-21Use class methods of `File` over `Kernel.open` and `IO.read`Nobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/6777
2022-11-21[ruby/un] Use class methods of `File` over `Kernel.open`Nobuyoshi Nakada
https://github.com/ruby/un/commit/13bdd766fe
2022-11-21[ruby/optparse] Use class methods of `File` over `IO`Nobuyoshi Nakada
https://github.com/ruby/optparse/commit/ab5073e4d8
2022-11-21[ruby/irb] Add commands to start and use the debuggerTakashi Kokubun
(https://github.com/ruby/irb/pull/449) * Seamlessly integrate a few debug commands * Improve the break command support * Utilize skip_src option if available * Add step and delete commands * Write end-to-end tests for each debugger command * Add documentation * Add backtrace, info, catch commands https://github.com/ruby/irb/commit/976100c1c2
2022-11-21Use double quotes for nmake [ci skip]Nobuyoshi Nakada
2022-11-21Refactor to use has_delayed_token macroyui-knk
Notes: Merged: https://github.com/ruby/ruby/pull/6776
2022-11-20Add a comment about confusing code [ci skip]Takashi Kokubun
2022-11-21Prevent a "warning: ambiguity between regexp and two divisions"Yusuke Endoh
2022-11-21Add outdate-bundled-gems target [ci skip]Nobuyoshi Nakada
2022-11-21Update default gems list at 509f04ca9159d1dd046af4ffb19cfa [ci skip]git
2022-11-20[ruby/irb] Version 1.5.0Takashi Kokubun
Asked by ko1 to release https://github.com/ruby/irb/pull/444 for simplifying https://github.com/ruby/debug/pull/808, and hsbt made me a gem owner for this. Stan said 1.4.3 should have been 1.5.0, but now that it's already released and it's not worth yanking it, we're not doing that change. However, now that this release includes `debug` and `edit`, I think it's a good opportunity to hit the version 1.5.0. https://github.com/ruby/irb/commit/85937d71f6
2022-11-20Fix a broken interpolation #{head}Takashi Kokubun
2022-11-21Add a link to Feature #19070 ticket [ci skip]yui-knk
Notes: Merged: https://github.com/ruby/ruby/pull/6774
2022-11-20Fix typos (#6775)Yudai Takada
* s/Innteger/Integer/ * s/diretory/directory/ * s/Bufer/Buffer/ * s/defalt/default/ * s/covearge/coverage/ Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-11-21Enhance keep_tokens option for RubyVM::AbstractSyntaxTree parsing methodsyui-knk
Implementation for Language Server Protocol (LSP) sometimes needs token information. For example both `m(1)` and `m(1, )` has same AST structure other than node locations then it's impossible to check the existence of `,` from AST. However in later case, it might be better to suggest variables list for the second argument. Token information is important for such case. This commit adds these methods. * Add `keep_tokens` option for `RubyVM::AbstractSyntaxTree.parse`, `.parse_file` and `.of` * Add `RubyVM::AbstractSyntaxTree::Node#tokens` which returns tokens for the node including tokens for descendants nodes. * Add `RubyVM::AbstractSyntaxTree::Node#all_tokens` which returns all tokens for the input script regardless the receiver node. [Feature #19070] Impacts on memory usage and performance are below: Memory usage: ``` $ cat test.rb root = RubyVM::AbstractSyntaxTree.parse_file(File.expand_path('../test/ruby/test_keyword.rb', __FILE__), keep_tokens: true) $ /usr/bin/time -f %Mkb /usr/local/bin/ruby -v ruby 3.2.0dev (2022-11-19T09:41:54Z 19070-keep_tokens d3af1b8057) [x86_64-linux] 11408kb # keep_tokens :false $ /usr/bin/time -f %Mkb /usr/local/bin/ruby test.rb 17508kb # keep_tokens :true $ /usr/bin/time -f %Mkb /usr/local/bin/ruby test.rb 30960kb ``` Performance: ``` $ cat ../ast_keep_tokens.yml prelude: | src = <<~SRC module M class C def m1(a, b) 1 + a + b end end end SRC benchmark: without_keep_tokens: | RubyVM::AbstractSyntaxTree.parse(src, keep_tokens: false) with_keep_tokens: | RubyVM::AbstractSyntaxTree.parse(src, keep_tokens: true) $ make benchmark COMPARE_RUBY="./ruby" ARGS=../ast_keep_tokens.yml /home/kaneko.y/.rbenv/shims/ruby --disable=gems -rrubygems -I../benchmark/lib ../benchmark/benchmark-driver/exe/benchmark-driver \ --executables="compare-ruby::./ruby -I.ext/common --disable-gem" \ --executables="built-ruby::./miniruby -I../lib -I. -I.ext/common ../tool/runruby.rb --extout=.ext -- --disable-gems --disable-gem" \ --output=markdown --output-compare -v ../ast_keep_tokens.yml compare-ruby: ruby 3.2.0dev (2022-11-19T09:41:54Z 19070-keep_tokens d3af1b8057) [x86_64-linux] built-ruby: ruby 3.2.0dev (2022-11-19T09:41:54Z 19070-keep_tokens d3af1b8057) [x86_64-linux] warming up.. | |compare-ruby|built-ruby| |:--------------------|-----------:|---------:| |without_keep_tokens | 21.659k| 21.303k| | | 1.02x| -| |with_keep_tokens | 6.220k| 5.691k| | | 1.09x| -| ``` Notes: Merged: https://github.com/ruby/ruby/pull/6770
2022-11-20Revert wrong sync in 5958c305e5 [ci skip]Takashi Kokubun
sync_default_gems.rb sometimes syncs too much.
2022-11-20[Bug #19016] Handle syntax error in main script like other errorsNobuyoshi Nakada
So that `SyntaxError#detailed_message` will be used also in the case exiting by such syntax error. Notes: Merged: https://github.com/ruby/ruby/pull/6771
2022-11-20Use `enum ruby_tag_type` over `int`Nobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/6771
2022-11-20sync_default_gems.rb: Fix substitution [ci skip]Nobuyoshi Nakada
As there should be no modified files just affter `git cherry-pick` succeeded in `sync_default_gems_with_commits`, reset to the previous revision once to pick up the committed files.
2022-11-19Avoid a timeout on test_cache_optimization_exponentialTakashi Kokubun
The timeout seems too short for some CIs. http://rubyci.s3.amazonaws.com/debian11-aarch64/ruby-master/log/20221120T012840Z.fail.html.gz
2022-11-20[ruby/irb] Push an accidentally uncommitted diffTakashi Kokubun
https://github.com/ruby/irb/commit/7e9f27afd7
2022-11-20[ruby/irb] Deal with inconsistency with ruby/rubyTakashi Kokubun
https://github.com/ruby/irb/commit/41d5012849
2022-11-20[ruby/irb] Require missing EnvUtilTakashi Kokubun
https://github.com/ruby/irb/commit/9bb1757b02
2022-11-20[ruby/irb] Try using a different file nameTakashi Kokubun
hoping to address: https://github.com/ruby/ruby/actions/runs/3506561941/jobs/5873689640 https://github.com/ruby/irb/commit/de9a6b9d00
2022-11-20[ruby/irb] Require rubygems for ruby/rubyTakashi Kokubun
You can't take rubygems for granted in a default gem. https://github.com/ruby/ruby/actions/runs/3506561943/jobs/5873689466 https://github.com/ruby/irb/commit/58bb3954d0
2022-11-19Skip TestDRbSSLAry on mswinTakashi Kokubun
This doesn't seem to stably work on mswin: https://github.com/ruby/ruby/actions/runs/3505363753/jobs/5871633211 For CI stability, it generally seems like a bad idea to run druby tests on Windows, given that it's pretty much unstable on MinGW as well.
2022-11-20[ruby/irb] Fix CI failure on ruby/rubyTakashi Kokubun
https://github.com/ruby/irb/commit/ea8c716922
2022-11-20[ruby/irb] Add edit command (https://github.com/ruby/irb/pull/453)Stan Lo
* Add edit command * Make find_source a public singleton method * Add document for the edit command * Make find_end private * Remove duplicated private https://github.com/ruby/irb/commit/4321674aa7 Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
2022-11-20Avoid warnings on MINGW:Lars Kanis
win32/win32.c: In function 'rtc_error_handler': win32/win32.c:691:5: warning: function 'rtc_error_handler' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] 691 | rb_str_vcatf(str, fmt, ap); | ^~~~~~~~~~~~ and win32/win32.c:683:1: warning: 'rtc_error_handler' defined but not used [-Wunused-function] 683 | rtc_error_handler(int e, const char *src, int line, const char *exe, const char *fmt, ...) | ^~~~~~~~~~~~~~~~~ Notes: Merged: https://github.com/ruby/ruby/pull/6764