Project

General

Profile

Actions

Feature #17851

open

ruby extension for memoryview

Added by dsisnero (Dominic Sisneros) almost 3 years ago. Updated almost 3 years ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:103739]

Description

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

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


Related issues 1 (0 open1 closed)

Related to Ruby master - Feature #17831: add slice method to Fiddle::MemoryViewThird Party's IssueActions
Actions #1

Updated by jeremyevans0 (Jeremy Evans) almost 3 years ago

  • Tracker changed from Bug to Feature
  • Backport deleted (2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN)

Updated by Eregon (Benoit Daloze) almost 3 years ago

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.

Actions #3

Updated by Eregon (Benoit Daloze) almost 3 years ago

  • Related to Feature #17831: add slice method to Fiddle::MemoryView added
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0