`attr_*` methods returning `nil` should be considered a bug at this point, since all other ways of defining methods return a symbol. This makes Ruby inconsistent, and violates its own Principle of Least Surprise.vais (Vais Salikhov)
On Ruby 2.0.0 this worked as expected: ``` C:\Users\Administrator\GitHub\spec>ruby -ve "exec(['cmd.exe', '/C'], 'echo', 'argv_zero')" ruby 2.0.0p247 (2013-06-27) [i386-mingw32] argv_zero ``` On Ruby 2.2.4 it is broken - it seems ...vais (Vais Salikhov)
When IO.read from a pipe is passed an offset, the expected exception is Errno::ESPIPE, but on Windows Invalid argument (Errno::EINVAL) is raised instead: ``` C:\Users\Administrator\Desktop>C:\Ruby\ruby-2.2.4-i386-mingw32\bin\ruby.exe...vais (Vais Salikhov)
It is possible to access top-level constants by doing `nil::CONSTANT`, which looks like a bug [according to Matz](https://github.com/opal/opal/issues/1197#issuecomment-158078778). Here are a couple of examples: ``` $ ruby -ve "Foo = ...vais (Vais Salikhov)