From: luke.gru@... Date: 2019-06-16T13:11:42+00:00 Subject: [ruby-core:93180] [Ruby trunk Feature#15923] New independent string without memcpy Issue #15923 has been updated by luke-gru (Luke Gruber). Thank you Nobu, I thought that might be the case but was unaware as I'm not familiar with the GC subsystem. Having taken a cursory look, it seems ruby is adding some bookkeeping information at the start of every memory buffer allocated by `ruby_xmalloc` and family. It returns the memory after this bookkeeping information (the actual buffer size asked for), and when this buffer is given to `ruby_xfree`, ruby calculates the actual starting point by moving backwards 1 bookkeeping structure, then passes this to `free`. So, you would have to allocate using `ruby_xmalloc` and friends anyway, in which case it seems useless to provide such a function like `rb_str_new_take`. ---------------------------------------- Feature #15923: New independent string without memcpy https://bugs.ruby-lang.org/issues/15923#change-78621 * Author: puchuu (Andrew Aladjev) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- Hello. I've just tried to implement extension for ruby that will provide large binary strings. I've inspected latest ruby source code and found 2 functions: _rb_str_new_ and _rb_str_new_static_ . * _rb_str_new_ allocates new memory and uses _memcpy_ to copy from source string to new memory. * _rb_str_new_static_ uses existing source string as it is, but adds _STR_NOFREE_ flag. Is it possible to create independent string from source string without memcpy that will be freed automatically? Thank you. -- https://bugs.ruby-lang.org/ Unsubscribe: