зеркало из https://github.com/github/ruby.git
307388ea19
* Add a "pinning" reference A `Fiddle::Pinned` objects will prevent the objects they point to from moving. This is useful in the case where you need to pass a reference to a C extension that keeps the address in a global and needs the address to be stable. For example: ```ruby class Foo A = "hi" # this is an embedded string some_c_function A # A might move! end ``` If `A` moves, then the underlying string buffer may also move. `Fiddle::Pinned` will prevent the object from moving: ```ruby class Foo A = "hi" # this is an embedded string A_pinner = Fiddle::Pinned.new(A) # :nodoc: some_c_function A # A can't move because of `Fiddle::Pinned` end ``` This is a similar strategy to what Graal uses: https://www.graalvm.org/sdk/javadoc/org/graalvm/nativeimage/PinnedObject.html#getObject-- * rename global to match exception name * Introduce generic Fiddle::Error and rearrange error classes Fiddle::Error is the generic exception base class for Fiddle exceptions. This commit introduces the class and rearranges Fiddle exceptions to inherit from it. https://github.com/ruby/fiddle/commit/ac52d00223 |
||
---|---|---|
.. | ||
helper.rb | ||
test_c_struct_entry.rb | ||
test_c_union_entity.rb | ||
test_closure.rb | ||
test_cparser.rb | ||
test_fiddle.rb | ||
test_func.rb | ||
test_function.rb | ||
test_handle.rb | ||
test_import.rb | ||
test_pinned.rb | ||
test_pointer.rb |