Actions
Misc #20193
closedDevMeeting-2024-02-14
Status:
Closed
Assignee:
-
Description
The next dev meeting¶
Date: 2024/02/14 13:00-17:00 (JST)
Log: https://github.com/ruby/dev-meeting-log/blob/master/2024/DevMeeting-2024-02-14.md
- Dev meeting IS NOT a decision-making place. All decisions should be done at the bug tracker.
- Dev meeting is a place we can ask Matz, nobu, nurse and other developers directly.
- Matz is a very busy person. Take this opportunity to ask him. If you can not attend, other attendees can ask instead of you (if attendees can understand your issue).
- We will write a record of the discussion in the file or to each ticket in English.
- All activities are best-effort (keep in mind that most of us are volunteer developers).
- The date, time and place of the meeting are scheduled according to when/where we can reserve Matz's time.
- DO NOT discuss then on this ticket, please.
Call for agenda items¶
If you have a ticket that you want matz and committers to discuss, please post it into this ticket in the following format:
* [Ticket ref] Ticket title (your name)
* Comment (A summary of the ticket, why you put this ticket here, what point should be discussed, etc.)
Example:
* [Feature #14609] `Kernel#p` without args shows the receiver (ko1)
* I feel this feature is very useful and some people say :+1: so let discuss this feature.
- It is recommended to add a comment by 2024/02/11. We hold a preparatory meeting to create an agenda a few days before the dev-meeting.
- The format is strict. We'll use this script to automatically create an markdown-style agenda. We may ignore a comment that does not follow the format.
- Your comment is mandatory. We cannot read all discussion of the ticket in a limited time. We appreciate it if you could write a short summary and update from a previous discussion.
Updated by mame (Yusuke Endoh) 10 months ago
- Related to Misc #14770: [META] DevelopersMeeting added
Updated by mame (Yusuke Endoh) 10 months ago
- [Feature #16495] Inconsistent quotes in error messages (mame)
- Implemented a prototype.
- Error message:
undefined method `foo'
->undefined method 'foo'
- Backtrace:
from test.rb:2:in `foo'
->from test.rb:2:in 'foo'
- It caused 140 test failures in make test-all. Do we want to go forward?
- [Feature #19117] Include the method owner in backtraces, not just the method name (mame)
- Implemented a prototype.
-
from test.rb:2:in `instance_meth'
->from test.rb:2:in `Foo#instance_meth'
-
from test.rb:2:in `class_meth'
->from test.rb:2:in `Foo.class_meth'
-
from test.rb:2:in `singleton_meth'
->from test.rb:2:in `singleton_meth'
- It caused 8 test failures in make test-all. Do we want to go forward?
Updated by byroot (Jean Boussier) 10 months ago
- [Bug #20188]
Module#const_source_location
returns wrong information when real constant was defined but autoload is still ongoing (byroot)-
const_source_location
continues to return theautoload
location even after the constant was defined. - It only start returning the constant location once the
autoload
has completed. - There is debate whether this should be considered a bug or a feature request.
- Patch: https://github.com/ruby/ruby/pull/9549
-
Updated by stuyam (Stuart Yamartino) 10 months ago
- [Feature #20080] Introduce #bounds method on Range (stuyam)
-
#bounds
method on range to return raw bound data about the range[ first, last, exclude_end? ]
- Easy array deconstruction for setting first and last as variables from a range.
first, last = (1..10).bounds #=> [1, 10, false]
- Easy serialization and rehydration of ranges.
array = (1...10).bounds #=> [1, 10, true]
Range.new(*array)
-
Updated by alanwu (Alan Wu) 10 months ago
- [Bug #20203]
TestEnumerable
test failures with GCC 14- Using
qsort_r
to sort causes corruption when the comparison function is reentered using continuation/fiber and when using GC compaction due to undefined behavior - Should we stop using
qsort_r
for correctness?
- Using
Updated by shioimm (Misaki Shioi) 10 months ago
- [Feature #20108] Introduction of Happy Eyeballs Version 2 (RFC8305) in Socket.tcp
- Fixed the points raised at the last DevMeeting and in the comments.
- When an IP address is specified as an argument, or when the host is single-stack, name resolution is now performed on the main thread.
-
fast_fallback
option is added.
- Fixed the points raised at the last DevMeeting and in the comments.
Updated by kddnewton (Kevin Newton) 10 months ago
- [Misc #20238] Use prism for mk_builtin_loader.rb (kddnewton)
- I would like to propose that we use prism for mk_builtin_loader.rb.
- This would allow us to use the latest Ruby syntax in builtin classes, as opposed to the base Ruby version.
Updated by byroot (Jean Boussier) 10 months ago
- [Feature #20205] Enable
frozen_string_literal
by default (byroot)- A proposed migration plan for allowing to enable
frozen_string_literal
by default in the future. - Introduce "chilled strings", they behave like frozen strings, but on mutation they emit a deprecation warning and become regular mutable strings again.
- Implemented as a USER_FLAG on RString, proof of concept at https://github.com/Shopify/ruby/pull/549.
- The warning can include the location of the mutation and/or the location of the string allocation. The later is a bit more costly.
-
--disable-frozen-string-literal
remains forever as a way to keep running older code that can't be updated. -
# frozen_string_literal: false
remains forever as a very minimal and cheap way to make older code compatible.
- A proposed migration plan for allowing to enable
Updated by jeremyevans0 (Jeremy Evans) 10 months ago
- [Bug #20218] aset/masgn/op_asgn with keyword arguments (jeremyevans0)
- Do we want to make it a syntax error to pass keyword arguments in these cases?
- There was already a desire to make passing blocks in these cases a syntax error (see #19918)?
- If keyword arguments should be allowed, should we treat keywords as keywords or as positional arguments (currently: aset treats as positional, op_asgn treats as keywords)?
- Do we want to make it a syntax error to pass keyword arguments in these cases?
- [Bug #20229] Empty keyword splat in array not removed in ARGSPUSH case (jeremyevans0)
- Is it OK to fix this as part of an optimization that adds pushtoarraykwsplat instruction?
Updated by kddnewton (Kevin Newton) 10 months ago
- [Misc #20242]
--parser=prism_without_warning
(kddnewton)- Could we add
--parser=prism_without_warning
? It hard to run the tests/specs that test against the output of stderr. - This would do the exact same thing as --parser=prism it just wouldn't warn.
- Could we add
- [Feature #20210] Invalid source encoding raises ArgumentError, not SyntaxError (kddnewton)
- Could we make it raise a syntax error?
Updated by yui-knk (Kaneko Yuichiro) 9 months ago
- [Feature #20257] Rearchitect Ripper
- I want to have a chance to explain new Ripper's architecture.
- In short, Ripper uses semantic value stack to manage Ruby Object returned by Ripper callback methods then Ripper can't execute semantic analysis which needs AST Node. New architecture enables it by adding another stack to Ripper parser with Lrama's update.
Updated by kddnewton (Kevin Newton) 9 months ago
- [Misc #20260] ISEQ flag for prism compiler (kddnewton)
- Would it be alright to add a flag to iseqs to say it came from the prism compiler? We need this to support error highlight.
Updated by make_now_just (Hiroya Fujinami) 9 months ago
- [Bug #20225] Inconsistent behavior of regex matching for a regex has a null loop (makenowjust)
- Onigmo has strange behavior for null (empty) loops with captures.
- Null-loop check depends on capture status.
- This behavior causes some bugs and prevents memoization (cache) optimization.
- I would like to fix null-loop check to capture-free.
- This behavior is not common;
Python andJavaScript uses capture-free null-loop check. - It is hard to implement capture-aware null-loop check correctly and impossible to provide efficient implementation.
- e.g.
ruby -e '(1..10).each { |n| /((?=(\3a|a))(?=(\2a|a))){#{n}}/ =~ "aaaa"; p $~ }'
- This example shows capture status changes oscillationally.
- e.g.
- This behavior is not common;
- Onigmo has strange behavior for null (empty) loops with captures.
Updated by nobu (Nobuyoshi Nakada) 9 months ago
-
[Feature #20244] Show the conflicting another chdir block
-
Dir.chdir
is warning when in another chdir block.$ ruby -e 'Dir.chdir {' -e 'Dir.chdir("/")' -e '}' -e:2: warning: conflicting chdir during another chdir block
If two chdirs are far apart, it can be difficult to find conflicting blocks.
-
To help the debugging, I propose to improve the warning message to show the conflicting block.
$ ./ruby -e 'Dir.chdir {' -e 'Dir.chdir("/")' -e '}' -e:2: warning: conflicting chdir during another chdir block -e:1: warning: here
-
Updated by osyoyu (Daisuke Aritomo) 9 months ago
- [Feature #20249] Introduce a backtrace-only mode for rb_bug() (osyoyu)
- The current crash report printed by rb_bug() is extremely long
- Terminals get quickly cluttered when developing C exts or CRuby itself
- Introduce a switch that limits output to Ruby-level/C-level backtraces only
- The backtraces are the most (or the only) helpful part when debugging
- Running with env var
RUBY_CRASH_REPORT_MODE=minimal
or configuring Ruby withRUBY_DEBUG
shall change behavior
- The current crash report printed by rb_bug() is extremely long
Updated by hsbt (Hiroshi SHIBATA) 9 months ago
[Feature #20187] Bundled gems at Ruby 3.4
- Should we test bundled gems at
make check
?
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0