ffi 1.17.0.rc2-arm-linux-gnu → 1.17.1-arm-linux-gnu

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ba0aa95d72e3c5f79170acbb695cc8930b70909a20f23579515392807142ee74
4
- data.tar.gz: fb5f6ce1c3ab863f9cfd3d6468276283f47ba043750e543e289015ec63f71e5b
3
+ metadata.gz: e4924de830c75c3f048d085e3df0f490dbd4789d82a2a1fef01ffbebf9de5ffc
4
+ data.tar.gz: 025cd777bdb910b39c1fa616b3bddacd4c3f9527e04aad98aa31c7b0805dcce6
5
5
  SHA512:
6
- metadata.gz: e284924a4100f339cfc1f6570f4fb6c2c49ceaee7423ec7fbb746b4b1c991c64a7fa33c0dee973b7ae9ba4a005e3fcae9ccd41657a5cb03cc9bf0d26a3d60e48
7
- data.tar.gz: 6cb0180658d4d72700cb57e1fc632a9d74a43e22e789b49a5dee4e05c5d14dddf42164c1953e27ea164ece2b07e6ff74fe3ec6d1b4f0eebff0949eedfe413574
6
+ metadata.gz: ec776588f67f686e9bc1158d522f8c66adea8cc5c8b30286037accfb54325c3c0f103f5cb58f22223558633659d999c001c9c15f083e11a1540076fc27984816
7
+ data.tar.gz: c178f488d4ccb9427e8485228561b1a13bc4dae0c26ed12110def4939026a47eb9dcebaa4192d41312932ac6a446b5c1965abd6aa07a79ecb4640d5fc17a5432
data/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ 1.17.1 / 2024-12-30
2
+ -------------------
3
+
4
+ Fixed:
5
+ * #1117 Restart async callback dispatcher thread after fork.
6
+ * #1133 Add ruby-3.4 native gem.
7
+ * #1134 Fix FFI::DataConverter non-generic usage in RBS files.
8
+
9
+
10
+ 1.17.0 / 2024-06-02
11
+ -------------------
12
+
13
+ Fixed:
14
+ * Add FFI::AbstractMemory#read_array_of_string . It was defined but not exposed to Ruby nor tested. #1070
15
+
16
+
1
17
  1.17.0.rc2 / 2024-04-22
2
18
  -------------------
3
19
 
data/Gemfile CHANGED
@@ -1,11 +1,11 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  group :development do
4
- gem 'bigdecimal' unless RUBY_VERSION =~ /^2\.[4567]|^3\.[012]\./ # necessary on ruby-3.3+
4
+ gem 'bigdecimal' # necessary on ruby-3.3+
5
5
  gem 'bundler', '>= 1.16', '< 3'
6
6
  gem 'rake', '~> 13.0'
7
7
  gem 'rake-compiler', '~> 1.1'
8
- gem 'rake-compiler-dock', '~> 1.0.pre'
8
+ gem 'rake-compiler-dock', '~> 1.7.0'
9
9
  gem 'rspec', '~> 3.0'
10
10
  end
11
11
 
data/Rakefile CHANGED
@@ -136,7 +136,7 @@ namespace "gem" do
136
136
  desc "Build the native gem for #{plat}"
137
137
  task plat => ['prepare', 'build'] do
138
138
  RakeCompilerDock.sh <<-EOT, platform: plat
139
- #{ "sudo apt-get update && sudo apt-get install -y libltdl-dev &&" if plat !~ /linux/ }
139
+ sudo apt-get update && sudo apt-get install -y libltdl-dev &&
140
140
  bundle --local &&
141
141
  rake native:#{plat} pkg/#{gem_spec.full_name}-#{plat}.gem MAKE='nice make -j`nproc`' RUBY_CC_VERSION=${RUBY_CC_VERSION/:2.4.0/}
142
142
  EOT
data/lib/2.5/ffi_c.so CHANGED
Binary file
data/lib/2.6/ffi_c.so CHANGED
Binary file
data/lib/2.7/ffi_c.so CHANGED
Binary file
data/lib/3.0/ffi_c.so CHANGED
Binary file
data/lib/3.1/ffi_c.so CHANGED
Binary file
data/lib/3.2/ffi_c.so CHANGED
Binary file
data/lib/3.3/ffi_c.so CHANGED
Binary file
data/lib/3.4/ffi_c.so ADDED
Binary file
@@ -45,14 +45,6 @@ module FFI
45
45
  # @note WARNING: passing a proc _may_ cause your pointer to never be
46
46
  # GC'd, unless you're careful to avoid trapping a reference to the
47
47
  # pointer in the proc. See the test specs for examples.
48
- # @overload initialize(pointer) { |p| ... }
49
- # @param pointer [Pointer]
50
- # @yieldparam [Pointer] p +pointer+ passed to the block
51
- # @return [self]
52
- # The passed block will be invoked at GC time.
53
- # @note
54
- # WARNING: passing a block will cause your pointer to never be GC'd.
55
- # This is bad.
56
48
  # @overload initialize(pointer)
57
49
  # @param pointer [Pointer]
58
50
  # @return [self]
@@ -75,7 +67,7 @@ module FFI
75
67
  # The last calling idiom (only one parameter) is generally only
76
68
  # going to be useful if you subclass {AutoPointer}, and override
77
69
  # #release, which by default does nothing.
78
- def initialize(ptr, proc=nil, &block)
70
+ def initialize(ptr, proc=nil)
79
71
  raise TypeError, "Invalid pointer" if ptr.nil? || !ptr.kind_of?(Pointer) ||
80
72
  ptr.kind_of?(MemoryPointer) || ptr.kind_of?(AutoPointer)
81
73
  super(ptr.type_size, ptr)
data/lib/ffi/ffi.rb CHANGED
@@ -48,3 +48,62 @@ require 'ffi/variadic'
48
48
  require 'ffi/enum'
49
49
  require 'ffi/version'
50
50
  require 'ffi/function'
51
+
52
+ module FFI
53
+ module ModernForkTracking
54
+ def _fork
55
+ pid = super
56
+ if pid == 0
57
+ FFI._async_cb_dispatcher_atfork_child
58
+ end
59
+ pid
60
+ end
61
+ end
62
+
63
+ module LegacyForkTracking
64
+ module KernelExt
65
+ def fork
66
+ if block_given?
67
+ super do
68
+ FFI._async_cb_dispatcher_atfork_child
69
+ yield
70
+ end
71
+ else
72
+ pid = super
73
+ FFI._async_cb_dispatcher_atfork_child if pid.nil?
74
+ pid
75
+ end
76
+ end
77
+ end
78
+
79
+ module KernelExtPrivate
80
+ include KernelExt
81
+ private :fork
82
+ end
83
+
84
+ module IOExt
85
+ def popen(*args)
86
+ return super unless args[0] == '-'
87
+
88
+ super(*args) do |pipe|
89
+ FFI._async_cb_dispatcher_atfork_child if pipe.nil?
90
+ yield pipe
91
+ end
92
+ end
93
+ ruby2_keywords :popen if respond_to?(:ruby2_keywords)
94
+ end
95
+ end
96
+
97
+ if Process.respond_to?(:_fork)
98
+ # The nice Ruby 3.1+ way of doing things
99
+ ::Process.singleton_class.prepend(ModernForkTracking)
100
+ elsif Process.respond_to?(:fork)
101
+ # Barf. Old CRuby.
102
+ # Most of the inspiration for how to do this was stolen from ActiveSupport.
103
+ ::Object.prepend(LegacyForkTracking::KernelExtPrivate)
104
+ ::Object.singleton_class.prepend(LegacyForkTracking::KernelExt)
105
+ ::Kernel.prepend(LegacyForkTracking::KernelExtPrivate)
106
+ ::Kernel.singleton_class.prepend(LegacyForkTracking::KernelExt)
107
+ ::IO.singleton_class.prepend(LegacyForkTracking::IOExt)
108
+ end
109
+ end
data/lib/ffi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module FFI
2
- VERSION = '1.17.0.rc2'
2
+ VERSION = '1.17.1'
3
3
  end
@@ -144,6 +144,7 @@ module FFI
144
144
  def read_array_of_float: (Integer length) -> Array[Float]
145
145
  def read_array_of_double: (Integer length) -> Array[Float]
146
146
  def read_array_of_pointer: (Integer length) -> Array[Pointer]
147
+ def read_array_of_string: (?Integer? count) -> Array[String?]
147
148
 
148
149
  def write_array_of_int8: (Array[int] ary) -> self
149
150
  def write_array_of_int16: (Array[int] ary) -> self
@@ -13,7 +13,6 @@ module FFI
13
13
  end
14
14
 
15
15
  def initialize: (Pointer pointer, Method | ^(self) -> void | Releaser::_Proc[self] callable) -> self
16
- # | (Pointer pointer) { (self) -> void } -> self # https://github.com/ffi/ffi/issues/1071
17
16
  | (Pointer pointer) -> self # where class < `def self.release: (instance pointer) -> void`
18
17
 
19
18
  extend DataConverter[Pointer, instance, nil]
data/sig/ffi/library.rbs CHANGED
@@ -33,7 +33,7 @@ module FFI
33
33
  def find_type: (ffi_lib_type t) -> Type
34
34
  def freeze: () -> void
35
35
  def function_names: (_ToS name, Array[Type | singleton(Struct)] arg_types) -> Array[String]
36
- def typedef: [T < Type] (T old, Symbol | DataConverter add, ?untyped) -> T
36
+ def typedef: [T < Type, N, R, C] (T old, Symbol | DataConverter[N, R, C] add, ?untyped) -> T
37
37
  | (Symbol old, Symbol add, ?untyped) -> (Type | Enum)
38
38
  | [X < DataConverter[N, R, C], N, R, C] (X old, Symbol add, ?untyped) -> Type::Mapped[X, N, R, C]
39
39
  | (:enum old, Array[Symbol | Integer] add, ?untyped) -> Enum
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.17.0.rc2
4
+ version: 1.17.1
5
5
  platform: arm-linux-gnu
6
6
  authors:
7
7
  - Wayne Meissner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-22 00:00:00.000000000 Z
11
+ date: 2024-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -87,6 +87,7 @@ files:
87
87
  - lib/3.1/ffi_c.so
88
88
  - lib/3.2/ffi_c.so
89
89
  - lib/3.3/ffi_c.so
90
+ - lib/3.4/ffi_c.so
90
91
  - lib/ffi.rb
91
92
  - lib/ffi/abstract_memory.rb
92
93
  - lib/ffi/autopointer.rb
@@ -227,12 +228,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
227
228
  version: '2.5'
228
229
  - - "<"
229
230
  - !ruby/object:Gem::Version
230
- version: 3.4.dev
231
+ version: 3.5.dev
231
232
  required_rubygems_version: !ruby/object:Gem::Requirement
232
233
  requirements:
233
- - - ">"
234
- - !ruby/object:Gem::Version
235
- version: 1.3.1
236
234
  - - ">="
237
235
  - !ruby/object:Gem::Version
238
236
  version: 3.3.22