[#98621] Re: Function getlogin_r()'s protoype] — Bertram Scharpf <lists@...>
FYI,
3 messages
2020/06/02
[#98947] [Ruby master Feature#16986] Anonymous Struct literal — ko1@...
Issue #16986 has been reported by ko1 (Koichi Sasada).
66 messages
2020/06/26
[#98962] [Ruby master Bug#16988] Kernel.load loads file from current directory without '.' in path — misharinn@...
Issue #16988 has been reported by TheSmartnik (Nikita Misharin).
5 messages
2020/06/26
[#98969] [Ruby master Feature#16994] Sets: shorthand for frozen sets of symbols / strings — marcandre-ruby-core@...
Issue #16994 has been reported by marcandre (Marc-Andre Lafortune).
7 messages
2020/06/26
[#100117] [Ruby master Feature#16994] Sets: shorthand for frozen sets of symbols / strings
— matz@...
2020/09/25
Issue #16994 has been updated by matz (Yukihiro Matsumoto).
[ruby-core:98796] [Ruby master Misc#16961] Is overriding a method in a subclass considered as a breaking change or not?
From:
takashikkbn@...
Date:
2020-06-14 05:52:20 UTC
List:
ruby-core #98796
Issue #16961 has been reported by k0kubun (Takashi Kokubun). ---------------------------------------- Misc #16961: Is overriding a method in a subclass considered as a breaking change or not? https://bugs.ruby-lang.org/issues/16961 * Author: k0kubun (Takashi Kokubun) * Status: Open * Priority: Normal ---------------------------------------- ## Background * In [Bug #15589], I'm going to make `Integer#zero?` faster (comparable to `== 0`) on JIT by making sure the method is inlinable by MJIT. * Currently `Integer#zero?` is not defined and it's implemented as `Numeric#zero?`. * However, `Numeric#zero?`'s method definition handles not only `Integer` but also `Rational` and `Complex`. Because `rb_equal` which calls `rb_funcall` is used for `Rational` and `Complex`, we can't predict what'd happen there and it prevents `Numeric#zero?` from being inlined by MJIT. Moreover, reducing inlined code size is always good for JIT-ed code. So specializing `Numeric#zero?` to `Integer#zero?` will be beneficial for MJIT's inlining regardless of `rb_funcall`'s presence. * So I'd like to define `Integer#zero?` for optimizing JIT-ed code of `zero?` call against `Integer`. ## Discussion Theoretically, overriding a method in a subclass in Ruby core might change an existing application's behavior (In the above background, `Numeric#zero?` could be overridden and it would get suddenly ignored for Integer). How should we decide whether the change is acceptable or not? Some possible ideas: * Search all gems using gem-codesearch and check if there's any code to be broken. * In `Integer#zero?`'s case I found [this code](https://github.com/ninjudd/rupture/blob/v0.3.0/lib/rupture/core_ext.rb#L18-L20) but it's not gonna be broken by overriding `Integer#zero?`. Other `zero?` method definitions seemed for other classes, but I can double check every occurrence if this will be the measure. * Discuss and make a decision on case-by-case basis. * In `Integer#zero?`'s case we'll discuss whether overriding `Integer#zero?` is acceptable or not. -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>