Project

General

Profile

Feature #16290

Add Ruby C API to acquire aligned memory

Added by watson1978 (Shizuo Fujita) 13 days ago. Updated 12 days ago.

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

Description

Related to https://github.com/ruby/ruby/pull/2614

I have required to acquire aligned memory in Ruby C-extension library (https://github.com/rmagick/rmagick/pull/832).
I want an API that notifies acquired size to Ruby GC.

Of course, I know that we can implement a similar function in extension library using rb_gc_adjust_memory_usage().
However, if Ruby have the API, we can easily use it in some extension libraries.

History

Updated by shyouhei (Shyouhei Urabe) 12 days ago

I'm not in favor of this. There are many ways to allocate a memory region, like mmap(2). Do we have to provide ruby counterparts for every and all of them?

Updated by naruse (Yui NARUSE) 12 days ago

shyouhei (Shyouhei Urabe) wrote:

I'm not in favor of this. There are many ways to allocate a memory region, like mmap(2). Do we have to provide ruby counterparts for every and all of them?

rb_aligned_malloc uses 5 underlying implementations.
It's hard to make C-extension developer to re-develop this.
It sounds reasonable to make public this implementation.
https://github.com/ruby/ruby/blob/853d91a04a4d133fc90b35c90570dc1c656a7922/gc.c#L9736-L9761

We don't have mmap(2) wrapper.

Updated by shyouhei (Shyouhei Urabe) 12 days ago

naruse (Yui NARUSE) wrote:

shyouhei (Shyouhei Urabe) wrote:

I'm not in favor of this. There are many ways to allocate a memory region, like mmap(2). Do we have to provide ruby counterparts for every and all of them?

rb_aligned_malloc uses 5 underlying implementations.
It's hard to make C-extension developer to re-develop this.

In case of this request, ImageMagick already does have aligned allocator. If we provide one we would use any of 5 backends but that is not required at all. They already have it. What is wanted is a way to notify ruby about their memory usage.

Also available in: Atom PDF