| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Split `PACKED_STRUCT` and `PACKED_STRUCT_UNALIGNED` macros into the
macros bellow:
* `RBIMPL_ATTR_PACKED_STRUCT_BEGIN`
* `RBIMPL_ATTR_PACKED_STRUCT_END`
* `RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_BEGIN`
* `RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_END`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
possible
(https://github.com/ruby/fiddle/pull/120)
WG14 N2350 made very clear that it is an UB having type definitions
within "offsetof" [1]. This patch enhances the implementation of macro
ALIGN_OF to use builtin "_Alignof" to avoid undefined behavior when
using std=c11 or newer
clang 16+ has started to flag this [2]
Fixes build when using -std >= gnu11 and using clang16+
Older compilers gcc < 4.9 or clang < 8 has buggy _Alignof even though it
may support C11, exclude those compiler versions
[1] https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2350.htm
[2] https://reviews.llvm.org/D133574
Signed-off-by: Khem Raj <raj.khem@gmail.com>
https://github.com/ruby/fiddle/commit/ad6c9aa826
|
|
|
|
| |
https://github.com/ruby/fiddle/commit/36b2432575
|
|
|
|
|
|
|
|
| |
(https://github.com/ruby/fiddle/pull/119)
The documentation for `Fiddle.dlwrap` and `Fiddle.dlunwrap` were not
very accurate and pretty confusing. This commit updates the
documentation so it's easier to understand what the methods do.
|
|
|
|
|
|
|
|
| |
(https://github.com/ruby/fiddle/pull/118)
String#unpack1 is available since Ruby 2.4, and support for older than
Ruby 2.5 was dropped by #85.
Also simplified a common return statement.
|
|
|
|
| |
https://github.com/ruby/fiddle/commit/3033266902
|
| |
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
|
|
|
|
| |
GitHub: fix https://github.com/ruby/fiddle/pull/107
Reported by nicholas a. evans. Thanks!!!
https://github.com/ruby/fiddle/commit/49ea1490df
|
| |
|
|
|
|
|
| |
Fiddle is a gem and has the external upstream which supports older
versions of Ruby.
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
GitHub: GH-102
https://github.com/ruby/fiddle/commit/2530496602
|
|
|
|
|
|
| |
GitHub: GH-102
https://github.com/ruby/fiddle/commit/81a8a56239
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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>
|
|
|
|
|
|
| |
(https://github.com/ruby/fiddle/pull/110)
https://github.com/ruby/fiddle/commit/4a71246645ccff001292c9d80b855b2ef5bf06c1
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
https://github.com/ruby/fiddle/commit/e08c4c635e
Co-authored-by: Sutou Kouhei <kou@clear-code.com>
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
|
|
| |
(https://github.com/ruby/fiddle/pull/88)
https://github.com/ruby/fiddle/commit/4ee1c6fc4b
|
|
|
|
|
|
| |
(https://github.com/ruby/fiddle/pull/86)
https://github.com/ruby/fiddle/commit/c5abcc3a7e
|
|
|
|
|
|
| |
FIddle::Handle#to_ptr (https://github.com/ruby/fiddle/pull/87)
https://github.com/ruby/fiddle/commit/170111a0cb
|
| |
|
|
|
|
| |
https://github.com/ruby/fiddle/commit/93f9564446
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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>
|
|
|
|
|
| |
https://github.com/ruby/fiddle/commit/049138b4b8
|
|
|
|
|
| |
https://github.com/ruby/fiddle/commit/0ed39345fe
|
|
|
|
|
| |
https://github.com/ruby/fiddle/commit/bddca7c895
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
|
|
|
| |
(https://github.com/ruby/fiddle/pull/78)
Fix https://github.com/ruby/fiddle/pull/74
Reported by dsisnero. Thanks!!!
|
|
|
|
|
|
|
|
|
| |
Ruby: [Bug #11579]
Patch by cremno phobia. Thanks!!!
https://github.com/ruby/fiddle/commit/760a8f9b14
|
|
|
|
|
| |
https://github.com/ruby/fiddle/commit/3784cfeec4
|
|
|
|
| |
https://github.com/ruby/fiddle/commit/e9955d74ae
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
GitHub: fix #68
Reported by kojix2. Thanks!!!
https://github.com/ruby/fiddle/commit/d7322c234a
|