summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-12-08[ruby/net-protocol] Bump version to 0.2.1Hiroshi SHIBATA
https://github.com/ruby/net-protocol/commit/06d1420936
2022-12-08[ruby/net-protocol] Undo BufferedIO#rbuf_consume_all_shareable! optimizationJean Boussier
This optimization is unsafe because `dest` is allowed to be a custom object responding to `<<` (e.g. a block wrapped in `ReadAdapter`). So the receiver can hold onto the passed buffer for as long as it wants. If it was guaranteed that `ReadAdapter` was the only possible receiver we could dup the buffer there for mutation safety, but I'm not certain it's the case so I'd rather err on the safe side. Ref: https://github.com/shrinerb/shrine/issues/610 https://github.com/ruby/net-protocol/commit/7efa16d55d
2022-12-08[rubygems/rubygems] Avoid deprecated Gem::Platform.match in ↵Benoit Daloze
Gem::Resolver::InstallerSet https://github.com/rubygems/rubygems/commit/05cb5410cb
2022-12-07MJIT: Remove Windows-specific codeTakashi Kokubun
because we no longer support it
2022-12-07MJIT: Deal with a TODO with assertionTakashi Kokubun
2022-12-08Introduce `IO.new(..., path:)` and promote `File#path` to `IO#path`. (#6867)Samuel Williams
Notes: Merged-By: ioquatix <samuel@codeotaku.com>
2022-12-08Update default gems list at b9d055d7604ea41f54268076622c8a [ci skip]git
2022-12-08[ruby/stringio] bump up to 3.0.4Sutou Kouhei
https://github.com/ruby/stringio/commit/5ba853d6ff
2022-12-08[ruby/logger] Another performance improvement on the Formatter byAkira Matsuda
using Kernel#sprintf over String#% (https://github.com/ruby/logger/pull/75) * Prefer Kernel#sprintf over String#% for formatting Strings
2022-12-08[ruby/logger] Only assign to `@filename` if the path is valid.Samuel Williams
(https://github.com/ruby/logger/pull/81) https://github.com/ruby/logger/commit/b41d7c699c
2022-12-08Don't sync jar artifact of CGIHiroshi SHIBATA
2022-12-08[ruby/logger] Drop RDoc development dependency to avoid CI failures.Samuel Williams
(https://github.com/ruby/logger/pull/82) https://github.com/ruby/logger/commit/8915627234
2022-12-08Update default gems list at 9fce6014b52852265c6b34a04a2057 [ci skip]git
2022-12-08[ruby/psych] Bump version to 5.0.1Hiroshi SHIBATA
https://github.com/ruby/psych/commit/bdf20e6042
2022-12-07Add debug counters to RubyVM.stat (#6086)Chris Seaton
* Add debug counters to RubyVM.stat * Use SIZET2NUM Co-author: Nobuyoshi Nakada <nobu@ruby-lang.org> * Prefix debug_counter_names Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-12-07[ruby/irb] Lazily load the multi-irb extensionStan Lo
(https://github.com/ruby/irb/pull/472) * Lazily load the multi-irb extension We now have plan to implement a command that prints all commands' information, which will need to load all command files without actually running them. But because the `multi-irb` extension patches IRB's top-level methods, loading it would cause unintentional side-effects. So this commit moves related requires into command execution to avoid the problem. * Make extend_irb_context private Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
2022-12-07Update yjit.mdMaxime Chevalier-Boisvert
Update citation, fix outdated and inaccurate information.
2022-12-07Update YJIT warning, mention need to install rustc (#6873)Maxime Chevalier-Boisvert
Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-12-07Update NEWS.mdMaxime Chevalier-Boisvert
2022-12-07Update spec/bundler/bundler/fetcher/compact_index_spec.rbAaron Patterson
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com> Notes: Merged: https://github.com/ruby/ruby/pull/6866
2022-12-07Stop transitioning to UNDEF when undefining an instance variableAaron Patterson
Cases like this: ```ruby obj = Object.new loop do obj.instance_variable_set(:@foo, 1) obj.remove_instance_variable(:@foo) end ``` can cause us to use many more shapes than we want (and even run out). This commit changes the code such that when an instance variable is removed, we'll walk up the shape tree, find the shape, then rebuild any child nodes that happened to be below the "targetted for removal" IV. This also requires moving any instance variables so that indexes derived from the shape tree will work correctly. Co-Authored-By: Jemma Issroff <jemmaissroff@gmail.com> Co-authored-by: John Hawthorn <jhawthorn@github.com> Notes: Merged: https://github.com/ruby/ruby/pull/6866
2022-12-07Fix a typo in NEWS.md. [ci-skip]nagachika
2022-12-07[rubygems/rubygems] Remove remaining dev profile testIan Ker-Seymer
https://github.com/rubygems/rubygems/commit/7d50e998b3
2022-12-07[rubygems/rubygems] Better tests are betterIan Ker-Seymer
https://github.com/rubygems/rubygems/commit/17abb80c2c
2022-12-07[rubygems/rubygems] Fix string match in testIan Ker-Seymer
https://github.com/rubygems/rubygems/commit/82554f2bfd
2022-12-07[rubygems/rubygems] Always build in release modeIan Ker-Seymer
https://github.com/rubygems/rubygems/commit/7b84fc1f19
2022-12-07[rubygems/rubygems] Updates rb-sys to 0.9.46Ian Ker-Seymer
https://github.com/rubygems/rubygems/commit/6c2e7aafd6
2022-12-07NEWS.md: Remove an extraneous word [ci skip]Nobuyoshi Nakada
2022-12-07[Bug #19187] Fix for tzdata-2022gNobuyoshi Nakada
2022-12-07NEWS.md: Remove white space only lines [ci skip]Nobuyoshi Nakada
2022-12-07Mention `rb_hash_new_capa` and `rb_internal_thread_*` in NEWS.mdJean Boussier
Notes: Merged: https://github.com/ruby/ruby/pull/6871
2022-12-07NEWS.md: Added some missing featuresYusuke Endoh
Also, tool/update-NEWS-refs.rb is added to help the update of NEWS.md.
2022-12-06MJIT: Fix an assertion broken with --mjit-wait enabledTakashi Kokubun
2022-12-06MJIT: Refactor mjit_waitTakashi Kokubun
2022-12-06MJIT: Remove obsoleted MJIT countersTakashi Kokubun
2022-12-06MJIT: Use xfree for unitsTakashi Kokubun
now that we use ZALLOC_N for allocating units
2022-12-06MJIT: Explain why we have MJIT_CFLAGS_PIPE [ci skip]Takashi Kokubun
2022-12-06MJIT: Just use ZALLOC_N in create_unitTakashi Kokubun
We no longer use an MJIT worker thread, so there's no need to avoid GC.
2022-12-06MJIT: Remove an unused argument and unused countersTakashi Kokubun
I plan to rebuild MJIT metrics later, not using debug counters.
2022-12-07document for commit 5bbba76489628f450949 [ci skip]卜部昌平
2022-12-06MJIT: Refactor the jit_func enum for MJITTakashi Kokubun
All values should have a MJIT_ prefix. We could address the warning for the end mark if we just define the macro for the check next to the enum. It even simplifies some code for checking the enum.
2022-12-07NEWS.md: Explain the change of [Feature #18367]Yusuke Endoh
2022-12-06Set max_iv_count (used for object shapes) based on inline cachesJemma Issroff
With this change, we're storing the iv name on an inline cache on setinstancevariable instructions. This allows us to check the inline cache to count instance variables set in initialize and give us an estimate of iv capacity for an object. For the purpose of estimating the number of instance variables required for an object, we're assuming that all initialize methods will call `super`. This change allows us to estimate the number of instance variables required without disassembling instruction sequences. Co-Authored-By: Aaron Patterson <tenderlove@ruby-lang.org> Notes: Merged: https://github.com/ruby/ruby/pull/6870
2022-12-06Update dependenciesDaniel Colson
2022-12-06Introduce BOP_CMP for optimized comparisonDaniel Colson
Prior to this commit the `OPTIMIZED_CMP` macro relied on a method lookup to determine whether `<=>` was overridden. The result of the lookup was cached, but only for the duration of the specific method that initialized the cmp_opt_data cache structure. With this method lookup, `[x,y].max` is slower than doing `x > y ? x : y` even though there's an optimized instruction for "new array max". (John noticed somebody a proposed micro-optimization based on this fact in https://github.com/mastodon/mastodon/pull/19903.) ```rb a, b = 1, 2 Benchmark.ips do |bm| bm.report('conditional') { a > b ? a : b } bm.report('method') { [a, b].max } bm.compare! end ``` Before: ``` Comparison: conditional: 22603733.2 i/s method: 19820412.7 i/s - 1.14x (± 0.00) slower ``` This commit replaces the method lookup with a new CMP basic op, which gives the examples above equivalent performance. After: ``` Comparison: method: 24022466.5 i/s conditional: 23851094.2 i/s - same-ish: difference falls within error ``` Relevant benchmarks show an improvement to Array#max and Array#min when not using the optimized newarray_max instruction as well. They are noticeably faster for small arrays with the relevant types, and the same or maybe a touch faster on larger arrays. ``` $ make benchmark COMPARE_RUBY=<master@5958c305> ITEM=array_min $ make benchmark COMPARE_RUBY=<master@5958c305> ITEM=array_max ``` The benchmarks added in this commit also look generally improved. Co-authored-by: John Hawthorn <jhawthorn@github.com>
2022-12-06Move BOP macros to separate fileDaniel Colson
This commit moves ruby_basic_operators and the unredefined macros out of vm_core.h and into basic_operators.h so that we can use them more broadly in places where we currently use a method look up via `rb_method_basic_definition_p` (e.g. object.c, numeric.c, complex.c, enum.c, but also in internal/compar.h after introducing BOP_CMP and elsewhere if we introduce more BOPs) The most controversial part of this change is probably moving redefined_flag out of rb_vm_t. [vm_opt_method_def_table and vm_opt_mid_table](https://github.com/ruby/ruby/blob/9da2a5204f32a4f2ce135fddde2abb6e07d647e9/vm.c) are not part of rb_vm_t either, and I think this fits well with those. But more significantly it seems to result in one fewer instruction. For example: Before: ``` (lldb) disassemble -n vm_opt_str_freeze miniruby`vm_exec_core: miniruby[0x10028233e] <+14558>: movq 0x11a86b(%rip), %rax ; ruby_current_vm_ptr miniruby[0x100282345] <+14565>: testb $0x4, 0x242c(%rax) ``` After: ``` (lldb) disassemble -n vm_opt_str_freeze ruby`vm_exec_core: ruby[0x100280ebe] <+14510>: testb $0x4, 0x120147(%rip) ; ruby_vm_redefined_flag + 43 ``` Co-authored-by: John Hawthorn <jhawthorn@github.com>
2022-12-06[ruby/net-http] [DOC] Fix call-seq for Net::HTTP.startPeter Zhu
The lack of a newline between the call-seq and the documentation was causing the documentation to be parsed as a call-seq. https://github.com/ruby/net-http/commit/1a212e2065
2022-12-06[Feature #19183] Ignore interim artifacts [ci skip]Nobuyoshi Nakada
2022-12-06NEWS: `UnboundMethod#==`Koichi Sasada
2022-12-06[Bug #18623] Link only existing excutables to make runnable [ci skip]Nobuyoshi Nakada