summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-04-28* 2022-04-28 [ci skip]git
2022-04-27YJIT: Remove unnecessary `extern crate` declarationAlan Wu
Thanks to suggestion from bjorn3 on GitHub. Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com> Notes: Merged: https://github.com/ruby/ruby/pull/5826
2022-04-27YJIT: Make add_comment() more conciseAlan Wu
Thanks to suggestions from Stranger6667 on GitHub. Co-authored-by: Dmitry Dygalo <dmitry@dygalo.dev> Notes: Merged: https://github.com/ruby/ruby/pull/5826
2022-04-27Rust YJITAlan Wu
In December 2021, we opened an [issue] to solicit feedback regarding the porting of the YJIT codebase from C99 to Rust. There were some reservations, but this project was given the go ahead by Ruby core developers and Matz. Since then, we have successfully completed the port of YJIT to Rust. The new Rust version of YJIT has reached parity with the C version, in that it passes all the CRuby tests, is able to run all of the YJIT benchmarks, and performs similarly to the C version (because it works the same way and largely generates the same machine code). We've even incorporated some design improvements, such as a more fine-grained constant invalidation mechanism which we expect will make a big difference in Ruby on Rails applications. Because we want to be careful, YJIT is guarded behind a configure option: ```shell ./configure --enable-yjit # Build YJIT in release mode ./configure --enable-yjit=dev # Build YJIT in dev/debug mode ``` By default, YJIT does not get compiled and cargo/rustc is not required. If YJIT is built in dev mode, then `cargo` is used to fetch development dependencies, but when building in release, `cargo` is not required, only `rustc`. At the moment YJIT requires Rust 1.60.0 or newer. The YJIT command-line options remain mostly unchanged, and more details about the build process are documented in `doc/yjit/yjit.md`. The CI tests have been updated and do not take any more resources than before. The development history of the Rust port is available at the following commit for interested parties: https://github.com/Shopify/ruby/commit/1fd9573d8b4b65219f1c2407f30a0a60e537f8be Our hope is that Rust YJIT will be compiled and included as a part of system packages and compiled binaries of the Ruby 3.2 release. We do not anticipate any major problems as Rust is well supported on every platform which YJIT supports, but to make sure that this process works smoothly, we would like to reach out to those who take care of building systems packages before the 3.2 release is shipped and resolve any issues that may come up. [issue]: https://bugs.ruby-lang.org/issues/18481 Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> Co-authored-by: Noah Gibbs <the.codefolio.guy@gmail.com> Co-authored-by: Kevin Newton <kddnewton@gmail.com> Notes: Merged: https://github.com/ruby/ruby/pull/5826
2022-04-27[DOC] Enhanced RDoc for Kernel (#5847)Burdette Lamar
Treats #Integer; fixes an error in #String. Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2022-04-27[DOC] Change URLs from git.ioKazuhiro NISHIYAMA
see https://github.blog/changelog/2022-04-25-git-io-deprecation/
2022-04-26Enhanced RDoc for File (#5849)Burdette Lamar
Treats: #path ::stat ::lstat #lstat ::directory? Also adds section "Example Files" that explains assumptions about example files. I'm using t.txt already, and I'm pretty sure I'll need t.dat (binary data). I don't know whether I'll need t.rus (Russian text). Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2022-04-26Faster rb_class_superclassJohn Hawthorn
This uses the RCLASS_SUPERCLASSES array to quickly find the next SUPERCLASS of klass which is a T_CLASS. Notes: Merged: https://github.com/ruby/ruby/pull/5850
2022-04-27* 2022-04-27 [ci skip]git
2022-04-26Use compiled instead of compliedKaíque Kandy Koga
Capitalize creates Notes: Merged: https://github.com/ruby/ruby/pull/5848
2022-04-26Expose `rb_hash_new_capa(long)`Jean Boussier
[Feature #18683] This allows parsers and similar libraries to create Hashes of a certain capacity in advance. It's useful when the key and values are streamed, hence `bulk_insert()` can't be used. Notes: Merged: https://github.com/ruby/ruby/pull/5835
2022-04-25[DOC] Enhanced RDoc for Kernel (#5846)Burdette Lamar
Treats: #Array #Hash #String Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2022-04-25Document beginless, endless ranges in Range class documentationJeremy Evans
2022-04-25Simplify example code for Enumerable#each_with_objectColin Hart
Notes: Merged: https://github.com/ruby/ruby/pull/5825 Merged-By: jeremyevans <code@jeremyevans.net>
2022-04-25Fix strict aliasing issue with call to rb_id_table_lookup()Alan Wu
Previously, GCC 11 with -O2 LTO issues -Wmaybe-uninitialized here. Notes: Merged: https://github.com/ruby/ruby/pull/5844 Merged-By: XrXr
2022-04-25[CI] Use -O2 on LTO builds as intendedAlan Wu
Previously, since the `optflags` environment variable was set to `-O1` and `optflags` comes after the flags appended as `CC`, we were doing LTO builds with `-O1`. Notes: Merged: https://github.com/ruby/ruby/pull/5845
2022-04-25[DOC] Move :nodoc: so rdoc finds `RbConfig.ruby`Alan Wu
Rdoc [build] of `master` did not have this method but the reference manual [did]. [build]: https://docs.ruby-lang.org/en/master/RbConfig.html [did]: https://docs.ruby-lang.org/ja/master/class/RbConfig.html#S_RUBY Notes: Merged: https://github.com/ruby/ruby/pull/5843 Merged-By: XrXr
2022-04-26io.nonblock returns the block's value [ci skip]Kazuhiro NISHIYAMA
2022-04-26* 2022-04-26 [ci skip]git
2022-04-25[DOC] Enhanced RDoc for Math module (#5837)Burdette Lamar
Revises intro. Adds "What's Here". Revises methods doc. Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2022-04-25[DOC] mention assignment expression valuesNobuyoshi Nakada
2022-04-25Update to ruby/spec@3affe1eBenoit Daloze
2022-04-25Update to ruby/mspec@215497eBenoit Daloze
2022-04-25Fix ARGF#lineno to return Integer as documentedJean Boussier
[Bug #18753] Notes: Merged: https://github.com/ruby/ruby/pull/5841
2022-04-25[ruby/rdoc] Fix a typo [ci skip]Kazuhiro NISHIYAMA
https://github.com/ruby/rdoc/commit/b42c4a2fe2
2022-04-24More details for Rational literals (#5840)Burdette Lamar
Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2022-04-25* 2022-04-25 [ci skip]git
2022-04-24Reuse `rb_proc_arity`S.H
Notes: Merged: https://github.com/ruby/ruby/pull/5823 Merged-By: jeremyevans <code@jeremyevans.net>
2022-04-24* 2022-04-24 [ci skip]git
2022-04-24add description for IO.nonblock=.Tanaka Akira
2022-04-23Remove unnecessary sortKazuhiro NISHIYAMA
Because `Dir.[]` returns the sorted results since Ruby 3.0. Notes: Merged: https://github.com/ruby/ruby/pull/5832
2022-04-22Avoid defining the same test class in multiple filesJeremy Evans
Should fix issues with parallel testing sometimes not running all tests. This should be viewed skipping whitespace changes. Fixes [Bug #18731] Notes: Merged: https://github.com/ruby/ruby/pull/5839
2022-04-22Fix build if UBF_TIMER == UBF_TIMER_PTHREADJeremy Evans
2022-04-22rbinstall: Also do `Gem.ruby` patching for unpacked bundled gemsAlan Wu
Pointing `Gem.ruby` to the newly installed ruby gives mkmf the right inputs to build extensions in bundled gems. Previously, this patching was only done for compressed bundled gems. This patch also prevents `tool/fake.rb` from propagating to the child process running mkmf for the native extension. The way `tool/fake.rb` changes mkmf variables using `Kernel#trace_var` created spooky action at a distance which made debugging difficult. AppVeyor Windows CI started to fail starting with 8a3663789c52ec5635194656af6b69d3d03120ee because it enabled extension building for bundled gems on mswin. This patch should address the CI failures. Notes: Merged: https://github.com/ruby/ruby/pull/5838
2022-04-23introduce struct `rb_native_thread`Koichi Sasada
`rb_thread_t` contained `native_thread_data_t` to represent thread implementation dependent data. This patch separates them and rename it `rb_native_thread` and point it from `rb_thraed_t`. Now, 1 Ruby thread (`rb_thread_t`) has 1 native thread (`rb_native_thread`). Notes: Merged: https://github.com/ruby/ruby/pull/5836
2022-04-23* 2022-04-23 [ci skip]git
2022-04-23refactoring thread inits in vm.cKoichi Sasada
* `th_init` accepts vm and ractor. * remove `ruby_thread_init` because it is duplicated with `th_init`. * add some comments. Notes: Merged: https://github.com/ruby/ruby/pull/5834
2022-04-21Uncomment code to raise LocalJumpError for yield across thread through enumJeremy Evans
Not sure if this is the correct fix. It does raise LocalJumpError in the yielding thread as you would expect, but the value yielded to the calling thread is still yielded without an exception. Fixes [Bug #18649] Notes: Merged: https://github.com/ruby/ruby/pull/5692
2022-04-22Use https for wss testHiroshi SHIBATA
2022-04-22[ruby/uri] Include RFC2396_REGEXP module directlyPeter Zhu
REGEXP is defined as RFC2396_REGEXP in lib/uri/common.rb. If we include REGEXP then a broken URL is generated in rdoc for URI and URI::MailTo. https://github.com/ruby/uri/commit/ed6ded9c80
2022-04-22[ruby/uri] Feat: Support WSSOKURA Masafumi
There was a file for WSS so I added one line of `require_relative` to make it work. Now `URI.parse('wss://example.com')` returns `URI::WS`. https://github.com/ruby/uri/commit/ff8a103564
2022-04-22* 2022-04-22 [ci skip]git
2022-04-22rename thread internal namingKoichi Sasada
Now GVL is not process *Global* so this patch try to use another words. * `rb_global_vm_lock_t` -> `struct rb_thread_sched` * `gvl->owner` -> `sched->running` * `gvl->waitq` -> `sched->readyq` * `rb_gvl_init` -> `rb_thread_sched_init` * `gvl_destroy` -> `rb_thread_sched_destroy` * `gvl_acquire` -> `thread_sched_to_running` # waiting -> ready -> running * `gvl_release` -> `thread_sched_to_waiting` # running -> waiting * `gvl_yield` -> `thread_sched_yield` * `GVL_UNLOCK_BEGIN` -> `THREAD_BLOCKING_BEGIN` * `GVL_UNLOCK_END` -> `THREAD_BLOCKING_END` * removed * `rb_ractor_gvl` * `rb_vm_gvl_destroy` (not used) There are GVL functions such as `rb_thread_call_without_gvl()` yet but I don't have good name to replace them. Maybe GVL stands for "Greate Valuable Lock" or something like that. Notes: Merged: https://github.com/ruby/ruby/pull/5814
2022-04-21[ruby/pathname] Implement Pathname#lutimeAkinori MUSHA
https://github.com/ruby/pathname/commit/268cb5acff
2022-04-21Private local variables should shadow outer variables [Bug #18629]Nobuyoshi Nakada
2022-04-21[Win32] allow pipe in flockNobuyoshi Nakada
2022-04-21* 2022-04-21 [ci skip]git
2022-04-21[Doc] correct my understanding about nonblocking mode卜部昌平
I was wrong. Nonblocking mode nowadays does not interface with IO#read. Document updated. [ci skip]
2022-04-20[CI] resort to clang-14 (#5824)卜部昌平
* [CI] resort to clang-14 Clang 15 + --std=c2x combination seems actively developed now. Might better wait for them to mature * also change default compiler Notes: Merged-By: shyouhei <shyouhei@ruby-lang.org>
2022-04-20Added assert_true and assert_false same as test-unit gemHiroshi SHIBATA