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"]`.
* Define major and minor version numbers only in the public
include/ruby/version.h header, as the API version numbers.
* Define only teeny version number in the private version.h
header.
* RUBY_VERSION moved to version.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66599 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Today I updated my ruby core clone, and I run the usual steps to compile
ruby. When running "make", I run into the following error:
```
(... stuff ...)
encdb.h unchanged
Traceback (most recent call last):
5: from ./tool/mkconfig.rb:19:in `<main>'
4: from ./tool/mkconfig.rb:19:in `require'
3: from /home/deivid/Code/ruby/lib/fileutils.rb:4:in `<top (required)>'
2: from /home/deivid/Code/ruby/lib/fileutils.rb:4:in `require'
1: from /home/deivid/Code/ruby/rbconfig.rb:11:in `<top (required)>'
/home/deivid/Code/ruby/rbconfig.rb:13:in `<module:RbConfig>': ruby lib version (2.5.0) doesn't match executable version (2.6.0) (RuntimeError)
uncommon.mk:780: recipe for target '.rbconfig.time' failed
make: *** [.rbconfig.time] Error 1
```
Apparently, the script that generates the root `rbconfig.rb` file requires
`fileutils`, which in turn requires 'rbconfig' (for mjit-headers it says in a
comment), which uses the `rbconfig.rb` config file in the root folder if it
exists. In my case, this file existed but had been generated on 2.5.0, thus
causing the error.
I think we can avoid this sort of circular dependency by not requiring
`fileutils`, since it does not seem to be used anywhere in the
`tool/mkconfig.rb` script since r55338.
[Fix GH-2045]
From: David Rodríguez <deivid.rodriguez@riseup.net>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66301 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* configure.ac: rename configure option `--disable-mjit` to
`--disable-mjit-support` because `--disable-mjit` is ambiguous that
runtime MJIT default enable option or supporting MJIT features.
`ENABLE_MJIT` is also renamed to `MJIT_SUPPORT`
* Makefile.in: catch up this fix.
* common.mk: ditto.
* test/ruby/test_jit.rb: ditto.
* win32/Makefile.sub: catch up this fix on mswin.
* tool/mkconfig.rb: fix to pass `MJIT_SUPPORT` key.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65217 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* configure.ac: removed DISABLE_RUBYGEMS macro from config.h, not
to rebuild everything when the flag changed.
* configure.ac, win32/configure.bat: make USE_RUBYGEMS lowercase.
* tool/mkconfig.rb: remove RUBYGEMS stuff from rbconfig.rb, not to
reconfigure and rebuild all extension libraries.
* Makefile.in (CPPFLAGS): enable/disable Rubygems by USE_RUBYGEMS.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63718 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/mkconfig.rb: add a magic comment to rbconfig.rb in case the command
line option -K is specified. [ruby-core:78181] [Bug #12949]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56817 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/mkconfig.rb: [DOC] remove trailing space from a generated
line.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56579 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/mkconfig.rb: use keyword true, instead of the toplevel
constant.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55615 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/mkconfig.rb: provide Unicode Version information as
RbConfig::CONFIG['UNICODE_VERSION'].
[ruby-core:75845] [Feature #12460]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55417 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk (RBCONFIG): use ifchange tool to see if the content is
changed and update the timestamp file.
* tool/mkconfig.rb: remove ifchange features.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55338 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk, tool/mkconfig.rb: set cross_compiling option from
Makefile, but not from rbconfig.rb, which is just going to be
created by this command.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53969 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/mkconfig.rb: extract version numbers from version.h but not
from API version in include/ruby/version.h.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/mkconfig.rb (RbConfig): prefix SDKROOT to oldincludedir
not includedir, the latter is outside the ruby installation.
[ruby-core:72496] [Bug #11881]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53400 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/mkconfig.rb: rbconfig must not be fronzen-string-literal to
expand CONFIG hash. [ruby-core:72006] [Bug #11798]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53017 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk, tool/mkconfig.rb: check the running ruby version in
rbconfig.rb with the program version, as RUBY_VERSION has never
been affected by --with-ruby-version option.
[ruby-core:68639] [Bug #11002]
* configure.in (LIBRUBY_DLDFLAGS): compatibility_version must be
valid version numbers, not an arbitrary string.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50152 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/mkconfig.rb (RbConfig): embed substring of the version, not
at the runtime, and fall back to the version itself for the case
it does not include the teeny version.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50094 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/mkconfig.rb: use arguments instead of built-in constants
to work without fake.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49882 b2dd03c8-39d4-4d8f-98ff-823fe69b080e