fiddle 1.1.2 → 1.1.6
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 +4 -4
 - data/Rakefile +9 -4
 - data/ext/fiddle/closure.c +2 -2
 - data/ext/fiddle/conversions.c +0 -2
 - data/ext/fiddle/extconf.rb +15 -5
 - data/ext/fiddle/fiddle.c +0 -1
 - data/ext/fiddle/fiddle.h +11 -1
 - data/ext/fiddle/function.c +7 -3
 - data/ext/fiddle/handle.c +2 -3
 - data/ext/fiddle/memory_view.c +7 -2
 - data/ext/fiddle/pinned.c +7 -3
 - data/ext/fiddle/pointer.c +4 -3
 - data/fiddle.gemspec +2 -4
 - data/lib/fiddle/ffi_backend.rb +627 -0
 - data/lib/fiddle/pack.rb +6 -0
 - data/lib/fiddle/struct.rb +27 -6
 - data/lib/fiddle/version.rb +1 -1
 - data/lib/fiddle.rb +44 -9
 - metadata +5 -7
 - data/ext/fiddle/win32/fficonfig.h +0 -29
 - data/ext/fiddle/win32/libffi-3.2.1-mswin.patch +0 -191
 - data/ext/fiddle/win32/libffi-config.rb +0 -48
 - data/ext/fiddle/win32/libffi.mk.tmpl +0 -96
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: a45e277aca605b7e6ca64874fcb263a34c4ec365ee3c718c3df7e6d37e0786d7
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: a441f4a982a218093e53de55f101f1afb0307c8764a028ad60b703d0f81c906e
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 4abc678600a35970e801719b4319908312e312db6ff987c020b52047c37ec123e2168346db6ad534462d0591645eaa40ea57851fd0e2e7bab92e297928c0d464
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 9a8cbe9817d22c1d740caecf58252781c8268eea84a9957fe1704ac917482981fe4fe862d6d95d4a17ce8ac94a6b9cbc1272609ae77ab6d1f97901dcb2239a09
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -17,8 +17,13 @@ namespace :version do 
     | 
|
| 
       17 
17 
     | 
    
         
             
              end
         
     | 
| 
       18 
18 
     | 
    
         
             
            end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
            Rake::ExtensionTask.new(" 
     | 
| 
      
 20 
     | 
    
         
            +
            if RUBY_ENGINE == "ruby"
         
     | 
| 
      
 21 
     | 
    
         
            +
              require 'rake/extensiontask'
         
     | 
| 
      
 22 
     | 
    
         
            +
              Rake::ExtensionTask.new("fiddle")
         
     | 
| 
      
 23 
     | 
    
         
            +
              Rake::ExtensionTask.new("-test-/memory_view")
         
     | 
| 
      
 24 
     | 
    
         
            +
              task test: :compile
         
     | 
| 
      
 25 
     | 
    
         
            +
            else
         
     | 
| 
      
 26 
     | 
    
         
            +
              task :compile
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
| 
       23 
28 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
            task  
     | 
| 
      
 29 
     | 
    
         
            +
            task default: :test
         
     | 
    
        data/ext/fiddle/closure.c
    CHANGED
    
    | 
         @@ -61,7 +61,7 @@ const rb_data_type_t closure_data_type = { 
     | 
|
| 
       61 
61 
     | 
    
         
             
                    .dfree = dealloc,
         
     | 
| 
       62 
62 
     | 
    
         
             
                    .dsize = closure_memsize
         
     | 
| 
       63 
63 
     | 
    
         
             
                },
         
     | 
| 
       64 
     | 
    
         
            -
                .flags =  
     | 
| 
      
 64 
     | 
    
         
            +
                .flags = FIDDLE_DEFAULT_TYPED_DATA_FLAGS,
         
     | 
| 
       65 
65 
     | 
    
         
             
            };
         
     | 
| 
       66 
66 
     | 
    
         | 
| 
       67 
67 
     | 
    
         
             
            struct callback_args {
         
     | 
| 
         @@ -300,6 +300,7 @@ initialize_body(VALUE user_data) 
     | 
|
| 
       300 
300 
     | 
    
         
             
                    cl->argv[i] = rb_fiddle_int_to_ffi_type(NUM2INT(arg));
         
     | 
| 
       301 
301 
     | 
    
         
             
                }
         
     | 
| 
       302 
302 
     | 
    
         
             
                cl->argv[argc] = NULL;
         
     | 
| 
      
 303 
     | 
    
         
            +
                OBJ_FREEZE_RAW(normalized_args);
         
     | 
| 
       303 
304 
     | 
    
         | 
| 
       304 
305 
     | 
    
         
             
                ret = rb_fiddle_type_ensure(ret);
         
     | 
| 
       305 
306 
     | 
    
         
             
                rb_iv_set(data->self, "@ctype", ret);
         
     | 
| 
         @@ -455,4 +456,3 @@ Init_fiddle_closure(void) 
     | 
|
| 
       455 
456 
     | 
    
         
             
                 */
         
     | 
| 
       456 
457 
     | 
    
         
             
                rb_define_method(cFiddleClosure, "freed?", closure_freed_p, 0);
         
     | 
| 
       457 
458 
     | 
    
         
             
            }
         
     | 
| 
       458 
     | 
    
         
            -
            /* vim: set noet sw=4 sts=4 */
         
     | 
    
        data/ext/fiddle/conversions.c
    CHANGED
    
    
    
        data/ext/fiddle/extconf.rb
    CHANGED
    
    | 
         @@ -1,4 +1,17 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require "rbconfig"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            unless RUBY_ENGINE == "ruby"
         
     | 
| 
      
 6 
     | 
    
         
            +
              File.write('Makefile', <<-MAKEFILE)
         
     | 
| 
      
 7 
     | 
    
         
            +
            all install clean:
         
     | 
| 
      
 8 
     | 
    
         
            +
            	#{RbConfig::CONFIG["NULLCMD"]}
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            .PHONY: all install clean
         
     | 
| 
      
 11 
     | 
    
         
            +
              MAKEFILE
         
     | 
| 
      
 12 
     | 
    
         
            +
              return
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
       2 
15 
     | 
    
         
             
            require 'mkmf'
         
     | 
| 
       3 
16 
     | 
    
         | 
| 
       4 
17 
     | 
    
         
             
            # :stopdoc:
         
     | 
| 
         @@ -63,11 +76,6 @@ unless bundle 
     | 
|
| 
       63 
76 
     | 
    
         
             
              end
         
     | 
| 
       64 
77 
     | 
    
         
             
              if have_ffi_header && (have_library('ffi') || have_library('libffi'))
         
     | 
| 
       65 
78 
     | 
    
         
             
                have_libffi = true
         
     | 
| 
       66 
     | 
    
         
            -
                checking_for("undefined FFI_GO_CLOSURES is used") do
         
     | 
| 
       67 
     | 
    
         
            -
                  if egrep_cpp(/warning: 'FFI_GO_CLOSURES' is not defined/, cpp_include(ffi_header), "2>&1")
         
     | 
| 
       68 
     | 
    
         
            -
                    $defs.push('-DFFI_GO_CLOSURES=0')
         
     | 
| 
       69 
     | 
    
         
            -
                  end
         
     | 
| 
       70 
     | 
    
         
            -
                end
         
     | 
| 
       71 
79 
     | 
    
         
             
              end
         
     | 
| 
       72 
80 
     | 
    
         
             
            end
         
     | 
| 
       73 
81 
     | 
    
         | 
| 
         @@ -218,6 +226,8 @@ if libffi 
     | 
|
| 
       218 
226 
     | 
    
         
             
              $LOCAL_LIBS.prepend("#{libffi.a} ").strip! # to exts.mk
         
     | 
| 
       219 
227 
     | 
    
         
             
              $INCFLAGS.gsub!(/-I#{libffi.dir}/, '-I$(LIBFFI_DIR)')
         
     | 
| 
       220 
228 
     | 
    
         
             
            end
         
     | 
| 
      
 229 
     | 
    
         
            +
             
     | 
| 
      
 230 
     | 
    
         
            +
            have_func("rb_str_to_interned_str")
         
     | 
| 
       221 
231 
     | 
    
         
             
            create_makefile 'fiddle' do |conf|
         
     | 
| 
       222 
232 
     | 
    
         
             
              if !libffi
         
     | 
| 
       223 
233 
     | 
    
         
             
                next conf << "LIBFFI_CLEAN = none\n"
         
     | 
    
        data/ext/fiddle/fiddle.c
    CHANGED
    
    
    
        data/ext/fiddle/fiddle.h
    CHANGED
    
    | 
         @@ -40,6 +40,7 @@ 
     | 
|
| 
       40 
40 
     | 
    
         
             
            # endif
         
     | 
| 
       41 
41 
     | 
    
         
             
            #endif
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
      
 43 
     | 
    
         
            +
            #define FFI_GO_CLOSURES 0 /* fiddle does not use go closures */
         
     | 
| 
       43 
44 
     | 
    
         
             
            #ifdef USE_HEADER_HACKS
         
     | 
| 
       44 
45 
     | 
    
         
             
            #include <ffi/ffi.h>
         
     | 
| 
       45 
46 
     | 
    
         
             
            #else
         
     | 
| 
         @@ -236,5 +237,14 @@ VALUE rb_fiddle_new_function(VALUE address, VALUE arg_types, VALUE ret_type); 
     | 
|
| 
       236 
237 
     | 
    
         
             
            typedef void (*rb_fiddle_freefunc_t)(void*);
         
     | 
| 
       237 
238 
     | 
    
         
             
            VALUE rb_fiddle_ptr_new_wrap(void *ptr, long size, rb_fiddle_freefunc_t func, VALUE wrap0, VALUE wrap1);
         
     | 
| 
       238 
239 
     | 
    
         | 
| 
      
 240 
     | 
    
         
            +
            enum {
         
     | 
| 
      
 241 
     | 
    
         
            +
                FIDDLE_DEFAULT_TYPED_DATA_FLAGS = (
         
     | 
| 
      
 242 
     | 
    
         
            +
                    RUBY_TYPED_FREE_IMMEDIATELY |
         
     | 
| 
      
 243 
     | 
    
         
            +
                    RUBY_TYPED_WB_PROTECTED |
         
     | 
| 
      
 244 
     | 
    
         
            +
            #ifdef RUBY_TYPED_FROZEN_SHAREABLE
         
     | 
| 
      
 245 
     | 
    
         
            +
                    RUBY_TYPED_FROZEN_SHAREABLE |
         
     | 
| 
      
 246 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 247 
     | 
    
         
            +
                    0)
         
     | 
| 
      
 248 
     | 
    
         
            +
            };
         
     | 
| 
      
 249 
     | 
    
         
            +
             
     | 
| 
       239 
250 
     | 
    
         
             
            #endif
         
     | 
| 
       240 
     | 
    
         
            -
            /* vim: set noet sws=4 sw=4: */
         
     | 
    
        data/ext/fiddle/function.c
    CHANGED
    
    | 
         @@ -59,7 +59,7 @@ const rb_data_type_t function_data_type = { 
     | 
|
| 
       59 
59 
     | 
    
         
             
                    .dfree = deallocate,
         
     | 
| 
       60 
60 
     | 
    
         
             
                    .dsize = function_memsize
         
     | 
| 
       61 
61 
     | 
    
         
             
                },
         
     | 
| 
       62 
     | 
    
         
            -
                .flags =  
     | 
| 
      
 62 
     | 
    
         
            +
                .flags = FIDDLE_DEFAULT_TYPED_DATA_FLAGS,
         
     | 
| 
       63 
63 
     | 
    
         
             
            };
         
     | 
| 
       64 
64 
     | 
    
         | 
| 
       65 
65 
     | 
    
         
             
            static VALUE
         
     | 
| 
         @@ -153,6 +153,11 @@ initialize(int argc, VALUE argv[], VALUE self) 
     | 
|
| 
       153 
153 
     | 
    
         
             
                    rb_get_kwargs(kwargs, kw, 0, kw_max_, args);
         
     | 
| 
       154 
154 
     | 
    
         
             
                    if (args[kw_name] != Qundef) {
         
     | 
| 
       155 
155 
     | 
    
         
             
                        name = args[kw_name];
         
     | 
| 
      
 156 
     | 
    
         
            +
            #ifdef HAVE_RB_STR_TO_INTERNED_STR
         
     | 
| 
      
 157 
     | 
    
         
            +
                        if (RB_TYPE_P(name, RUBY_T_STRING)) {
         
     | 
| 
      
 158 
     | 
    
         
            +
                          name = rb_str_to_interned_str(name);
         
     | 
| 
      
 159 
     | 
    
         
            +
                        }
         
     | 
| 
      
 160 
     | 
    
         
            +
            #endif
         
     | 
| 
       156 
161 
     | 
    
         
             
                    }
         
     | 
| 
       157 
162 
     | 
    
         
             
                    if (args[kw_need_gvl] != Qundef) {
         
     | 
| 
       158 
163 
     | 
    
         
             
                        need_gvl = args[kw_need_gvl];
         
     | 
| 
         @@ -371,7 +376,7 @@ function_call(int argc, VALUE argv[], VALUE self) 
     | 
|
| 
       371 
376 
     | 
    
         
             
                    args.values[i_call] = (void *)&generic_args[i_call];
         
     | 
| 
       372 
377 
     | 
    
         
             
                }
         
     | 
| 
       373 
378 
     | 
    
         
             
                args.values[i_call] = NULL;
         
     | 
| 
       374 
     | 
    
         
            -
                args.fn = (void(*)(void))NUM2PTR(cfunc);
         
     | 
| 
      
 379 
     | 
    
         
            +
                args.fn = (void(*)(void))(VALUE)NUM2PTR(cfunc);
         
     | 
| 
       375 
380 
     | 
    
         | 
| 
       376 
381 
     | 
    
         
             
                if (RTEST(need_gvl)) {
         
     | 
| 
       377 
382 
     | 
    
         
             
                    ffi_call(args.cif, args.fn, &(args.retval), args.values);
         
     | 
| 
         @@ -493,4 +498,3 @@ Init_fiddle_function(void) 
     | 
|
| 
       493 
498 
     | 
    
         
             
                 */
         
     | 
| 
       494 
499 
     | 
    
         
             
                rb_define_method(cFiddleFunction, "initialize", initialize, -1);
         
     | 
| 
       495 
500 
     | 
    
         
             
            }
         
     | 
| 
       496 
     | 
    
         
            -
            /* vim: set noet sws=4 sw=4: */
         
     | 
    
        data/ext/fiddle/handle.c
    CHANGED
    
    | 
         @@ -56,7 +56,8 @@ static const rb_data_type_t fiddle_handle_data_type = { 
     | 
|
| 
       56 
56 
     | 
    
         
             
                    .dfree = fiddle_handle_free,
         
     | 
| 
       57 
57 
     | 
    
         
             
                    .dsize = fiddle_handle_memsize
         
     | 
| 
       58 
58 
     | 
    
         
             
                },
         
     | 
| 
       59 
     | 
    
         
            -
                .flags =  
     | 
| 
      
 59 
     | 
    
         
            +
                .flags = FIDDLE_DEFAULT_TYPED_DATA_FLAGS & ~RUBY_TYPED_FREE_IMMEDIATELY,
         
     | 
| 
      
 60 
     | 
    
         
            +
                /* keeping while its symbols are referred. */
         
     | 
| 
       60 
61 
     | 
    
         
             
            };
         
     | 
| 
       61 
62 
     | 
    
         | 
| 
       62 
63 
     | 
    
         
             
            /*
         
     | 
| 
         @@ -587,5 +588,3 @@ Init_fiddle_handle(void) 
     | 
|
| 
       587 
588 
     | 
    
         
             
                rb_define_method(rb_cHandle, "enable_close", rb_fiddle_handle_enable_close, 0);
         
     | 
| 
       588 
589 
     | 
    
         
             
                rb_define_method(rb_cHandle, "close_enabled?", rb_fiddle_handle_close_enabled_p, 0);
         
     | 
| 
       589 
590 
     | 
    
         
             
            }
         
     | 
| 
       590 
     | 
    
         
            -
             
     | 
| 
       591 
     | 
    
         
            -
            /* vim: set noet sws=4 sw=4: */
         
     | 
    
        data/ext/fiddle/memory_view.c
    CHANGED
    
    | 
         @@ -64,8 +64,13 @@ fiddle_memview_memsize(const void *ptr) 
     | 
|
| 
       64 
64 
     | 
    
         
             
            }
         
     | 
| 
       65 
65 
     | 
    
         | 
| 
       66 
66 
     | 
    
         
             
            static const rb_data_type_t fiddle_memview_data_type = {
         
     | 
| 
       67 
     | 
    
         
            -
                "fiddle/memory_view",
         
     | 
| 
       68 
     | 
    
         
            -
                 
     | 
| 
      
 67 
     | 
    
         
            +
                .wrap_struct_name = "fiddle/memory_view",
         
     | 
| 
      
 68 
     | 
    
         
            +
                .function = {
         
     | 
| 
      
 69 
     | 
    
         
            +
                    .dmark = fiddle_memview_mark,
         
     | 
| 
      
 70 
     | 
    
         
            +
                    .dfree = fiddle_memview_free,
         
     | 
| 
      
 71 
     | 
    
         
            +
                    .dsize = fiddle_memview_memsize,
         
     | 
| 
      
 72 
     | 
    
         
            +
                },
         
     | 
| 
      
 73 
     | 
    
         
            +
                .flags = FIDDLE_DEFAULT_TYPED_DATA_FLAGS,
         
     | 
| 
       69 
74 
     | 
    
         
             
            };
         
     | 
| 
       70 
75 
     | 
    
         | 
| 
       71 
76 
     | 
    
         
             
            static VALUE
         
     | 
    
        data/ext/fiddle/pinned.c
    CHANGED
    
    | 
         @@ -24,9 +24,13 @@ pinned_memsize(const void *ptr) 
     | 
|
| 
       24 
24 
     | 
    
         
             
            }
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
            static const rb_data_type_t pinned_data_type = {
         
     | 
| 
       27 
     | 
    
         
            -
                "fiddle/pinned",
         
     | 
| 
       28 
     | 
    
         
            -
                 
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
      
 27 
     | 
    
         
            +
                .wrap_struct_name = "fiddle/pinned",
         
     | 
| 
      
 28 
     | 
    
         
            +
                .function = {
         
     | 
| 
      
 29 
     | 
    
         
            +
                    .dmark = pinned_mark,
         
     | 
| 
      
 30 
     | 
    
         
            +
                    .dfree = RUBY_TYPED_DEFAULT_FREE,
         
     | 
| 
      
 31 
     | 
    
         
            +
                    .dsize = pinned_memsize,
         
     | 
| 
      
 32 
     | 
    
         
            +
                },
         
     | 
| 
      
 33 
     | 
    
         
            +
                .flags = FIDDLE_DEFAULT_TYPED_DATA_FLAGS,
         
     | 
| 
       30 
34 
     | 
    
         
             
            };
         
     | 
| 
       31 
35 
     | 
    
         | 
| 
       32 
36 
     | 
    
         
             
            static VALUE
         
     | 
    
        data/ext/fiddle/pointer.c
    CHANGED
    
    | 
         @@ -94,7 +94,7 @@ static const rb_data_type_t fiddle_ptr_data_type = { 
     | 
|
| 
       94 
94 
     | 
    
         
             
                    .dfree = fiddle_ptr_free,
         
     | 
| 
       95 
95 
     | 
    
         
             
                    .dsize = fiddle_ptr_memsize,
         
     | 
| 
       96 
96 
     | 
    
         
             
                },
         
     | 
| 
       97 
     | 
    
         
            -
                .flags =  
     | 
| 
      
 97 
     | 
    
         
            +
                .flags = FIDDLE_DEFAULT_TYPED_DATA_FLAGS,
         
     | 
| 
       98 
98 
     | 
    
         
             
            };
         
     | 
| 
       99 
99 
     | 
    
         | 
| 
       100 
100 
     | 
    
         
             
            #ifdef HAVE_RUBY_MEMORY_VIEW_H
         
     | 
| 
         @@ -570,7 +570,7 @@ rb_fiddle_ptr_inspect(VALUE self) 
     | 
|
| 
       570 
570 
     | 
    
         | 
| 
       571 
571 
     | 
    
         
             
                TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, data);
         
     | 
| 
       572 
572 
     | 
    
         
             
                return rb_sprintf("#<%"PRIsVALUE":%p ptr=%p size=%ld free=%p>",
         
     | 
| 
       573 
     | 
    
         
            -
            		      RB_OBJ_CLASSNAME(self), (void *)data, data->ptr, data->size, (void *)data->free);
         
     | 
| 
      
 573 
     | 
    
         
            +
            		      RB_OBJ_CLASSNAME(self), (void *)data, data->ptr, data->size, (void *)(VALUE)data->free);
         
     | 
| 
       574 
574 
     | 
    
         
             
            }
         
     | 
| 
       575 
575 
     | 
    
         | 
| 
       576 
576 
     | 
    
         
             
            /*
         
     | 
| 
         @@ -827,7 +827,8 @@ rb_fiddle_ptr_read_mem(VALUE klass, VALUE address, VALUE len) 
     | 
|
| 
       827 
827 
     | 
    
         
             
            static VALUE
         
     | 
| 
       828 
828 
     | 
    
         
             
            rb_fiddle_ptr_write_mem(VALUE klass, VALUE addr, VALUE str)
         
     | 
| 
       829 
829 
     | 
    
         
             
            {
         
     | 
| 
       830 
     | 
    
         
            -
                 
     | 
| 
      
 830 
     | 
    
         
            +
                const char *ptr = StringValuePtr(str);
         
     | 
| 
      
 831 
     | 
    
         
            +
                memcpy(NUM2PTR(addr), ptr, RSTRING_LEN(str));
         
     | 
| 
       831 
832 
     | 
    
         
             
                return str;
         
     | 
| 
       832 
833 
     | 
    
         
             
            }
         
     | 
| 
       833 
834 
     | 
    
         | 
    
        data/fiddle.gemspec
    CHANGED
    
    | 
         @@ -34,14 +34,11 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       34 
34 
     | 
    
         
             
                "ext/fiddle/memory_view.c",
         
     | 
| 
       35 
35 
     | 
    
         
             
                "ext/fiddle/pinned.c",
         
     | 
| 
       36 
36 
     | 
    
         
             
                "ext/fiddle/pointer.c",
         
     | 
| 
       37 
     | 
    
         
            -
                "ext/fiddle/win32/fficonfig.h",
         
     | 
| 
       38 
     | 
    
         
            -
                "ext/fiddle/win32/libffi-3.2.1-mswin.patch",
         
     | 
| 
       39 
     | 
    
         
            -
                "ext/fiddle/win32/libffi-config.rb",
         
     | 
| 
       40 
     | 
    
         
            -
                "ext/fiddle/win32/libffi.mk.tmpl",
         
     | 
| 
       41 
37 
     | 
    
         
             
                "fiddle.gemspec",
         
     | 
| 
       42 
38 
     | 
    
         
             
                "lib/fiddle.rb",
         
     | 
| 
       43 
39 
     | 
    
         
             
                "lib/fiddle/closure.rb",
         
     | 
| 
       44 
40 
     | 
    
         
             
                "lib/fiddle/cparser.rb",
         
     | 
| 
      
 41 
     | 
    
         
            +
                "lib/fiddle/ffi_backend.rb",
         
     | 
| 
       45 
42 
     | 
    
         
             
                "lib/fiddle/function.rb",
         
     | 
| 
       46 
43 
     | 
    
         
             
                "lib/fiddle/import.rb",
         
     | 
| 
       47 
44 
     | 
    
         
             
                "lib/fiddle/pack.rb",
         
     | 
| 
         @@ -56,4 +53,5 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       56 
53 
     | 
    
         
             
              spec.required_ruby_version = ">= 2.5.0"
         
     | 
| 
       57 
54 
     | 
    
         | 
| 
       58 
55 
     | 
    
         
             
              spec.metadata["msys2_mingw_dependencies"] = "libffi"
         
     | 
| 
      
 56 
     | 
    
         
            +
              spec.metadata["changelog_uri"] = "https://github.com/ruby/fiddle/releases"
         
     | 
| 
       59 
57 
     | 
    
         
             
            end
         
     |