ffi 1.17.0-arm64-darwin

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +456 -0
  3. data/COPYING +49 -0
  4. data/Gemfile +21 -0
  5. data/LICENSE +24 -0
  6. data/LICENSE.SPECS +22 -0
  7. data/README.md +137 -0
  8. data/Rakefile +206 -0
  9. data/ffi.gemspec +42 -0
  10. data/lib/2.5/ffi_c.bundle +0 -0
  11. data/lib/2.6/ffi_c.bundle +0 -0
  12. data/lib/2.7/ffi_c.bundle +0 -0
  13. data/lib/3.0/ffi_c.bundle +0 -0
  14. data/lib/3.1/ffi_c.bundle +0 -0
  15. data/lib/3.2/ffi_c.bundle +0 -0
  16. data/lib/3.3/ffi_c.bundle +0 -0
  17. data/lib/ffi/abstract_memory.rb +44 -0
  18. data/lib/ffi/autopointer.rb +180 -0
  19. data/lib/ffi/buffer.rb +4 -0
  20. data/lib/ffi/callback.rb +4 -0
  21. data/lib/ffi/compat.rb +43 -0
  22. data/lib/ffi/data_converter.rb +67 -0
  23. data/lib/ffi/dynamic_library.rb +118 -0
  24. data/lib/ffi/enum.rb +302 -0
  25. data/lib/ffi/errno.rb +43 -0
  26. data/lib/ffi/ffi.rb +50 -0
  27. data/lib/ffi/function.rb +71 -0
  28. data/lib/ffi/io.rb +62 -0
  29. data/lib/ffi/library.rb +576 -0
  30. data/lib/ffi/library_path.rb +109 -0
  31. data/lib/ffi/managedstruct.rb +84 -0
  32. data/lib/ffi/memorypointer.rb +1 -0
  33. data/lib/ffi/platform/aarch64-darwin/types.conf +130 -0
  34. data/lib/ffi/platform/aarch64-freebsd/types.conf +128 -0
  35. data/lib/ffi/platform/aarch64-freebsd12/types.conf +181 -0
  36. data/lib/ffi/platform/aarch64-linux/types.conf +175 -0
  37. data/lib/ffi/platform/aarch64-openbsd/types.conf +134 -0
  38. data/lib/ffi/platform/aarch64-windows/types.conf +52 -0
  39. data/lib/ffi/platform/arm-freebsd/types.conf +152 -0
  40. data/lib/ffi/platform/arm-freebsd12/types.conf +152 -0
  41. data/lib/ffi/platform/arm-linux/types.conf +132 -0
  42. data/lib/ffi/platform/hppa1.1-linux/types.conf +178 -0
  43. data/lib/ffi/platform/hppa2.0-linux/types.conf +178 -0
  44. data/lib/ffi/platform/i386-cygwin/types.conf +3 -0
  45. data/lib/ffi/platform/i386-darwin/types.conf +100 -0
  46. data/lib/ffi/platform/i386-freebsd/types.conf +152 -0
  47. data/lib/ffi/platform/i386-freebsd12/types.conf +152 -0
  48. data/lib/ffi/platform/i386-gnu/types.conf +107 -0
  49. data/lib/ffi/platform/i386-linux/types.conf +103 -0
  50. data/lib/ffi/platform/i386-netbsd/types.conf +126 -0
  51. data/lib/ffi/platform/i386-openbsd/types.conf +128 -0
  52. data/lib/ffi/platform/i386-solaris/types.conf +122 -0
  53. data/lib/ffi/platform/i386-windows/types.conf +52 -0
  54. data/lib/ffi/platform/ia64-linux/types.conf +104 -0
  55. data/lib/ffi/platform/loongarch64-linux/types.conf +141 -0
  56. data/lib/ffi/platform/mips-linux/types.conf +102 -0
  57. data/lib/ffi/platform/mips64-linux/types.conf +104 -0
  58. data/lib/ffi/platform/mips64el-linux/types.conf +104 -0
  59. data/lib/ffi/platform/mipsel-linux/types.conf +102 -0
  60. data/lib/ffi/platform/mipsisa32r6-linux/types.conf +102 -0
  61. data/lib/ffi/platform/mipsisa32r6el-linux/types.conf +102 -0
  62. data/lib/ffi/platform/mipsisa64r6-linux/types.conf +104 -0
  63. data/lib/ffi/platform/mipsisa64r6el-linux/types.conf +104 -0
  64. data/lib/ffi/platform/powerpc-aix/types.conf +180 -0
  65. data/lib/ffi/platform/powerpc-darwin/types.conf +100 -0
  66. data/lib/ffi/platform/powerpc-linux/types.conf +130 -0
  67. data/lib/ffi/platform/powerpc-openbsd/types.conf +156 -0
  68. data/lib/ffi/platform/powerpc64-linux/types.conf +104 -0
  69. data/lib/ffi/platform/powerpc64le-linux/types.conf +100 -0
  70. data/lib/ffi/platform/riscv64-linux/types.conf +104 -0
  71. data/lib/ffi/platform/s390-linux/types.conf +102 -0
  72. data/lib/ffi/platform/s390x-linux/types.conf +102 -0
  73. data/lib/ffi/platform/sparc-linux/types.conf +102 -0
  74. data/lib/ffi/platform/sparc-solaris/types.conf +128 -0
  75. data/lib/ffi/platform/sparcv9-linux/types.conf +102 -0
  76. data/lib/ffi/platform/sparcv9-openbsd/types.conf +156 -0
  77. data/lib/ffi/platform/sparcv9-solaris/types.conf +128 -0
  78. data/lib/ffi/platform/sw_64-linux/types.conf +141 -0
  79. data/lib/ffi/platform/x86_64-cygwin/types.conf +3 -0
  80. data/lib/ffi/platform/x86_64-darwin/types.conf +130 -0
  81. data/lib/ffi/platform/x86_64-dragonflybsd/types.conf +130 -0
  82. data/lib/ffi/platform/x86_64-freebsd/types.conf +128 -0
  83. data/lib/ffi/platform/x86_64-freebsd12/types.conf +158 -0
  84. data/lib/ffi/platform/x86_64-haiku/types.conf +117 -0
  85. data/lib/ffi/platform/x86_64-linux/types.conf +132 -0
  86. data/lib/ffi/platform/x86_64-msys/types.conf +119 -0
  87. data/lib/ffi/platform/x86_64-netbsd/types.conf +128 -0
  88. data/lib/ffi/platform/x86_64-openbsd/types.conf +134 -0
  89. data/lib/ffi/platform/x86_64-solaris/types.conf +122 -0
  90. data/lib/ffi/platform/x86_64-windows/types.conf +52 -0
  91. data/lib/ffi/platform.rb +187 -0
  92. data/lib/ffi/pointer.rb +167 -0
  93. data/lib/ffi/struct.rb +317 -0
  94. data/lib/ffi/struct_by_reference.rb +72 -0
  95. data/lib/ffi/struct_layout.rb +96 -0
  96. data/lib/ffi/struct_layout_builder.rb +227 -0
  97. data/lib/ffi/tools/const_generator.rb +232 -0
  98. data/lib/ffi/tools/generator.rb +105 -0
  99. data/lib/ffi/tools/generator_task.rb +32 -0
  100. data/lib/ffi/tools/struct_generator.rb +195 -0
  101. data/lib/ffi/tools/types_generator.rb +137 -0
  102. data/lib/ffi/types.rb +222 -0
  103. data/lib/ffi/union.rb +43 -0
  104. data/lib/ffi/variadic.rb +80 -0
  105. data/lib/ffi/version.rb +3 -0
  106. data/lib/ffi.rb +27 -0
  107. data/rakelib/ffi_gem_helper.rb +65 -0
  108. data/samples/getlogin.rb +8 -0
  109. data/samples/getpid.rb +8 -0
  110. data/samples/gettimeofday.rb +18 -0
  111. data/samples/hello.rb +8 -0
  112. data/samples/hello_ractor.rb +11 -0
  113. data/samples/inotify.rb +60 -0
  114. data/samples/pty.rb +75 -0
  115. data/samples/qsort.rb +20 -0
  116. data/samples/qsort_ractor.rb +28 -0
  117. data/sig/ffi/abstract_memory.rbs +165 -0
  118. data/sig/ffi/auto_pointer.rbs +27 -0
  119. data/sig/ffi/buffer.rbs +18 -0
  120. data/sig/ffi/data_converter.rbs +10 -0
  121. data/sig/ffi/dynamic_library.rbs +9 -0
  122. data/sig/ffi/enum.rbs +38 -0
  123. data/sig/ffi/function.rbs +39 -0
  124. data/sig/ffi/library.rbs +42 -0
  125. data/sig/ffi/native_type.rbs +86 -0
  126. data/sig/ffi/pointer.rbs +42 -0
  127. data/sig/ffi/struct.rbs +76 -0
  128. data/sig/ffi/struct_by_reference.rbs +11 -0
  129. data/sig/ffi/struct_by_value.rbs +7 -0
  130. data/sig/ffi/struct_layout.rbs +9 -0
  131. data/sig/ffi/struct_layout_builder.rbs +5 -0
  132. data/sig/ffi/type.rbs +39 -0
  133. data/sig/ffi.rbs +26 -0
  134. metadata +241 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 11dd7989498b02dd674a7d97b24ad2d8e801bf9b2a6f743706e7eea23fdfbf6e
4
+ data.tar.gz: 3cf1cb7484a903e501c479a1083940db8cebfcbc614740085526f12ee0427231
5
+ SHA512:
6
+ metadata.gz: 1dd63c73a16d3e52011804ecbfc8423d33cd25ff3dbc7497d41b6ddf28ab3a36e0816cb3cf4630315758ba8cc7241e3cfa2dae207b32dad5006da21b518d6400
7
+ data.tar.gz: 6be52d048296b5422838bb17ed797ee4dd7642a5fc43066de68ddd7d4c9f68972a1454c69aaa2626d7714480bd43a63cb960f540eeaae21e12b677a43a69053a
data/CHANGELOG.md ADDED
@@ -0,0 +1,456 @@
1
+ 1.17.0 / 2024-06-02
2
+ -------------------
3
+
4
+ Fixed:
5
+ * Add FFI::AbstractMemory#read_array_of_string . It was defined but not exposed to Ruby nor tested. #1070
6
+
7
+
8
+ 1.17.0.rc2 / 2024-04-22
9
+ -------------------
10
+
11
+ Fixed:
12
+ * Add missing write barriers to StructLayout#initialize causing a segfault with GC.stress. #1079
13
+
14
+
15
+ 1.17.0.rc1 / 2024-04-08
16
+ -------------------
17
+
18
+ Fixed:
19
+ * Fix type definitions on `aarch64-linux`. #1067, #1066
20
+ * Use RB_TEST for `Pointer.autorelease=` . #1065
21
+ So that `false` and `nil` are treated as falsey and anything else as truthy.
22
+ * Replace Fixnum by Integer. #1064
23
+ Fixnum is no longer present in the ruby language.
24
+ * Update `FFI::NativeType` doc. #1061
25
+ * Store FFI::Type::Mapped of FFI::StrPtrConverter in global instead of custom type map
26
+ * Various documentation fixes. #1042
27
+ * Update `FFI::Pointer#==` to return `false` if a pointer is compared to a non-pointer object, which is the expected behavior. #1083
28
+ * Avoid warning about undefined wariable `@ffi_functions` #1085
29
+ * Fix a very unlikely GC bug when using a callback block. # 1089
30
+
31
+ Added:
32
+ * Provide binary gems for many platforms. #990
33
+ * Add Windows fat binary gem for Ruby-3.3
34
+ * Add RBS type definitions for many user facing parts of the FFI API. #1042
35
+ * Improve fallback search path logic. #1088
36
+ Respect LD_LIBRARY_PATH and DYLD_LIBRARY_PATH on Macos.
37
+ * Update libffi to current git master branch.
38
+
39
+ Removed:
40
+ * Remove `enum CHAR_ARRAY` which is no longer used. #1063
41
+
42
+
43
+ 1.16.3 / 2023-10-04
44
+ -------------------
45
+
46
+ Fixed:
47
+ * Fix gcc error when building on CentOS 7. #1052
48
+ * Avoid trying to store new DataConverter type in frozen TypeDefs hash. #1057
49
+
50
+
51
+ 1.16.2 / 2023-09-25
52
+ -------------------
53
+
54
+ Fixed:
55
+ * Handle null pointer crash after fork. #1051
56
+
57
+
58
+ 1.16.1 / 2023-09-24
59
+ -------------------
60
+
61
+ Fixed:
62
+ * Fix compiling the builtin libffi. #1049
63
+
64
+
65
+ 1.16.0 / 2023-09-23
66
+ -------------------
67
+
68
+ Fixed:
69
+ * Fix an issue with signed bitmasks when using flags on the most significant bit. #949
70
+ * Fix FFI::Pointer#initialize using NUM2LL instead of NUM2ULL.
71
+ * Fix FFI::Type#inspect to properly display the constant name. #1002
72
+ * Use libffi closure allocations on hppa-Linux. #1017
73
+ Previously they would segfault.
74
+ * Fix class name of Symbol#inspect.
75
+ * Fix MSVC support of libtest. #1028
76
+ * Fix attach_function of functions ending in ? or ! #971
77
+
78
+ Added:
79
+ * Convert all C-based classes to TypedData and use write barriers. #994, #995, #996, #997, #998, #999, #1000, #1001, #1003, #1004, #1005, #1006, #1007, #1008, #1009, #1010, #1011, #1012
80
+ This results in less pressure on the garbage collector, since the objects can be promoted to the old generation, which means they only get marked on major GC.
81
+ * Implement `ObjectSpace.memsize_of()` of all C-based classes.
82
+ * Make FFI Ractor compatible. #1023
83
+ Modules extended per `extend FFI::Library` need to be frozen in order to be used by non-main Ractors.
84
+ This can be done by calling `freeze` below of all C interface definitions.
85
+ * In a Ractor it's possible to:
86
+ * load DLLs and call its functions, access its global variables
87
+ * use builtin typedefs
88
+ * use and modify ractor local typedefs
89
+ * define callbacks
90
+ * receive async callbacks from non-ruby threads
91
+ * use frozen FFI::Library based modules with all attributes (enums, structs, typedefs, functions, callbacks)
92
+ * invoke frozen functions and callbacks defined in the main Ractor
93
+ * use FFI::Struct definitions from the main Ractor
94
+ * In a Ractor it's impossible to:
95
+ * create new FFI::Library based modules
96
+ * create new FFI::Struct definitions
97
+ * use custom global typedefs
98
+ * use non-frozen FFI::Library based modules
99
+ * Allow type retrieval of attached functions+variables. #1023
100
+ * Make FFI classes `GC.compact` friendly. #1021
101
+ * Update libffi and disable custom trampoline when using libffi closure allocation. #1020
102
+ This is because libffi changed the way how closures are allocated to static trampolines.
103
+ * Add types.conf for loongarch64-linux. #943
104
+ * Add types.conf for sw_64-linux (Shen Wei 64-bit, based on Alpha). #1018
105
+ * Add support for aarch64-windows. #1035
106
+ * Windows: Update LoadLibrary error message to include error code. #1026
107
+ * Allow private release method for FFI::ManagedStruct and FFI::AutoPointer. #1029
108
+ * Add support for passing ABI version to FFI.map_library_name. #963
109
+ This adds the new class FFI::LibraryPath .
110
+ * Add support for ruby-3.2 to windows binary gem. #1047
111
+ * Enable debug symbols for `rake compile` builds to ease debugging. #1048
112
+
113
+ Removed:
114
+ * Remove allocator of AbstractMemory. #1013
115
+ This disables AbstractMemory.new, which has no practical use.
116
+ * Remove unused FFI::SizeTypes. #1022
117
+
118
+
119
+ 1.15.5 / 2022-01-10
120
+ -------------------
121
+
122
+ Fixed:
123
+ * Fix long double argument or return values on 32bit i686. #849
124
+ * FFI::ConstGenerator: avoid usage of the same binary file simultaneously. #929
125
+
126
+ Added:
127
+ * Add Windows fat binary gem for Ruby-3.1
128
+
129
+ Removed:
130
+ * Remove Windows fat binary gem for Ruby < 2.4
131
+
132
+
133
+ 1.15.4 / 2021-09-01
134
+ -------------------
135
+
136
+ Fixed:
137
+ * Fix build for uClibc. #913
138
+ * Correct module lookup when including `ffi-module` gem. #912
139
+
140
+ Changed:
141
+ * Use ruby code of the ffi gem in JRuby-9.2.20+. #915
142
+
143
+
144
+ 1.15.3 / 2021-06-16
145
+ -------------------
146
+
147
+ Fixed:
148
+ * Fix temporary packaging issue with libffi. #904
149
+
150
+
151
+ 1.15.2 / 2021-06-16
152
+ -------------------
153
+
154
+ Added:
155
+ * Add support for Windows MINGW-UCRT build. #903
156
+ * Add `/opt/homebrew/lib/` to fallback search paths to improve homebrew support. #880 #882
157
+
158
+ Changed:
159
+ * Regenerate `types.conf` for FreeBSD12 aarch64. #902
160
+
161
+
162
+ 1.15.1 / 2021-05-22
163
+ -------------------
164
+
165
+ Fixed:
166
+ * Append -pthread to linker options. #893
167
+ * Use arm or aarch64 to identify Apple ARM CPU arch. #899
168
+ * Allow overriding `gcc` with the `CC` env var in `const_generator.rb` and `struct_generator.rb`. #897
169
+
170
+
171
+ 1.15.0 / 2021-03-05
172
+ -------------------
173
+
174
+ Fixed:
175
+ * Fix MSVC build
176
+ * Fix async callbacks in conjunction with fork(). #884
177
+
178
+ Added:
179
+ * Allow to pass callbacks in varargs. #885
180
+ * Name the threads for FFI callback dispatcher and async thread calls for easier debugging. #883
181
+ The name can be retrieved by Thread.name and is shown by Thread.list.inspect etc.
182
+ Even gdb shows the thread name on supported operating systems.
183
+ * Add types.conf for powerpc64le-linux
184
+ * Add types.conf for riscv64-linux
185
+ * More release automation of ffi gems
186
+
187
+ Changed:
188
+ * Switch from rubygems-tasks to bundler/gem_helper
189
+
190
+ Removed:
191
+ * Remove unused VariadicInvoker#init
192
+
193
+
194
+ 1.14.2 / 2020-12-21
195
+ -------------------
196
+
197
+ Fixed:
198
+ * Fix builtin libffi on newer Ubuntu caused by an outdated Makefile.in . #863
199
+
200
+
201
+ 1.14.1 / 2020-12-19
202
+ -------------------
203
+
204
+ Changed:
205
+ * Revert changes to FFI::Pointer#write_string made in ffi-1.14.0.
206
+ It breaks compatibilty in a way that can cause hard to find errors. #857
207
+
208
+
209
+ 1.14.0 / 2020-12-18
210
+ -------------------
211
+
212
+ Added:
213
+ * Add types.conf for x86_64-msys, x86_64-haiku, aarch64-openbsd and aarch64-darwin (alias arm64-darwin)
214
+ * Add method AbstractMemory#size_limit? . #829
215
+ * Add new extconf option --enable-libffi-alloc which is enabled per default on Apple M1 (arm64-darwin).
216
+
217
+ Changed:
218
+ * Do NULL pointer check only when array length > 0 . #305
219
+ * Raise an error on an unknown order argument. #830
220
+ * Change FFI::Pointer#write_string to terminate with a NUL byte like other string methods. #805
221
+ * Update bundled libffi to latest master.
222
+
223
+ Removed:
224
+ * Remove win32/stdint.h and stdbool.h because of copyright issue. #693
225
+
226
+ Fixed:
227
+ * Fix possible UTF-8 load error in loader script interpretation. #792
228
+ * Fix segfault on non-array argument to #write_array_of_*
229
+ * Fix memory leak in MethodHandle . #815
230
+ * Fix possible segfault in combination with fiddle or other libffi using gems . #835
231
+ * Fix possibility to use ffi ruby gem with JRuby-9.3 . #763
232
+ * Fix a GC issue, when a callback Proc is used on more than 2 callback signatures. #820
233
+
234
+
235
+ 1.13.1 / 2020-06-09
236
+ -------------------
237
+
238
+ Changed:
239
+ * Revert use of `ucrtbase.dll` as default C library on Windows-MINGW.
240
+ `ucrtbase.dll` is still used on MSWIN target. #790
241
+ * Test for `ffi_prep_closure_loc()` to make sure we can use this function.
242
+ This fixes incorrect use of system libffi on MacOS Mojave (10.14). #787
243
+ * Update types.conf on x86_64-dragonflybsd
244
+
245
+
246
+ 1.13.0 / 2020-06-01
247
+ -------------------
248
+
249
+ Added:
250
+ * Add TruffleRuby support. Almost all specs are running on TruffleRuby and succeed. #768
251
+ * Add ruby source files to the java gem. This allows to ship the Ruby library code per platform java gem and add it as a default gem to JRuby. #763
252
+ * Add FFI::Platform::LONG_DOUBLE_SIZE
253
+ * Add bounds checks for writing to an inline char[] . #756
254
+ * Add long double as callback return value. #771
255
+ * Update type definitions and add types from stdint.h and stddef.h on i386-windows, x86_64-windows, x86_64-darwin, x86_64-linux, arm-linux, powerpc-linux. #749
256
+ * Add new type definitions for powerpc-openbsd and sparcv9-openbsd. #775, #778
257
+
258
+ Changed:
259
+ * Raise required ruby version to >= 2.3.
260
+ * Lots of cleanups and improvements in library, specs and benchmarks.
261
+ * Fix a lot of compiler warnings at the C-extension
262
+ * Fix several install issues on MacOS:
263
+ * Look for libffi in SDK paths, since recent versions of macOS removed it from `/usr/include` . #757
264
+ * Fix error `ld: library not found for -lgcc_s.10.4`
265
+ * Don't built for i386 architecture as it is deprecated
266
+ * Several fixes for MSVC build on Windows. #779
267
+ * Use `ucrtbase.dll` as default C library on Windows instead of old `msvcrt.dll`. #779
268
+ * Update builtin libffi to fix a Powerpc issue with parameters of type long
269
+ * Allow unmodified sourcing of (the ruby code of) this gem in JRuby and TruffleRuby as a default gem. #747
270
+ * Improve check to detect if a module has a #find_type method suitable for FFI. This fixes compatibility with stdlib `mkmf` . #776
271
+
272
+ Removed:
273
+ * Reject callback with `:string` return type at definition, because it didn't work so far and is not save to use. #751, #782
274
+
275
+
276
+ 1.12.2 / 2020-02-01
277
+ -------------------
278
+
279
+ * Fix possible segfault at FFI::Struct#[] and []= after GC.compact . #742
280
+
281
+
282
+ 1.12.1 / 2020-01-14
283
+ -------------------
284
+
285
+ Added:
286
+ * Add binary gem support for ruby-2.7 on Windows
287
+
288
+
289
+ 1.12.0 / 2020-01-14
290
+ -------------------
291
+
292
+ Added:
293
+ * FFI::VERSION is defined as part of `require 'ffi'` now.
294
+ It is no longer necessary to `require 'ffi/version'` .
295
+
296
+ Changed:
297
+ * Update libffi to latest master.
298
+
299
+ Deprecated:
300
+ * Overwriting struct layouts is now warned and will be disallowed in ffi-2.0. #734, #735
301
+
302
+
303
+ 1.11.3 / 2019-11-25
304
+ -------------------
305
+
306
+ Removed:
307
+ * Remove support for tainted objects which cause deprecation warnings in ruby-2.7. #730
308
+
309
+
310
+ 1.11.2 / 2019-11-11
311
+ -------------------
312
+
313
+ Added:
314
+ * Add DragonFlyBSD as a platform. #724
315
+
316
+ Changed:
317
+ * Sort all types.conf files, so that files and changes are easier to compare.
318
+ * Regenerated type conf for freebsd12 and x86_64-linux targets. #722
319
+ * Remove MACOSX_DEPLOYMENT_TARGET that was targeting very old version 10.4. #647
320
+ * Fix library name mangling for non glibc Linux/UNIX. #727
321
+ * Fix compiler warnings raised by ruby-2.7
322
+ * Update libffi to latest master.
323
+
324
+
325
+ 1.11.1 / 2019-05-20
326
+ -------------------
327
+
328
+ Changed:
329
+ * Raise required ruby version to >=2.0. #699, #700
330
+ * Fix a possible linker error on ruby < 2.3 on Linux.
331
+
332
+
333
+ 1.11.0 / 2019-05-17
334
+ -------------------
335
+ This version was yanked on 2019-05-20 to fix an install issue on ruby-1.9.3. #700
336
+
337
+ Added:
338
+ * Add ability to disable or force use of system libffi. #669
339
+ Use like `gem inst ffi -- --enable-system-libffi` .
340
+ * Add ability to call FFI callbacks from outside of FFI call frame. #584
341
+ * Add proper documentation to FFI::Generator and ::Task
342
+ * Add gemspec metadata. #696, #698
343
+
344
+ Changed:
345
+ * Fix stdcall on Win32. #649, #669
346
+ * Fix load paths for FFI::Generator::Task
347
+ * Fix FFI::Pointer#read_string(0) to return a binary String. #692
348
+ * Fix benchmark suite so that it runs on ruby-2.x
349
+ * Move FFI::Platform::CPU from C to Ruby. #663
350
+ * Move FFI::StructByReference to Ruby. #681
351
+ * Move FFI::DataConverter to Ruby (#661)
352
+ * Various cleanups and improvements of specs and benchmarks
353
+
354
+ Removed:
355
+ * Remove ruby-1.8 and 1.9 compatibility code. #683
356
+ * Remove unused spec files. #684
357
+
358
+
359
+ 1.10.0 / 2019-01-06
360
+ -------------------
361
+
362
+ Added:
363
+ * Add /opt/local/lib/ to ffi's fallback library search path. #638
364
+ * Add binary gem support for ruby-2.6 on Windows
365
+ * Add FreeBSD on AArch64 and ARM support. #644
366
+ * Add FFI::LastError.winapi_error on Windows native or Cygwin. #633
367
+
368
+ Changed:
369
+ * Update to rake-compiler-dock-0.7.0
370
+ * Use 64-bit inodes on FreeBSD >= 12. #644
371
+ * Switch time_t and suseconds_t types to long on FreeBSD. #627
372
+ * Make register_t long_long on 64-bit FreeBSD. #644
373
+ * Fix Pointer#write_array_of_type #637
374
+
375
+ Removed:
376
+ * Drop binary gem support for ruby-2.0 and 2.1 on Windows
377
+
378
+
379
+ 1.9.25 / 2018-06-03
380
+ -------------------
381
+
382
+ Changed:
383
+ * Revert closures via libffi.
384
+ This re-adds ClosurePool and fixes compat with SELinux enabled systems. #621
385
+
386
+
387
+ 1.9.24 / 2018-06-02
388
+ -------------------
389
+
390
+ Security Note:
391
+
392
+ This update addresses vulnerability CVE-2018-1000201: DLL loading issue which can be hijacked on Windows OS, when a Symbol is used as DLL name instead of a String. Found by Matthew Bush.
393
+
394
+ Added:
395
+ * Added a CHANGELOG file
396
+ * Add mips64(eb) support, and mips r6 support. (#601)
397
+
398
+ Changed:
399
+ * Update libffi to latest changes on master.
400
+ * Don't search in hardcoded /usr paths on Windows.
401
+ * Don't treat Symbol args different to Strings in ffi_lib.
402
+ * Make sure size_t is defined in Thread.c. Fixes #609
403
+
404
+
405
+ 1.9.23 / 2018-02-25
406
+ -------------------
407
+
408
+ Changed:
409
+ * Fix unnecessary rebuild of configure in darwin multi arch. Fixes #605
410
+
411
+
412
+ 1.9.22 / 2018-02-22
413
+ -------------------
414
+
415
+ Changed:
416
+ * Update libffi to latest changes on master.
417
+ * Update detection of system libffi to match new requirements. Fixes #617
418
+ * Prefer bundled libffi over system libffi on Mac OS.
419
+ * Do closures via libffi. This removes ClosurePool and fixes compat with PaX. #540
420
+ * Use a more deterministic gem packaging.
421
+ * Fix unnecessary update of autoconf files at gem install.
422
+
423
+
424
+ 1.9.21 / 2018-02-06
425
+ -------------------
426
+
427
+ Added:
428
+ * Ruby-2.5 support by Windows binary gems. Fixes #598
429
+ * Add missing win64 types.
430
+ * Added support for Bitmask. (#573)
431
+ * Add support for MSYS2 (#572) and Sparc64 Linux. (#574)
432
+
433
+ Changed:
434
+ * Fix read_string to not throw an error on length 0.
435
+ * Don't use absolute paths for sh and env. Fixes usage on Adroid #528
436
+ * Use Ruby implementation for `which` for better compat with Windows. Fixes #315
437
+ * Fix compatibility with PPC64LE platform. (#577)
438
+ * Normalize sparc64 to sparcv9. (#575)
439
+
440
+ Removed:
441
+ * Drop Ruby 1.8.7 support (#480)
442
+
443
+
444
+ 1.9.18 / 2017-03-03
445
+ -------------------
446
+
447
+ Added:
448
+ * Add compatibility with Ruby-2.4.
449
+
450
+ Changed:
451
+ * Add missing shlwapi.h include to fix Windows build.
452
+ * Avoid undefined behaviour of LoadLibrary() on Windows. #553
453
+
454
+
455
+ 1.9.17 / 2017-01-13
456
+ -------------------
data/COPYING ADDED
@@ -0,0 +1,49 @@
1
+ Copyright (c) 2008-2013, Ruby FFI project contributors
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are met:
6
+ * Redistributions of source code must retain the above copyright
7
+ notice, this list of conditions and the following disclaimer.
8
+ * Redistributions in binary form must reproduce the above copyright
9
+ notice, this list of conditions and the following disclaimer in the
10
+ documentation and/or other materials provided with the distribution.
11
+ * Neither the name of the Ruby FFI project nor the
12
+ names of its contributors may be used to endorse or promote products
13
+ derived from this software without specific prior written permission.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
+ DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
19
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
+
26
+ libffi, used by this project, is licensed under the MIT license:
27
+
28
+ libffi - Copyright (c) 1996-2011 Anthony Green, Red Hat, Inc and others.
29
+ See source files for details.
30
+
31
+ Permission is hereby granted, free of charge, to any person obtaining
32
+ a copy of this software and associated documentation files (the
33
+ ``Software''), to deal in the Software without restriction, including
34
+ without limitation the rights to use, copy, modify, merge, publish,
35
+ distribute, sublicense, and/or sell copies of the Software, and to
36
+ permit persons to whom the Software is furnished to do so, subject to
37
+ the following conditions:
38
+
39
+ The above copyright notice and this permission notice shall be
40
+ included in all copies or substantial portions of the Software.
41
+
42
+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
43
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
44
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
45
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
46
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
47
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
48
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
49
+
data/Gemfile ADDED
@@ -0,0 +1,21 @@
1
+ source 'https://rubygems.org'
2
+
3
+ group :development do
4
+ gem 'bigdecimal' # necessary on ruby-3.3+
5
+ gem 'bundler', '>= 1.16', '< 3'
6
+ gem 'rake', '~> 13.0'
7
+ gem 'rake-compiler', '~> 1.1'
8
+ gem 'rake-compiler-dock', '~> 1.0.pre'
9
+ gem 'rspec', '~> 3.0'
10
+ end
11
+
12
+ group :doc do
13
+ gem 'kramdown'
14
+ gem 'yard', '~> 0.9'
15
+ end
16
+
17
+ group :type_check do
18
+ if RUBY_VERSION >= "2.6" && %w[ ruby truffleruby ].include?(RUBY_ENGINE)
19
+ gem 'rbs', '~> 3.0'
20
+ end
21
+ end
data/LICENSE ADDED
@@ -0,0 +1,24 @@
1
+ Copyright (c) 2008-2016, Ruby FFI project contributors
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are met:
6
+ * Redistributions of source code must retain the above copyright
7
+ notice, this list of conditions and the following disclaimer.
8
+ * Redistributions in binary form must reproduce the above copyright
9
+ notice, this list of conditions and the following disclaimer in the
10
+ documentation and/or other materials provided with the distribution.
11
+ * Neither the name of the Ruby FFI project nor the
12
+ names of its contributors may be used to endorse or promote products
13
+ derived from this software without specific prior written permission.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
+ DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
19
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/LICENSE.SPECS ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2008-2012 Ruby-FFI contributors
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.