^(expr)
)?
for
target (nobu)Preliminary discussion:
for foo&.bar in []; end
causes segfault.Discussion:
for
loops
for temp in [1,2,3]
foo&.bar = temp
end
for a.b.c in [1, 2]; end
should evaluate a.b
twice?Conclusion:
&nil
(ufuk)method(:foo).parameters #=> [:noblock]
or maybe?Discussion:
irb(main):001> def foo(**nil); end
=> :foo
irb(main):002> method(:foo).parameters
=> [[:nokey]]
yield
until called (unless tracked in parser maybe).eval
cases, so I am in favour of static annotation. Also zsuper… do we need to detect.&nil
syntax, but I find it is quite hard to tell at runtime. noblock def foo(a, b)
end
Conclusion:
class C
def foo = nil
end
class D
def foo = yield # unrelated to C#foo
end
C.new.foo { assert false }
# warning on warning strict mode
# do not warn on relax mode
rails/rails
test suite, relaxed brings it down to 10% false positive, and almost no false negative.&b
to duck typing methods seems helpful for readability and indicate "intentionally ignores block". But too much warnings is bad, maybe opt-in via flag/env var/pragma?
--strict-unused-block-warning
/ --pedantic-warnings
?)pedantic
category that gives more warnings?Conclusion:
gc.c
and gc_impl.c
.gc.c
only contains code not specific to Ruby GC.gc_impl.c
contains the implementation of Ruby's GC.gc_impl.c
only uses public APIs in Ruby and a limited set of functions exposed in gc.c
. This allows us to build gc_impl.c
independently of Ruby and plug Ruby's GC into itself.Discussion:
Conclusion:
Discussion:
Conclusion:
Discussion:
liquid-c
and rack
benchmarks.Conclusion:
Discussion:
Process
instead of RbConfig
, but it is not that important.
RbConfig
already has .ruby
method to return running Ruby path, so it makes sense to add .ruby_args
method as well.Conclusion:
Regexp#encoding
method returns) is calculated in case an encoding modifier (e.g. u
, e
, etc) is specified.US-ASCII
characters has US-ASCII
encoding, otherwise a regular expression is assumed to use the source encoding. This can be overridden with encoding modifiers./#{} a/e
- it's supposed to have EUC-JP
encoding but actually has US-ASCII
.Discussion:
p /\xc2\xa1/e .encoding # EUC-JP
p /#{ }\xc2\xa1/e .encoding # EUC-JP
p /a/e .encoding # EUC-JP
p /a #{} a/e .encoding # EUC-JP
p /#{} a/e .encoding # US-ASCII
Conclusion:
u
, e
, etc) is specified to a Regexp with interpolation (e.g. /a #{ "b".encode("windows-1251") } c/e
).Discussion:
Conclusion:
$~
when offset > size (or bytesize) (andrykonchin)String#{index,rindex,byteindex,byterindex}
methods when called with Regexp argument and offset
out of scope should clear the $~
global variable.String#index
and String#byteindex
don't clear $~
when offset
> size, only when offset
< -size
.Conclusion:
maxlen = nil
(andrykonchin)IO#read
and similar methods when called with buffer argument preserve its encoding.IO#read
doesn't do so in case the maxlen
argument is nil
.Discussion:
Conclusion:
#freeze
method call) only its own singleton class becomes frozen immediately.#singleton_class
method call.Discussion:
Conclusion:
...
callers and calleesdef foo(...)
depends on the caller (foo(1,2)
has different stack size than foo(1)
)Discussion:
Conclusion:
GC#disable_major
, GC#enable_major
, GC#need_major?
, GC#disable_major_gc
etc.GC#disable(type: major)
respond_to?
, and are able to be undefined.Discussion:
GC
methods to be implemented in the implementation, so alternative implementations can define them different. Already some methods do not make sense for alternative GC implementations.Conclusion:
Discussion:
rescue
/ensure
on stack):/**
* This is the same as `$!` in Ruby.
*
* @retval RUBY_Qnil Not handling exceptions at the moment.
* @retval otherwise The current exception in the current thread.
* @ingroup exception
*/
VALUE rb_errinfo(void);
rb_errinfo()
, what for?Conclusion:
"%\n"
has been treated as "%%"
since commit:554b989ba162 , probably Tue Aug 6 01:12:32 1996 according to the commit log.
Discussion:
Ufuk: People may see Ruby as an healthier project if they get more releases
Benoit: How about making x.y.1 release faster with most important fixes, even if that means not backporting every fix?
Having too many releases may degrade user experience if they need to upgrade more often or if they need to go through many releases to get a bugfix
A more established process may make it easier for feature implementers to submit fixes for teeny versions
Some users are concerned by the lack of communication on the status of upcomming releases. A more established process would make it easier for user to know when to expect bug fixes
Jean: recent releases had bugs preventing people to upgrade while at the same time being eager to update to benefit from performance improvements
Conclusion:
[Misc #20238] Use prism for mk_builtin_loader.rb
mk_builtin_loader
more elegant and complete approach. Can we merge this?mk_builtin_loader
Conclusion:
[Bug #20401] Duplicated when clause warning line number
Conclusion:
[Bug #20424] ZLib::GZipReader always double allocates strings when passed outbuf, significantly increasing memory usage
Discussion:
Conclusion:
[Feature #20331] Should parser warn hash duplication and when clause?
Discussion: