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


I think Fiddle::MemoryView is not needed for this.
String#[] can already avoid copying, on CRuby I think only if taking a substring until the end (the case here).

Also if Fiddle::MemoryView returns a mutable/non-read-only view, it seems very difficult to support while not making a copy and keeping the Ruby String working.

Finally, a method on Kernel is most likely not acceptable, we'd want a proper namespace like on Fiddle::MemoryView or so.

----------------------------------------
Feature #17851: ruby extension for memoryview
https://bugs.ruby-lang.org/issues/17851#change-91841

* Author: dsisnero (Dominic Sisneros)
* Status: Open
* Priority: Normal
----------------------------------------
add an extension to ruby for memoryview - (just like Fiddle::MemoryView but in ruby assuming Fiddle::MemoryView gets slices)
add a method in Kernel to get initialize a memoryview on an object that is a c memoryview

lets say we want to partially copy a file - minus the first KB

``` ruby
f = File.open('test.txt', 'rb') do |f|
  content = f.read
  content_to_write = memoryview(content)[1024..-1]   # here is what I want new -it will use the same memory as content just pointers
  puts "content length #{content.size} - content_to_write length #{content_to_write.size}"
  File.open('output.txt','wb') do |f2|
     f2.write(content_to_write)                      # if we have #17832 this will write to file without copying 
  end
end
```

If we have memoryview extension in ruby we can use less memory because we are no longer copying Strings when doing slices
#17831 






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