(Can we make issue on bugs.ruby-lang.org?)
Matz, I was looking forward to finally having separation of keyword arguments in Ruby 3.
I have many situations where hash object is incorrectly promoted to options.
e.g. Async::Notification has trouble when signalling with a plain hash object · Issue #67 · socketry/async · GitHub is just one example.
I respect your position to minimise pain, but the reality is now we are in a situation where for several years people have been planning for the change to separate keyword arguments so either we move backwards and penalise everyone who has worked to support this change, or we move forward and penalise those who have not migrated legacy/old code.
If this really is something we cannot move forward on, how about a per-file flag like for frozen string literals?
# keyword_arguments: true
Feature flags are messy, and fracture the language, but at least we can continue moving forward and legacy code continues to work.
One more data point that might be helpful: I maintain a lot of gems and migrated them all for Ruby 2.7 to remove all warnings. Not only did I find several bugs (incorrect promotion of hash to keywords), the general code is clearer to understand (no more implicit keywords). I found the warnings incredibly helpful and useful, and the overall change made the code better.
Let me know if there is any other way I can help.