Issue #16501 has been updated by Eregon (Benoit Daloze).


Makes sense to me that Marshal knows how to preserve that flag.
(Sidekiq used Marshal in previous versions, but switched to a manual copy for efficiency)

----------------------------------------
Feature #16501: Support marshaling of ruby2_keywords flag
https://bugs.ruby-lang.org/issues/16501#change-83771

* Author: mame (Yusuke Endoh)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
This patch makes Marshal.dump and load aware of ruby2_keywords flag.

https://github.com/ruby/ruby/pull/2830

```
def bar(key:)
  key
end

ruby2_keywords def foo(*args)
  args = Marshal.load(Marshal.dump(args))
  bar(*args)
end

foo(key: 42) #=> 42
```

Honestly, I'm not fully convinced if this is really needed.  It would be helpful for applications and libraries that serializes the whole arguments by using Marshal, e.g., drb.  (Currently, drb does not support keyword separation.)  But I'm unsure how many applications does so; ActiveJob and Sidekiq use their own dedicated serialization mechanism based on JSON.  This patch does not help them, and they should use #16486 to support ruby2_keywords flag.  I'd like to hear opinions.



-- 
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>