2012/11/6 Yusuke Endoh <mame / tsg.ne.jp>

> Hello Vit,
>
> 2012/11/6 V=EDt Ondruch <v.ondruch / gmail.com>:
> > 2012/11/2 Yusuke Endoh <mame / tsg.ne.jp>
> >>
> >> We have taken considerable care in source-level compatibility with
> >> 1.9.  We believe all "normal" programs will work without modification.
> >> So, please give it a try, and report if your program does not work.
> >
> >
> > Does it mean that Ruby 2.0 will breaks ABI, e.g. the ABI will be 2.0.0
> > instead of 1.9.1 (as it was for Ruby 1.9.3).
>
> Yes, ABI will be incompatible with 1.9.1.  So, to be precise:
>
> - You can use existing "normal" Ruby scripts without modification
>
> - You can use "normal" source code of existing extenstion libraries
>   without modification, but re-compilation is needed.
>


If I am not mistaken, then this is ABI breakage. In other words as soon as
you need to rebuild your binary extensions, it is ABI breakage. Since the
.so name was renamed to libruby.2.0.0.so, it would be fine, but I'd really
love to see this clarified. If you claim that ABI is not broken, then .so
file should not be renamed nor rebuild should be needed, i.e. it should
stay libruby.1.9.1.so (
https://github.com/ruby/ruby/commit/a06a1772f3c7d7703adcad05ba10711212b1d15=
4should
be reverted in that case).



>
> Note: #6679 was introduced after preview1, which may cause a big
> compatibility issue, especially, for non-utf-8 users.  We will
> estimate the impact with preview2 release.
>
> BTW: I'm thinking to change the ABI version *name*.  Ruby 2.0.1 will
> use the same ABI version "2.0.0", which is very confusing, based on
> the experience of "1.9.1".  I'd like to name it "2.0", but I must
> talk with matz.
>

The only exception to rename the .so file could be to fix this issue, but
then, you will not be ABI compatible anymore IMO, so you should probably
avoid such change.


>
>
> >  I am just asking, since the .so
> > file is currently named libruby.2.0.0.so and abi-compliance-checker
> confirms
> > it (see attachment).
>
> Thank you, very interesting.
> The following functions (or global variables) disappered, right?
>

Right.


> We should check each if the deletion won't cause compatibility issue.
>

Deletion definitely means broken ABI compatibility and the source
compatibility might be broken as well.


>
> Removed Symbols (25)
>   OnigSyntaxPerl_NG [data]
>   rb_barrier_destroy ( ... )
>   rb_barrier_new ( ... )
>   rb_barrier_release ( ... )
>   rb_barrier_wait ( ... )
>   rb_disable_interrupt ( ... )
>   rb_enable_interrupt ( ... )
>   rb_file_const ( ... )
>   rb_file_load_ok ( ... )
>   rb_float_new ( ... )
>   rb_gc_mark_parser ( ... )
>   rb_gc_mark_symbols ( ... )
>   rb_gc_mark_threads ( ... )
>   rb_infinity [data]
>   rb_load_fail ( ... )
>   rb_mark_end_proc ( ... )
>   rb_nan [data]
>   rb_path_end ( ... )
>   rb_path_last_separator ( ... )
>   rb_path_next ( ... )
>   rb_path_skip_prefix ( ... )
>   rb_vm_get_sourceline ( ... )
>   rb_vm_make_env_object ( ... )
>   ruby_find_basename ( ... )
>   ruby_find_extname ( ... )
>
> --
> Yusuke Endoh <mame / tsg.ne.jp>
>
>