Activity
From 05/06/2025 to 05/12/2025
05/12/2025
-
11:50 PM Feature #21311: Namespace on read (revised)
- Sorry, I didn't get a chance to review this before it was merged. I really don't think adding this level of indirection to RCLASS_EXT access and similar is a good idea.
Let's look at `rb_class_get_superclass` as an example. This shoul... -
11:16 PM Feature #21311 (Assigned): Namespace on read (revised)
-
09:59 PM Feature #21311: Namespace on read (revised)
- As another datapoint on Linux (Ubuntu 24.04, AMD Ryzen 9800X3D), it looks like it is slower (around 0-5%) but also has higher memory usage by about 5-10%.
```
pre-namespace: ruby 3.5.0dev (2025-05-11T03:09:26Z master 49742414f6) +PRI... -
01:07 PM Feature #21311 (Open): Namespace on read (revised)
- byroot (Jean Boussier) wrote in #note-75:
> > Please open another ticker for further problems, issues, bugs, etc.
> ...
I had a plan to add CI configuration to add `RUBY_NAMESPACE=1` checks and I thought it would not be a part of this.... -
12:52 PM Feature #21311: Namespace on read (revised)
- > Please open another ticker for further problems, issues, bugs, etc.
Right now `RUBY_NAMESPACE=1 make -j btest` fails, are you actively working on adding a CI step that run with `RUBY_NAMESPACE=1` or should I open another ticket to t... -
12:42 PM Feature #21311 (Closed): Namespace on read (revised)
- I've merged the change into master. So, let me close this issue.
Please open another ticker for further problems, issues, bugs, etc. -
11:16 PM Bug #21327 (Assigned): Windows builds seem broken after clock_gettime changes?
-
11:16 PM Bug #21326 (Assigned): Instruction generation differences between parse.y and prism for `def a(x, ...); b(...); end`
-
11:16 PM Bug #21315 (Assigned): Finalizers violate the `rb_ractor_confirm_belonging` assertion
-
11:16 PM Bug #21313 (Assigned): `it` in rescue/ensure on prism
-
11:16 PM Bug #21298 (Assigned): `ObjectSpace.allocation_class_path` returns inconsistent results depending on `TracePoint` state
-
11:16 PM Feature #21277 (Assigned): Windows ARM support
-
11:16 PM Feature #21275 (Assigned): Update to Unicode 17.0
-
11:16 PM Bug #21270 (Assigned): init_fast_fallback_inetsock_internal (default for TCPSocket.new/TCPSocket.open) isn't fiber aware
-
11:16 PM Bug #21266 (Assigned): YJIT GC safety crash with proc objects as block argument
-
11:16 PM Feature #21221 (Assigned): Proposal to upstream ZJIT
-
11:16 PM Bug #21212 (Assigned): IO::Buffer can be freed while its slice is locked
-
11:16 PM Bug #21208 (Assigned): `Ractor#send(move: true)` allow moving objects that are on the stack, and used by C code.
-
11:16 PM Bug #21200 (Assigned): Ractor spuriously hangs, segfaults or errors on TestEtc#test_ractor_parallel
-
11:16 PM Bug #21187 (Assigned): Strings concatenated with `\` getting frozen with literal hashes (PRISM only)
-
11:16 PM Bug #21158 (Assigned): Ractor using 'receive_if' sits in busy wait when there are skipped messages in the incoming queue
-
11:16 PM Bug #21146 (Assigned): VM_ASSERT(expr) gives bad bug report results when another ractor fails an assertion during printing of report
-
11:16 PM Bug #21108 (Assigned): C-c (SIGINT) crashes ruby when looping Ractors are not taken?
-
11:16 PM Bug #21090 (Assigned): SEGV from require in Thread in Ractor
-
11:16 PM Bug #21037 (Assigned): Ractors hang with multiple threads
-
11:16 PM Bug #21007 (Assigned): Ractor scheduler issue when multiple threads in a ractor
-
11:16 PM Bug #20905 (Assigned): Ruby VM hangs while using ractors
-
11:16 PM Bug #20473 (Assigned): Ractor array/hash literals
-
11:16 PM Bug #20346 (Assigned): FiberScheduler.unblock not called by Thread#join when Thread body contains Ractor.take
-
11:16 PM Bug #20167 (Assigned): Code execution isn't recorded in Ractor
-
11:16 PM Bug #19981 (Assigned): bootstraptest/test_ractor.rb: Segmentation fault on arm32
-
11:16 PM Bug #19112 (Assigned): Ractor garbage collection breaks/disables all active tracepoints
-
11:16 PM Bug #18733 (Assigned): Heavy GC allocations cause performance issue with Ractor
-
11:16 PM Bug #18412 (Assigned): Segfault in test_ractor.rb
-
09:10 PM Revision b0502e8f (git): Remove respond_to check from Class#bind_call
-
06:15 PM Bug #21286: Windows - MSYS2 just updated to GCC 15.1.0, builds failing
- I will :) I'm planning to cut an early Ruby 3.4 release this week.
-
10:02 AM Bug #21286: Windows - MSYS2 just updated to GCC 15.1.0, builds failing
- Will you create new ruby stable releases in the next days? I'm asking because I've seen many CI failures and bug reports due to this GCC-15 issue and I wonder if I should release a new RubyInstaller series with this patch or if there wil...
-
04:59 PM Revision c6528548 (git): [ruby/erb] Use cgi/escape instead of deprecated cgi/util
- 04:22 PM Revision 03a7f1ff (git): Update default gems list at 957473d87fc7741c8d36caed8f05db [ci skip]
-
04:21 PM Revision 957473d8 (git): [ruby/psych] Bump version for release
- https://github.com/ruby/psych/commit/b9dec9f811
-
04:19 PM Revision 0c94ae04 (git): [ruby/psych] Fix dumping `StringIO` (and potentially others) on Ruby <= 2.7
- In Ruby < 3.0, the superclass of StringIO was actually already `Data`,
but it doesn't have the expected shape. So, on these earlier versions it errors:
> NoMethodError: undefined method `members' for #<StringIO:0x00005641dd5f2880>
> ...
... -
04:03 PM Revision 53a27f11 (git): YJIT: Split the block on optimized getlocal/setlocal (#13282)
-
03:57 PM Revision 0b6cee73 (git): ZJIT: Stop padding side exits (#13295)
-
03:13 PM Feature #21258: Retire CGI library from Ruby 3.5
- CGI may be an "old" protocol but that maturity brings stability. It means I don't need to run an app server process (like puma) at all. I don't need to worry about open ports, memory leaks, resource leaks, connection pooling, etc. It's e...
-
03:07 PM Revision 64944cf4 (git): [DOC] Remove a garbage
-
02:51 PM Revision 85d9ebc9 (git): Remove duplicate asan_unpoisoning_object
- It's already defined in internal/sanitizers.h.
-
02:16 PM Revision bc6d48bd (git): [DOC] Tweak for String#+@ (#13285)
-
01:57 PM Revision 311b9352 (git): [ruby/erb] [DOC] Make documentation 100%
- https://github.com/ruby/erb/commit/9152ce8db4
-
08:45 AM Revision 46e4c867 (git): Detect `clock_gettime` and `clock_getres` for winpthreads
-
08:45 AM Revision 91375d75 (git): CI: Create proper revision.h on Windows
-
08:45 AM Revision d2ffdb10 (git): Explicit cast down from `double` to `int`
-
08:45 AM Revision ed280611 (git): Do not let files depend on a phony target
-
08:45 AM Revision 543e3a18 (git): Cast up `int` instruction code to `VALUE`
- Fix Visual C warnings:
```
iseq.c(3793): warning C4312: 'type cast': conversion from 'int' to 'void *' of greater size
iseq.c(3794): warning C4312: 'type cast': conversion from 'int' to 'void *' of greater size
``` -
08:45 AM Revision f1f0cc14 (git): Separate `__has_attribute` from `defined(__has_attribute)`
- Fix Visual C warnings:
```
regenc.h(121): warning C4067: unexpected tokens following preprocessor directive - expected a newline
``` -
07:49 AM Revision 131ba059 (git): test_object_id.rb: use better randomness
- When the test is repeated 20 or more times in the same process
it's not that unlikely for `rand(100_000)` to return the same thing
twice, causing `TestObjectIdTooComplexClass` to fail.
```
1) Failure:
TestObjectIdTooComplexClass#test_... -
03:52 AM Revision f638e148 (git): Support to sync cgi/escape from ruby/cgi repo
- 02:09 AM Revision 4464cbe5 (git): [rubygems/rubygems] Fix doctor command parsing of otool output
- I have several gem dylibs that have a line matching "(compatibility "
with no file path preceding it.
https://github.com/rubygems/rubygems/commit/de9dc2bdc4 -
02:09 AM Revision af799140 (git): [ruby/json] Favor decimal notation over scientific notation for floats
- e.g.
```
JSON.dump(1746861937.7842371)
```
master:
```
"1.https://github.com/ruby/json/commit/746861937784+9"
```
This branch and older json versions:
```
https://github.com/ruby/json/commit/1746861937.7842371
```
In the end it's shor...
05/11/2025
-
09:56 PM Bug #21328: Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
- Or, use GCC 14 for a while, if possible. (I am not familiar with MSYS2)
-
09:56 PM Bug #21328 (Closed): Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
- I believe this is the same issue as #21286.
Please apply the patch of https://github.com/ruby/ruby/pull/13202 yourself, or wait for Ruby 3.3.9. -
03:27 PM Bug #21328 (Closed): Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
- We are facing an issue that starts in 05/03/2025
We have an Azure Devops Pipeline that build and test a project, but in the test step we have the following error:
```
Gem::Ext::BuildError: ERROR: Failed to build gem native extension... -
08:37 PM Revision dc5555d7 (git): Fix -Wmaybe-uninitialized
- ../namespace.c: In function ‘current_namespace’:
../namespace.c:221:48: warning: ‘proc_ns’ may be used uninitialized [-Wmaybe-uninitialized]
221 | if (permit_calling_builtin || (proc_ns && NAMESPACE_USER_P(proc_ns))... -
08:05 PM Revision 8b7a4d16 (git): Handle GC triggering while building the initial `id_to_obj_tbl`
- GC can trigger while we build the table, and if it sweeps an object
with an ID, it may not find it in the `id_to_obj` table. -
05:50 PM Revision 2fe8b9cd (git): Copy to path with the base name
-
05:50 PM Revision b48b8413 (git): digest.so needs ruby/digest.h which is installed by build-ext
-
05:50 PM Revision 204740b7 (git): Revert "Try removing building C API specs in CRuby makefiles entirely"
- This reverts commit 2a9236366d6016738a756caecab03263565a20c7.
spec/ruby/optional/capi/spec_helper.rb doesn't work well for mingw. -
05:50 PM Revision 3e47e7a4 (git): Fix redefinition of `clock_gettime` and `clock_getres`
- winpthreads-git 12.0.0.r720 provides `clock_gettime` and
`clock_getres` as inline functions. -
05:35 PM Revision f2e5f6db (git): Allow T_CLASS and generic types to be too_complex
- The intial complex shape implementation never allowed objects
other than T_OBJECT to become too complex, unless we run out of
shapes.
I don't see any reason to prevent that.
Ref: https://github.com/ruby/ruby/pull/6931 -
05:02 PM Feature #21219: `Object#inspect` accept a list of instance variables to display
- ℹ️ In case it's of interest/inspiration, I released [Inspectable](https://alchemists.io/projects/inspectable) 0.2.0 which tackles what is described in this issue by making it easy to redact sensitive information, slim down verbosity, or ...
-
04:32 PM Misc #21325: make ruby more middle-aged man friendly
nobu (Nobuyoshi Nakada) wrote in #note-2:
> `format` is an alias of `#sprinf` inherited from `Kernel`.
> ...
if format is not ok,
to_s will be good, like Integer, `255.to_s(16)`-
10:27 AM Misc #21325: make ruby more middle-aged man friendly
- `format` is an alias of `#sprinf` inherited from `Kernel`.
We can't rename it. -
04:16 PM Feature #21311: Namespace on read (revised)
- > wanted to make sure everyone is aware of this
What I want all in the thread to realize is that if somewhere in the tree of your object, some code relies on a core extension, that object is automatically not cross-namespace-safe, and y... -
03:09 PM Feature #21311: Namespace on read (revised)
- Example:
```ruby
# main.rb
class C
attr_reader :target
def initialize(target)
@target = target
end
end
ns = Namespace.new
ns.require_relative 'foo'
c = C.new(Object)
ns::Foo.new.m(c)
# foo.rb
class Foo
def m(c)
(c.... -
03:05 PM Feature #21311: Namespace on read (revised)
- fxn (Xavier Noria) wrote in #note-70:
> Maybe you have the C code in your head, I am looking at it as a Ruby programmer would. I have one object reference, and I pass it in method call, no namespace-level constant resolution involved in... -
02:53 PM Feature #21311: Namespace on read (revised)
- > That should not happen, and if it happens, it's a bug. Could you write and show the script to reproduce it?
Exactly, as far as I can tell it does not happen, which to me it means we do not have (1) in place.
It was a way to say that,... -
02:50 PM Feature #21311: Namespace on read (revised)
- fxn (Xavier Noria) wrote in #note-68:
> @tagomoris when I said that (1) would break Ruby semantics I meant that **in the same namespace** you would have two objects with the same ID and different state. That does not happen as far as I ... -
02:44 PM Feature #21311: Namespace on read (revised)
- @tagomoris when I said that (1) would break Ruby semantics I meant that **in the same namespace** you would have two objects with the same ID and different state. That does not happen as far as I can tell.
-
02:24 PM Feature #21311: Namespace on read (revised)
- @tagomoris From the point of view of the Ruby programmer, I have an object, I pass it, and the callee receives a different object. To me, that is (2). Somehow, the object itself has mutated.
We are not talking about constant lookup in t... -
01:59 PM Feature #21311: Namespace on read (revised)
- @fxn I'm unsure I correctly understand what you mean... Let me check your point.
You said:
* The current namespace implementation behaves like (2), not (1).
* The passed value to `ns::C.x` (in the callee namespace side) will be a di... -
10:11 AM Feature #21311: Namespace on read (revised)
- Some of the issues I have noted seem to be addressable and have been added to the TODO. (I have written tickets for them.)
But there is [one](https://bugs.ruby-lang.org/issues/21322) that seems fundamental and worries me. Since this tic... -
10:00 AM Feature #21311: Namespace on read (revised)
- @byroot Thank you for working on the feature. I'll merge the patches soon (had merged one already).
About the crash with `RUBY_NAMESPACE=1`, I'll work on it ASAP after merging the branch once.
I know that the 3-5% performance degrada... -
09:30 AM Feature #21311: Namespace on read (revised)
- Alright, so I can't benchmark with `RUBY_NAMESPACE=1` because I keep running into that crash and can't figure it out.
In the process of trying to find a fix I found multiple other bugs:
- https://github.com/tagomoris/ruby/pull/7
... -
08:12 AM Feature #21311: Namespace on read (revised)
- I submitted a fix for the crash here: https://github.com/tagomoris/ruby/pull/5
But now it's crashing in `require`
```
/Users/byroot/.gem/rubies/head-namespaces/gems/activesupport-7.2.2.1/lib/active_support/inflector/inflections.rb... -
08:02 AM Feature #21311: Namespace on read (revised)
- headline benchmarks (in non-ideal conditions, I was on battery, etc) and **whithout** `RUBY_NAMESPACE=1`:
```
master: ruby 3.5.0dev (2025-05-11T03:09:26Z master 49742414f6) +PRISM [arm64-darwin24]
namespace: ruby 3.5.0dev (2025-05... -
07:47 AM Feature #21311: Namespace on read (revised)
- Trying to run benchmarks with `RUBY_NAMESPACE=1` crashes during init:
```
opt/rubies/head-namespaces/bin/ruby: [BUG] Segmentation fault at 0x0000000000000008
ruby 3.5.0dev (2025-05-11T00:30:16Z namespace-on-read-.. 6629795fff) +PRIS... -
07:34 AM Feature #21311: Namespace on read (revised)
- I opened a PR on yjit-bench with workarounds for both the fiddle issue and the CGI issue: https://github.com/Shopify/yjit-bench/pull/363
I'll see if I can benchmark your branch. -
07:13 AM Feature #21311: Namespace on read (revised)
- > bin/rails aborted!
> ...
Yes, the `cgi` changes broke Rails. You can add `gem "cgi"` to the benchmark's Gemfile to workaround that.
Both Rails nightly CI and Shopify nightly CI are still broken from the recent Set change and got br... -
12:42 AM Feature #21311: Namespace on read (revised)
- `make yjit-bench` is now failing even on master HEAD.
> bin/rails aborted!
> ...
I saw commits to re-organize cgi.
Hmm, I can wait for the fix and will make benchmark outputs if others don't make changes which conflict with the name... -
03:44 PM Bug #21322: Namespaces and builtin classes as arguments and return values
- We have followed the discussion in https://bugs.ruby-lang.org/issues/21311.
I may contribute a doc patch to explain the scope to which root object references behave differently in different namespaces.
A consequence of this design is t... -
01:24 PM Bug #21322: Namespaces and builtin classes as arguments and return values
- The third option is more aligned with my intuitive idea of a new entity with new rules. Instead of a container of methods and constants that `::` can work with, you may need a new kind of language-level entity an "isolate", a "cell", a "...
-
01:01 PM Bug #21322: Namespaces and builtin classes as arguments and return values
- @eregon maybe, but the fact is that you pass an object, and the callee receives a different object. This is not consistent with the current language.
Ideas:
* Introduce the concept of "namespace-level root objects", documented to be sw... -
03:38 PM Revision 54c2edc0 (git): Fix `Namespace#inspect` to display its internal id
-
02:32 PM Revision b94df81b (git): RUBY_TYPED_WB_PROTECTED should be specified with write barrier protection on this object.
- https://github.com/tagomoris/ruby/pull/7
RUBY_TYPED_FREE_IMMEDIATELY can be added because namespace_entry_free does no IO nor
things to block. -
02:32 PM Revision 574127b0 (git): Add missing gc_mark in `autoload_const_mark`
- If we're referencing the namespace object we have to mark it.
-
02:32 PM Revision ae2d5378 (git): Suppress warning about unused variable without VM_CHECK_MODE
-
02:32 PM Revision e9b538bb (git): Fix `namespace_initialize` to not crash on boot
- ```
/opt/rubies/head-namespaces/bin/ruby(sigsegv+0x84) [0x104e897e8]
/usr/lib/system/libsystem_platform.dylib(_sigtramp+0x38) [0x18de56de4]
/opt/rubies/head-namespaces/bin/ruby(object_id+0x80) [0x104d7d420]
/opt/rubies/head-namespaces/bi... -
02:32 PM Revision b132322e (git): Skip mmtk/i686 tests for a while
-
02:32 PM Revision bbcc3782 (git): Skip updating max_iv_count when the namespace cannot be determined
-
02:32 PM Revision c2c5b054 (git): Unexpectedly miss-fixed macro during rebase
-
02:32 PM Revision f0b41ef6 (git): Describe the basic documents of Namespace
-
02:32 PM Revision 8199e6e1 (git): Show experimental warning when namespace is enabled
-
02:32 PM Revision 8ecc04dc (git): Delete code for debugging namespace
-
02:32 PM Revision 82f645e8 (git): Namespace::Entry is long living object
-
02:32 PM Revision 294b52fb (git): Follow the code style about else
-
02:32 PM Revision 90e5ce61 (git): Rename RCLASS_EXT() macro to RCLASS_EXT_PRIME() to prevent using it wrongly
- The macro RCLASS_EXT() accesses the prime classext directly, but it can be
valid only in a limited situation when namespace is enabled.
So, to prevent using RCLASS_EXT() in the wrong way, rename the macro and
let the developer check it i... -
02:32 PM Revision ff790c75 (git): Compact prime classext readable/writable flags
- To make RClass size smaller, move flags of prime classext readable/writable to:
readable - use ns_classext_tbl is NULL or not (if NULL, it's readable)
writable - use FL_USER2 of RBasic flags -
02:32 PM Revision e81d5020 (git): Add yjit/zjit bindings for adding namespace
-
02:32 PM Revision 5ee1ec31 (git): initialize method tables before any GC chance
-
02:32 PM Revision f24ba27d (git): avoid calling ZALLOC after NEWOBJ_OF for RClass: need to return RClass not promoted
-
02:32 PM Revision 4b33b468 (git): Fix function pointer type mismatch with `rb_define_private_method`
- `rb_define_private_method` performs strict type checking on the function
pointer. As a result, we cannot pass the function a generic signature.
```
/github/workspace/src/namespace.c:1097:72: note: expected 'VALUE (*)(void)' {aka 'long... -
02:32 PM Revision cf3e2bba (git): Prevent a compile error of clang's -Wformat-pedantic
- ```
/github/workspace/src/proc.c:2023:65: error: format specifies type 'void *' but the argument has type 'const rb_namespace_t *' (aka 'const struct rb_namespace_struct *') [-Werror,-Wformat-pedantic]
2023 | rb_bug("Unexpected ... -
02:32 PM Revision e7e51749 (git): spec/ruby/core/module/ancestors_spec.rb: Add a guard for Namespace feat.
-
02:32 PM Revision cb99e544 (git): Update common.mk dependencies
-
02:32 PM Revision 8d3cd430 (git): Remove unnecessary prototype declarations
- ```
internal/class.h:158:20: warning: ‘RCLASS_SET_CLASSEXT_TABLE’ declared ‘static’ but never defined [-Wunused-function]
158 | static inline void RCLASS_SET_CLASSEXT_TABLE(VALUE obj, st_table *tbl);
| ^~~~~~~~... -
02:32 PM Revision 1e4f7a28 (git): Fix "old-style function definition"
- ```
namespace.c: In function ‘rb_namespace_available’:
namespace.c:55:1: warning: old-style function definition [-Wold-style-definition]
55 | rb_namespace_available()
| ^~~~~~~~~~~~~~~~~~~~~~
``` -
02:32 PM Revision 382645d4 (git): namespace on read
-
03:09 AM Revision 49742414 (git): Revert "Fix redefinition of `clock_gettime` and `clock_getres`"
- This reverts commit 585598623da949c92d0f2ea94029a863142ec908.
This broke Windows CIs
```
linking miniruby.exe
Creating library miniruby.lib and object miniruby.exp
process.obj : error LNK2019: unresolved external symbol clock_gettim...
05/10/2025
- 10:07 PM Revision 915d0277 (git): Fix typo (newsString -> new String)
-
10:01 PM Bug #21327 (Closed): Windows builds seem broken after clock_gettime changes?
- https://github.com/ruby/ruby/actions/workflows/windows.yml
not sure how stable windows normally is, but this looks consistent since this commit (5855986)
Assigning to nobu to investigate. -
09:57 PM Bug #21326 (Closed): Instruction generation differences between parse.y and prism for `def a(x, ...); b(...); end`
- Diff instructions using:
```sh
DUMP="puts RubyVM::InstructionSequence.compile(ARGV.first).disasm.gsub(/^\d+ /, '')"
RUBY="def a(x, ...); b(...); end"
env -u RUBYOPT \
diff -U99 \
<(./build/ruby -v --parser=parse.y -e "$... -
07:04 PM Misc #21325 (Open): make ruby more middle-aged man friendly
- after 35, I lose all interests about programming.
no linux, no vim, no iterm2, and no much much.
when I want to format a ruby time to string.
I will try `Time.now.format("yy-MM-dd")`,
but I get `private method 'format' calle... -
05:32 PM Revision 98667f82 (git): [DOC] Update documentation for ObjectSpace#each_object
- Co-authored-by: Benoit Daloze <[email protected]>
- 05:32 PM Revision 29b3d683 (git): [DOC] Make clear that current behavior is not ideal
- 05:32 PM Revision a51b4a86 (git): [DOC] ObjectSpace#each_object behavior in multi-Ractor mode
- This behavior of ObjectSpace#each_object has been around since Ruby 3.0
when Ractors were first introduced, but was never documented and has
caused some amount of confusion:
https://bugs.ruby-lang.org/issues/17360
https://bugs.ruby-lang... -
04:43 PM Feature #21311: Namespace on read (revised)
- kou (Kouhei Sutou) wrote in #note-54:
> > building fiddle fails
> ...
I couldn't find the log when fiddle is built during `make yjit-bench`...
Anyway, I'll retry yjit-bench on Linux. -
01:13 PM Feature #21311: Namespace on read (revised)
- @mame
> I am personally excited to see Ruby adding a bold new feature that brings real energy and discussion to the community. This is Ruby. Let's enjoy this moment and move forward together with excitement.
Absolutely.
I would have w... -
09:03 AM Feature #21311: Namespace on read (revised)
- > building fiddle fails
Could you share the error message? -
08:37 AM Feature #21311: Namespace on read (revised)
- > So I ran benchmark/app_fib.rb
Fibonnaci isn't a very interesting benchmark here. It's just the same method being called over and over.
`yjit-bench` contains some macro benchmark that are more likely to have inline cache misses he... -
08:31 AM Feature #21311: Namespace on read (revised)
- On my laptop, building fiddle fails and it prevents running `make yjit-bench`.
So I ran benchmark/app_fib.rb and got results (The result after several times continuous runs):
```
# Ruby 3.4.2
$ time ruby benchmark/app_fib.rb
... -
02:55 PM Revision 6dd7a7bb (git): Refactor `rb_obj_field_get` to handle complex shapes
- This allow to get or set fields without having to worry about the
shape type. -
01:39 PM Revision d9502a83 (git): Rename `rb_field_get` -> `rb_obj_field_get`
- To be consistent with `rb_obj_field_set`.
-
01:22 PM Feature #21258: Retire CGI library from Ruby 3.5
- > It means CGI is not promoted bundled gems.
Is there a reason to skip this step?
For previous extractions we could rely on warnings to keep track of gems that need to be updated while continue to test ruby-head, with this immedi... -
12:36 PM Bug #21324 (Open): Namespace loads RubyGems in root Namespace but it should not
- RubyGems has tons of mutable state, isn't core library and isn't "builtin classes" either, so it should not be in root Namespace, but it is currently:
```
$ RUBY_NAMESPACE=1 ruby -ve 'ns = Namespace.new; p ns::Gem.equal?(Gem)'
ruby 3.... -
12:32 PM Bug #21323: irb fails to start with Namespace
- Looks somewhat similar, `benchmark` loads fine in main namespace but not in other namespace:
```
$ RUBY_NAMESPACE=1 ruby -ve 'require "benchmark"; p Benchmark::VERSION; ns = Namespace.new; File.write "ns.rb", "require :benchmark.to_s; ... -
11:14 AM Bug #21323 (Closed): irb fails to start with Namespace
- ```
$ irb
irb(main):001> 6 * 7
=> 42
$ RUBY_NAMESPACE=1 irb
/home/eregon/prefix/ruby-master/bin/ruby: warning: Namespace is experimental, and the behavior may change in the future!
See doc/namespace.md for know issues, etc.
/hom... -
12:22 PM Bug #21317: Namespaces leak with object IDs
- Seems very related to https://bugs.ruby-lang.org/issues/21322 so let's keep this one closed and discuss there.
-
11:13 AM Bug #21317: Namespaces leak with object IDs
- Full reproducer, showing that even though `Object` is the same reference in all namespaces it can have different constants in different namespaces, but only if calling `constants` in that namespace:
```
$ RUBY_NAMESPACE=1 ruby -ve 'ns ... -
10:13 AM Bug #21317 (Closed): Namespaces leak with object IDs
-
10:12 AM Bug #21317: Namespaces leak with object IDs
- @byroot, if you will, I believe this one can be closed too.
-
08:11 AM Bug #21317: Namespaces leak with object IDs
- I suspect this one was an error of mine. I think we can close.
-
05:33 AM Bug #21317: Namespaces leak with object IDs
- Did you actually test the code? `mod1.constants == mod2.constants` returns `true`.
```
$ cat main.rb
ns = Namespace.new
mod1 = Object
mod2 = ns::Object
p mod1 #=> Object
p mod2 #=> Object
p mod1.object_id == mod2.object_id #=... -
12:20 PM Bug #21322: Namespaces and builtin classes as arguments and return values
- Right, IOW it's the duality between builtin classes and other classes.
Builtin classes' constants, methods, ivar and cvars are all a copy per Namespace (and so potentially differ), even though for all builtin classes they are `equal?` w... -
09:50 AM Bug #21322: Namespaces and builtin classes as arguments and return values
- For example, if I instead do
```ruby
ns = Namespace.new
ns.require_relative 'foo'
c = Class.new
c::X = 1
ns::C.x(c)
```
then `obj::X` resolves as expected in the method.
Method calls somehow seem to be swapping `VALUE`s that correspo... -
09:40 AM Bug #21322: Namespaces and builtin classes as arguments and return values
- > I believe this is consistent with the feature
I say so in the sense that objects with the same ID are equal in the namespace.
However, it could be argued that it is not consistent with Ruby.
`Object` is a constant that stores a clas... -
09:12 AM Bug #21322 (Open): Namespaces and builtin classes as arguments and return values
- @tagomoris thanks for the docs under `doc/namespace.md`.
Unless I missed it, I believe there is an edge case related to builtin classes (using the vocabulary there). Consider:
```ruby
# test.rb
ns = Namespace.new
ns.require_rela... -
12:17 PM Bug #21320: Namespaces leak with constant lookup
- Full repro:
```
# Copy the description program to program.rb, e.g. $ xsel -b > program.rb
$ RUBY_NAMESPACE=1 ruby -ve 'puts "in main"; require "./program"; puts "in namespace"; Namespace.new.require "./program"'
ruby 3.5.0dev (2025-... -
08:36 AM Bug #21320: Namespaces leak with constant lookup
- This is probably a consequence of https://bugs.ruby-lang.org/issues/21318.
-
12:13 PM Bug #21316: Namespaces leak with permanent names
- Right I think in the namespace defining the class/module the `Module#name` needs to not have a prefix, or it will break many gems.
OTOH when used outside, it could be very confusing without a prefix.
> suggested that Class#name shoul... -
08:18 AM Bug #21316: Namespaces leak with permanent names
- Main problem here is that there are many programs that depend on that name.
They may store it somewhere for later `const_get`. For example, [polymorphic Active Record associations](https://guides.rubyonrails.org/association_basics.html#... -
06:22 AM Bug #21316: Namespaces leak with permanent names
- This is definitely not ideal. `Class#name` could end up referring to a different constant.
```ruby
# main.rb
NS = Namespace.new
NS.require "./sub"
# sub.rb
class C; end
p C #=> expected: C
#=> actual: NS::C ← This could r... -
11:06 AM Bug #21318: Namespaces leak with Module.nesting
- Complete reproducer:
```
$ RUBY_NAMESPACE=1 ruby -ve 'p Module.nesting; ns = Namespace.new; File.write "ns.rb", "p Module.nesting"; ns.require "./ns"'
ruby 3.5.0dev (2025-05-10T07:50:29Z namespace-on-read-.. bd4f57f96b) +PRISM [x86_64... -
10:11 AM Bug #21321: Namespaces do not support extending mixins
- > and sorry for the noise.
It's alright, even if the feature is experimental, the sooner bugs are noticed the better. So thank you for experimenting. -
10:09 AM Bug #21321: Namespaces do not support extending mixins
- Yes, please, and sorry for the noise.
-
09:59 AM Bug #21321 (Closed): Namespaces do not support extending mixins
- > cannot repro anymore.
Closing then? -
08:39 AM Bug #21321: Namespaces do not support extending mixins
- I was yesterday running a checkout from May 6. Updated the branch now and cannot repro anymore.
-
08:28 AM Bug #21321: Namespaces do not support extending mixins
- @mame I was here till 4 AM experimenting with this feature.
To be organized, I reported different things in different tickets. These two could be related, but I don't know it. If they are, they will be closed together. -
05:54 AM Bug #21321: Namespaces do not support extending mixins
- I don't think it's really necessary to create a separate ticket for this from #21319, is it?
-
09:59 AM Bug #21319 (Closed): Namespaces do not support including mixins
-
08:34 AM Bug #21319: Namespaces do not support including mixins
- I was yesterday running a checkout from May 6. Updated the branch now and cannot repro anymore.
-
05:46 AM Bug #21319: Namespaces do not support including mixins
- I cannot repro the issue.
```ruby
# main.rb
ns = Namespace.new
ns.require "./sub"
p :success
```
```ruby
# sub.rb
module M
end
class C
include M
end
```
```
$ RUBY_NAMESPACE=1 ./miniruby main.rb
./miniruby: w... -
09:26 AM Revision 58559862 (git): Fix redefinition of `clock_gettime` and `clock_getres`
- winpthreads-git 12.0.0.r720 provides `clock_gettime` and
`clock_getres` as inline functions. -
08:29 AM Revision 7add6b2a (git): ruby/spec has a minimum of Ruby 3.2 now
- 06:59 AM Revision 3c37d6ff (git): Update bundled gems list as of 2025-05-09
-
06:41 AM Revision c75202c5 (git): [Feature #15408] Fix up _id2ref_spec.rb
05/09/2025
-
11:28 PM Bug #21319: Namespaces do not support including mixins
- Maybe the root cause is _enabling_ namespaces with `RUBY_NAMESPACE=1`.
-
11:02 PM Bug #21319 (Closed): Namespaces do not support including mixins
- The following program
```ruby
module M
end
class C
include M
end
```
fails under a namespace with error
```
'Module#include': Cannot include refinement (TypeError)
``` -
11:27 PM Bug #21321: Namespaces do not support extending mixins
- Maybe the root cause is _enabling_ namespaces with `RUBY_NAMESPACE=1`.
-
11:22 PM Bug #21321 (Closed): Namespaces do not support extending mixins
- The program
```ruby
module M
end
class C
extend M
end
```
fails under a namespace with error:
```
'Kernel#extend': Cannot extend object with refinement (TypeError)
``` -
11:15 PM Revision 3306d7d2 (git): Only clear Ractor cache in child
- This avoids a race condition where we were clearing the cache from
another ractor while it was in use. Oops!
Fixes this failure http://ci.rvm.jp/results/master@oci-aarch64/5750416 -
11:07 PM Bug #21320 (Open): Namespaces leak with constant lookup
- The following program
```ruby
X = :top
class C
X = :super
end
class D < C
p X
end
```
prints `:super` normally, and `:top` if running under a namespace. -
10:54 PM Bug #21318 (Open): Namespaces leak with Module.nesting
- Namespaces are not transparent for this program:
```ruby
Module.nesting
```
The nesting is empty or not depending on whether it is being executed under a namespace. - 10:13 PM Revision 87b621bd (git): Update default gems list at 58c008e68f31a8056df508cc46e17c [ci skip]
-
10:12 PM Revision 58c008e6 (git): [ruby/psych] Bump version for release
- https://github.com/ruby/psych/commit/dbf9e36583
-
10:08 PM Bug #21317 (Closed): Namespaces leak with object IDs
- Namespaces are not transparent for this program
```ruby
if mod1.object_id == mod2.object_id
mod1.constants == mod2.constants
end
```
because it may fail for `mod1 = Object; mod2 = ns::Object`, which have the same object ID. -
10:05 PM Bug #21316 (Open): Namespaces leak with permanent names
- Namespaces are not transparent for this program
```ruby
C = Class.new
C.name == 'C'
```
because under a non-main user namespace, the name of `C` has the namespace as a prefix. -
10:01 PM Feature #15408: Deprecate ObjectSpace._id2ref
- > The question is rather why you want _id2ref to be deprecated
I want it removed, actually! 😀
You have seen all the reasons why it is problematic, but on top of all that it was never intended to be an official API in the first plac... -
08:20 PM Feature #15408: Deprecate ObjectSpace._id2ref
- headius (Charles Nutter) wrote in #note-44:
> I'd also like to know **why** you want `_id2ref` to stick around.
I think that question is backwards. There is no need for any reason to keep existing functionality; backward compatibilit... -
07:19 AM Feature #15408 (Closed): Deprecate ObjectSpace._id2ref
- Applied in changeset commit:git|4de049a3f9709ab8b0b192c40e83b910b80d6de3.
----------
Deprecate `ObjectSpace._id2ref`
[Feature #15408]
Matz decided to deprecate it for Ruby 2.6 or 2.7 but that never
actually happened.
Given the object... -
06:34 AM Feature #15408: Deprecate ObjectSpace._id2ref
- I was hoping for a removal timeline, but alright. I'll merge my PR.
-
03:14 AM Feature #15408: Deprecate ObjectSpace._id2ref
- This was discussed at the dev meeting, and @matz agreed to add the deprecation warning.
-
09:22 PM Revision 4a2f489c (git): Fix rb_range_beg_len() and rb_arithmetic_sequence_beg_len_step() spec
- * The begp, lenp and stepp might not be written to, so they need default values.
-
09:22 PM Revision 2a923636 (git): Try removing building C API specs in CRuby makefiles entirely
- * Since it does not work when using some configure options such as:
.../configure --with-ext=-test-/cxxanyargs,+ --enable-shared
as the CI does.
* It also duplicates the logic of spec/ruby/optional/capi/spec_helper.rb incorrectly.
... -
09:22 PM Revision 29be534f (git): Try fixing building C API specs with make
- * But it doesn't work because there is no .ext/include/ruby/digest.h
when using .../configure --with-ext=-test-/cxxanyargs,+ --enable-shared
as the CI does. -
09:22 PM Revision 78a2ffa0 (git): Fix digest specs when run in CRuby via make test-spec
-
09:22 PM Revision cb4a4418 (git): Fix formatting in digest_spec.c
-
09:22 PM Revision 269ad29d (git): Update to ruby/spec@d8bacef
-
08:04 PM Bug #21315: Finalizers violate the `rb_ractor_confirm_belonging` assertion
- Eregon (Benoit Daloze) wrote in #note-3:
> it clearly seems to exhibit that behavior
To clarify what I mean:
```
$ ruby -e 'OBJ = Object.new; ObjectSpace.define_finalizer(OBJ) { puts "finalizer ran" }'
finalizer ran
```
But clea... -
07:45 PM Bug #21315: Finalizers violate the `rb_ractor_confirm_belonging` assertion
- > When a Ractor terminates just before it actually does so it should probably run the remaining finalizers
Objects aren't necessarily unreferenced/garbage collectable at this point (they could have been made shareable, or be the retur... -
07:13 PM Bug #21315: Finalizers violate the `rb_ractor_confirm_belonging` assertion
- When a Ractor terminates just before it actually does so it should probably run the remaining finalizers, AFAIK, this is what CRuby does when the process is about to terminate and there are finalizers not run yet (but I might be wrong, t...
-
06:56 PM Bug #21315: Finalizers violate the `rb_ractor_confirm_belonging` assertion
- > Run each finalizer in the Ractor that created it (what do we do about terminated ractors?)
That one I think would be doable, we could record the current ractor in with the finalizer.
For terminated Ractors I don't think it's a bi... -
06:51 PM Bug #21315: Finalizers violate the `rb_ractor_confirm_belonging` assertion
- It does seem like it's a problem that this is a way to have access to an unshareable object from multiple ractors
``` ruby
def build_finalizer(object)
previous_ractor = Ractor.current
proc { puts "finalizing on #{Ractor.current} (wa... -
04:19 PM Bug #21315 (Assigned): Finalizers violate the `rb_ractor_confirm_belonging` assertion
- Reproduction (with assertions enabled):
```ruby
require "tempfile"
Ractor.new do
10.times do
Tempfile.new
end
end.take
GC.start
```
```
<OBJ_INFO:rb_ractor_confirm_belonging@../src/ractor_core.h:375> (File)
... -
06:45 PM Revision 3135eddb (git): Refactor `FIRST_T_OBJECT_SHAPE_ID` to not be used outside `shape.c`
-
06:07 PM Feature #21311: Namespace on read (revised)
- This feature proposal is quite exceptional. Because this is a feature strongly driven by @matz himself, and Ruby is matz's language.
@tagomoris has been working closely with Matz for several years to design and implement it. Although ... -
12:16 PM Feature #21311: Namespace on read (revised)
- Let me add.
This is not a case of "let's merge and polish". Problem is, it has to be seen if you can satisfy the goals with this approach at all. Because, you cannot be dazzled by the stated goals, you have to carefully check if the goa... -
11:29 AM Feature #21311: Namespace on read (revised)
- I am aligned with @eregon.
There are several important issues.
Another one that has not been mentioned (I think) is that the design trivially allows for two objects with the same object ID to be different entities. The Ruby programmer ... -
11:02 AM Feature #21311: Namespace on read (revised)
- In https://github.com/ruby/dev-meeting-log/blob/master/2025/DevMeeting-2025-05-08.md#discussion
> mame: Are there any strong opponents?
I guess I am one.
There are many concerns from several people that have been raised here, many unans... - 05:53 PM Revision e2f5e233 (git): [ruby/psych] exception tests
- https://github.com/ruby/psych/commit/1e9b79f699
- 05:53 PM Revision 42328d4e (git): [ruby/psych] more special cases
- https://github.com/ruby/psych/commit/b33bf8b060
- 05:53 PM Revision 451e1dcf (git): [ruby/psych] duplicate more tests
- https://github.com/ruby/psych/commit/a3be6429bf
- 05:53 PM Revision ae299cc9 (git): [ruby/psych] add first test for safe load stream
- https://github.com/ruby/psych/commit/336553b412
- 05:53 PM Revision f0e2a41d (git): [ruby/psych] fixed bugs from testing
- https://github.com/ruby/psych/commit/e954f96639
- 05:53 PM Revision d6931930 (git): [ruby/psych] Add safe version for load_stream
- https://github.com/ruby/psych/commit/30a2a5ee94
-
04:43 PM Revision 011982ef (git): Fix warnings in tests for ObjectSpace._id2ref
- There's a lot of warnings when running test_objectspace.rb because of
ObjectSpace._id2ref. For example:
test_objectspace.rb:19: warning: ObjectSpace._id2ref is deprecated -
04:32 PM Revision 102063f9 (git): ZJIT: Fix a splitting condition for LHS
-
02:24 PM Bug #18119 (Closed): Ractor crashes when instantiating classes
- Applied in changeset commit:git|f30f0f0a22bb5cf536b5ca551f3dfa5ebb745030.
----------
Fix crash when instantiating classes in Ractors
[Bug #18119]
When we create classes, it pushes the class to the subclass list of the
superclass. This... -
02:24 PM Revision f30f0f0a (git): Fix crash when instantiating classes in Ractors
- [Bug #18119]
When we create classes, it pushes the class to the subclass list of the
superclass. This access needs to be synchronized because multiple Ractors
may be creating classes with the same superclass, which would cause race
cond... -
01:14 PM Revision 5349c0aa (git): Align gems/bundled_gems [ci skip]
-
12:41 PM Feature #21258: Retire CGI library from Ruby 3.5
- With recent commits, it seems that a cgi.gemspec is not created.
erb.gemspec shows it as a dependency? -
04:08 AM Feature #21258 (Assigned): Retire CGI library from Ruby 3.5
- We discussed this in devmeeting.
We decided the followings:
* To remove `cgi` library without `CGI.escape*` and `CGI.unescape*` methods.
* It includes `escapeURIComponent`, `unescapeURIComponent`, `escapeHTML`, `unescapeHTML`, `... -
10:28 AM Bug #21280: StringIO#set_encoding warns when backed by chilled string literal
- https://github.com/ruby/stringio/pull/132 is a much cleaner solution, was it considered?
(https://bugs.ruby-lang.org/issues/21281 doesn't have the log yet so I can't check that, EDIT found it: https://github.com/ruby/dev-meeting-log/blob... -
03:28 AM Bug #21280: StringIO#set_encoding warns when backed by chilled string literal
- Discussed at the dev meeting. @matz said that he prefers not to issue warnings that could be false positives, even if they are true positives in many cases.
The code `StringIO.new("").set_encoding('binary')` will work even in future a... -
09:13 AM Revision 15e3675e (git): Remove dead code in `rb_gc_impl_ractor_cache_free`
- Followup: https://github.com/ruby/ruby/pull/13286
-
08:22 AM Revision ea772508 (git): Rename `RB_OBJ_SHAPE` -> `rb_obj_shape`
- As well as `RB_OBJ_SHAPE_ID` -> `rb_obj_shape_id`
and `RSHAPE` is now a simple alias for `rb_shape_lookup`.
I tried to turn all these into `static inline` but I'm having
trouble with `RUBY_EXTERN rb_shape_tree_t *rb_shape_tree_ptr;`
not... -
08:22 AM Revision 0b81359b (git): Stop exposing rb_shape_frozen_shape_p
-
08:22 AM Revision becc45ff (git): Eliminate some `rb_shape_t *` usages outside of `shape.c`.
-
08:22 AM Revision a970d35d (git): Get rid of `rb_shape_get_parent`.
-
08:22 AM Revision 5782561f (git): Rename `rb_shape_get_shape_id` -> `RB_OBJ_SHAPE_ID`
- And `rb_shape_get_shape` -> `RB_OBJ_SHAPE`.
-
08:22 AM Revision a0075754 (git): Remove unused `rb_shape_object_id_index`
-
08:22 AM Revision c9b08882 (git): Refactor `rb_shape_get_next` to return an ID
- Also rename it, and change parameters to be consistent with
other transition functions. -
08:22 AM Revision e0200cfb (git): Refactor `rb_shape_transition_shape_remove_ivar` to not take a shape pointer
- It's more consistent with other transition functions.
-
08:22 AM Revision 3f7c0af0 (git): Rename `rb_shape_obj_too_complex` -> `rb_shape_obj_too_complex_p`
-
08:22 AM Revision 677d075c (git): Refactor `rb_shape_transition_too_complex` to return an ID.
-
08:22 AM Revision f82523f1 (git): Refactor `rb_shape_transition_frozen` to return a `shape_id`.
-
08:22 AM Revision 31d0a581 (git): Get rid of useless SHAPE_MASK
-
08:22 AM Revision 334ebba2 (git): Rename `rb_shape_get_shape_by_id` -> `RSHAPE`
-
08:22 AM Revision 9966de11 (git): Refactor `rb_shape_get_next_iv_shape` to take and return ids.
-
08:22 AM Revision df7d25bb (git): Stop exposing rb_shape_get_root_shape
-
08:22 AM Revision 62eb2007 (git): Remove unused rb_obj_debug_shape
-
08:22 AM Revision e4f97ce3 (git): Refactor `rb_shape_depth` to take an ID rather than a pointer.
- As well as `rb_shape_edges_count` and `rb_shape_memsize`.
-
08:22 AM Revision f8b3fc52 (git): Refactor `rb_shape_traverse_from_new_root` to not expose `rb_shape_t`
-
08:22 AM Revision 7116b0a7 (git): Extract `rb_shape_free_all`
-
08:19 AM Bug #20165 (Closed): Ractors moving a Struct breaks beyond the first 3 fields
- Duplicate of: [Bug #20271] [Bug #20267] [Bug #20255]
This was fixed in 0350290262ea0fbc4e1807901797ee8a6970c2b9 and a few followups.
-
08:16 AM Bug #20897 (Closed): resolv: not usable across ractors
- The linked PR was merged.
-
07:55 AM Revision 30ef0f18 (git): Fix allocation count when forking with Ractors
- After fork we reset to single ractor mode (which IMO we shouldn't do,
but it requires more work to fix) and so we need to add the pending
object counts back to the main heap. -
07:19 AM Revision 4de049a3 (git): Deprecate `ObjectSpace._id2ref`
- [Feature #15408]
Matz decided to deprecate it for Ruby 2.6 or 2.7 but that never
actually happened.
Given the object_id table is a contention point for Ractors
it seems sensible to finally deprecate this API so we can
generate and stor... -
06:55 AM Misc #21100 (Closed): DevMeeting before RubyKaigi 2025
- Meeting log is here: https://github.com/ruby/dev-meeting-log/blob/master/2025/DevMeeting-2025-04-15.md
-
06:37 AM Feature #21309: Can Thread::Mutex be Ractor shareable?
- > Should I create a ticket here?
You can directly open a PR on https://github.com/ruby/net-http/.
If it doesn't get noticed after a while, you can open a corresponding ticket here. -
05:04 AM Feature #21309: Can Thread::Mutex be Ractor shareable?
- > Maybe Net::HTTP could use `IO.select`?
That sounds like a good idea and I'd like to try it. I have checked some previous attempts. Should I create a ticket here? -
06:37 AM Revision 4ef324c7 (git): Added https://bugs.ruby-lang.org/issues/21258 to NEWS.md
- 05:28 AM Revision dcd0a35c (git): Update default gems list at d3c472781dec4fe415203fbb898d8b [ci skip]
-
05:27 AM Revision d3c47278 (git): Replaced CGI.parse with URI.decode_www_form
-
05:27 AM Revision ab19b1f6 (git): Use CGI 0.5.0.beta1
-
05:27 AM Revision 5e1c9067 (git): Added cgi for bundler testing. rack depends cgi/cookie.rb
-
05:27 AM Revision 5aade8a8 (git): Added migration wrapper for cgi.rb and cgi/util.rb
-
05:27 AM Revision ce6c1778 (git): Guard CGI examples with Ruby 3.5 and use cgi/escape for related examples
-
05:27 AM Revision 600c6165 (git): Removed CGI library without CGI::Escape features
-
05:27 AM Revision a61f51f6 (git): Use cgi/escape instead of cgi/util
-
05:27 AM Revision 56423d43 (git): Reduce loading class/module on CGIUtilTest and CGIEscapeTest
-
05:27 AM Revision 382be44f (git): Extract CGIEscapeTest from CGIUtilTest
-
05:27 AM Revision 8a1d4514 (git): Support `require 'cgi/escape'` with extracting CGI::Escape from CGI::Util
-
04:51 AM Revision c6676837 (git): Added instruction for initial setup of depend file
-
04:50 AM Bug #19387: ObjectSpace.each_objects only returns shareable objects after starting a Ractor
- I also ran into this, so I opened an pull request document this behavior.
https://github.com/ruby/ruby/pull/13278 -
03:52 AM Bug #21314 (Open): Kernel#autoload requires the wrong file (?)
- While discussing #21154 with some people at the dev meeting, I found a weird behavior of `Kernel#autoload` that's hard to explain.
I haven't yet looked at it carefully, but I was asked to create a ticket anyway.
```ruby
# main.rb
a... -
03:43 AM Feature #21274 (Closed): Show performance warnings for easily avoidable unnecessary implicit splat allocations
-
03:18 AM Feature #21274: Show performance warnings for easily avoidable unnecessary implicit splat allocations
- This was discussed at the dev meeting, but @matz was negative about adding this warning. He prefers fluent code over performance, so from Ruby's perspective, he did not want to encourage rewriting:
```ruby
order!(argv, **keywords, &n... -
03:31 AM Feature #21307 (Assigned): A way to strictly validate time input
-
03:30 AM Feature #21307: A way to strictly validate time input
- Discussed at the dev meeting. This proposal was accepted as `struct: true` keyword argument, like
```ruby
Time.new(2025, 2, 29, 0, 0, 0, "+00:00", strict: true) #=> ArgumentError
``` -
03:19 AM Feature #21287: Remove SortedSet autoload and set/sorted_set
- Discussed at the dev meeting, and @matz said "go ahead".
05/08/2025
-
11:03 PM Bug #19408 (Closed): Object no longer frozen after moved from a ractor
- Fixed by a5ba7124bcc112f537a29564f644dea67f2b532d
-
10:43 PM Bug #17678 (Closed): Ractors do not restart after fork
- Sorry @jeremyevans0 I think Aaron and I missed that PR, but we did the same thing in https://github.com/ruby/ruby/pull/12982 which should fix this.
One thing we didn't do that's in your PR is forbid forking from within a Ractor, but t... -
08:34 PM Revision 7a660d7c (git): [DOC] Tweaks for What's Here
-
08:25 PM Bug #18119: Ractor crashes when instantiating classes
- I have a fix here: https://github.com/ruby/ruby/pull/13284
-
07:48 PM Revision b67711b1 (git): Fix `remove_instance_variable` on complex objects
- Introduced in: https://github.com/ruby/ruby/pull/13159
Now that there is no longer a unique TOO_COMPLEX shape with
no children, checking `shape->type == TOO_COMPLEX` is incorrect. -
06:05 PM Feature #15408: Deprecate ObjectSpace._id2ref
- @Dan0042 I think @Eregon covered what I was going to say, but I'd also like to know **why** you want `_id2ref` to stick around. There's generally better ways (more reliable, easier for VMs to implement) to everything I have seen it used ...
-
02:47 PM Feature #15408: Deprecate ObjectSpace._id2ref
- https://byroot.github.io/ruby/performance/2025/04/26/unlocking-ractors-object-id.html explains the problems of `_id2ref` in details, and how it changed.
-
02:46 PM Feature #15408: Deprecate ObjectSpace._id2ref
- @Dan0042 It still is, CRuby has to keep a weak map of all objects for which the object_id was asked in case `_id2ref` is used.
That's a big footprint and performance overhead.
It's also impossible to implement this efficiently, as the ... -
01:30 AM Feature #15408: Deprecate ObjectSpace._id2ref
- The original reason to deprecate `_id2ref` is no longer relevant now that `object_id` is a monotonically-increasing ID. So I don't think it should be deprecated, unless there's some other benefit/reason that wasn't mentioned above.
-
05:53 PM Revision e3452cfa (git): Raise error on take/send for Ractors in child processes
- Ractor objects that are available in a child process should raise a
`Ractor::ClosedError` exception when called with `send` or `take`
Co-authored-by: John Hawthorn <[email protected]> -
05:53 PM Revision f7ff3809 (git): Clean up Ractor cache after fork
- Ractors created in a parent process should be properly shut down in the
child process. They need their cache cleared and status set to
"terminated"
Co-authored-by: John Hawthorn <[email protected]> -
05:53 PM Revision d7ad53f2 (git): Acquire VM lock around fork
- Otherwise it might be held by another Ractor, causing a deadlock in the
new process. -
05:46 PM Revision c7508563 (git): Fix -Wreturn-type
- ../variable.c: In function ‘iterate_over_shapes_with_callback’:
../variable.c:2189:1: warning: control reaches end of non-void function [-Wreturn-type]
2189 | }
| ^ -
05:31 PM Feature #20405: Inline comments
- There seems to be some revival of this in the context of type checkers, and Hiroya Fujinami graciously asked for my opinion on the Sorbet Slack. I'll chime into say this:
One of the best parts of Ruby is how much freedom it gives you at... -
04:37 AM Feature #20405: Inline comments
- Using type checkers makes it difficult to write Ruby fluently. To make type checkers work effectively in Ruby, we need to add numerous annotations, and these annotations are done via comments. However, Ruby only has line comments. This r...
-
05:13 PM Bug #20957: RangeError on Array#values_at with negative ranges
- I found almost same behavior at Array#fill
```
[0,1,2,3].fill(10, -10..-5) #=> RangeError
[0,1,2,3].fill(10, -5..-3) #=> RangeError
[0,1,2,3].fill(10, -3..3) #=> [0, 10, 10, 10]
[0,1,2,3].fill(10, 3..10) #=> [0, 1, 2, 10, ... -
03:49 PM Bug #21267: respond_to check in Class#allocate is inconsistent
- Right.
I think it's quite valuable to make those `rb_undef_alloc_func` to avoid having to handle uninitialized objects because that means extra checks (performance overhead) and less optimizations.
For example if the Class#superclass i... -
04:55 AM Bug #21267: respond_to check in Class#allocate is inconsistent
- > Or core types could actually define dup & clone as overridden methods, and not use the alloc function at all and so use rb_undef_alloc_func().
That seems the cleanest actually, WDYT?
Yes. The only options that work are to `rb_undef... -
03:21 PM Feature #21311: Namespace on read (revised)
- I think it would be good to compare this to "isolated execution contexts" which is the well-known approach to get such isolation, e.g.:
* CPython has sub-interpreters
* V8 (JavaScript) has isolates
* MRuby has mrb_state/mrb_open() (ba... -
01:34 PM Feature #21311: Namespace on read (revised)
- I'll do that, thank you!
-
12:53 PM Feature #21311: Namespace on read (revised)
- fxn (Xavier Noria) wrote in #note-44:
> Congrats @tagomoris :).
> ...
Thank you :D
I'm totally open to consider changing the current behavior around permanent classpath including namespace.
But I'll focus on fixing some minor issue... -
07:32 AM Feature #21311: Namespace on read (revised)
- Congrats @tagomoris :).
Would you be open to consider having the permanent name of classes and modules be constant paths? -
05:23 AM Feature #21311: Namespace on read (revised)
- I added committer grants to @tagomoris. Please let me know if you have extra permission or something.
-
04:34 AM Feature #21311: Namespace on read (revised)
- > I nominate @tagomoris (Satoshi Tagomori) for committer.
+1 -
04:25 AM Feature #21311: Namespace on read (revised)
- @tagomoris Can you share your required/optional information to me? see https://github.com/ruby/ruby/wiki/Committer-How-To#required
-
04:21 AM Feature #21311: Namespace on read (revised)
- Let's just merge and experiment. We won't know until we actually try it. Also, I nominate @tagomoris for committer.
Matz. -
02:40 PM Feature #21309 (Rejected): Can Thread::Mutex be Ractor shareable?
- osyoyu (Daisuke Aritomo) wrote in #note-5:
> I am not sure about this. Sending HTTP request using net/http inside an Ractor should be a valid use case, and `Timeout` is blocking this (it is internally used to implement `open_timeout` `r... -
01:38 PM Feature #21309: Can Thread::Mutex be Ractor shareable?
- > if we got some shareable mutable state, then we'd need a shareable mutex
Come to think of it, I now do think that `Mutex`es themselves are not the problem. So yes I agree with you, and am okay to close this ticket (I can come back w... -
02:36 PM Revision c18bedcd (git): Remove dependency on debug_counter.h when BUILDING_MODULAR_GC
- This allows the default GC to not need debug_counter.h when building as a
modular GC. -
02:36 PM Revision 3f5080e7 (git): Stop checking for USE_DEBUG_COUNTER in default.c
- We don't need to check for USE_DEBUG_COUNTER because the code is no-op
if USE_DEBUG_COUNTER is not enabled. -
02:31 PM Revision 46a82408 (git): [DOC] Tweaks for String#-@
-
01:30 PM Misc #21290: Unable to build ruby extension on Fedora 42 due to possible GCC 15 issues
- Just adding that I am also experiencing this with ed25519 and ruby-prof, as well as appsignal.
* **Ruby Version:** 3.3.5 (installed via `rbenv`)
* **Gem causing the issue:** `ed25519` (v1.3.9), `ruby-prof` (v1.7.1), `appsignal` (v4.5... -
08:37 AM Misc #21290: Unable to build ruby extension on Fedora 42 due to possible GCC 15 issues
- I also stumbled over this issue and falsely addressed it to mongodb/bson
Here is a Dockerfile which lets you reproduce the issue
https://github.com/mongodb/bson-ruby/discussions/351#discussioncomment-13059541 -
03:03 AM Misc #21290: Unable to build ruby extension on Fedora 42 due to possible GCC 15 issues
- Hi,
I am also experiencing a similar issue when trying to install a Ruby gem with C extensions (`blurhash` and `ruby-prof`) on Ruby 3.4.3. The compilation fails with errors related to `bool` and `stdbool.h`, similar to what has been d... - 12:22 PM Revision 5e534849 (git): ZJIT: Temporarily revert path compression
- For reasons I don't understand yet, this causes an issue when trying to
boot yjit-bench. Temporarily revert it. -
09:59 AM Bug #21286: Windows - MSYS2 just updated to GCC 15.1.0, builds failing
- ruby_3_4 merged commit:7e44df91b6d01be68391a029997f5ccdabe80603
-
09:20 AM Revision f3006c26 (git): Add depend files under ext/-test-
-
09:07 AM Feature #21042: Add and expose Thread#memory_allocations memory allocation counters
- only 3 statistics are acceptable.
I don't want to increase more and more measurements from performance perspective. - 09:03 AM Revision a41eed99 (git): [rubygems/rubygems] Update `TarWriter` test to store mtime in a variable
- https://github.com/rubygems/rubygems/commit/0e2cec3fa3
-
09:03 AM Revision 819ecd11 (git): [rubygems/rubygems] Add mtime to Gem::Package::TarWriter#add_file argument
- Since 9e21dd9, Gem::Package::TarWriter#add_file adds the file to
the tar with Gem.source_date_epoch for its mtime.
This behavior breaks the code depending on the previous add_file
behavior.
Therefore, add_file accepts mtime as an argumen... -
09:03 AM Revision 8685a81e (git): [ruby/strscan] jruby: Check if len++ walked off the end
- (https://github.com/ruby/strscan/pull/153)
Fix https://github.com/ruby/strscan/pull/152
CRuby can walk off the end because there's always a null byte. In JRuby,
the byte array is often (usually?) the exact size of the string. So we
nee... -
09:03 AM Revision 5a0306f9 (git): [ruby/strscan] jruby: Pass end index to byteListToInum
- (https://github.com/ruby/strscan/pull/150)
These parse methods take begin and end indices, not begin and length. A
test is included.
Fixes https://github.com/jruby/jruby/issues/8823
https://github.com/ruby/strscan/commit/9690e39e73 -
09:03 AM Revision 61b6f226 (git): [ruby/json] Constify static data in fpconv.c
- https://github.com/ruby/json/commit/3b605d9b1e
-
09:03 AM Revision 1f2a9dc2 (git): [ruby/psych] Refine Ruby 3.5 Set support.
- Use feature testing to detect native Set,
and don't rely on `Set#to_h` which wasn't intended
as a public method.
https://github.com/ruby/psych/commit/d58cff11af -
07:50 AM Revision 49b4e035 (git): Make test/ruby/test_env.rb#test_delete_if_in_ractor easier to debug
-
07:50 AM Revision 71baa694 (git): variable.c: Fix compilation warnings
- ```
variable.c: In function ‘iterate_over_shapes_with_callback’:
variable.c:2188:1: warning: control reaches end of non-void function [-Wreturn-type]
2188 | }
| ^
variable.c: In function ‘rb_field_get’:
variable.c:... -
05:58 AM Revision cf9046c0 (git): Refactor `id_to_obj_tbl` compaction
- Use `st_foreach_with_replace` rather than to call `st_insert`
from inside `st_foreach`, this saves from having to disable GC.
Co-Authored-By: Peter Zhu <[email protected]> -
05:58 AM Revision 2d1241ba (git): Get rid of RB_GC_VM_ID_TO_OBJ_TABLE_KEYS
-
05:58 AM Revision f48e45d1 (git): Move `object_id` in object fields.
- And get rid of the `obj_to_id_tbl`
It's no longer needed, the `object_id` is now stored inline
in the object alongside instance variables.
We still need the inverse table in case `_id2ref` is invoked, but
we lazily build it by walking ... -
05:58 AM Revision d34c1505 (git): shape.c: refactor frozen shape to no longer be final
- This opens the door to store more informations in shapes, such
as the `object_id` or object address in case it has been observed
and the object has to be moved. -
05:58 AM Revision 6c9b3ac2 (git): Refactor OBJ_TOO_COMPLEX_SHAPE_ID to not be referenced outside shape.h
- Also refactor checks for `->type == SHAPE_OBJ_TOO_COMPLEX`.
-
05:58 AM Revision 0ea210d1 (git): Rename `ivptr` -> `fields`, `next_iv_index` -> `next_field_index`
- Ivars will longer be the only thing stored inline
via shapes, so keeping the `iv_index` and `ivptr` names
would be confusing.
Instance variables won't be the only thing stored inline
via shapes, so keeping the `ivptr` name would be conf... -
03:51 AM Feature #21274: Show performance warnings for easily avoidable unnecessary implicit splat allocations
- > The term premature optimization typically refers to cases where you optimize, and later, the optimization results in a negative effect.
I have to disagree here. Premature optimization typically refers to cases where you optimize cod... -
03:25 AM Feature #21274: Show performance warnings for easily avoidable unnecessary implicit splat allocations
- Dan0042 (Daniel DeLorme) wrote in #note-2:
> I appreciate the effort here, but I wonder if this might be a case of premature micro-optimization. Was there a measureable performance improvement from these changes? If the gains are neglig... -
03:06 AM Feature #21274: Show performance warnings for easily avoidable unnecessary implicit splat allocations
- I appreciate the effort here, but I wonder if this might be a case of premature micro-optimization. Was there a measureable performance improvement from these changes? If the gains are negligible, we should be cautious about encouraging ...
-
03:34 AM Revision 4e30b77b (git): Added depend file for test/-ext-/econv/test_append.rb
- https://github.com/ruby/ruby/commit/ce51ef30df5bf07ec3881a377f0011b8f20ec507 broke
ext/-test-/econv/append.o. We should rebuild that object file when dependencies are updated. -
01:59 AM Feature #21279: Bare "rescue" should not rescue NameError
- byroot (Jean Boussier) wrote in #note-5:
> 99% of the time, when I use a bare `rescue` it's because I'll call `raise` again, or calling unknown code and I need to not crash, etc.
> ...
Fully agree with the above.
I understand the ra...
05/07/2025
-
05:29 PM Feature #21311: Namespace on read (revised)
- Eregon (Benoit Daloze) wrote in #note-12:
> Unless they truly need to communication at all between namespaces, but then different processes (or multiple interpreters in a process) might be a better trade-off (notably can run in parallel... -
05:20 PM Feature #21311: Namespace on read (revised)
- Basically, I believe the idea is to have isolated execution contexts without forking, but is hard to achieve that by subclassing Module and tweeking things. Could be wrong, but it is my hunch. As I said, I believe this might need a new e...
-
05:18 PM Feature #21311: Namespace on read (revised)
- tagomoris (Satoshi Tagomori) wrote in #note-28:
> Mounting server-less applications (run on AWS Lambda, separated on processes in production) on a single app server for development
Why not simply using different processes for that? C... -
05:09 PM Feature #21311: Namespace on read (revised)
- tagomoris (Satoshi Tagomori) wrote:
> Root namespace is a unique namespace to be defined when a Ruby process starts. It only contains built-in classes/modules/constants, which are available without any `require` calls, including RubyGem... -
05:07 PM Feature #21311: Namespace on read (revised)
- Aaron that is a concern I have also in mind that I have not expressed yer.
The current proposal allows access to the user namespaces from the creating one And believe some use cases in this thread re dogfood need that communication.
... -
05:01 PM Feature #21311: Namespace on read (revised)
- Eregon (Benoit Daloze) wrote in #note-12:
> * Any user-defined class instance won't be `is_a?` in another namespace and this might be particularly confusing for stdlib/default gems/bundled gems, e.g. a Date or Pathname created in `ns1` ... -
04:36 PM Feature #21311: Namespace on read (revised)
- Dan0042 (Daniel DeLorme) wrote in #note-19:
> I'm not sure if this can be achieved with TruffleRuby sub-interpreters or how you would go about it.
It's easy with sub-interpreters, you would create a sub-interpreter instead of a names... -
02:57 PM Feature #21311: Namespace on read (revised)
- @tagomoris thanks for your replies, even more with such a busy thread :). Let me followup:
> There should be no needs for library developers to consider such things.
Namespace is designed to isolate side effects of "the entry point of a... -
02:24 PM Feature #21311: Namespace on read (revised)
- byroot (Jean Boussier) wrote in #note-24:
> But I'd like to hear about common green path, day to day, use cases, not fringe needs.
Just was reminded of another gem I wrote that utilizes this pattern.
I use it two ways.
1. When I am wr... -
02:09 PM Feature #21311: Namespace on read (revised)
- Thank you for expanding on the motivation, the design makes more sense to me now.
I'm still not convinced the tradeoff is worth it, but at least it makes sense.
Out of curiosity, have to ran the `yjit-bench` suite? I know it's a pr... -
02:04 PM Feature #21311: Namespace on read (revised)
- @fxn
> So, I guess spawning does not create hierarchy. A namespace may not have a pointer to the namespace where it was born (or I don't see the need for it after creation). It is conceptually just one flat layer of independent user n... -
01:48 PM Feature #21311: Namespace on read (revised)
- I'm sorry that I skipped to make effort to describe the motivation and copied the motivation section from the past ticket (and it was not well described enough).
Let me explain the motivation in detail. I had some mixed points below:
... -
07:08 AM Feature #21311: Namespace on read (revised)
- I have compiled the branch and I am playing around a bit with `miniruby` to test my understanding of the feature.
Something that has caught my attention is that class and module names do not return constant paths. That is, the following... -
02:19 AM Feature #21311: Namespace on read (revised)
- FYI: you can try namespace PR on https://ruby.github.io/play-ruby/?run=14855772787&options=%7B%22arguments%22%3A%5B%5D%2C%22env%22%3A%7B%22RUBY_NAMESPACE%22%3A1%7D%7D&code=%0Adef+foo+%3D+%3Amain%0A%0Ans1+%3D+Namespace.new%0Ans1.require%2...
-
05:09 PM Feature #21254 (Closed): Inlining Class#new
- mame (Yusuke Endoh) wrote in #note-10:
> @tenderlovemaking Can we close this?
Yes, sorry. I thought I had closed this.
Merged in 8ac8225c504dee57454131e7cde2c47126596fdc -
06:37 AM Feature #21254: Inlining Class#new
- Note: https://github.com/ruby/ruby/pull/13080 has been merged.
-
06:36 AM Feature #21254: Inlining Class#new
- @tenderlovemaking Can we close this?
-
05:04 PM Revision 7e44df91 (git): Fix C23 (GCC 15) WIN32 compatibility for rb_define_* functions
- Backport [Bug #21286]
-
03:47 PM Revision 3e94b5f9 (git): Remove dependence on internal/hash.h for default GC
-
06:07 AM Bug #18878 (Assigned): parse.y: Foo::Bar {} is inconsistently rejected
-
05:01 AM Misc #21281: DevMeeting-2025-05-08
- * [Feature #21258] Retire CGI library from Ruby 3.5
* Can I remove CGI library without `CGI::Util` ?
* What's the preferred migration process?
1. We keep only cgi/escape (C impl)feature in Ruby.
2. We keep `cgi/util` with `c...
05/06/2025
-
11:50 PM Bug #21312 (Assigned): ruby 3.5-dev installs a gemspec for rdoc that misses dependencies
-
05:46 PM Bug #21312 (Closed): ruby 3.5-dev installs a gemspec for rdoc that misses dependencies
- Similarly to https://bugs.ruby-lang.org/issues/20581, installing ruby 3.5-dev installs a gemspec for rdoc that it's missing its own dependency on psych.
This causes issues when using Bundler, as reported at https://github.com/rubygems... -
10:35 PM Revision 4aac1506 (git): Skip an unstable Ractor test
-
10:34 PM Revision 7afa08ce (git): YJIT: End the block after OPTIMIZE_METHOD_TYPE_CALL
-
10:32 PM Bug #21310 (Feedback): YJIT optimization causes incorrect is_a? method evaluation
- I think it's most likely fixed by https://github.com/ruby/ruby/pull/13245. It's going to be shipped in the next release. I'm thinking of releasing it as soon as we address a few other similar cases.
-
01:08 AM Bug #21310 (Closed): YJIT optimization causes incorrect is_a? method evaluation
- Our Rails application contains code like the following:
```ruby
result = a_proc.call
if result.is_a?(Result) && result.nil?
puts('This should be impossible')
end
```
With YJIT enabled in dev mode and the `yjit-call-thresho... -
10:32 PM Revision d6d63b27 (git): Enabled debug mode for CodeQL
-
08:00 PM Feature #21311: Namespace on read (revised)
- Agreed on all points. I have little concept of the complexity of the implementation, and defer to you on that. I think there is value in considering that we can't entirely know how it might be used since we don't have it yet, and that ...
-
07:03 PM Feature #21311: Namespace on read (revised)
- peter.boling (Peter Boling) wrote in #note-23:
> One use case for this is to benchmark libraries that do the same thing against each other. Very frequently libraries doing the same thing are forks of each other, and just as frequentl... -
06:41 PM Feature #21311: Namespace on read (revised)
- byroot (Jean Boussier) wrote in #note-13:
> > Avoiding name conflicts between libraries: Applications can require two different libraries safely which use the same module name.
> ...
One use case for this is to benchmark libraries that d... -
06:01 PM Feature #21311: Namespace on read (revised)
- Dan0042 (Daniel DeLorme) wrote in #note-19:
> It's not about "working around" libraries. It's about loading entirely different and independent apps within the same process.
So that's not something I understood for the issue descripti... -
04:47 PM Feature #21311: Namespace on read (revised)
- If my interpretation is correct, the entry point of a library will be executed as many times as user namespaces require it, in the same operating system process.
That is a potential gotcha to have in mind too, since nowadays you can k... -
04:38 PM Feature #21311: Namespace on read (revised)
- My interpretation of the vocabulary is as following:
1. The interpreter boots in a `root` namespace.
1. The "state" when this process ends is somehow snapshotted into `S` or something, conceptually (plenty of details here, but I am talk... -
03:13 PM Feature #21311: Namespace on read (revised)
- byroot (Jean Boussier) wrote in #note-13:
> I personally see namespaces as a feature libraries can use to write more robust and isolated code. Not as a feature applications can use to workaround libraries.
It's not about "working aro... -
02:59 PM Feature #21311: Namespace on read (revised)
- > The main and user namespaces are independent
@eregon the description says
> ...
The vocabulary is not very clear to me. What is a "script", is `active_record.rb` a script? If "User namespace is a namespace to run users' Ruby scri... -
12:11 PM Feature #21311: Namespace on read (revised)
- @byroot makes a good point about use cases, I share the same concerns (and already did in https://bugs.ruby-lang.org/issues/19744#note-21 a while ago).
It seems easy to avoid these problems and these problems don't seem to come up frequ... -
12:01 PM Feature #21311: Namespace on read (revised)
- Has the performance of Namespace been evaluated?
I would assume getting the current namespace to execute methods/procs is an overhead (the namespace is at least needed for constant accesses and for method lookup on builtin classes).
... -
11:56 AM Feature #21311: Namespace on read (revised)
- (from description)
> There is no way to access App in the main namespace from the code in the different namespace ns.
Right, although of course the main namespace can do `ns1::MainApp = App` and expose its class like that.
I wonde... -
11:55 AM Feature #21311: Namespace on read (revised)
- While I believe namespaces would be a good addition to Ruby, I'm not convinced this particular implementation of
namespaces is what Ruby needs.
First, I'm not convinced by the motivations:
> Avoiding name conflicts between librari... -
11:52 AM Feature #21311: Namespace on read (revised)
- I think this addresses https://bugs.ruby-lang.org/issues/19744#note-74 by having a CoW copy of all builtin classes/modules in each namespace (including main namespace), nice.
From a quick read it sounds correct to me.
The semantics might... -
11:38 AM Feature #21311: Namespace on read (revised)
- @fxn The main and user namespaces are independent, though the main namespace can refer to user namespace via `ns::SomeConstant`.
So the `App` from `main` here is inaccessible in `ns1`, in fact all constants defined in the main namespace... -
10:18 AM Feature #21311: Namespace on read (revised)
- > having a block parameter on Namespace.new could provide similar UX without changing syntax.
That wouldn't handle constant definitions correctly though. Similar to how people get tricked by `Struct.new do` today.
```ruby
Foo = St... -
10:17 AM Feature #21311: Namespace on read (revised)
- > any user-defined classes/modules are not defined in the root namespace.
Ah, that is key.
So, what happens in this script?
```ruby
# main.rb
App = Class.new
ns1 = Namespace.new
ns1.require("./app1") # defines/reopens Ap... -
10:01 AM Feature #21311: Namespace on read (revised)
- fxn (Xavier Noria) wrote in #note-6:
> In Ruby, objects are stored in constants. Conceptually, a constant `X` storing a string object and a constant `C` storing a class object are not fundamentally different. Do you mean namespace creat... -
09:22 AM Feature #21311: Namespace on read (revised)
- Thanks @tagomoris.
> Conceptually, yes. Definitions are deeply cloned. But objects (stored on constants, etc) will not be cloned (See below).
Let me understand this one better.
In Ruby, objects are stored in constants. Conceptually, a... -
08:00 AM Feature #21311: Namespace on read (revised)
- fxn (Xavier Noria) wrote in #note-2:
> A few quick questions:
> ...
Yes. At that time, `self` will be a cloned (different) object from `main` in optional namespaces.
> So, when a namespace is created, do we have to think that the en... -
07:46 AM Feature #21311: Namespace on read (revised)
- @baweaver I don't have strong opinion about adding `namespace` keyword, but having a block parameter on `Namespace.new` could provide similar UX without changing syntax.
```ruby
NamespaceOne = Namespace.new do
require "./app1"
end
... -
06:24 AM Feature #21311: Namespace on read (revised)
- A few quick questions:
Assuming a normal execution context, nesting at the top level of a file is empty. Would it be also empty if the file is loaded under a namespace?
The description mentions classes and modules, which is kind of int... -
05:46 AM Feature #21311: Namespace on read (revised)
- As a proof of concept this is a very valuable idea, and will give users a chance to experiment with it.
I wonder about the long-term ergonomics of this though, and if it may make sense to potentially introduce in Ruby 4 a new keyword ... -
05:16 AM Feature #21311 (Closed): Namespace on read (revised)
- This replaces #19744
## Concept
This proposes a new feature to define virtual top-level namespaces in Ruby. Those namespaces can require/load libraries (either .rb or native extension) separately from other namespaces. Dependencie... -
07:45 PM Bug #21313 (Closed): `it` in rescue/ensure on prism
- ```ruby
1.times do
raise
rescue
p it
#=> prism: false
#=> parse.y: 0
end
```
`it` should return 0, shouldn't it?
demo:
parse.y: https://ruby.github.io/play-ruby/?code=p+RUBY_DESCRIPTION%0A%0A1.times+do%0A++raise%... -
05:13 PM Revision cb772247 (git): Improve correctness contention for allocated object counts
- Currently the count of allocated object for a heap is incremented
without regards to parallelism which leads to incorrect counts.
By maintaining a local counter in the ractor newobj cache, and only
syncing atomically with some granulari... - 03:11 PM Revision 925da368 (git): Parse topn, opt_length, opt_size into HIR
-
11:18 AM Feature #21309: Can Thread::Mutex be Ractor shareable?
- > Now, more generally, if we got some shareable mutable state, then we'd need a shareable mutex. I just haven't yet encountered that case.
Yes, and the shareable mutable state can't be accessed by Ractor, as Ractor prevents shareable ... -
10:14 AM Feature #21309: Can Thread::Mutex be Ractor shareable?
- I'm not sure I see the use case for `Mutex` to be shareable, at least in this specific scenario.
To take the `Timeout.timeout` example, making the mutex accessible from other ractors wouldn't solve the problem, because ultimately you ... -
08:19 AM Feature #21309: Can Thread::Mutex be Ractor shareable?
- > At least for Queue it's not that simple, because it contains objects
Indeed, you're right about Queue. I overlooked that. Since Queue isn't really a concurrency primitive, I think it'd be fine remaining Ractor unshareable.
On the... -
09:19 AM Feature #21308: Replacing the Float#to_s (dtoa.c) implementation with a modern algorithm
- The interface of `fpconv_dtoa()` looks quite different from `dtoa()` in missing/dtoa.c.
Rather `grisu2()` itself is closer? -
05:23 AM Feature #19744 (Closed): Namespace on read
-
05:19 AM Feature #19744: Namespace on read
- This is replaced by #21311.
Could someone close this? -
05:06 AM Revision 1c68aae9 (git): Check LoadError first
- The message from dlerror is not our concern.
-
05:06 AM Revision 54950b1f (git): Added assertion strings with Xcode 16.3 beta
-
03:11 AM Bug #21286: Windows - MSYS2 just updated to GCC 15.1.0, builds failing
- ruby_3_3 commit:ffd469bd6d06df10057325a5b8c773fca009af8d merged revision(s) commit:719486a642f0e282b02b958069b8b39b85b3aa1e.
-
02:29 AM Revision ffd469bd (git): merge revision(s) 719486a642f0e282b02b958069b8b39b85b3aa1e: [Backport #21286]
- Fix C23 (GCC 15) WIN32 compatibility for rb_define_* functions
Fixes [Bug #21286]