Misc #20281
closed
Added by mame (Yusuke Endoh) 6 months ago.
Updated 5 months ago.
Description
The next dev meeting¶
Date: 2024/03/14 09:00-12:00, 13:00-17:00 (JST)
Log: https://github.com/ruby/dev-meeting-log/blob/master/2024/DevMeeting-2024-03-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/03/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.
Related issues
1 (1 open — 0 closed)
- [Feature #20275] Avoid extra backtrace entries for rescue and ensure (eregon)
- OK to hide/avoid the extra backtrace entries?
- I think it helps to avoid confusion (there is no call semantically for a
rescue
or ensure
section). e.g. ["-:4:in '<main>'", "-:4:in '<main>'"]
seems unclear (it looks like a recursive call of <main>
)
- Doing so would make it consistent with other Ruby implementations.
- Related to Feature #20261: Add symbol synonyms for '' and nil for IO method line separator arguments added
- Related to deleted (Feature #20261: Add symbol synonyms for '' and nil for IO method line separator arguments)
- Description updated (diff)
Note: The next meeting will be held not only at P.M. but also at A.M. (09:00-12:00) in JST. We will try this time slot once for those who want to attend from the U.S. (It has not been decided if this slot will be permanent, though.)
- [Feature #20261] Add symbol synonyms for
''
(empty string) and nil
for IO method line separator arguments (BurdetteLamar)
- For value
''
(read paragraph), add synonym :paragraph
.
- For value
nil
(read all), add synonym :slurp
.
- Thus the user can write
gets(:paragraph)
or gets(:slurp)
, instead of gets('')
or gets(nil)
.
- The term slurp is well-established in Perl and Python to mean read all, but a different term can be used in Ruby if there's a better one.
- [Feature #20265] Deprecate and remove rb_newobj and rb_newobj_of (peterzhu2118)
- These two APIs are difficult to use, fragile to use, and requires internal knowledge of internal implementation of data types in Ruby.
- The rb_newobj function creates a T_NONE object. T_NONE objects cannot be marked and are not reclaimed by the GC, which can leak memory.
- The rb_newobj_of function requires the developer to understand flags of objects. Many flags for objects are also not public, preventing direct use by developers.
- Very few C extensions use these APIs, and are from over a decade ago.
- [Misc #20287] DevMeeting before or after RubyKaigi
- It would be great to plan ahead, so that people can make their flight/hotel reservations.
- [Feature #20306] Add rb_free_at_exit_p (peterzhu2118 & HParker)
- Ticket #19993 added the new feature RUBY_FREE_AT_EXIT, which frees memory in Ruby at shutdown.
- ruby_vm_at_exit can be used to register a callback for when the VM exits.
- There is no way to check if RUBY_FREE_AT_EXIT is enabled, so this ticket adds rb_free_at_exit_p.
-
[Feature #20202] Memoized endless method definitions
- Do Matz and others have opinions on the syntax?
- If this is approved, should the ivar name match the method named exactly? For example, should it behave like
def foo = (@foo ||= :value)
or should we use special naming conventions like def foo = (@_foo ||= :value)
?
-
[Bug #20090] Anonymous arguments are now syntax errors in unambiguous cases
- I'm not sure this is the best place to ask, but can we release 3.3.1? There are a couple of bugs that have been holding me back from updating to 3.3 in some projects. In particular, this one (#20090). It even affects Rubocop.
- I know there are also other bugfixes and memory leaks fixed on main right now.
-
[Feature #4247] New features for Array#sample, Array#choice
- This is quite old, but I wonder if we wanna move forward with at least some of this. If it is the case we might create a different issue.
- I find weighted sampling very useful, in particular for games. Maybe Hash would be a better candidate than Array?
{ gold_coin: 0.8, ruby: 0.2}.weighted_sample # => :ruby # yay, lucky!
- [Feature #13557] Allow to pass Array of
Backtrace::Location
to Exception#set_backtrace
(byroot)
- Proposed patch: https://github.com/ruby/ruby/pull/10017
- I think this is better than passing an Array of String because with strings
Exception#backtrace_locations
returns nil
, making backtrace_locations
unreliable.
- No objections to the feature or patch?
- [Feature #14066] Add CAA DNS RR on Resolv (dentarg)
- [Feature #19744] Namespace on read
- [Feature #20309] Bundled gems for Ruby 3.5
- Let's discuss target gems to migrate bundled gems.
- [Bug #20301]
Set#add?
does two hash look-ups (jeremyevans0)
- This doesn't seem like a bug to me, as there was never a guarantee of a single hash lookup.
- Fixed proposed is adding Hash#exchange_value and using it.
- Alternative fix would be adding block support to Hash#store, yielding existing value if already set (similar to Hash#update).
- Adding/modifying Hash just for Set seems undesirable, especially as I would like to rewrite Set in C as a core class.
- [Bug #19231] Integer#step and Float::INFINITY - inconsistent behaviour when called with and without a block (jeremyevans0)
- If receiver and step are both integers and end value is a float, can we change to always yielding integers?
- Alternatively, we could just tell users to use
nil
instead of Float::INFINITY
for the end value.
- [Bug #20310] ASAN fake stacks need to be marked during GC for non-current execution context
- When the GC is marking machine stacks, and ASAN is enabled, it needs to detect pointers on the stack which point to ASAN "fake stack" entries, and mark those "fake stacks" as well. For example, V8 does that here: https://github.com/v8/v8/blob/b639938e99fa6b5ffa9c859b18c72a251fd56942/src/heap/base/stack.cc#L57
- In CRuby, we already do that for the current execution context here: https://github.com/ruby/ruby/blob/23dc7aa2c5a104e73563134a595124804379f049/gc.c#L6401
- However, this is only called for the current execution context (i.e. the thread/fiber which is performing the GC work). Machine stacks for other threads & fibers are not yet marked in this way.
- I propose to unify all the machine stack marking for all kinds of machine stacks into a single function in gc.c,
rb_gc_mark_machine_context
. PR for this is here: https://github.com/ruby/ruby/pull/10122. All machine-stack marking for all fibers/threads flows through the same code path with this PR.
- Alternative approach would be to write a helper for marking ASAN fake stack values, and call it from various places in
cont.c
and vm.c
.
- I would like a decision on whether the refactoring of machine stack marking into a single function is worthwhile, or whether it's too ASAN specific and I should just add ASAN-related code to each place we do machine stack marking currently.
- (sorry, this is my first dev meeting agenda item, so apologies if this is not the kind of thing discussed in dev meetings!)
- [Feature #20331] Should parser warn hash duplication and when clause?
- What is the best approach to handle hash duplication warnings and when clause duplication warnings.
- [Feature #20024] SyntaxError metadata
- Can we add some information to the syntax error about what kind of error produced it?
- What is a good API? (The discussion on the ticket says a symbol for
:type
.)
- [Misc #20238] Use prism for mk_builtin_loader.rb
- I would like to propose that we use prism for mk_builtin_loader.rb.
- There are lots of different thoughts on the issue — using bundler/using the Ruby library/using the C library. I would like to get a direction/understanding of what to do.
- Description updated (diff)
- Status changed from Open to Closed
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like1Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0