Project

General

Profile

Feature #13166

Updated by nobu (Nobuyoshi Nakada) about 7 years ago

I do a lot of numerically intensive applications. 
 In many instances I use arrays that contain boolean data (true|false or 1|0) values. 

 When I create such an array like: 

 `data data = Array.new(size, value)` value) or just    `data data = Array.new(size)` Array.new(size) 

 is it correct that the default memory unit size is that of the cpu, i.e. (32|64)-bit? 

 Since almost all modern cpus are byte addressable, I want to optimally use their system memory  
 by being able to explicitly create arrays of byte addressable elements. 

 For these use cases, this wlll allow my apps to extend their memory use capacity, instead 
 of wasting 31|63 bit of memory on 32|64 bit cpus systems just to store a boolean value. 

 To be clear, I am not talking about storing "strings" or "chars" but addessable 8-bit number elements. 

 I have not seen this capability documented in Ruby, thus I request this feature be added to 
 Ruby 3, and propose the following syntax that will be backwards compatible (non conflicting). 

 ```ruby 
 


 data = Array8.new(size, value) 
 ``` 

 Having explicit addressable byte arrays not only will increase memory use compactness of many 
 applications, this compactness will directly contribute to the Ruby 3x3 goal for performance 
 by allowing more data to be held entirely in cache memory when possible. 

 Thanks in advance for its consideratoin. 

Back