ffi 1.15.5-x64-mingw-ucrt
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +338 -0
- data/COPYING +49 -0
- data/Gemfile +14 -0
- data/LICENSE +24 -0
- data/LICENSE.SPECS +22 -0
- data/README.md +136 -0
- data/Rakefile +191 -0
- data/ffi.gemspec +42 -0
- data/lib/3.1/ffi_c.so +0 -0
- data/lib/ffi/abstract_memory.rb +44 -0
- data/lib/ffi/autopointer.rb +203 -0
- data/lib/ffi/buffer.rb +4 -0
- data/lib/ffi/callback.rb +4 -0
- data/lib/ffi/data_converter.rb +67 -0
- data/lib/ffi/enum.rb +296 -0
- data/lib/ffi/errno.rb +43 -0
- data/lib/ffi/ffi.rb +47 -0
- data/lib/ffi/io.rb +62 -0
- data/lib/ffi/library.rb +592 -0
- data/lib/ffi/managedstruct.rb +84 -0
- data/lib/ffi/memorypointer.rb +1 -0
- data/lib/ffi/platform/aarch64-darwin/types.conf +130 -0
- data/lib/ffi/platform/aarch64-freebsd/types.conf +128 -0
- data/lib/ffi/platform/aarch64-freebsd12/types.conf +181 -0
- data/lib/ffi/platform/aarch64-linux/types.conf +104 -0
- data/lib/ffi/platform/aarch64-openbsd/types.conf +134 -0
- data/lib/ffi/platform/arm-freebsd/types.conf +152 -0
- data/lib/ffi/platform/arm-freebsd12/types.conf +152 -0
- data/lib/ffi/platform/arm-linux/types.conf +132 -0
- data/lib/ffi/platform/i386-cygwin/types.conf +3 -0
- data/lib/ffi/platform/i386-darwin/types.conf +100 -0
- data/lib/ffi/platform/i386-freebsd/types.conf +152 -0
- data/lib/ffi/platform/i386-freebsd12/types.conf +152 -0
- data/lib/ffi/platform/i386-gnu/types.conf +107 -0
- data/lib/ffi/platform/i386-linux/types.conf +103 -0
- data/lib/ffi/platform/i386-netbsd/types.conf +126 -0
- data/lib/ffi/platform/i386-openbsd/types.conf +128 -0
- data/lib/ffi/platform/i386-solaris/types.conf +122 -0
- data/lib/ffi/platform/i386-windows/types.conf +52 -0
- data/lib/ffi/platform/ia64-linux/types.conf +104 -0
- data/lib/ffi/platform/mips-linux/types.conf +102 -0
- data/lib/ffi/platform/mips64-linux/types.conf +104 -0
- data/lib/ffi/platform/mips64el-linux/types.conf +104 -0
- data/lib/ffi/platform/mipsel-linux/types.conf +102 -0
- data/lib/ffi/platform/mipsisa32r6-linux/types.conf +102 -0
- data/lib/ffi/platform/mipsisa32r6el-linux/types.conf +102 -0
- data/lib/ffi/platform/mipsisa64r6-linux/types.conf +104 -0
- data/lib/ffi/platform/mipsisa64r6el-linux/types.conf +104 -0
- data/lib/ffi/platform/powerpc-aix/types.conf +180 -0
- data/lib/ffi/platform/powerpc-darwin/types.conf +100 -0
- data/lib/ffi/platform/powerpc-linux/types.conf +130 -0
- data/lib/ffi/platform/powerpc-openbsd/types.conf +156 -0
- data/lib/ffi/platform/powerpc64-linux/types.conf +104 -0
- data/lib/ffi/platform/powerpc64le-linux/types.conf +100 -0
- data/lib/ffi/platform/riscv64-linux/types.conf +104 -0
- data/lib/ffi/platform/s390-linux/types.conf +102 -0
- data/lib/ffi/platform/s390x-linux/types.conf +102 -0
- data/lib/ffi/platform/sparc-linux/types.conf +102 -0
- data/lib/ffi/platform/sparc-solaris/types.conf +128 -0
- data/lib/ffi/platform/sparc64-linux/types.conf +102 -0
- data/lib/ffi/platform/sparcv9-openbsd/types.conf +156 -0
- data/lib/ffi/platform/sparcv9-solaris/types.conf +128 -0
- data/lib/ffi/platform/x86_64-cygwin/types.conf +3 -0
- data/lib/ffi/platform/x86_64-darwin/types.conf +130 -0
- data/lib/ffi/platform/x86_64-dragonflybsd/types.conf +130 -0
- data/lib/ffi/platform/x86_64-freebsd/types.conf +128 -0
- data/lib/ffi/platform/x86_64-freebsd12/types.conf +158 -0
- data/lib/ffi/platform/x86_64-haiku/types.conf +117 -0
- data/lib/ffi/platform/x86_64-linux/types.conf +132 -0
- data/lib/ffi/platform/x86_64-msys/types.conf +119 -0
- data/lib/ffi/platform/x86_64-netbsd/types.conf +128 -0
- data/lib/ffi/platform/x86_64-openbsd/types.conf +134 -0
- data/lib/ffi/platform/x86_64-solaris/types.conf +122 -0
- data/lib/ffi/platform/x86_64-windows/types.conf +52 -0
- data/lib/ffi/platform.rb +185 -0
- data/lib/ffi/pointer.rb +167 -0
- data/lib/ffi/struct.rb +316 -0
- data/lib/ffi/struct_by_reference.rb +72 -0
- data/lib/ffi/struct_layout.rb +96 -0
- data/lib/ffi/struct_layout_builder.rb +227 -0
- data/lib/ffi/tools/const_generator.rb +232 -0
- data/lib/ffi/tools/generator.rb +105 -0
- data/lib/ffi/tools/generator_task.rb +32 -0
- data/lib/ffi/tools/struct_generator.rb +195 -0
- data/lib/ffi/tools/types_generator.rb +137 -0
- data/lib/ffi/types.rb +194 -0
- data/lib/ffi/union.rb +43 -0
- data/lib/ffi/variadic.rb +69 -0
- data/lib/ffi/version.rb +3 -0
- data/lib/ffi.rb +27 -0
- data/rakelib/ffi_gem_helper.rb +65 -0
- data/samples/getlogin.rb +8 -0
- data/samples/getpid.rb +8 -0
- data/samples/gettimeofday.rb +18 -0
- data/samples/hello.rb +8 -0
- data/samples/inotify.rb +60 -0
- data/samples/pty.rb +75 -0
- data/samples/qsort.rb +20 -0
- metadata +207 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 36a218e970f5a550202d0423024605d6253164ea15c3b5abaa75cb998c20579c
|
4
|
+
data.tar.gz: 858d0ef9099b6d311dde34bf49968840f53e3b8b04cc9d89d1a0fd3c696a7267
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 547e6f97d52e5a0d6b9581fa43d0cb0947f95a22758e041dc622baddbda7ac8f9d27c4e9eb16722a2d6eea6ac99996565385ad1fb6899a16262cfc9a9fedff8e
|
7
|
+
data.tar.gz: 2e3a028c0d658c86889e18f4a081354a98b42cc2cebd2db82deea2cd6eb01fe69551bd3e1abd2480866225114c2bf77754bc6dd7320e7d1e3b64bc60ff16650e
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,338 @@
|
|
1
|
+
1.15.5 / 2022-01-10
|
2
|
+
-------------------
|
3
|
+
|
4
|
+
Fixed:
|
5
|
+
* Fix long double argument or return values on 32bit i686. #849
|
6
|
+
* FFI::ConstGenerator: avoid usage of the same binary file simultaneously. #929
|
7
|
+
|
8
|
+
Added:
|
9
|
+
* Add Windows fat binary gem for Ruby-3.1
|
10
|
+
|
11
|
+
Removed:
|
12
|
+
* Remove Windows fat binary gem for Ruby < 2.4
|
13
|
+
|
14
|
+
|
15
|
+
1.15.4 / 2021-09-01
|
16
|
+
-------------------
|
17
|
+
|
18
|
+
Fixed:
|
19
|
+
* Fix build for uClibc. #913
|
20
|
+
* Correct module lookup when including `ffi-module` gem. #912
|
21
|
+
|
22
|
+
Changed:
|
23
|
+
* Use ruby code of the ffi gem in JRuby-9.2.20+. #915
|
24
|
+
|
25
|
+
|
26
|
+
1.15.3 / 2021-06-16
|
27
|
+
-------------------
|
28
|
+
|
29
|
+
Fixed:
|
30
|
+
* Fix temporary packaging issue with libffi. #904
|
31
|
+
|
32
|
+
|
33
|
+
1.15.2 / 2021-06-16
|
34
|
+
-------------------
|
35
|
+
|
36
|
+
Added:
|
37
|
+
* Add support for Windows MINGW-UCRT build. #903
|
38
|
+
* Add `/opt/homebrew/lib/` to fallback search paths to improve homebrew support. #880 #882
|
39
|
+
|
40
|
+
Changed:
|
41
|
+
* Regenerate `types.conf` for FreeBSD12 aarch64. #902
|
42
|
+
|
43
|
+
|
44
|
+
1.15.1 / 2021-05-22
|
45
|
+
-------------------
|
46
|
+
|
47
|
+
Fixed:
|
48
|
+
* Append -pthread to linker options. #893
|
49
|
+
* Use arm or aarch64 to identify Apple ARM CPU arch. #899
|
50
|
+
* Allow overriding `gcc` with the `CC` env var in `const_generator.rb` and `struct_generator.rb`. #897
|
51
|
+
|
52
|
+
|
53
|
+
1.15.0 / 2021-03-05
|
54
|
+
-------------------
|
55
|
+
|
56
|
+
Fixed:
|
57
|
+
* Fix MSVC build
|
58
|
+
* Fix async callbacks in conjunction with fork(). #884
|
59
|
+
|
60
|
+
Added:
|
61
|
+
* Allow to pass callbacks in varargs. #885
|
62
|
+
* Name the threads for FFI callback dispatcher and async thread calls for easier debugging. #883
|
63
|
+
The name can be retrieved by Thread.name and is shown by Thread.list.inspect etc.
|
64
|
+
Even gdb shows the thread name on supported operating systems.
|
65
|
+
* Add types.conf for powerpc64le-linux
|
66
|
+
* Add types.conf for riscv64-linux
|
67
|
+
* More release automation of ffi gems
|
68
|
+
|
69
|
+
Changed:
|
70
|
+
* Switch from rubygems-tasks to bundler/gem_helper
|
71
|
+
|
72
|
+
Removed:
|
73
|
+
* Remove unused VariadicInvoker#init
|
74
|
+
|
75
|
+
|
76
|
+
1.14.2 / 2020-12-21
|
77
|
+
-------------------
|
78
|
+
|
79
|
+
Fixed:
|
80
|
+
* Fix builtin libffi on newer Ubuntu caused by an outdated Makefile.in . #863
|
81
|
+
|
82
|
+
|
83
|
+
1.14.1 / 2020-12-19
|
84
|
+
-------------------
|
85
|
+
|
86
|
+
Changed:
|
87
|
+
* Revert changes to FFI::Pointer#write_string made in ffi-1.14.0.
|
88
|
+
It breaks compatibilty in a way that can cause hard to find errors. #857
|
89
|
+
|
90
|
+
|
91
|
+
1.14.0 / 2020-12-18
|
92
|
+
-------------------
|
93
|
+
|
94
|
+
Added:
|
95
|
+
* Add types.conf for x86_64-msys, x86_64-haiku, aarch64-openbsd and aarch64-darwin (alias arm64-darwin)
|
96
|
+
* Add method AbstractMemory#size_limit? . #829
|
97
|
+
* Add new extconf option --enable-libffi-alloc which is enabled per default on Apple M1 (arm64-darwin).
|
98
|
+
|
99
|
+
Changed:
|
100
|
+
* Do NULL pointer check only when array length > 0 . #305
|
101
|
+
* Raise an error on an unknown order argument. #830
|
102
|
+
* Change FFI::Pointer#write_string to terminate with a NUL byte like other string methods. #805
|
103
|
+
* Update bundled libffi to latest master.
|
104
|
+
|
105
|
+
Removed:
|
106
|
+
* Remove win32/stdint.h and stdbool.h because of copyright issue. #693
|
107
|
+
|
108
|
+
Fixed:
|
109
|
+
* Fix possible UTF-8 load error in loader script interpretation. #792
|
110
|
+
* Fix segfault on non-array argument to #write_array_of_*
|
111
|
+
* Fix memory leak in MethodHandle . #815
|
112
|
+
* Fix possible segfault in combination with fiddle or other libffi using gems . #835
|
113
|
+
* Fix possibility to use ffi ruby gem with JRuby-9.3 . #763
|
114
|
+
* Fix a GC issue, when a callback Proc is used on more than 2 callback signatures. #820
|
115
|
+
|
116
|
+
|
117
|
+
1.13.1 / 2020-06-09
|
118
|
+
-------------------
|
119
|
+
|
120
|
+
Changed:
|
121
|
+
* Revert use of `ucrtbase.dll` as default C library on Windows-MINGW.
|
122
|
+
`ucrtbase.dll` is still used on MSWIN target. #790
|
123
|
+
* Test for `ffi_prep_closure_loc()` to make sure we can use this function.
|
124
|
+
This fixes incorrect use of system libffi on MacOS Mojave (10.14). #787
|
125
|
+
* Update types.conf on x86_64-dragonflybsd
|
126
|
+
|
127
|
+
|
128
|
+
1.13.0 / 2020-06-01
|
129
|
+
-------------------
|
130
|
+
|
131
|
+
Added:
|
132
|
+
* Add TruffleRuby support. Almost all specs are running on TruffleRuby and succeed. #768
|
133
|
+
* 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
|
134
|
+
* Add FFI::Platform::LONG_DOUBLE_SIZE
|
135
|
+
* Add bounds checks for writing to an inline char[] . #756
|
136
|
+
* Add long double as callback return value. #771
|
137
|
+
* 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
|
138
|
+
* Add new type definitions for powerpc-openbsd and sparcv9-openbsd. #775, #778
|
139
|
+
|
140
|
+
Changed:
|
141
|
+
* Raise required ruby version to >= 2.3.
|
142
|
+
* Lots of cleanups and improvements in library, specs and benchmarks.
|
143
|
+
* Fix a lot of compiler warnings at the C-extension
|
144
|
+
* Fix several install issues on MacOS:
|
145
|
+
* Look for libffi in SDK paths, since recent versions of macOS removed it from `/usr/include` . #757
|
146
|
+
* Fix error `ld: library not found for -lgcc_s.10.4`
|
147
|
+
* Don't built for i386 architecture as it is deprecated
|
148
|
+
* Several fixes for MSVC build on Windows. #779
|
149
|
+
* Use `ucrtbase.dll` as default C library on Windows instead of old `msvcrt.dll`. #779
|
150
|
+
* Update builtin libffi to fix a Powerpc issue with parameters of type long
|
151
|
+
* Allow unmodified sourcing of (the ruby code of) this gem in JRuby and TruffleRuby as a default gem. #747
|
152
|
+
* Improve check to detect if a module has a #find_type method suitable for FFI. This fixes compatibility with stdlib `mkmf` . #776
|
153
|
+
|
154
|
+
Removed:
|
155
|
+
* Reject callback with `:string` return type at definition, because it didn't work so far and is not save to use. #751, #782
|
156
|
+
|
157
|
+
|
158
|
+
1.12.2 / 2020-02-01
|
159
|
+
-------------------
|
160
|
+
|
161
|
+
* Fix possible segfault at FFI::Struct#[] and []= after GC.compact . #742
|
162
|
+
|
163
|
+
|
164
|
+
1.12.1 / 2020-01-14
|
165
|
+
-------------------
|
166
|
+
|
167
|
+
Added:
|
168
|
+
* Add binary gem support for ruby-2.7 on Windows
|
169
|
+
|
170
|
+
|
171
|
+
1.12.0 / 2020-01-14
|
172
|
+
-------------------
|
173
|
+
|
174
|
+
Added:
|
175
|
+
* FFI::VERSION is defined as part of `require 'ffi'` now.
|
176
|
+
It is no longer necessary to `require 'ffi/version'` .
|
177
|
+
|
178
|
+
Changed:
|
179
|
+
* Update libffi to latest master.
|
180
|
+
|
181
|
+
Deprecated:
|
182
|
+
* Overwriting struct layouts is now warned and will be disallowed in ffi-2.0. #734, #735
|
183
|
+
|
184
|
+
|
185
|
+
1.11.3 / 2019-11-25
|
186
|
+
-------------------
|
187
|
+
|
188
|
+
Removed:
|
189
|
+
* Remove support for tainted objects which cause deprecation warnings in ruby-2.7. #730
|
190
|
+
|
191
|
+
|
192
|
+
1.11.2 / 2019-11-11
|
193
|
+
-------------------
|
194
|
+
|
195
|
+
Added:
|
196
|
+
* Add DragonFlyBSD as a platform. #724
|
197
|
+
|
198
|
+
Changed:
|
199
|
+
* Sort all types.conf files, so that files and changes are easier to compare.
|
200
|
+
* Regenerated type conf for freebsd12 and x86_64-linux targets. #722
|
201
|
+
* Remove MACOSX_DEPLOYMENT_TARGET that was targeting very old version 10.4. #647
|
202
|
+
* Fix library name mangling for non glibc Linux/UNIX. #727
|
203
|
+
* Fix compiler warnings raised by ruby-2.7
|
204
|
+
* Update libffi to latest master.
|
205
|
+
|
206
|
+
|
207
|
+
1.11.1 / 2019-05-20
|
208
|
+
-------------------
|
209
|
+
|
210
|
+
Changed:
|
211
|
+
* Raise required ruby version to >=2.0. #699, #700
|
212
|
+
* Fix a possible linker error on ruby < 2.3 on Linux.
|
213
|
+
|
214
|
+
|
215
|
+
1.11.0 / 2019-05-17
|
216
|
+
-------------------
|
217
|
+
This version was yanked on 2019-05-20 to fix an install issue on ruby-1.9.3. #700
|
218
|
+
|
219
|
+
Added:
|
220
|
+
* Add ability to disable or force use of system libffi. #669
|
221
|
+
Use like `gem inst ffi -- --enable-system-libffi` .
|
222
|
+
* Add ability to call FFI callbacks from outside of FFI call frame. #584
|
223
|
+
* Add proper documentation to FFI::Generator and ::Task
|
224
|
+
* Add gemspec metadata. #696, #698
|
225
|
+
|
226
|
+
Changed:
|
227
|
+
* Fix stdcall on Win32. #649, #669
|
228
|
+
* Fix load paths for FFI::Generator::Task
|
229
|
+
* Fix FFI::Pointer#read_string(0) to return a binary String. #692
|
230
|
+
* Fix benchmark suite so that it runs on ruby-2.x
|
231
|
+
* Move FFI::Platform::CPU from C to Ruby. #663
|
232
|
+
* Move FFI::StructByReference to Ruby. #681
|
233
|
+
* Move FFI::DataConverter to Ruby (#661)
|
234
|
+
* Various cleanups and improvements of specs and benchmarks
|
235
|
+
|
236
|
+
Removed:
|
237
|
+
* Remove ruby-1.8 and 1.9 compatibility code. #683
|
238
|
+
* Remove unused spec files. #684
|
239
|
+
|
240
|
+
|
241
|
+
1.10.0 / 2019-01-06
|
242
|
+
-------------------
|
243
|
+
|
244
|
+
Added:
|
245
|
+
* Add /opt/local/lib/ to ffi's fallback library search path. #638
|
246
|
+
* Add binary gem support for ruby-2.6 on Windows
|
247
|
+
* Add FreeBSD on AArch64 and ARM support. #644
|
248
|
+
* Add FFI::LastError.winapi_error on Windows native or Cygwin. #633
|
249
|
+
|
250
|
+
Changed:
|
251
|
+
* Update to rake-compiler-dock-0.7.0
|
252
|
+
* Use 64-bit inodes on FreeBSD >= 12. #644
|
253
|
+
* Switch time_t and suseconds_t types to long on FreeBSD. #627
|
254
|
+
* Make register_t long_long on 64-bit FreeBSD. #644
|
255
|
+
* Fix Pointer#write_array_of_type #637
|
256
|
+
|
257
|
+
Removed:
|
258
|
+
* Drop binary gem support for ruby-2.0 and 2.1 on Windows
|
259
|
+
|
260
|
+
|
261
|
+
1.9.25 / 2018-06-03
|
262
|
+
-------------------
|
263
|
+
|
264
|
+
Changed:
|
265
|
+
* Revert closures via libffi.
|
266
|
+
This re-adds ClosurePool and fixes compat with SELinux enabled systems. #621
|
267
|
+
|
268
|
+
|
269
|
+
1.9.24 / 2018-06-02
|
270
|
+
-------------------
|
271
|
+
|
272
|
+
Security Note:
|
273
|
+
|
274
|
+
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.
|
275
|
+
|
276
|
+
Added:
|
277
|
+
* Added a CHANGELOG file
|
278
|
+
* Add mips64(eb) support, and mips r6 support. (#601)
|
279
|
+
|
280
|
+
Changed:
|
281
|
+
* Update libffi to latest changes on master.
|
282
|
+
* Don't search in hardcoded /usr paths on Windows.
|
283
|
+
* Don't treat Symbol args different to Strings in ffi_lib.
|
284
|
+
* Make sure size_t is defined in Thread.c. Fixes #609
|
285
|
+
|
286
|
+
|
287
|
+
1.9.23 / 2018-02-25
|
288
|
+
-------------------
|
289
|
+
|
290
|
+
Changed:
|
291
|
+
* Fix unnecessary rebuild of configure in darwin multi arch. Fixes #605
|
292
|
+
|
293
|
+
|
294
|
+
1.9.22 / 2018-02-22
|
295
|
+
-------------------
|
296
|
+
|
297
|
+
Changed:
|
298
|
+
* Update libffi to latest changes on master.
|
299
|
+
* Update detection of system libffi to match new requirements. Fixes #617
|
300
|
+
* Prefer bundled libffi over system libffi on Mac OS.
|
301
|
+
* Do closures via libffi. This removes ClosurePool and fixes compat with PaX. #540
|
302
|
+
* Use a more deterministic gem packaging.
|
303
|
+
* Fix unnecessary update of autoconf files at gem install.
|
304
|
+
|
305
|
+
|
306
|
+
1.9.21 / 2018-02-06
|
307
|
+
-------------------
|
308
|
+
|
309
|
+
Added:
|
310
|
+
* Ruby-2.5 support by Windows binary gems. Fixes #598
|
311
|
+
* Add missing win64 types.
|
312
|
+
* Added support for Bitmask. (#573)
|
313
|
+
* Add support for MSYS2 (#572) and Sparc64 Linux. (#574)
|
314
|
+
|
315
|
+
Changed:
|
316
|
+
* Fix read_string to not throw an error on length 0.
|
317
|
+
* Don't use absolute paths for sh and env. Fixes usage on Adroid #528
|
318
|
+
* Use Ruby implementation for `which` for better compat with Windows. Fixes #315
|
319
|
+
* Fix compatibility with PPC64LE platform. (#577)
|
320
|
+
* Normalize sparc64 to sparcv9. (#575)
|
321
|
+
|
322
|
+
Removed:
|
323
|
+
* Drop Ruby 1.8.7 support (#480)
|
324
|
+
|
325
|
+
|
326
|
+
1.9.18 / 2017-03-03
|
327
|
+
-------------------
|
328
|
+
|
329
|
+
Added:
|
330
|
+
* Add compatibility with Ruby-2.4.
|
331
|
+
|
332
|
+
Changed:
|
333
|
+
* Add missing shlwapi.h include to fix Windows build.
|
334
|
+
* Avoid undefined behaviour of LoadLibrary() on Windows. #553
|
335
|
+
|
336
|
+
|
337
|
+
1.9.17 / 2017-01-13
|
338
|
+
-------------------
|
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,14 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
group :development do
|
4
|
+
gem 'rake', '~> 13.0'
|
5
|
+
gem 'rake-compiler', '~> 1.0.3'
|
6
|
+
gem 'rake-compiler-dock', '~> 1.0'
|
7
|
+
gem 'rspec', '~> 3.0'
|
8
|
+
gem 'bundler', '>= 1.16', '< 3'
|
9
|
+
end
|
10
|
+
|
11
|
+
group :doc do
|
12
|
+
gem 'kramdown'
|
13
|
+
gem 'yard', '~> 0.9'
|
14
|
+
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.
|
data/README.md
ADDED
@@ -0,0 +1,136 @@
|
|
1
|
+
# Ruby-FFI https://github.com/ffi/ffi/wiki [](https://travis-ci.com/ffi/ffi) [](https://ci.appveyor.com/project/larskanis/ffi-aofqa/branch/master)
|
2
|
+
|
3
|
+
## Description
|
4
|
+
|
5
|
+
Ruby-FFI is a gem for programmatically loading dynamically-linked native
|
6
|
+
libraries, binding functions within them, and calling those functions
|
7
|
+
from Ruby code. Moreover, a Ruby-FFI extension works without changes
|
8
|
+
on CRuby (MRI), JRuby, Rubinius and TruffleRuby. [Discover why you should write your next extension
|
9
|
+
using Ruby-FFI](https://github.com/ffi/ffi/wiki/why-use-ffi).
|
10
|
+
|
11
|
+
## Features
|
12
|
+
|
13
|
+
* Intuitive DSL
|
14
|
+
* Supports all C native types
|
15
|
+
* C structs (also nested), enums and global variables
|
16
|
+
* Callbacks from C to Ruby
|
17
|
+
* Automatic garbage collection of native memory
|
18
|
+
|
19
|
+
## Synopsis
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
require 'ffi'
|
23
|
+
|
24
|
+
module MyLib
|
25
|
+
extend FFI::Library
|
26
|
+
ffi_lib 'c'
|
27
|
+
attach_function :puts, [ :string ], :int
|
28
|
+
end
|
29
|
+
|
30
|
+
MyLib.puts 'Hello, World using libc!'
|
31
|
+
```
|
32
|
+
|
33
|
+
For less minimalistic and more examples you may look at:
|
34
|
+
|
35
|
+
* the `samples/` folder
|
36
|
+
* the examples on the [wiki](https://github.com/ffi/ffi/wiki)
|
37
|
+
* the projects using FFI listed on the wiki: https://github.com/ffi/ffi/wiki/projects-using-ffi
|
38
|
+
|
39
|
+
## Requirements
|
40
|
+
|
41
|
+
When installing the gem on CRuby (MRI), you will need:
|
42
|
+
* A C compiler (e.g., Xcode on macOS, `gcc` or `clang` on everything else)
|
43
|
+
Optionally (speeds up installation):
|
44
|
+
* The `libffi` library and development headers - this is commonly in the `libffi-dev` or `libffi-devel` packages
|
45
|
+
|
46
|
+
The ffi gem comes with a builtin libffi version, which is used, when the system libffi library is not available or too old.
|
47
|
+
Use of the system libffi can be enforced by:
|
48
|
+
```
|
49
|
+
gem install ffi -- --enable-system-libffi # to install the gem manually
|
50
|
+
bundle config build.ffi --enable-system-libffi # for bundle install
|
51
|
+
```
|
52
|
+
or prevented by `--disable-system-libffi`.
|
53
|
+
|
54
|
+
On Linux systems running with [PaX](https://en.wikipedia.org/wiki/PaX) (Gentoo, Alpine, etc.), FFI may trigger `mprotect` errors. You may need to disable [mprotect](https://en.wikibooks.org/wiki/Grsecurity/Appendix/Grsecurity_and_PaX_Configuration_Options#Restrict_mprotect.28.29) for ruby (`paxctl -m [/path/to/ruby]`) for the time being until a solution is found.
|
55
|
+
|
56
|
+
On FreeBSD systems pkgconf must be installed for the gem to be able to compile using clang. Install either via packages `pkg install pkgconf` or from ports via `devel/pkgconf`.
|
57
|
+
|
58
|
+
On JRuby and TruffleRuby, there are no requirements to install the FFI gem, and `require 'ffi'` works even without installing the gem (i.e., the gem is preinstalled on these implementations).
|
59
|
+
|
60
|
+
## Installation
|
61
|
+
|
62
|
+
From rubygems:
|
63
|
+
|
64
|
+
[sudo] gem install ffi
|
65
|
+
|
66
|
+
From a Gemfile using git or GitHub
|
67
|
+
|
68
|
+
gem 'ffi', github: 'ffi/ffi', submodules: true
|
69
|
+
|
70
|
+
or from the git repository on github:
|
71
|
+
|
72
|
+
git clone git://github.com/ffi/ffi.git
|
73
|
+
cd ffi
|
74
|
+
git submodule update --init --recursive
|
75
|
+
bundle install
|
76
|
+
rake install
|
77
|
+
|
78
|
+
### Install options:
|
79
|
+
|
80
|
+
* `--enable-system-libffi` : Force usage of system libffi
|
81
|
+
* `--disable-system-libffi` : Force usage of builtin libffi
|
82
|
+
* `--enable-libffi-alloc` : Force closure allocation by libffi
|
83
|
+
* `--disable-libffi-alloc` : Force closure allocation by builtin method
|
84
|
+
|
85
|
+
## License
|
86
|
+
|
87
|
+
The ffi library is covered by the BSD license, also see the LICENSE file.
|
88
|
+
The specs are covered by the same license as [ruby/spec](https://github.com/ruby/spec), the MIT license.
|
89
|
+
|
90
|
+
## Credits
|
91
|
+
|
92
|
+
The following people have submitted code, bug reports, or otherwise contributed to the success of this project:
|
93
|
+
|
94
|
+
* Alban Peignier <alban.peignier@free.fr>
|
95
|
+
* Aman Gupta <aman@tmm1.net>
|
96
|
+
* Andrea Fazzi <andrea.fazzi@alcacoop.it>
|
97
|
+
* Andreas Niederl <rico32@gmx.net>
|
98
|
+
* Andrew Cholakian <andrew@andrewvc.com>
|
99
|
+
* Antonio Terceiro <terceiro@softwarelivre.org>
|
100
|
+
* Benoit Daloze <eregontp@gmail.com>
|
101
|
+
* Brian Candler <B.Candler@pobox.com>
|
102
|
+
* Brian D. Burns <burns180@gmail.com>
|
103
|
+
* Bryan Kearney <bkearney@redhat.com>
|
104
|
+
* Charlie Savage <cfis@zerista.com>
|
105
|
+
* Chikanaga Tomoyuki <nagachika00@gmail.com>
|
106
|
+
* Hongli Lai <hongli@phusion.nl>
|
107
|
+
* Ian MacLeod <ian@nevir.net>
|
108
|
+
* Jake Douglas <jake@shiftedlabs.com>
|
109
|
+
* Jean-Dominique Morani <jdmorani@mac.com>
|
110
|
+
* Jeremy Hinegardner <jeremy@hinegardner.org>
|
111
|
+
* Jesús García Sáez <blaxter@gmail.com>
|
112
|
+
* Joe Khoobyar <joe@ankhcraft.com>
|
113
|
+
* Jurij Smakov <jurij@wooyd.org>
|
114
|
+
* KISHIMOTO, Makoto <ksmakoto@dd.iij4u.or.jp>
|
115
|
+
* Kim Burgestrand <kim@burgestrand.se>
|
116
|
+
* Lars Kanis <kanis@comcard.de>
|
117
|
+
* Luc Heinrich <luc@honk-honk.com>
|
118
|
+
* Luis Lavena <luislavena@gmail.com>
|
119
|
+
* Matijs van Zuijlen <matijs@matijs.net>
|
120
|
+
* Matthew King <automatthew@gmail.com>
|
121
|
+
* Mike Dalessio <mike.dalessio@gmail.com>
|
122
|
+
* NARUSE, Yui <naruse@airemix.jp>
|
123
|
+
* Park Heesob <phasis@gmail.com>
|
124
|
+
* Shin Yee <shinyee@speedgocomputing.com>
|
125
|
+
* Stephen Bannasch <stephen.bannasch@gmail.com>
|
126
|
+
* Suraj N. Kurapati <sunaku@gmail.com>
|
127
|
+
* Sylvain Daubert <sylvain.daubert@laposte.net>
|
128
|
+
* Victor Costan
|
129
|
+
* beoran@gmail.com
|
130
|
+
* ctide <christide@christide.com>
|
131
|
+
* emboss <Martin.Bosslet@googlemail.com>
|
132
|
+
* hobophobe <unusualtears@gmail.com>
|
133
|
+
* meh <meh@paranoici.org>
|
134
|
+
* postmodern <postmodern.mod3@gmail.com>
|
135
|
+
* wycats@gmail.com <wycats@gmail.com>
|
136
|
+
* Wayne Meissner <wmeissner@gmail.com>
|