ffi 1.13.0-java → 1.15.0-java

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.
@@ -0,0 +1,119 @@
1
+ rbx.platform.typedef.*addr_t = char
2
+ rbx.platform.typedef.__ULong = uint
3
+ rbx.platform.typedef.__blkcnt_t = long
4
+ rbx.platform.typedef.__blksize_t = int
5
+ rbx.platform.typedef.__clock_t = ulong
6
+ rbx.platform.typedef.__clockid_t = ulong
7
+ rbx.platform.typedef.__cpu_mask = ulong
8
+ rbx.platform.typedef.__dev_t = uint
9
+ rbx.platform.typedef.__fsblkcnt_t = ulong
10
+ rbx.platform.typedef.__fsfilcnt_t = ulong
11
+ rbx.platform.typedef.__gid_t = uint
12
+ rbx.platform.typedef.__id_t = uint
13
+ rbx.platform.typedef.__ino_t = ulong
14
+ rbx.platform.typedef.__int32_t = int
15
+ rbx.platform.typedef.__int64_t = long
16
+ rbx.platform.typedef.__int8_t = char
17
+ rbx.platform.typedef.__int_least32_t = int
18
+ rbx.platform.typedef.__int_least64_t = long
19
+ rbx.platform.typedef.__int_least8_t = char
20
+ rbx.platform.typedef.__intmax_t = long
21
+ rbx.platform.typedef.__intptr_t = long
22
+ rbx.platform.typedef.__key_t = long_long
23
+ rbx.platform.typedef.__loff_t = long_long
24
+ rbx.platform.typedef.__mode_t = uint
25
+ rbx.platform.typedef.__nl_item = int
26
+ rbx.platform.typedef.__nlink_t = ushort
27
+ rbx.platform.typedef.__off_t = long
28
+ rbx.platform.typedef.__pid_t = int
29
+ rbx.platform.typedef.__sigset_t = ulong
30
+ rbx.platform.typedef.__size_t = ulong
31
+ rbx.platform.typedef.__socklen_t = int
32
+ rbx.platform.typedef.__suseconds_t = long
33
+ rbx.platform.typedef.__time_t = long
34
+ rbx.platform.typedef.__timer_t = ulong
35
+ rbx.platform.typedef.__uid_t = uint
36
+ rbx.platform.typedef.__uint32_t = uint
37
+ rbx.platform.typedef.__uint64_t = ulong
38
+ rbx.platform.typedef.__uint8_t = uchar
39
+ rbx.platform.typedef.__uint_least32_t = uint
40
+ rbx.platform.typedef.__uint_least64_t = ulong
41
+ rbx.platform.typedef.__uint_least8_t = uchar
42
+ rbx.platform.typedef.__uintmax_t = ulong
43
+ rbx.platform.typedef.__uintptr_t = ulong
44
+ rbx.platform.typedef.__useconds_t = ulong
45
+ rbx.platform.typedef._fpos64_t = long_long
46
+ rbx.platform.typedef._fpos_t = long
47
+ rbx.platform.typedef._off64_t = long_long
48
+ rbx.platform.typedef._off_t = long
49
+ rbx.platform.typedef.blkcnt_t = long
50
+ rbx.platform.typedef.blksize_t = int
51
+ rbx.platform.typedef.caddr_t = string
52
+ rbx.platform.typedef.clock_t = ulong
53
+ rbx.platform.typedef.clockid_t = ulong
54
+ rbx.platform.typedef.daddr_t = long
55
+ rbx.platform.typedef.dev_t = uint
56
+ rbx.platform.typedef.fd_mask = ulong
57
+ rbx.platform.typedef.fsblkcnt_t = ulong
58
+ rbx.platform.typedef.fsfilcnt_t = ulong
59
+ rbx.platform.typedef.gid_t = uint
60
+ rbx.platform.typedef.id_t = uint
61
+ rbx.platform.typedef.in_addr_t = uint
62
+ rbx.platform.typedef.ino_t = ulong
63
+ rbx.platform.typedef.int32_t = int
64
+ rbx.platform.typedef.int64_t = long
65
+ rbx.platform.typedef.int8_t = char
66
+ rbx.platform.typedef.int_fast16_t = long
67
+ rbx.platform.typedef.int_fast32_t = long
68
+ rbx.platform.typedef.int_fast64_t = long
69
+ rbx.platform.typedef.int_fast8_t = char
70
+ rbx.platform.typedef.int_least32_t = int
71
+ rbx.platform.typedef.int_least64_t = long
72
+ rbx.platform.typedef.int_least8_t = char
73
+ rbx.platform.typedef.intmax_t = long
74
+ rbx.platform.typedef.intptr_t = long
75
+ rbx.platform.typedef.key_t = long_long
76
+ rbx.platform.typedef.loff_t = long_long
77
+ rbx.platform.typedef.mode_t = uint
78
+ rbx.platform.typedef.nlink_t = ushort
79
+ rbx.platform.typedef.off_t = long
80
+ rbx.platform.typedef.pid_t = int
81
+ rbx.platform.typedef.ptrdiff_t = long
82
+ rbx.platform.typedef.register_t = long
83
+ rbx.platform.typedef.rlim_t = ulong
84
+ rbx.platform.typedef.sbintime_t = long
85
+ rbx.platform.typedef.sig_atomic_t = int
86
+ rbx.platform.typedef.sigset_t = ulong
87
+ rbx.platform.typedef.size_t = ulong
88
+ rbx.platform.typedef.socklen_t = int
89
+ rbx.platform.typedef.suseconds_t = long
90
+ rbx.platform.typedef.time_t = long
91
+ rbx.platform.typedef.timer_t = ulong
92
+ rbx.platform.typedef.u_char = uchar
93
+ rbx.platform.typedef.u_int = uint
94
+ rbx.platform.typedef.u_int32_t = uint
95
+ rbx.platform.typedef.u_int64_t = ulong
96
+ rbx.platform.typedef.u_int8_t = uchar
97
+ rbx.platform.typedef.u_long = ulong
98
+ rbx.platform.typedef.u_register_t = ulong
99
+ rbx.platform.typedef.u_short = ushort
100
+ rbx.platform.typedef.uid_t = uint
101
+ rbx.platform.typedef.uint = uint
102
+ rbx.platform.typedef.uint32_t = uint
103
+ rbx.platform.typedef.uint64_t = ulong
104
+ rbx.platform.typedef.uint8_t = uchar
105
+ rbx.platform.typedef.uint_fast16_t = ulong
106
+ rbx.platform.typedef.uint_fast32_t = ulong
107
+ rbx.platform.typedef.uint_fast64_t = ulong
108
+ rbx.platform.typedef.uint_fast8_t = uchar
109
+ rbx.platform.typedef.uint_least32_t = uint
110
+ rbx.platform.typedef.uint_least64_t = ulong
111
+ rbx.platform.typedef.uint_least8_t = uchar
112
+ rbx.platform.typedef.uintmax_t = ulong
113
+ rbx.platform.typedef.uintptr_t = ulong
114
+ rbx.platform.typedef.ulong = ulong
115
+ rbx.platform.typedef.useconds_t = ulong
116
+ rbx.platform.typedef.ushort = ushort
117
+ rbx.platform.typedef.vm_offset_t = ulong
118
+ rbx.platform.typedef.vm_size_t = ulong
119
+ rbx.platform.typedef.wint_t = uint
data/lib/ffi/pointer.rb CHANGED
@@ -52,7 +52,7 @@ module FFI
52
52
 
53
53
  # @param [nil,Numeric] len length of string to return
54
54
  # @return [String]
55
- # Read pointer's contents as a string, or the first +len+ bytes of the
55
+ # Read pointer's contents as a string, or the first +len+ bytes of the
56
56
  # equivalent string if +len+ is not +nil+.
57
57
  def read_string(len=nil)
58
58
  if len
@@ -96,7 +96,7 @@ module FFI
96
96
  # @param [String] str string to write
97
97
  # @param [Numeric] len length of string to return
98
98
  # @return [self]
99
- # Write +str+ in pointer's contents, or first +len+ bytes if
99
+ # Write +str+ in pointer's contents, or first +len+ bytes if
100
100
  # +len+ is not +nil+.
101
101
  def write_string(str, len=nil)
102
102
  len = str.bytesize unless len
data/lib/ffi/variadic.rb CHANGED
@@ -31,16 +31,7 @@
31
31
  #
32
32
 
33
33
  module FFI
34
- class VariadicInvoker
35
- def init(arg_types, type_map)
36
- @fixed = Array.new
37
- @type_map = type_map
38
- arg_types.each_with_index do |type, i|
39
- @fixed << type unless type == Type::VARARGS
40
- end
41
- end
42
-
43
-
34
+ class VariadicInvoker
44
35
  def call(*args, &block)
45
36
  param_types = Array.new(@fixed)
46
37
  param_values = Array.new
data/lib/ffi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module FFI
2
- VERSION = '1.13.0'
2
+ VERSION = '1.15.0'
3
3
  end
@@ -0,0 +1,65 @@
1
+ require 'bundler'
2
+ require 'bundler/gem_helper'
3
+
4
+ class FfiGemHelper < Bundler::GemHelper
5
+ attr_accessor :cross_platforms
6
+
7
+ def install
8
+ super
9
+
10
+ task "release:guard_clean" => ["release:update_history"]
11
+
12
+ task "release:update_history" do
13
+ update_history
14
+ end
15
+
16
+ task "release:rubygem_push" => ["gem:windows", "gem:java"]
17
+ end
18
+
19
+ def hfile
20
+ "CHANGELOG.md"
21
+ end
22
+
23
+ def headline
24
+ '([^\w]*)(\d+\.\d+\.\d+(?:\.\w+)?)([^\w]+)([2Y][0Y][0-9Y][0-9Y]-[0-1M][0-9M]-[0-3D][0-9D])([^\w]*|$)'
25
+ end
26
+
27
+ def reldate
28
+ Time.now.strftime("%Y-%m-%d")
29
+ end
30
+
31
+ def update_history
32
+ hin = File.read(hfile)
33
+ hout = hin.sub(/#{headline}/) do
34
+ raise "#{hfile} isn't up-to-date for version #{version}" unless $2==version.to_s
35
+ $1 + $2 + $3 + reldate + $5
36
+ end
37
+ if hout != hin
38
+ Bundler.ui.confirm "Updating #{hfile} for release."
39
+ File.write(hfile, hout)
40
+ Rake::FileUtilsExt.sh "git", "commit", hfile, "-m", "Update release date in #{hfile}"
41
+ end
42
+ end
43
+
44
+ def tag_version
45
+ Bundler.ui.confirm "Tag release with annotation:"
46
+ m = File.read(hfile).match(/(?<annotation>#{headline}.*?)#{headline}/m) || raise("Unable to find release notes in #{hfile}")
47
+ Bundler.ui.info(m[:annotation].gsub(/^/, " "))
48
+ IO.popen(["git", "tag", "--file=-", version_tag], "w") do |fd|
49
+ fd.write m[:annotation]
50
+ end
51
+ yield if block_given?
52
+ rescue
53
+ Bundler.ui.error "Untagging #{version_tag} due to error."
54
+ sh_with_code "git tag -d #{version_tag}"
55
+ raise
56
+ end
57
+
58
+ def rubygem_push(path)
59
+ cross_platforms.each do |ruby_platform|
60
+ super(path.gsub(/\.gem\z/, "-#{ruby_platform}.gem"))
61
+ end
62
+ super(path.gsub(/\.gem\z/, "-java.gem"))
63
+ super(path)
64
+ end
65
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.0
4
+ version: 1.15.0
5
5
  platform: java
6
6
  authors:
7
7
  - Wayne Meissner
@@ -29,7 +29,7 @@ cert_chain:
29
29
  +QvsIa+rEKMYbn0IActnL2SCNlGcttHDcH0AkctmwmAN2r6LTInUBCJoahaIeIXU
30
30
  RE1H1QyCW3SV93CTTKaR2A==
31
31
  -----END CERTIFICATE-----
32
- date: 2020-06-01 00:00:00.000000000 Z
32
+ date: 2021-03-05 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: rake
@@ -107,12 +107,6 @@ executables: []
107
107
  extensions: []
108
108
  extra_rdoc_files: []
109
109
  files:
110
- - ".appveyor.yml"
111
- - ".github/workflows/ci.yml"
112
- - ".gitignore"
113
- - ".gitmodules"
114
- - ".travis.yml"
115
- - ".yardopts"
116
110
  - CHANGELOG.md
117
111
  - COPYING
118
112
  - Gemfile
@@ -122,6 +116,7 @@ files:
122
116
  - Rakefile
123
117
  - ffi.gemspec
124
118
  - lib/ffi.rb
119
+ - lib/ffi/abstract_memory.rb
125
120
  - lib/ffi/autopointer.rb
126
121
  - lib/ffi/buffer.rb
127
122
  - lib/ffi/callback.rb
@@ -134,9 +129,11 @@ files:
134
129
  - lib/ffi/managedstruct.rb
135
130
  - lib/ffi/memorypointer.rb
136
131
  - lib/ffi/platform.rb
132
+ - lib/ffi/platform/aarch64-darwin/types.conf
137
133
  - lib/ffi/platform/aarch64-freebsd/types.conf
138
134
  - lib/ffi/platform/aarch64-freebsd12/types.conf
139
135
  - lib/ffi/platform/aarch64-linux/types.conf
136
+ - lib/ffi/platform/aarch64-openbsd/types.conf
140
137
  - lib/ffi/platform/arm-freebsd/types.conf
141
138
  - lib/ffi/platform/arm-freebsd12/types.conf
142
139
  - lib/ffi/platform/arm-linux/types.conf
@@ -164,6 +161,8 @@ files:
164
161
  - lib/ffi/platform/powerpc-linux/types.conf
165
162
  - lib/ffi/platform/powerpc-openbsd/types.conf
166
163
  - lib/ffi/platform/powerpc64-linux/types.conf
164
+ - lib/ffi/platform/powerpc64le-linux/types.conf
165
+ - lib/ffi/platform/riscv64-linux/types.conf
167
166
  - lib/ffi/platform/s390-linux/types.conf
168
167
  - lib/ffi/platform/s390x-linux/types.conf
169
168
  - lib/ffi/platform/sparc-linux/types.conf
@@ -176,7 +175,9 @@ files:
176
175
  - lib/ffi/platform/x86_64-dragonflybsd/types.conf
177
176
  - lib/ffi/platform/x86_64-freebsd/types.conf
178
177
  - lib/ffi/platform/x86_64-freebsd12/types.conf
178
+ - lib/ffi/platform/x86_64-haiku/types.conf
179
179
  - lib/ffi/platform/x86_64-linux/types.conf
180
+ - lib/ffi/platform/x86_64-msys/types.conf
180
181
  - lib/ffi/platform/x86_64-netbsd/types.conf
181
182
  - lib/ffi/platform/x86_64-openbsd/types.conf
182
183
  - lib/ffi/platform/x86_64-solaris/types.conf
@@ -195,6 +196,7 @@ files:
195
196
  - lib/ffi/union.rb
196
197
  - lib/ffi/variadic.rb
197
198
  - lib/ffi/version.rb
199
+ - rakelib/ffi_gem_helper.rb
198
200
  - samples/getlogin.rb
199
201
  - samples/getpid.rb
200
202
  - samples/gettimeofday.rb
@@ -229,7 +231,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
229
231
  - !ruby/object:Gem::Version
230
232
  version: '0'
231
233
  requirements: []
232
- rubygems_version: 3.1.2
234
+ rubygems_version: 3.2.3
233
235
  signing_key:
234
236
  specification_version: 4
235
237
  summary: Ruby FFI
metadata.gz.sig CHANGED
Binary file
data/.appveyor.yml DELETED
@@ -1,30 +0,0 @@
1
- install:
2
- - SET PATH=C:\Ruby%RUBYVER%\bin;%PATH%
3
- - SET RAKEOPT=-rdevkit
4
- - ps: |
5
- if ($env:RUBYVER -like "*head*") {
6
- $(new-object net.webclient).DownloadFile("https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-$env:RUBYVER.exe", "$pwd/ruby-setup.exe")
7
- cmd /c ruby-setup.exe /verysilent /dir=C:/Ruby$env:RUBYVER
8
- }
9
- - ridk version
10
- - gem --version
11
- - gem install bundler --quiet --no-document
12
- - bundle install
13
- # Update to libffi-3.3 since Appveyor version fails on LongDouble specs
14
- - ridk exec pacman --sync --refresh --needed --noconfirm mingw-w64-x86_64-libffi mingw-w64-i686-libffi
15
- build: off
16
- build_script:
17
- - bundle exec rake libffi compile -- %EXTCONFOPTS% || bundle exec rake compile -- %EXTCONFOPTS%
18
- test_script:
19
- - bundle exec rake test
20
- - bundle exec rake types_conf && git --no-pager diff
21
- environment:
22
- matrix:
23
- - RUBYVER: "head-x64"
24
- EXTCONFOPTS: "--disable-system-libffi"
25
- - RUBYVER: 24
26
- EXTCONFOPTS: "--disable-system-libffi"
27
- - RUBYVER: 25-x64
28
- EXTCONFOPTS: "--enable-system-libffi"
29
- - RUBYVER: 26
30
- EXTCONFOPTS: "--enable-system-libffi"
@@ -1,64 +0,0 @@
1
- name: CI
2
- on: [push, pull_request]
3
- jobs:
4
- system-libffi:
5
- # Run on latest MRI with explicit selection of system or builtin libffi
6
- strategy:
7
- fail-fast: false
8
- matrix:
9
- os: [ ubuntu, macos, windows ]
10
- extconfopts: [ --disable-system-libffi, --enable-system-libffi ]
11
- runs-on: ${{ matrix.os }}-latest
12
- steps:
13
- - uses: actions/checkout@v2
14
- - uses: ruby/setup-ruby@v1
15
- with:
16
- ruby-version: 2.7
17
-
18
- - run: brew install automake libffi pkg-config
19
- if: matrix.os == 'macos'
20
- - run: ridk exec pacman --sync --refresh --needed --noconfirm mingw-w64-x86_64-libffi
21
- if: matrix.os == 'windows' && matrix.extconfopts == '--enable-system-libffi'
22
-
23
- - run: bundle install
24
- - run: bundle exec rake libffi
25
- - run: bundle exec rake compile -- ${{ matrix.extconfopts }}
26
- env:
27
- # work around misconfiguration of libffi on MacOS with homebrew
28
- PKG_CONFIG_PATH: ${{ env.PKG_CONFIG_PATH }}:/usr/local/opt/libffi/lib/pkgconfig
29
- - run: bundle exec rake test
30
- - run: bundle exec rake types_conf && git --no-pager diff
31
-
32
- specs:
33
- # Run all specs on all ruby implementations
34
- # Use automatic libffi selection on MRI
35
- strategy:
36
- fail-fast: false
37
- matrix:
38
- os: [ ubuntu, macos, windows ]
39
- ruby: [ 2.3, 2.4, 2.5, 2.6, 2.7, ruby-head, truffleruby-head ]
40
- exclude:
41
- - os: windows
42
- ruby: truffleruby-head
43
- - os: windows
44
- ruby: 2.3 # compilation fails
45
- runs-on: ${{ matrix.os }}-latest
46
- steps:
47
- - uses: actions/checkout@v2
48
- - uses: ruby/setup-ruby@v1
49
- with:
50
- ruby-version: ${{ matrix.ruby }}
51
-
52
- - run: brew install automake
53
- if: matrix.os == 'macos'
54
-
55
- - run: bundle install
56
- - run: bundle exec rake libffi
57
- - run: bundle exec rake compile
58
-
59
- - run: bundle exec rake test
60
-
61
- - run: bundle exec rake bench:all
62
- if: matrix.ruby != 'truffleruby-head'
63
- env:
64
- ITER: 10
data/.gitignore DELETED
@@ -1,25 +0,0 @@
1
- doc/
2
- bin/
3
- .yardoc
4
- *.orig
5
- nbproject/private
6
- pkg
7
- *.orig
8
- *.rej
9
- *.patch
10
- *.diff
11
- build
12
- *.so
13
- *.[oa]
14
- core
15
- lib/ffi/types.conf
16
- lib/ffi_c.bundle
17
- lib/ffi_c.so
18
- vendor
19
- .bundle
20
- Gemfile.lock
21
- types_log
22
- *.gem
23
- embed-test.log
24
- spec/ffi/embed-test/ext/Makefile
25
- spec/ffi/embed-test/ext/embed_test.bundle
data/.gitmodules DELETED
@@ -1,4 +0,0 @@
1
- [submodule "ext/ffi_c/libffi"]
2
- path = ext/ffi_c/libffi
3
- url = https://github.com/libffi/libffi.git
4
- branch = master
data/.travis.yml DELETED
@@ -1,58 +0,0 @@
1
- dist: trusty
2
- group: beta
3
- language: ruby
4
- git:
5
- submodules: false
6
-
7
- script:
8
- - bundle exec rake libffi
9
- - bundle exec rake compile
10
- - bundle exec rake test
11
- - |
12
- if [[ $(ruby -v) != *truffleruby* ]]; then
13
- ITER=10 bundle exec rake bench:all
14
- fi
15
- - bundle exec rake types_conf && git --no-pager diff
16
- os:
17
- - linux
18
- - osx
19
- rvm:
20
- - 2.3.8
21
- - 2.4.6
22
- - 2.5.5
23
- - 2.6.5
24
- - 2.7.0
25
- - ruby-head
26
- - truffleruby-head
27
-
28
- env:
29
- - CC=gcc
30
- - CC=clang
31
- matrix:
32
- allow_failures:
33
- - os: osx
34
- rvm: ruby-head
35
- - os: osx
36
- rvm: 2.3.8
37
- - os: linux
38
- rvm: ruby-head
39
- include:
40
- - name: powerpc
41
- language: generic
42
- before_install: |
43
- docker run --rm --privileged multiarch/qemu-user-static:register --reset &&
44
- docker build --rm -t ffi-powerpc -f spec/env/Dockerfile.powerpc .
45
- script: |
46
- docker run --rm -t -v `pwd`:/ffi ffi-powerpc
47
- - name: armhf
48
- language: generic
49
- before_install: |
50
- docker run --rm --privileged multiarch/qemu-user-static:register --reset &&
51
- docker build --rm -t ffi-armhf -f spec/env/Dockerfile.armhf .
52
- script: |
53
- docker run --rm -t -v `pwd`:/ffi ffi-armhf
54
- exclude:
55
- - os: osx
56
- rvm: truffleruby-head
57
- after_failure:
58
- - "find build -name mkmf.log | xargs cat"