Issue #12434 has been updated by Nobuyoshi Nakada.

Status changed from Open to Rejected

It is intentionally dumped as a Bignum for marshal data compatibility across architectures.

Current behavior:

```
$ arch -x86_64 ruby -e 'Marshal.dump(1073741824, STDOUT)' | arch -i386 ruby -e 'p Marshal.load(STDIN)'
1073741824
```

With your patch:

```
$ .x86_64-darwin/miniruby -e 'Marshal.dump(1073741824, STDOUT)' | .i386-darwin/miniruby -e 'p Marshal.load(STDIN)'
-1073741824
```

----------------------------------------
Bug #12434: Marshal.dump does not dump some numbers as Fixnum
https://bugs.ruby-lang.org/issues/12434#change-58892

* Author: Eito Katagiri
* Status: Rejected
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.4.0dev (2016-05-28 trunk 55197) [x86_64-darwin15]
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
`Marshal.dump` dumps numbers between 1073741824 and 4294967295 and between -4294967296 and -1073741825 as `Bignum`, but I think that those numbers should be dumped as `Fixnum`.

~~~
$ ./ruby --disable-gems -e'p Marshal.load("\x04\bi\x04\x00\x00\x00\x40")'
1073741824
$ ./ruby --disable-gems -e'p Marshal.dump(1073741824)'
"\x04\bl+\a\x00\x00\x00@"
$ ./ruby --disable-gems -e'p Marshal.load("\x04\bi\xfc\x00\x00\x00\x00")'
-4294967296
$ ./ruby --disable-gems -e'p Marshal.dump(-4294967296)'
"\x04\bl-\b\x00\x00\x00\x00\x01\x00"
~~~

I created proposed patch and submit pull request to https://github.com/ruby/ruby/pull/1366



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