DevMeeting-2018-08-09
Please comment your favorite ticket numbers you want to ask to discuss with your SHORT comment or summary. (your summary/comment will help us because we don’t need to read all of ticket comments)
DO NOT discuss then on this ticket, please.
- Date: 2018/08/09 (Thu)
- Time: 14:00-18:00 (JST)
- Place: pixiv Inc. (Tokyo, Japan)
- Sign-up: https://ruby.connpass.com/event/95321/
- Past meetings: https://bugs.ruby-lang.org/projects/ruby/wiki#Developer-Meetings
NOTES
- 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 log about discussion to a 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 is scheduled according to when/where we can reserve Matz’s time.
Agenda
Next dev-meeting
About 2.6 timeframe
Carry-over from previous meeting(s)
- [Bug #14887] Array#delete_if does not use #delete (shyouhei)
- Is it by design, or a bug?
- [Feature #13050] Readline: expose rl_completion_quote_character variable (nobu)
- [Feature #14850] Add official API for setting timezone on Time (nobu)
- [Feature #14869] Proposal to add Hash#=== (nobu)
- [Feature #14916] Proposal to add Array#=== (aycabta)
- [Feature #14877] Calculate age in Date class (nobu)
- [Bug #14908] Enumerator::Lazy creates unnecessary Array objects. (nobu)
From Attendees
(will be edited later) (if you have a write access permission, please list directly)
- [Feature #5446] at_fork callback API (eregon) Can we get approval for introducing this? It is solving a real-world issue, in a more reliable way than the various hacks in most Ruby servers.
- [Feature #11258] add ‘x’ mode character for O_EXCL (kazu)
- [Misc #14907] io.c: do not close inherited FDs by default (akr)
- [Feature #14973] Proposal of percent literal to expand Hash (aycabta)
From non-attendees
- [Feature #14717] thread: allow disabling preempt (normalperson)
-
[Feature #11076] Enumerable method count_by (baweaver) As mentioned in the discussion, Nobu was kind enough to update this to work with current master for Ruby: https://github.com/ruby/ruby/compare/trunk…nobu:feature/11076-Enumerable%23count_by
As the code is already written I believe it would be an ideal target for 2.6 as a quick win on an often requested feature.
- [Feature #14954] Add :wait option to RubyVM::MJIT.pause (k0kubun)
- Since it’s not released even in preview2 yet, is it okay to change the behavior?
- Is there any objection for having the option or the option name?
- (baweaver)
- [Feature #14869] Proposal to add Hash#=== (nobu)
- [Feature #14916] Proposal to add Array#=== (aycabta)
-
[Feature #14912] Introduce pattern matching syntax
I believe that these three items are related, and personally I could do a lot of very interesting things with
Array#===andHash#===that would get us exceptionally close to features discussed in [Feature #14709]This to say I would second the inclusion of the first two items as they relate to the third and fourth. It would give Ruby an exceptional amount of power.
- [Feature #14759] [PATCH] set M_ARENA_MAX for glibc malloc (sam.saffron) I would also very much like to see it backported 2.4 and 2.5. It is of enormous value to the ecosystem
- [Feature #14736] Thread selector for flexible cooperative fiber based concurrency (ioquatix)
- [Feature #14739] Improve fiber yield/resume performance (ioquatix)
- [Bug #14968] io.c: make all pipes nonblocking by default (normalperson)
-
[Misc #14937] timer-thread elimination depends on [Bug #14968] (normalperson)
- [Feature #14944] Support optional inherit argument for Module#method_defined? (jeremyevans0)
(will be edited later) (if you have a write access, please list directly)
Log
Next dev-meeting
-
9/13
-
@ Cookpad
About 2.6 timeframe
- Naruse: nothing to do right now.
- Mame: feature freeze?
- Naruse: expected in Oct. maybe.
Carry-over from previous meeting(s)
-
[Bug #14887] Array#delete_if does not use #delete (shyouhei)
- Is it by design, or a bug?
- Matz: delete is memory inefficient.
-
Mame: if you can override #delete, why not also #delete_if.
-
[Feature #13050] Readline: expose rl_completion_quote_character variable (nobu)
- Go!!!
From Attendees
-
[Feature #5446] at_fork callback API (eregon) Can we get approval for introducing this? It is solving a real-world issue, in a more reliable way than the various hacks in most Ruby servers.
- Mrkn: I wanted to use this in pycall to call PyOS_AfterFork_Child, and so on from C-layer, but I noticed that I can use pthread_atfork directly.
- Naruse: Ruby’s fork is unsafe operation. Application programmers should understand the fact and carefully handle related operations (for example freeing resources).
- Akr: I guess at_fork hook would be problematic with multi-thread and/or multi-guild. But making it Ruby’s standard feature impress this feature usable universally including multi-thread/guild. So, I’m negative for this proposal.
-
usa: Furthermore, I consider that fork must be destroyed.
-
[Feature #11258] add ‘x’ mode character for O_EXCL (kazu)
-
Matz accepted already.
-
[Misc #14907] io.c: do not close inherited FDs by default (akr)
-
Nobody is against changing defaults
-
[Feature #14850] Add official API for setting timezone on Time (nobu)
-
Akr: localtime/timelocal analogous variant methods should suffice
-
Timezone object shall define localtime/timelocal/gmtime/timegm
- Matz: is there any reason we need this?
-
Matz: What is actual API?
-
[Feature #14869] Proposal to add Hash#=== (nobu)
-
After [Feature #14912]
-
[Feature #14877] Calculate age in Date class (nobu)
-
Matz: I don’t like the idea to implicitly use today.
-
[Feature #14973] Proposal of percent literal to expand Hash (aycabta)
-
Matz: percent literal…
-
[Feature #13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid (ko1)
-
Naming.
- X IoThread.new{}
- X GreenThread.new{}
- X Thread::Green.new{} #124 “most likely candidates”(vote: hsbt)
- X Thread.green{} #124 “most likely candidates”
- X Thread.create(scheduler: …, args: …) #124 “most likely candidates”
- Thread::Coop.new{}
- Thread::Cooperative.new{} # (usa)
- Thread::Nonpreemptive.new{} # (usa; these 2 names are very long, then they are good ^^)
- NonpreemptiveThread.new {} # (mrkn)
- X NPThread.new {} # (mrkn)
-
X Thread::Light (ko1)
- Matz: “Thread.green” and “Thread.create” are bad because we should distinguish auto fiber and Thread.
- Matz: “Thread::Green” is bad because it means implementation.
From non-attendees
-
[Feature #14717] thread: allow disabling preempt (normalperson)
-
Closed already
-
[Feature #11076] Enumerable method count_by (baweaver) As mentioned in the discussion, Nobu was kind enough to update this to work with current master for Ruby: https://github.com/ruby/ruby/compare/trunk…nobu:feature/11076-Enumerable%23count_by As the code is already written I believe it would be an ideal target for 2.6 as a quick win on an often requested feature.
- Matz: I thought #count_by would be something different.
- Mame: There is #count. #count_by is very different from that.
- K-tsj: Also, #count takes a block.
- Matz: I’m not against the feature itself. Also, do we need a block-less counterpart?
-
Naruse: It looks similar to Presto’s histogram function
-
[Feature #14954] Add :wait option to RubyVM::MJIT.pause (k0kubun)
- Since it’s not released even in preview2 yet, is it okay to change the behavior?
-
Is there any objection for having the option or the option name?
- Not. At. All.
- Usa: Don’t ask for permission, beg for forgiveness.
-
Naruse: RubyVM::MJIT is your namespace.
-
(baweaver)
- [Feature #14869] Proposal to add Hash#=== (nobu)
- [Feature #14916] Proposal to add Array#=== (aycabta)
- [Feature #14912] Introduce pattern matching syntax I believe that these three items are related, and personally I could do a lot of very interesting things with Array#=== and Hash#=== that would get us exceptionally close to features discussed in [Feature #14709] This to say I would second the inclusion of the first two items as they relate to the third and fourth. It would give Ruby an exceptional amount of power.
-
Matz: we should discuss these after pattern match is introduced.
-
[Feature #14759] [PATCH] set M_ARENA_MAX for glibc malloc (sam.saffron) I would also very much like to see it backported 2.4 and 2.5. It is of enormous value to the ecosystem
- Usa: The decision should be made by Linux port maintainer
- Naruse: up to kosaki.
-
Mame: Once kosaki said “If we merge this, we should decide when we remove this”.
-
[Feature #14944] Support optional inherit argument for Module#method_defined? (jeremyevans0)
- Usa: I want this too.
- Mame: why?
- Usa: maybe when I want to develop.
-
Matz: not that negative. Rather I think it’s nice to have.
-
[Feature #14975] String#append without changing receiver’s encoding (ioquatix)
- Naruse: I think it’s OK to have this kind of operation(s), but not for #«
Carry over:
- [Bug #14908] Enumerator::Lazy creates unnecessary Array objects. (nobu)
- [Feature #14736] Thread selector for flexible cooperative fiber based concurrency (ioquatix)
-
[Feature #14739] Improve fiber yield/resume performance (ioquatix)
-
Ko1: will discuss them in person
- [Bug #14968] io.c: make all pipes nonblocking by default (normalperson)
- [Misc #14937] timer-thread elimination depends on Bug #14968