Issue #14002 has been updated by jeremyevans0 (Jeremy Evans).


nobu (Nobuyoshi Nakada) wrote:
> jeremyevans0 (Jeremy Evans) wrote:
> > Added functions (minor bump):
> > 
> > ```diff
> > +int rb_block_min_max_arity(int *max);
> > +VALUE rb_lambda_call(VALUE obj, ID mid, int argc, const VALUE *argv,
> > +        rb_block_call_func_t bl_proc, int min_argc, int max_argc,
> > +        VALUE data2);
> > ```
> > 
> > Modified function to add arguments (major bump):
> > 
> > ```diff
> > -VALUE rb_func_lambda_new(rb_block_call_func_t func, VALUE val);
> > +VALUE rb_func_lambda_new(rb_block_call_func_t func, VALUE val, int min_argc, int max_argc);
> > ```
> > 
> > Now, you may say that external users should not be calling these functions.  And that's probably true, since they aren't in a public header file (no API change).  But that doesn't change the fact that the ABI did change between teeny versions.
> 
> And they are stripped from libruby.so, on most platforms (gcc 4+, and Windows).

Sorry for spreading misinformation.  I see now where RUBY_SYMBOL_EXPORT_BEGIN and RUBY_SYMBOL_EXPORT_END are used in internal.h for symbol visibility, and also the use of objdump in Makefile.in.  It appears that the GCC visibility pragma is also supported by clang.

> > Even if you are just concerned about functions that appear in public header files, there have been functions added to them in teeny versions, such as "VALUE rb_big_hash(VALUE)" added to ruby/intern.h in 2.3.2 (it switched from being static to being non-static in bignum.c at the same time).
> 
> I haven't noticed it, seems r54178 has not been backported.

Backporting it would make things worse, as it would turn a minor bump (adding visible symbol) into a major bump (removing visible symbol).

----------------------------------------
Bug #14002: libruby soname is changing in Ruby 2.4.x while it should always be libruby.so.2.4.0
https://bugs.ruby-lang.org/issues/14002#change-67214

* Author: vo.x (Vit Ondruch)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]
* Backport: 2.3: UNKNOWN, 2.4: REQUIRED
----------------------------------------
Since the Ruby 2.4.x keeps ABI compatibility with Ruby 2.4.0 (I hope at least), the so name should keep the libruby.so.2.4.0 during the whole Ruby 2.4 lifetime. This always used to be true, while in Ruby 2.4, the soname is surprisingly changing (and it affects Fedora users [1]).

Actually this is not just about the soname, the RbConfig::CONFIG["TEENY"] value is impacted by this as well. This was always "0" since the patch releases were abandoned. But now it changes.

I tried to revert r53566, r53500 and r5347 but apparently, this was not enough :/


[1]: https://bugzilla.redhat.com/show_bug.cgi?id=1499928



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>