Project

General

Profile

Feature #10728

Warning for Fixnum#size to use RbConfig::SIZEOF['long']

Added by akr (Akira Tanaka) over 4 years ago. Updated over 4 years ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:67496]

Description

How about add a warning for Fixnum#size ?

% ./ruby -e 'p 0.size'
-e:1: warning: Use RbConfig::SIZEOF['long'] instead of Fixnum#size
8

Currently it returns sizeof(long) which is 4 or 8.

However it is implementation detail and
it may difficult to define it in Ruby implementations other than CRuby.

There is a way to obtain sizeof(long): RbConfig::SIZEOF['long']
It works since Ruby 2.1.

% ruby -rrbconfig/sizeof -e "p RbConfig::SIZEOF['long']"    
8

So the warning is a migration path to use RbConfig::SIZEOF['long'].

Note that this may affect many code.
So this issue may irritate many people.
fixnum-size-search.txt is a search result in gems.


Files

fixnum-size-search.txt (7.03 KB) fixnum-size-search.txt akr (Akira Tanaka), 01/10/2015 11:35 AM
fixnum-size-warning.patch (2.03 KB) fixnum-size-warning.patch akr (Akira Tanaka), 01/10/2015 11:40 AM

Related issues

Related to Ruby master - Feature #7517: Fixnum::MIN,MAXClosedActions

History

Updated by cremno (cremno phobia) over 4 years ago

I took a look at fixnum-size-search.txt and using RbConfig::SIZEOF['long'] instead usually isn't the correct replacement. In many lines the size of long in bytes isn't of interest, the min- and maximum value of a fixnum is (see feature request #7517).

Updated by akr (Akira Tanaka) over 4 years ago

Updated by akr (Akira Tanaka) over 4 years ago

RbConfig::SIZEOF['long'] is a drop-in replacement but Fixnum::MAX is not.

Also, I feel Fixnum is a implementation detail.

Also available in: Atom PDF