summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-12-23add back quotes for method/class namesKoichi Sasada
Notes: Merged: https://github.com/ruby/ruby/pull/12433
2024-12-23Revert "[Bug #20965] Define `it` like an ordinary argument" (#12418)Takashi Kokubun
Revert "[Bug #20965] Define `it` like an ordinary argument (#12398)" Reverts ruby/ruby#12398 as per https://bugs.ruby-lang.org/issues/20970#note-6 and https://bugs.ruby-lang.org/issues/20965#note-7. We need more time to design the intended behavior, and it's too late for Ruby 3.4. Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2024-12-23Use the dedicated constants `LIBARG` and `LIBPATHFLAG`Nobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/9815
2024-12-23Implements [Feature #3456]: Support pkgconf on windowsJulien Marrec
1. Store the `PKG_CONFIG` variable in Makefile.sub (or try to get it from the ENV var PKG_CONFIG in mkmf.rb) 2. Try to use --msvc-syntax, with a fallback to replacing -Lxxx with -libpath:xxx. --msvc-syntax has been in pkgconf since 1.4.0 (released 7 years ago). pkg-config (freedesktop), does not support it, hence the fallback. 3. The `try_ldflags` passes these `ldflags` as the `opt` parameter to the `link_command`, not as `ldflags`. Unix systems are forgiving in that regard, MSVC is not: as a result as passing them as `opt`, they (specifically the `/libpath:xxx` ones) end up passed before the `-link` command to `cl.exe` and it throws because it ignores it and therefore can't find the lib. ``` cl : Command line warning D9002 : ignoring unknown option '-libpath:C:/Users/julien/.conan2/p/libff3726d89a6255c/p/lib' ``` Notes: Merged: https://github.com/ruby/ruby/pull/9815
2024-12-23use `st_update` to prevent table extensionKoichi Sasada
to prevent the following scenario: 1. `delete_unique_str()` can be called while GC (sweeping) 2. it calls `st_insert()` to decrement the counter 3. `st_insert()` can try to extend the table even if the key exists 4. `xmalloc` while GC and cause BUG Notes: Merged: https://github.com/ruby/ruby/pull/12407
2024-12-23Omit TestEval#test_outer_local_variable_under_gc_compact_stress with s390xHiroshi SHIBATA
2024-12-23Update bundled_gemsHiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/12431
2024-12-22[DOC] Update about optional dump flagsNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/12430
2024-12-22Add `hello`Nobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/12427
2024-12-22Simplify MODULAR_GC_DIR settingNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/12428
2024-12-22Install modular GC librariesNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/12428
2024-12-22modular-gc-precheck for mswinNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/12428
2024-12-22Split `modular-gc` into build and installationNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/12428
2024-12-22Allow variables in modular_gc_dirNobuyoshi Nakada
Such as `$(ruby_version)`, `$(arch)` and so on. Notes: Merged: https://github.com/ruby/ruby/pull/12428
2024-12-22Support RUBY_MODULAR_GC with LOAD_RELATIVENobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/12428
2024-12-22Suppress WIN32OLE deprecation warnings for the time beingNobuyoshi Nakada
2024-12-22s/Punctation/Punctuation/ydah
Notes: Merged: https://github.com/ruby/ruby/pull/12426
2024-12-22s/backslashs/backslashes/ydah
Notes: Merged: https://github.com/ruby/ruby/pull/12426
2024-12-22[DOC] Fix typos in comments in ractor.cYudai Takada
Notes: Merged: https://github.com/ruby/ruby/pull/12425 Merged-By: nobu <nobu@ruby-lang.org>
2024-12-22Fix extra 'warning:' prefix for chilled Symbol#to_szverok
Notes: Merged: https://github.com/ruby/ruby/pull/12423
2024-12-22[DOC] Fix typo in related class referencezverok
Notes: Merged: https://github.com/ruby/ruby/pull/12422
2024-12-22[ruby/openssl] Ruby/OpenSSL 3.3.0Kazuki Yamaguchi
https://github.com/ruby/openssl/commit/e5153dbbb4 Notes: Merged: https://github.com/ruby/ruby/pull/12421
2024-12-22[ruby/openssl] ssl: fix flaky test case ↵Kazuki Yamaguchi
test_ctx_client_session_cb_tls13_exception In the test case, the client raises an exception in the session_new_cb and may not cleanly close the connection. Let's ignore exceptions raised at the server side. Fixes: https://github.com/ruby/openssl/issues/828 https://github.com/ruby/openssl/commit/210ba0334a Notes: Merged: https://github.com/ruby/ruby/pull/12421
2024-12-22[ruby/openssl] digest: remove optional parameter from OpenSSL::Digest#finishKazuki Yamaguchi
OpenSSL::Digest#finish overrides Digest::Instance#finish and is called from the Digest::Class framework in the digest library. This method is not supposed to take any arguments, as suggested by the RDoc comment for Digest::Instance#finish. It is a private method and not exposed to users. Let's remove it. This optional parameter exists since r15602 in Ruby trunk, the commit which converted OpenSSL::Digest to a subclass of Digest::Class. https://github.com/ruby/openssl/commit/dcb2a4f30b Notes: Merged: https://github.com/ruby/ruby/pull/12421
2024-12-22[ruby/openssl] digest: make output buffer String independent in #finishKazuki Yamaguchi
Likewise, OpenSSL::Digest#finish needs to make the output buffer independent before writing to it. https://github.com/ruby/openssl/commit/9cc8a83466 Notes: Merged: https://github.com/ruby/ruby/pull/12421
2024-12-22[ruby/openssl] cipher: make output buffer String independentKazuki Yamaguchi
OpenSSL::Cipher#update accepts a String as the second argument to be used as the output buffer. The buffer must be directly writable, in other words, it must not be frozen and not a shared string. rb_str_resize() does not make the String independent if the String already has the intended length. Use the rb_str_modify() family instead to check it. Fixes: https://bugs.ruby-lang.org/issues/20937 https://github.com/ruby/openssl/commit/1de3b80a46 Notes: Merged: https://github.com/ruby/ruby/pull/12421
2024-12-22[ruby/openssl] pkcs12: add PKCS12#set_macKazuki Yamaguchi
Add a binding for PKCS12_set_mac() to set MAC parameters and (re-)calculate MAC for the content. This allows generating PKCS #12 with consistent MAC parameters with different OpenSSL versions. OpenSSL 3.0 changed the default hash function used for HMAC and the KDF from SHA-1 to SHA-256. Fixes: https://github.com/ruby/openssl/issues/772 https://github.com/ruby/openssl/commit/f5ed2a74b6 Notes: Merged: https://github.com/ruby/ruby/pull/12421
2024-12-21[DOC] Move Time#xmlschema docs to the core (#12403)Victor Shepelev
Notes: Merged-By: zverok <zverok.offline@gmail.com>
2024-12-21Properly document Ractor#require (#12389)Victor Shepelev
Notes: Merged-By: zverok <zverok.offline@gmail.com>
2024-12-20[DOC] Resurrected YJIT sectionTakashi Kokubun
under "Implementation improvements", similarly to past versions. We also don't do categorization like "* New features" (which was in this file) or "New features:" (which was on the release notes), so I used the standard header format instead. I applied the same change to release notes, copied the same thing back to NEWS.md, and then removed the TL;DR section from it.
2024-12-20[DOC] Reorder Language changes entries a littleTakashi Kokubun
Warnings aren't something to brag first on the release notes. So I lowered the string literal one just a little. However, it still seems significant compared to other Bug tickets and incompatibilities/warnings, so I still kept it relatively high.
2024-12-20FREE_AT_EXIT: Free all allocations from fiber poolJohn Hawthorn
The fiber pool allocations form a singly-linked list, so when we're running with RUBY_FREE_AT_EXIT we need to walk the linked list freeing each element, otherwise it can be detected as a memory leak. Notes: Merged: https://github.com/ruby/ruby/pull/12405
2024-12-20GC guard lookup_namePeter Zhu
When searching for native extensions, if the name does not end in ".so" then we create a new string and append ".so" so it. If the native extension is in static_ext_inits, then we could trigger a GC in the rb_filesystem_str_new_cstr. This could cuase the GC to free lookup_name since we don't use the local variable anymore. This bug was caught in this ASAN build: http://ci.rvm.jp/results/trunk_asan@ruby-sp1/5479182 ==435614==ERROR: AddressSanitizer: use-after-poison on address 0x715a63022da0 at pc 0x5e7463873e4e bp 0x7fff383c8b00 sp 0x7fff383c82c0 READ of size 14 at 0x715a63022da0 thread T0 #0 0x5e7463873e4d in __asan_memcpy (/tmp/ruby/build/trunk_asan/ruby+0x214e4d) (BuildId: 607411c0626a2f66b4c20c02179b346aace20898) #1 0x5e7463b50a82 in memcpy /usr/include/x86_64-linux-gnu/bits/string_fortified.h:29:10 #2 0x5e7463b50a82 in ruby_nonempty_memcpy /tmp/ruby/src/trunk_asan/include/ruby/internal/memory.h:671:16 #3 0x5e7463b50a82 in str_enc_new /tmp/ruby/src/trunk_asan/string.c:1035:9 #4 0x5e74639b97dd in search_required /tmp/ruby/src/trunk_asan/load.c:1126:21 #5 0x5e74639b97dd in require_internal /tmp/ruby/src/trunk_asan/load.c:1274:17 #6 0x5e74639b83c1 in rb_require_string_internal /tmp/ruby/src/trunk_asan/load.c:1401:22 #7 0x5e74639b83c1 in rb_require_string /tmp/ruby/src/trunk_asan/load.c:1387:12 Notes: Merged: https://github.com/ruby/ruby/pull/12414
2024-12-20Provide Ractor support for **Kevin Newton
Fixes [Bug #20916] Notes: Merged: https://github.com/ruby/ruby/pull/12417
2024-12-20Don't print bug report in asan_death_callback when no VMPeter Zhu
If we don't have the VM (e.g. printing memory leaks in LSAN after shutdown) then we will crash when we try to print the bug report. This issue was reported in: https://github.com/ruby/ruby/pull/12309#issuecomment-2555766525 Notes: Merged: https://github.com/ruby/ruby/pull/12413
2024-12-20[DOC] Fix to GC.config docsMatt Valentine-House
Notes: Merged: https://github.com/ruby/ruby/pull/12415
2024-12-20[DOC] Document the :implementation key of GC.configMatt Valentine-House
Notes: Merged: https://github.com/ruby/ruby/pull/12411
2024-12-20[DOC] Refresh standard libraries page (#12404)Stan Lo
* Migrate standard library doc page to markdown * Improve libraries listing and link to source code * Fix grammar and improve phrasing Co-authored-by: Jeremy Evans <code@jeremyevans.net> Notes: Merged-By: jeremyevans <code@jeremyevans.net>
2024-12-20[DOC] Don't document gemspec filesEarlopain
Since https://github.com/ruby/ruby/commit/cf711863cbe0b81be5ff0adfb64936137995cc4e, gemspecs are included because the default exclude is overwritten Notes: Merged: https://github.com/ruby/ruby/pull/12386
2024-12-20Fix GC compaction crash when using local variables in evalPeter Zhu
If we have local variables outside of the eval, the local variables names are IDs. We convert these IDs to char * using rb_id2name. However, these char * are actually Ruby strings, which may be embedded. This means that it is not safe to rb_id2name and call any potential GC entrypoints because if a GC compaction runs, the embedded string may move and the pointer will change. For example, if you compile with `-DRGENGC_CHECK_MODE=1`, then the following script will crash: GC.auto_compact = :empty GC.stress = true o = Object.new eval("def o.m(k: 0) k end") The crash message is: test.rb:6: [BUG] Local with constant_id 1 does not exist ruby 3.4.0dev (2024-12-17T18:34:57Z prism-local-compac.. 434346726c) +PRISM [arm64-darwin24] -- C level backtrace information ------------------------------------------- miniruby(rb_print_backtrace+0x24) [0x10312fec4] vm_dump.c:823 miniruby(rb_print_backtrace) (null):0 miniruby(rb_vm_bugreport+0x2d4) [0x1031301b8] vm_dump.c:1155 miniruby(rb_bug_without_die_internal+0xa8) [0x102dd6a94] error.c:1097 miniruby(rb_bug+0x28) [0x102dd6b00] error.c:1115 miniruby(pm_lookup_local_index+0xec) [0x102d61e4c] prism_compile.c:1237 miniruby(pm_compile_node+0x45d0) [0x102d252f4] prism_compile.c:9334 miniruby(pm_compile_node+0x1864) [0x102d22588] prism_compile.c:8650 miniruby(pm_compile_node+0x65ec) [0x102d27310] prism_compile.c:9897 miniruby(pm_compile_scope_node+0x3008) [0x102d77bcc] prism_compile.c:6584 miniruby(pm_compile_node+0x5ec4) [0x102d26be8] prism_compile.c:9768 miniruby(pm_iseq_compile_node+0xac) [0x102d20bf0] prism_compile.c:10069 miniruby(pm_iseq_new_with_opt_try+0x2c) [0x102e7d088] iseq.c:1029 miniruby(rb_protect+0x108) [0x102dea9bc] eval.c:1033 miniruby(pm_iseq_new_with_opt+0x264) [0x102e7c444] iseq.c:1082 miniruby(pm_iseq_new_eval+0xec) [0x102e7c8e0] iseq.c:961 miniruby(pm_eval_make_iseq+0x594) [0x1031209cc] vm_eval.c:1770 miniruby(eval_make_iseq+0x54) [0x103120068] vm_eval.c:1799 Notes: Merged: https://github.com/ruby/ruby/pull/12374
2024-12-20Don't recompute the strlen in pm_eval_make_iseqPeter Zhu
We've already computed the length of the string, so we can reuse it. Notes: Merged: https://github.com/ruby/ruby/pull/12374
2024-12-20[PRISM] Treat it as a local when compiling patternsMatt Valentine-House
Fixes [Bug #20973] Notes: Merged: https://github.com/ruby/ruby/pull/12408
2024-12-20[PRISM] Fix compiling popped opt_str_uminus and opt_str_freezeKazuki Yamaguchi
Put a pop as needed. This example currently causes [BUG]: $ ruby --parser=prism -e'1.times{"".freeze;nil}' -e:1: [BUG] Stack consistency error (sp: 15, bp: 14) ruby 3.4.0dev (2024-12-20T00:48:01Z master 978df259ca) +PRISM [x86_64-linux] Notes: Merged: https://github.com/ruby/ruby/pull/12410
2024-12-20Fix tests for fast_fallback (#12406)Misaki Shioi
* TCPSocket.new: Close resources in ensure * TCPSocket.new: Remove unnecessary comments * Socket.tcp: Make assert_separately in TestSocket more readable * Socket.tcp: Returning instead of exiting * Socket.tcp: Close resources in ensure * Socket.tcp: Avoid test failures on hosts that only support IPv4 Notes: Merged-By: shioimm <shioi.mm@gmail.com>
2024-12-20Memerror is fatal if VM cannot be unlocked.Matt Valentine-House
[Bug #20942] If we've raised a memerror while the VM is locked, and the tag we're jumping to has been locked at a different level to the current lock (ie. we've locked the VM again since the tag we're jumping to) then we should consider this memerror fatal and exit, since the tag cannot unlock the VM. Co-Authored-By: Peter Zhu <peter@peterzhu.ca> Notes: Merged: https://github.com/ruby/ruby/pull/12393
2024-12-20Bundle rbs-3.8 (#12399)Soutaro Matsumoto
* Clean up skip tests * Bundle rbs-3.8.0.pre.1 Notes: Merged-By: soutaro <matsumoto@soutaro.com>
2024-12-19[DOC] Link to special `fatal` class through `rdoc-ref`Stan Lo
Notes: Merged: https://github.com/ruby/ruby/pull/12391
2024-12-19Don't unpoison the CC in vm_ccs_freePeter Zhu
The poison status is maintained by the GC, so don't unpoison it in vm_ccs_free. If the object is not a garbage object, then it should not be poisoned. Notes: Merged: https://github.com/ruby/ruby/pull/12402
2024-12-19[DOC] Add gc/README.mdPeter Zhu
Notes: Merged: https://github.com/ruby/ruby/pull/12379
2024-12-19Fix use-after-free in vm_ccs_free()Alan Wu
`struct rb_callcache *` point to an imemo object on the GC heap when pushed into `struct rb_class_cc_entries`, but by the time vm_ccs_free() runs, the entire GC page the imemo was on could already be deallocated. With the right conditions, vm_ccs_free() wrote to freed memory. rb_objspace_garbage_object_p() by itself is not enough to determine liveness. I conjectured this situation to be possible in <https://github.com/ruby/ruby/pull/11995> using hints from crashes in the wild. With c37bdfa5311be0aa8503b995299fb9547cede0a6 ("Make asan_poison_object poison the whole slot"), the in-tree test suite now recreates this scenario[^1][^2][^3]. Use rb_gc_pointer_to_heap_p(). Other uses of rb_objspace_garbage_object_p() could be making the same mistake, but correcting them might introduce serious performance regressions, so leave them alone for now. [^1]: http://ci.rvm.jp/results/trunk_asan@ruby-sp1/5477412 [^2]: http://ci.rvm.jp/results/trunk_asan@ruby-sp1/5477445 [^3]: http://ci.rvm.jp/results/trunk_asan@ruby-sp1/5477448 Notes: Merged: https://github.com/ruby/ruby/pull/12401 Merged-By: XrXr