summaryrefslogtreecommitdiff
path: root/ext/fiddle
AgeCommit message (Collapse)Author
2022-12-09Merge fiddle-1.1.1Hiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/6890
2022-10-18[ruby/fiddle] Free closures immediatelyAaron Patterson
(https://github.com/ruby/fiddle/pull/109) These structs don't need to be freed as part of finalization, so lets free them immediately. https://github.com/ruby/fiddle/commit/8a10ec1152 Notes: Merged: https://github.com/ruby/ruby/pull/6576
2022-10-18[ruby/fiddle] Add support for linker script on LinuxSutou Kouhei
GitHub: fix https://github.com/ruby/fiddle/pull/107 Reported by nicholas a. evans. Thanks!!! https://github.com/ruby/fiddle/commit/49ea1490df Notes: Merged: https://github.com/ruby/ruby/pull/6576
2022-10-18[ruby/fiddle] Bump versionSutou Kouhei
Notes: Merged: https://github.com/ruby/ruby/pull/6576
2022-10-18fiddle: use the old rb_ary_tmp_new() aliasNobuyoshi Nakada
Fiddle is a gem and has the external upstream which supports older versions of Ruby. Notes: Merged: https://github.com/ruby/ruby/pull/6576
2022-10-07Add --with-libffi-source-dir feature and removed --enable-bundled-libffi ↵Hiroshi SHIBATA
option. (#113) https://bugs.ruby-lang.org/issues/18571 Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Co-authored-by: Sutou Kouhei <kou@clear-code.com>
2022-10-07[ruby/fiddle] closure: follow variable name changeSutou Kouhei
GitHub: GH-102 https://github.com/ruby/fiddle/commit/2530496602
2022-10-07[ruby/fiddle] closure: free resources when an exception is raised in Closure.newSutou Kouhei
GitHub: GH-102 https://github.com/ruby/fiddle/commit/81a8a56239
2022-10-07[ruby/fiddle] Add Fiddle::Closure.create and Fiddle::Closure.freeSutou Kouhei
GitHub: fix GH-102 It's for freeing a closure explicitly. We can't use Fiddle::Closure before we fork the process. If we do it, the process may be crashed with SELinux. See https://github.com/ruby/fiddle/issues/102#issuecomment-1241763091 for details. Reported by Vít Ondruch. Thanks!!! https://github.com/ruby/fiddle/commit/a0ccc6bb1b
2022-10-07[ruby/fiddle] Add `sym_defined?` methods to test if a symbol is defined ↵Aaron Patterson
(https://github.com/ruby/fiddle/pull/108) I would like to check if a symbol is defined before trying to access it. Some symbols aren't available on all platforms, so instead of raising an exception, I want to check if it's defined first. Today we have to do: ```ruby begin addr = Fiddle::Handle.sym("something") # do something rescue Fiddle::DLError end ``` I want to write this: ```ruby if Fiddle::Handle.sym_defined?("something") addr = Fiddle::Handle.sym("something") # do something end ``` https://github.com/ruby/fiddle/commit/9d3371de13 Co-authored-by: Sutou Kouhei <kou@clear-code.com>
2022-10-07[ruby/fiddle] Move "type" constants to `Fiddle::Types` ↵Aaron Patterson
(https://github.com/ruby/fiddle/pull/112) This helps to reduce repetition in code. Instead of doing "TYPE_*" everywhere, you can do `include Fiddle::Types`, and write the type name directly. This PR is to help reduce repetition when writing Fiddle code. Right now we have to type `TYPE_` everywhere, and you also have to include all of `Fiddle` to access `TYPE_*` constants. With this change, you can just include `Fiddle::Types` and it will shorten your code and also you only have to include those constants. Here is an example before: ```ruby require "fiddle" module MMAP # All Fiddle constants included include Fiddle def self.make_function name, args, ret ptr = Handle::DEFAULT[name] func = Function.new ptr, args, ret, name: name define_singleton_method name, &func.to_proc end make_function "munmap", [TYPE_VOIDP, # addr TYPE_SIZE_T], # len TYPE_INT make_function "mmap", [TYPE_VOIDP, TYPE_SIZE_T, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT], TYPE_VOIDP make_function "mprotect", [TYPE_VOIDP, TYPE_SIZE_T, TYPE_INT], TYPE_INT end ``` After: ```ruby require "fiddle" module MMAP # Only type names included include Fiddle::Types def self.make_function name, args, ret ptr = Fiddle::Handle::DEFAULT[name] func = Fiddle::Function.new ptr, args, ret, name: name define_singleton_method name, &func.to_proc end make_function "munmap", [VOIDP, # addr SIZE_T], # len INT make_function "mmap", [VOIDP, SIZE_T, INT, INT, INT, INT], VOIDP make_function "mprotect", [VOIDP, SIZE_T, INT], INT end ``` We only need to import the type names, and you don't have to type `TYPE_` over and over. I think this makes Fiddle code easier to read. https://github.com/ruby/fiddle/commit/49fa7233e5 Co-authored-by: Sutou Kouhei <kou@clear-code.com>
2022-10-07[ruby/fiddle] Add constants for unsigned values ↵Aaron Patterson
(https://github.com/ruby/fiddle/pull/111) This commit adds constants for unsigned values. Currently we can use `-` to mean "unsigned", but I think having a specific name makes Fiddle more user friendly. This commit continues to support `-`, but introduces negative constants with "unsigned" names I think this will help to eliminate [this code](https://github.com/ruby/ruby/blob/3a56bf0bcc66e14ffe5ec89efc32ecfceed180f4/lib/mjit/c_type.rb#L31-L38) https://github.com/ruby/fiddle/commit/2bef0f1082 Co-authored-by: Sutou Kouhei <kou@clear-code.com>
2022-09-11[ruby/fiddle] Fix PACK_MAP for unsigned types ↵Takashi Kokubun
(https://github.com/ruby/fiddle/pull/110) https://github.com/ruby/fiddle/commit/4a71246645ccff001292c9d80b855b2ef5bf06c1
2022-09-09No longer bundle external library sourcesNobuyoshi Nakada
2022-07-26Rename rb_ary_tmp_new to rb_ary_hidden_newPeter Zhu
rb_ary_tmp_new suggests that the array is temporary in some way, but that's not true, it just creates an array that's hidden and not on the transient heap. This commit renames it to rb_ary_hidden_new. Notes: Merged: https://github.com/ruby/ruby/pull/6180
2022-02-22[Feature #18249] Update dependenciesPeter Zhu
Notes: Merged: https://github.com/ruby/ruby/pull/5474
2022-01-26Do not need to print to stderrKoichi Sasada
2021-11-21Update dependenciesNobuyoshi Nakada
2021-10-05ruby tool/update-deps --fix卜部昌平
Notes: Merged: https://github.com/ruby/ruby/pull/4909
2021-09-05[ruby/fiddle] Use test-unit gem (https://github.com/ruby/fiddle/pull/69)Hiroshi SHIBATA
https://github.com/ruby/fiddle/commit/e08c4c635e Co-authored-by: Sutou Kouhei <kou@clear-code.com> Notes: Merged: https://github.com/ruby/ruby/pull/4810
2021-08-24[ruby/fiddle] Improve "offsetof" calculations ↵Aaron Patterson
(https://github.com/ruby/fiddle/pull/90) I need to get the offset of members inside sub structures. This patch adds sub-structure offset support for structs. https://github.com/ruby/fiddle/commit/cf78eddbb6
2021-07-14[ruby/fiddle] Add Fiddle::Handle#file_name ↵Kenta Murata
(https://github.com/ruby/fiddle/pull/88) https://github.com/ruby/fiddle/commit/4ee1c6fc4b
2021-07-14[ruby/fiddle] Check HAVE_RUBY_MEMORY_VIEW_H rather than API version ↵Nobuyoshi Nakada
(https://github.com/ruby/fiddle/pull/86) https://github.com/ruby/fiddle/commit/c5abcc3a7e
2021-07-14[ruby/fiddle] Return the module handle value in Fiddle::Handle#to_i and add ↵Kenta Murata
FIddle::Handle#to_ptr (https://github.com/ruby/fiddle/pull/87) https://github.com/ruby/fiddle/commit/170111a0cb
2021-07-13[ruby/fiddle] update dependenciesNobuyoshi Nakada
2021-07-13[ruby/fiddle] Check HAVE_RUBY_MEMORY_VIEW_H rather than API versionNobuyoshi Nakada
https://github.com/ruby/fiddle/commit/93f9564446
2021-07-13[ruby/fiddle] Update required_ruby_version ↵Nobuyoshi Nakada
(https://github.com/ruby/fiddle/pull/85) Drop supports for old versions, keeping 2.5 as CI supports it for now. https://github.com/ruby/fiddle/commit/90634e7c55
2021-07-13[ruby/fiddle] Use have_header and have_type to detect memory view availabilitySutou Kouhei
Fix https://github.com/ruby/fiddle/pull/84 It may detect ruby/memory_view.h for system Ruby that is installed in /usr. We can use RUBY_API_VERSION_MAJOR to detect memory view availability because memory view is available since Ruby 3.0. Reported by Jun Aruga. Thanks!!! https://github.com/ruby/fiddle/commit/3292929830
2021-07-13[ruby/fiddle] Add "offsetof" to Struct classes ↵Aaron Patterson
(https://github.com/ruby/fiddle/pull/83) * Add "offsetof" to Struct classes I need to get the offset of a member inside a struct without allocating the struct. This patch adds an "offsetof" class method to structs that are generated. The usage is like this: ```ruby MyStruct = struct [ "int64_t i", "char c", ] MyStruct.offsetof("i") # => 0 MyStruct.offsetof("c") # => 8 ``` * Update test/fiddle/test_c_struct_builder.rb Co-authored-by: Sutou Kouhei <kou@cozmixng.org> https://github.com/ruby/fiddle/commit/4e3b60c5b6 Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
2021-07-13[ruby/fiddle] Bump versionSutou Kouhei
https://github.com/ruby/fiddle/commit/049138b4b8
2021-07-13[ruby/fiddle] MemoryView: ensure reset rb_memory_view_t::obj on errorSutou Kouhei
https://github.com/ruby/fiddle/commit/0ed39345fe
2021-07-13[ruby/fiddle] StringValuePtr may change the valSutou Kouhei
https://github.com/ruby/fiddle/commit/bddca7c895
2021-07-13[ruby/fiddle] Add MemoryView.export and MemoryView#release ↵Sutou Kouhei
(https://github.com/ruby/fiddle/pull/80) fix https://github.com/ruby/fiddle/pull/79 Users can release memory views explicitly before process exit. Reported by xtkoba. Thanks!!! https://github.com/ruby/fiddle/commit/1de64b7e76
2021-07-13[ruby/fiddle] Add Fiddle::MemoryView#to_s ↵Sutou Kouhei
(https://github.com/ruby/fiddle/pull/78) Fix https://github.com/ruby/fiddle/pull/74 Reported by dsisnero. Thanks!!!
2021-07-13[ruby/fiddle] windows: use GetLastError() for win32_last_errorSutou Kouhei
Ruby: [Bug #11579] Patch by cremno phobia. Thanks!!! https://github.com/ruby/fiddle/commit/760a8f9b14
2021-07-13[ruby/fiddle] Bump versionSutou Kouhei
https://github.com/ruby/fiddle/commit/3784cfeec4
2021-05-18[ruby/fiddle] windows: link to ws2_32 for WSAGetLastError()Sutou Kouhei
https://github.com/ruby/fiddle/commit/e9955d74ae Notes: Merged: https://github.com/ruby/ruby/pull/4506
2021-05-18[ruby/fiddle] windows: add Fiddle.win32_last_socket_error{,=}Sutou Kouhei
GitHub: fix GH-72 Users can't use WSAGetLastError() with Ruby 3.0 or later because rb_funcall() resets the last socket error internally. Users can get the last socket error by Fiddle.win32_last_socket_error. Reported by Kentaro Hayashi. Thanks!!! https://github.com/ruby/fiddle/commit/76158db00a Notes: Merged: https://github.com/ruby/ruby/pull/4506
2021-05-18[ruby/fiddle] Add support for "const" in typeSutou Kouhei
GitHub: fix #68 Reported by kojix2. Thanks!!! https://github.com/ruby/fiddle/commit/d7322c234a Notes: Merged: https://github.com/ruby/ruby/pull/4506
2021-05-18[ruby/fiddle] Add --enable-debug-build option to extconf.rbSutou Kouhei
https://github.com/ruby/fiddle/commit/e0498e60ea Notes: Merged: https://github.com/ruby/ruby/pull/4506
2021-05-18[ruby/fiddle] win32types: sortSutou Kouhei
https://github.com/ruby/fiddle/commit/35dec6c5a5 Notes: Merged: https://github.com/ruby/ruby/pull/4506
2021-05-18[ruby/fiddle] Fix more Win32Types definitionsSutou Kouhei
https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types https://github.com/ruby/fiddle/commit/805c1a595a Notes: Merged: https://github.com/ruby/ruby/pull/4506
2021-05-18[ruby/fiddle] Fix Win32Types for Windows 64-bit (#63)Orgad Shaneh
https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types https://github.com/ruby/fiddle/commit/28ee5b1608 Notes: Merged: https://github.com/ruby/ruby/pull/4506
2021-05-18[ruby/fiddle] Bump versionSutou Kouhei
https://github.com/ruby/fiddle/commit/0cbd370fd6 Notes: Merged: https://github.com/ruby/ruby/pull/4506
2021-05-18[ruby/fiddle] closure: add support for const char *Sutou Kouhei
GitHub: fix GH-62 Reported by Cody Krieger. Thanks!!! https://github.com/ruby/fiddle/commit/284b820f2d Notes: Merged: https://github.com/ruby/ruby/pull/4506
2021-05-18[ruby/fiddle] closure: accept symbol as typeSutou Kouhei
https://github.com/ruby/fiddle/commit/dc2da6633e Notes: Merged: https://github.com/ruby/ruby/pull/4506
2021-05-18[ruby/fiddle] Remove wrong commentSutou Kouhei
https://github.com/ruby/fiddle/commit/831522e768 Notes: Merged: https://github.com/ruby/ruby/pull/4506
2021-05-18[ruby/fiddle] Bump versionKenta Murata
https://github.com/ruby/fiddle/commit/63e5f98412 Notes: Merged: https://github.com/ruby/ruby/pull/4506
2021-04-13dependency updates卜部昌平
Notes: Merged: https://github.com/ruby/ruby/pull/4371
2021-02-26Oops! Add another test and fix to_proc implementationAaron Patterson