You’re absolutely correct. Good point. They were local variables in 2.5 and earlier and only become constants in 2.6. I had this wrong. I’ll update the article. Sorry about that and thank you for pointing it out!
yield_self can’t take any arguments so passing
*args along isn’t necessary. It does return a sized enumerator is no block is given. Here’s a pure Ruby implementation: https://github.com/graalvm/truffleruby/blob/e4c2726f8588337bdd84dd42e4b107c50789ad19/src/main/ruby/core/kernel.rb#L472-L478