summaryrefslogtreecommitdiff
path: root/include/ruby/internal/abi.h
Commit message (Collapse)AuthorAgeFilesLines
* [Bug #19289] Retain `ruby_abi_version` functionNobuyoshi Nakada2023-01-201-2/+5
| | | | | | | | A few extension libraries, to hide all symbols except for necessary to load, hardcode the symbols to be exported in symbol list files for linker without even checking by `have_func`. As a workaround for such libraries, retain `ruby_abi_version` symbol always even in released versions for now.
* Reset ABI version [ci skip]Nobuyoshi Nakada2022-12-261-1/+1
|
* Move "special consts" so `Qundef` and `Qnil` differ just 1 bitNobuyoshi Nakada2022-10-201-1/+1
|
* Stop defining `RUBY_ABI_VERSION` if released versionsNobuyoshi Nakada2022-08-121-1/+5
| | | | | | As commented in include/ruby/internal/abi.h, since teeny versions of Ruby should guarantee ABI compatibility, `RUBY_ABI_VERSION` has no role in released versions of Ruby.
* Implement Objects on VWAPeter Zhu2022-07-151-1/+1
| | | | | | This commit implements Objects on Variable Width Allocation. This allows Objects with more ivars to be embedded (i.e. contents directly follow the object header) which improves performance through better cache locality.
* Undefine RUBY_DLN_CHECK_ABI on cygwinDaisuke Fujimura (fd0)2022-05-191-1/+1
|
* [Feature #18634] Implement Arrays on Variable Width AllocationPeter Zhu2022-03-221-1/+1
| | | | | | This commit implements arrays on Variable Width Allocation. This allows longer arrays to be embedded (i.e. contents directly follow the object header) which improves performance through better cache locality.
* Wrap ruby_abi_version in `extern "C"` for C++Peter Zhu2022-03-011-0/+8
| | | | | Make ruby_abi_version have C linkage so that the symbol can be found in the shared object.
* Only define RUBY_DLN_CHECK_ABI when supportedPeter Zhu2022-03-011-4/+2
|
* [Feature #18249] Implement ABI checkingPeter Zhu2022-02-221-0/+45
Header file include/ruby/internal/abi.h contains RUBY_ABI_VERSION which is the ABI version. This value should be bumped whenever an ABI incompatible change is introduced. When loading dynamic libraries, Ruby will compare its own `ruby_abi_version` and the `ruby_abi_version` of the loaded library. If these two values don't match it will raise a `LoadError`. This feature can also be turned off by setting the environment variable `RUBY_RUBY_ABI_CHECK=0`. This feature will prevent cases where previously installed native gems fail in unexpected ways due to incompatibility of changes in header files. This will force the developer to recompile their gems to use the same header files as the built Ruby. In Ruby, the ABI version is exposed through `RbConfig::CONFIG["ruby_abi_version"]`.