From: "Vít Ondruch" Date: 2012-11-07T00:31:58+09:00 Subject: [ruby-core:48982] Re: [ANN] ruby 2.0.0-preview1 released --20cf303349d75d399404cdd54d65 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable 2012/11/6 Yusuke Endoh > Hello Vit, > > 2012/11/6 V=EDt Ondruch : > > 2012/11/2 Yusuke Endoh > >> > >> 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 > > --20cf303349d75d399404cdd54d65 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

2012/11/6 Yusuke Endoh <mame@tsg.ne.jp= >
Hello Vit,

2012/11/6 V=EDt Ondruch <v.ondruc= h@gmail.com>:
> 2012/11/2 Yusuke Endoh <mame@tsg.ne.jp>
>>
>> We have taken considerable care in source-level compatibility with=
>> 1.9. =A0We believe all "normal" programs will work witho= ut 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. =A0So, to be precise:

- You can use existing "normal" Ruby scripts without modification=

- You can use "normal" source code of existing extenstion librari= es
=A0 without modification, but re-compilation is needed.


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

=A0

Note: #6679 was introduced after preview1, which may cause a big
compatibility issue, especially, for non-utf-8 users. =A0We will
estimate the impact with preview2 release.

BTW: I'm thinking to change the ABI version *name*. =A0Ruby 2.0.1 will<= br> use the same ABI version "2.0.0", which is very confusing, based = on
the experience of "1.9.1". =A0I'd like to name it "2.0&q= uot;, 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 compatibl= e anymore IMO, so you should probably avoid such change.
=A0


> =A0I 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.
=A0
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.
=A0

Removed Symbols (25)
=A0 OnigSyntaxPerl_NG [data]
=A0 rb_barrier_destroy ( ... )
=A0 rb_barrier_new ( ... )
=A0 rb_barrier_release ( ... )
=A0 rb_barrier_wait ( ... )
=A0 rb_disable_interrupt ( ... )
=A0 rb_enable_interrupt ( ... )
=A0 rb_file_const ( ... )
=A0 rb_file_load_ok ( ... )
=A0 rb_float_new ( ... )
=A0 rb_gc_mark_parser ( ... )
=A0 rb_gc_mark_symbols ( ... )
=A0 rb_gc_mark_threads ( ... )
=A0 rb_infinity [data]
=A0 rb_load_fail ( ... )
=A0 rb_mark_end_proc ( ... )
=A0 rb_nan [data]
=A0 rb_path_end ( ... )
=A0 rb_path_last_separator ( ... )
=A0 rb_path_next ( ... )
=A0 rb_path_skip_prefix ( ... )
=A0 rb_vm_get_sourceline ( ... )
=A0 rb_vm_make_env_object ( ... )
=A0 ruby_find_basename ( ... )
=A0 ruby_find_extname ( ... )

--
Yusuke Endoh <mame@tsg.ne.jp>

--20cf303349d75d399404cdd54d65--