ffi 1.12.2-x64-mingw32 → 1.13.0-x64-mingw32

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6fe929f714bffd7ae2692dcfe1ce4b3b58d6279e857db53186515484cee8f441
4
- data.tar.gz: 0f14cf5580c753abed78b6522a481ef4b5ba93af584eda2dcd3837c02c6c612f
3
+ metadata.gz: 31cdc33d49b642d3d2baf784d53ada8c498b203a90a810cacb9370bdbf7ed22a
4
+ data.tar.gz: f288d4eaa9f6b828074d290c8ef6816252e552d271214a78c76f457cccf43da7
5
5
  SHA512:
6
- metadata.gz: fbba6d1e42858d437fced00e16e57c8b9940d1bfdb2638e0e18007f19e4d73072d45ba6b39db765a6c0e65b74b880dcf74335f349c87ca0998fcdb5f5b6dd9c9
7
- data.tar.gz: 83689909e9b90540f569e8d3634193e068de2cc216e2d7c04b77609b54f0750166e6dc6d487c5876d07c9f4c70465efd8cd4817340a31c7fab41d4db43237dac
6
+ metadata.gz: 662a3508cf4ebbbea9a65833efffad4f0aec52be746ea81c1499a3d4b60ebc08add10789b72ab9f9f2ac81ccecd3eeaf8698173bbdf09bd45c02787fdf66d046
7
+ data.tar.gz: 7c063fe0ef2d262cf332c47236c63ddcb005f54a8d3622e655647347386716a2ed1020a1834257752ed1d41d0450d0d670f218945022ec2992b79ccf75682718
@@ -10,11 +10,14 @@ install:
10
10
  - gem --version
11
11
  - gem install bundler --quiet --no-document
12
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
13
15
  build: off
14
16
  build_script:
15
17
  - bundle exec rake libffi compile -- %EXTCONFOPTS% || bundle exec rake compile -- %EXTCONFOPTS%
16
18
  test_script:
17
19
  - bundle exec rake test
20
+ - bundle exec rake types_conf && git --no-pager diff
18
21
  environment:
19
22
  matrix:
20
23
  - RUBYVER: "head-x64"
@@ -0,0 +1,64 @@
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
@@ -1,20 +1,29 @@
1
1
  dist: trusty
2
2
  group: beta
3
3
  language: ruby
4
+ git:
5
+ submodules: false
4
6
 
5
7
  script:
6
- - bundle exec rake compile || bundle exec rake compile
8
+ - bundle exec rake libffi
9
+ - bundle exec rake compile
7
10
  - bundle exec rake test
8
- - ITER=10 bundle exec rake bench:all
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
9
16
  os:
10
17
  - linux
11
18
  - osx
12
19
  rvm:
13
20
  - 2.3.8
14
- - 2.4.5
15
- - 2.5.3
16
- - 2.6.0
21
+ - 2.4.6
22
+ - 2.5.5
23
+ - 2.6.5
24
+ - 2.7.0
17
25
  - ruby-head
26
+ - truffleruby-head
18
27
 
19
28
  env:
20
29
  - CC=gcc
@@ -25,6 +34,8 @@ matrix:
25
34
  rvm: ruby-head
26
35
  - os: osx
27
36
  rvm: 2.3.8
37
+ - os: linux
38
+ rvm: ruby-head
28
39
  include:
29
40
  - name: powerpc
30
41
  language: generic
@@ -40,5 +51,8 @@ matrix:
40
51
  docker build --rm -t ffi-armhf -f spec/env/Dockerfile.armhf .
41
52
  script: |
42
53
  docker run --rm -t -v `pwd`:/ffi ffi-armhf
54
+ exclude:
55
+ - os: osx
56
+ rvm: truffleruby-head
43
57
  after_failure:
44
58
  - "find build -name mkmf.log | xargs cat"
@@ -1,3 +1,33 @@
1
+ 1.13.0 / 2020-06-01
2
+ -------------------
3
+
4
+ Added:
5
+ * Add TruffleRuby support. Almost all specs are running on TruffleRuby and succeed. #768
6
+ * 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
7
+ * Add FFI::Platform::LONG_DOUBLE_SIZE
8
+ * Add bounds checks for writing to an inline char[] . #756
9
+ * Add long double as callback return value. #771
10
+ * 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
11
+ * Add new type definitions for powerpc-openbsd and sparcv9-openbsd. #775, #778
12
+
13
+ Changed:
14
+ * Raise required ruby version to >= 2.3.
15
+ * Lots of cleanups and improvements in library, specs and benchmarks.
16
+ * Fix a lot of compiler warnings at the C-extension
17
+ * Fix several install issues on MacOS:
18
+ * Look for libffi in SDK paths, since recent versions of macOS removed it from `/usr/include` . #757
19
+ * Fix error `ld: library not found for -lgcc_s.10.4`
20
+ * Don't built for i386 architecture as it is deprecated
21
+ * Several fixes for MSVC build on Windows. #779
22
+ * Use `ucrtbase.dll` as default C library on Windows instead of old `msvcrt.dll`. #779
23
+ * Update builtin libffi to fix a Powerpc issue with parameters of type long
24
+ * Allow unmodified sourcing of (the ruby code of) this gem in JRuby and TruffleRuby as a default gem. #747
25
+ * Improve check to detect if a module has a #find_type method suitable for FFI. This fixes compatibility with stdlib `mkmf` . #776
26
+
27
+ Removed:
28
+ * Reject callback with `:string` return type at definition, because it didn't work so far and is not save to use. #751, #782
29
+
30
+
1
31
  1.12.2 / 2020-02-01
2
32
  -------------------
3
33
 
data/Gemfile CHANGED
@@ -5,8 +5,10 @@ group :development do
5
5
  gem 'rake-compiler', '~> 1.0.3'
6
6
  gem 'rake-compiler-dock', '~> 1.0'
7
7
  gem 'rspec', '~> 3.0'
8
- gem 'rubygems-tasks', '~> 0.2.4', :require => 'rubygems/tasks'
9
- gem "rubysl", "~> 2.0", :platforms => 'rbx'
8
+ # irb is a dependency of rubygems-tasks 0.2.5.
9
+ # irb versions > 1.1.1 depend on reline,
10
+ # which sometimes causes 'bundle install' to fail on Ruby <= 2.4: https://github.com/rubygems/rubygems/issues/3463
11
+ gem 'rubygems-tasks', '>= 0.2', '< 0.2.5', :require => 'rubygems/tasks'
10
12
  end
11
13
 
12
14
  group :doc do
data/Rakefile CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'rubygems/tasks'
2
2
  require 'rbconfig'
3
3
  require 'rake/clean'
4
- require File.expand_path("./lib/ffi/version")
4
+ require_relative "lib/ffi/version"
5
5
 
6
6
  require 'date'
7
7
  require 'fileutils'
@@ -9,10 +9,6 @@ require 'rbconfig'
9
9
  require 'rspec/core/rake_task'
10
10
  require 'rubygems/package_task'
11
11
 
12
- def java?
13
- /java/ === RUBY_PLATFORM
14
- end
15
-
16
12
  BUILD_DIR = "build"
17
13
  BUILD_EXT_DIR = File.join(BUILD_DIR, "#{RbConfig::CONFIG['arch']}", 'ffi_c', RUBY_VERSION)
18
14
 
@@ -20,17 +16,8 @@ def gem_spec
20
16
  @gem_spec ||= Gem::Specification.load('ffi.gemspec')
21
17
  end
22
18
 
23
- TEST_DEPS = []
24
- if RUBY_PLATFORM == "java"
25
- RSpec::Core::RakeTask.new(:spec) do |config|
26
- config.rspec_opts = YAML.load_file 'spec/spec.opts'
27
- end
28
- else
29
- RSpec::Core::RakeTask.new(:spec => :compile) do |config|
30
- config.rspec_opts = YAML.load_file 'spec/spec.opts'
31
- end
32
-
33
- TEST_DEPS.unshift :compile
19
+ RSpec::Core::RakeTask.new(:spec => :compile) do |config|
20
+ config.rspec_opts = YAML.load_file 'spec/spec.opts'
34
21
  end
35
22
 
36
23
  desc "Build all packages"
@@ -58,37 +45,29 @@ task :test => [ :spec ]
58
45
 
59
46
  namespace :bench do
60
47
  ITER = ENV['ITER'] ? ENV['ITER'].to_i : 100000
61
- bench_libs = "-Ilib" unless RUBY_PLATFORM == "java"
62
- bench_files = Dir["bench/bench_*.rb"].reject { |f| f == "bench/bench_helper.rb" }
48
+ bench_files = Dir["bench/bench_*.rb"].sort.reject { |f| f == "bench/bench_helper.rb" }
63
49
  bench_files.each do |bench|
64
- task File.basename(bench, ".rb")[6..-1] => TEST_DEPS do
65
- sh %{#{Gem.ruby} #{bench_libs} #{bench} #{ITER}}
50
+ task File.basename(bench, ".rb")[6..-1] => :compile do
51
+ sh %{#{Gem.ruby} #{bench} #{ITER}}
66
52
  end
67
53
  end
68
- task :all => TEST_DEPS do
54
+ task :all => :compile do
69
55
  bench_files.each do |bench|
70
- sh %{#{Gem.ruby} #{bench_libs} #{bench}}
56
+ sh %{#{Gem.ruby} #{bench}}
71
57
  end
72
58
  end
73
59
  end
74
60
 
75
- task 'spec:run' => TEST_DEPS
76
- task 'spec:specdoc' => TEST_DEPS
61
+ task 'spec:run' => :compile
62
+ task 'spec:specdoc' => :compile
77
63
 
78
64
  task :default => :spec
79
65
 
80
66
  namespace 'java' do
81
67
 
82
- java_gem_spec = Gem::Specification.new do |s|
83
- s.name = gem_spec.name
84
- s.version = gem_spec.version
85
- s.author = gem_spec.author
86
- s.email = gem_spec.email
87
- s.homepage = gem_spec.homepage
88
- s.summary = gem_spec.summary
89
- s.description = gem_spec.description
90
- s.files = %w(LICENSE COPYING README.md CHANGELOG.md Rakefile)
91
- s.license = gem_spec.license
68
+ java_gem_spec = gem_spec.dup.tap do |s|
69
+ s.files.reject! { |f| File.fnmatch?("ext/*", f) }
70
+ s.extensions = []
92
71
  s.platform = 'java'
93
72
  end
94
73
 
@@ -101,7 +80,7 @@ end
101
80
 
102
81
  task 'gem:java' => 'java:gem'
103
82
 
104
- unless java?
83
+ if RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
105
84
  require 'rake/extensiontask'
106
85
  Rake::ExtensionTask.new('ffi_c', gem_spec) do |ext|
107
86
  ext.name = 'ffi_c' # indicate the name of the extension.
@@ -124,13 +103,17 @@ unless java?
124
103
  sh "x86_64-w64-mingw32-strip -S build/x64-mingw32/stage/lib/#{ruby_version[/^\d+\.\d+/]}/ffi_c.so"
125
104
  end
126
105
  end
106
+ else
107
+ task :compile do
108
+ STDERR.puts "Nothing to compile on #{RUBY_ENGINE}"
109
+ end
127
110
  end
128
111
 
129
112
  desc "build a windows gem without all the ceremony"
130
113
  task "gem:windows" do
131
114
  require "rake_compiler_dock"
132
115
  sh "bundle package"
133
- RakeCompilerDock.sh "sudo apt-get update && sudo apt-get install -y libltdl-dev && bundle --local && rake cross native gem MAKE='nice make -j`nproc`'"
116
+ RakeCompilerDock.sh "sudo apt-get update && sudo apt-get install -y libltdl-dev && bundle --local && rake cross native gem MAKE='nice make -j`nproc`' RUBY_CC_VERSION=${RUBY_CC_VERSION/:2.2.2/}"
134
117
  end
135
118
 
136
119
  directory "ext/ffi_c/libffi"
@@ -158,16 +141,15 @@ end.each do |f|
158
141
  end
159
142
  end
160
143
 
161
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), 'lib')
162
- require 'ffi/platform'
144
+ require_relative "lib/ffi/platform"
163
145
  types_conf = File.expand_path(File.join(FFI::Platform::CONF_DIR, 'types.conf'))
164
146
  logfile = File.join(File.dirname(__FILE__), 'types_log')
165
147
 
166
- file types_conf => File.join("lib", "ffi", "version.rb") do |task|
148
+ task types_conf do |task|
167
149
  require 'fileutils'
168
- require 'ffi/tools/types_generator'
150
+ require_relative "lib/ffi/tools/types_generator"
169
151
  options = {}
170
- FileUtils.mkdir_p(File.dirname(task.name), { :mode => 0755 })
152
+ FileUtils.mkdir_p(File.dirname(task.name), mode: 0755 )
171
153
  File.open(task.name, File::CREAT|File::TRUNC|File::RDWR, 0644) do |f|
172
154
  f.puts FFI::TypesGenerator.generate(options)
173
155
  end
@@ -177,8 +159,7 @@ file types_conf => File.join("lib", "ffi", "version.rb") do |task|
177
159
  end
178
160
 
179
161
  desc "Create or update type information for platform #{FFI::Platform::NAME}"
180
- task :types_conf => types_conf do
181
- end
162
+ task :types_conf => types_conf
182
163
 
183
164
  Gem::Tasks.new do |t|
184
165
  t.scm.tag.format = '%s'
@@ -34,7 +34,7 @@ Gem::Specification.new do |s|
34
34
  s.rdoc_options = %w[--exclude=ext/ffi_c/.*\.o$ --exclude=ffi_c\.(bundle|so)$]
35
35
  s.license = 'BSD-3-Clause'
36
36
  s.require_paths << 'ext/ffi_c'
37
- s.required_ruby_version = '>= 2.0'
37
+ s.required_ruby_version = '>= 2.3'
38
38
  s.add_development_dependency 'rake', '~> 13.0'
39
39
  s.add_development_dependency 'rake-compiler', '~> 1.0'
40
40
  s.add_development_dependency 'rake-compiler-dock', '~> 1.0'
data/lib/ffi.rb CHANGED
@@ -1,4 +1,4 @@
1
- if !defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
1
+ if RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
2
2
  Object.send(:remove_const, :FFI) if defined?(::FFI)
3
3
  begin
4
4
  require RUBY_VERSION.split('.')[0, 2].join('.') + '/ffi_c'
@@ -8,7 +8,15 @@ if !defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
8
8
 
9
9
  require 'ffi/ffi'
10
10
 
11
- elsif defined?(RUBY_ENGINE)
11
+ elsif RUBY_ENGINE == 'jruby' && Gem::Version.new(RUBY_ENGINE_VERSION) >= Gem::Version.new("9.3.pre")
12
+ JRuby::Util.load_ext("org.jruby.ext.ffi.FFIService")
13
+ require 'ffi/ffi'
14
+
15
+ elsif RUBY_ENGINE == 'truffleruby' && Gem::Version.new(RUBY_ENGINE_VERSION) >= Gem::Version.new("20.1.0-dev-a")
16
+ require 'truffleruby/ffi_backend'
17
+ require 'ffi/ffi'
18
+
19
+ else
12
20
  # Remove the ffi gem dir from the load path, then reload the internal ffi implementation
13
21
  $LOAD_PATH.delete(File.dirname(__FILE__))
14
22
  $LOAD_PATH.delete(File.join(File.dirname(__FILE__), 'ffi'))
@@ -394,7 +394,11 @@ module FFI
394
394
  options = Hash.new
395
395
  options[:convention] = ffi_convention
396
396
  options[:enums] = @ffi_enums if defined?(@ffi_enums)
397
- cb = FFI::CallbackInfo.new(find_type(ret), native_params, options)
397
+ ret_type = find_type(ret)
398
+ if ret_type == Type::STRING
399
+ raise TypeError, ":string is not allowed as return type of callbacks"
400
+ end
401
+ cb = FFI::CallbackInfo.new(ret_type, native_params, options)
398
402
 
399
403
  # Add to the symbol -> type map (unless there was no name)
400
404
  unless name.nil?
@@ -61,7 +61,7 @@ module FFI
61
61
  CPU = RbConfig::CONFIG['host_cpu']
62
62
 
63
63
  ARCH = case CPU.downcase
64
- when /amd64|x86_64/
64
+ when /amd64|x86_64|x64/
65
65
  "x86_64"
66
66
  when /i?86|x86|i86pc/
67
67
  "i386"
@@ -129,7 +129,7 @@ module FFI
129
129
  end
130
130
 
131
131
  LIBC = if IS_WINDOWS
132
- RbConfig::CONFIG['RUBY_SO_NAME'].split('-')[-2] + '.dll'
132
+ "ucrtbase.dll"
133
133
  elsif IS_GNU
134
134
  GNU_LIBC
135
135
  elsif OS == 'cygwin'
@@ -1,5 +1,4 @@
1
1
  rbx.platform.typedef.*__caddr_t = char
2
- rbx.platform.typedef.*__qaddr_t = long_long
3
2
  rbx.platform.typedef.__blkcnt64_t = long_long
4
3
  rbx.platform.typedef.__blkcnt_t = long
5
4
  rbx.platform.typedef.__blksize_t = long
@@ -12,16 +11,16 @@ rbx.platform.typedef.__fsblkcnt64_t = ulong_long
12
11
  rbx.platform.typedef.__fsblkcnt_t = ulong
13
12
  rbx.platform.typedef.__fsfilcnt64_t = ulong_long
14
13
  rbx.platform.typedef.__fsfilcnt_t = ulong
14
+ rbx.platform.typedef.__fsword_t = int
15
15
  rbx.platform.typedef.__gid_t = uint
16
16
  rbx.platform.typedef.__id_t = uint
17
- rbx.platform.typedef.__in_addr_t = uint
18
- rbx.platform.typedef.__in_port_t = ushort
19
17
  rbx.platform.typedef.__ino64_t = ulong_long
20
18
  rbx.platform.typedef.__ino_t = ulong
21
19
  rbx.platform.typedef.__int16_t = short
22
20
  rbx.platform.typedef.__int32_t = int
23
21
  rbx.platform.typedef.__int64_t = long_long
24
22
  rbx.platform.typedef.__int8_t = char
23
+ rbx.platform.typedef.__intmax_t = long_long
25
24
  rbx.platform.typedef.__intptr_t = int
26
25
  rbx.platform.typedef.__key_t = int
27
26
  rbx.platform.typedef.__loff_t = long_long
@@ -40,7 +39,8 @@ rbx.platform.typedef.__sig_atomic_t = int
40
39
  rbx.platform.typedef.__socklen_t = uint
41
40
  rbx.platform.typedef.__ssize_t = int
42
41
  rbx.platform.typedef.__suseconds_t = long
43
- rbx.platform.typedef.__swblk_t = long
42
+ rbx.platform.typedef.__syscall_slong_t = long
43
+ rbx.platform.typedef.__syscall_ulong_t = ulong
44
44
  rbx.platform.typedef.__time_t = long
45
45
  rbx.platform.typedef.__timer_t = pointer
46
46
  rbx.platform.typedef.__u_char = uchar
@@ -53,6 +53,7 @@ rbx.platform.typedef.__uint16_t = ushort
53
53
  rbx.platform.typedef.__uint32_t = uint
54
54
  rbx.platform.typedef.__uint64_t = ulong_long
55
55
  rbx.platform.typedef.__uint8_t = uchar
56
+ rbx.platform.typedef.__uintmax_t = ulong_long
56
57
  rbx.platform.typedef.__useconds_t = uint
57
58
  rbx.platform.typedef.blkcnt_t = long_long
58
59
  rbx.platform.typedef.blksize_t = long
@@ -65,11 +66,22 @@ rbx.platform.typedef.fsblkcnt_t = ulong_long
65
66
  rbx.platform.typedef.fsfilcnt_t = ulong_long
66
67
  rbx.platform.typedef.gid_t = uint
67
68
  rbx.platform.typedef.id_t = uint
69
+ rbx.platform.typedef.in_addr_t = uint
70
+ rbx.platform.typedef.in_port_t = ushort
68
71
  rbx.platform.typedef.ino_t = ulong_long
69
72
  rbx.platform.typedef.int16_t = short
70
73
  rbx.platform.typedef.int32_t = int
71
74
  rbx.platform.typedef.int64_t = long_long
72
75
  rbx.platform.typedef.int8_t = char
76
+ rbx.platform.typedef.int_fast16_t = int
77
+ rbx.platform.typedef.int_fast32_t = int
78
+ rbx.platform.typedef.int_fast64_t = long_long
79
+ rbx.platform.typedef.int_fast8_t = char
80
+ rbx.platform.typedef.int_least32_t = int
81
+ rbx.platform.typedef.int_least64_t = long_long
82
+ rbx.platform.typedef.int_least8_t = char
83
+ rbx.platform.typedef.intmax_t = long_long
84
+ rbx.platform.typedef.intptr_t = int
73
85
  rbx.platform.typedef.key_t = int
74
86
  rbx.platform.typedef.loff_t = long_long
75
87
  rbx.platform.typedef.mode_t = uint
@@ -79,6 +91,7 @@ rbx.platform.typedef.pid_t = int
79
91
  rbx.platform.typedef.pthread_key_t = uint
80
92
  rbx.platform.typedef.pthread_once_t = int
81
93
  rbx.platform.typedef.pthread_t = ulong
94
+ rbx.platform.typedef.ptrdiff_t = int
82
95
  rbx.platform.typedef.quad_t = long_long
83
96
  rbx.platform.typedef.register_t = long
84
97
  rbx.platform.typedef.rlim_t = ulong_long
@@ -100,5 +113,20 @@ rbx.platform.typedef.u_quad_t = ulong_long
100
113
  rbx.platform.typedef.u_short = ushort
101
114
  rbx.platform.typedef.uid_t = uint
102
115
  rbx.platform.typedef.uint = uint
116
+ rbx.platform.typedef.uint16_t = ushort
117
+ rbx.platform.typedef.uint32_t = uint
118
+ rbx.platform.typedef.uint64_t = ulong_long
119
+ rbx.platform.typedef.uint8_t = uchar
120
+ rbx.platform.typedef.uint_fast16_t = uint
121
+ rbx.platform.typedef.uint_fast32_t = uint
122
+ rbx.platform.typedef.uint_fast64_t = ulong_long
123
+ rbx.platform.typedef.uint_fast8_t = uchar
124
+ rbx.platform.typedef.uint_least16_t = ushort
125
+ rbx.platform.typedef.uint_least32_t = uint
126
+ rbx.platform.typedef.uint_least64_t = ulong_long
127
+ rbx.platform.typedef.uint_least8_t = uchar
128
+ rbx.platform.typedef.uintmax_t = ulong_long
129
+ rbx.platform.typedef.uintptr_t = uint
103
130
  rbx.platform.typedef.ulong = ulong
104
131
  rbx.platform.typedef.ushort = ushort
132
+ rbx.platform.typedef.wchar_t = uint