On Friday, October 7, 2011 at 12:44 AM, KOSAKI Motohiro wrote:
> > > No, it isn't. MVM-aware extensions shall obey the MVM-safe APIs.
> > > 
> > > But MVM-unaware extensions are OK if and only if the whole ruby
> > > process don't use MVM features at all. And even if you don't
> > > touch MVM things, binary compatibility is broken. Recompilation
> > > is mandatory for everything.
> > 
> > So, MVM will not be part of 2.0? Cause Matz said breaking even binary compatibility would not be an option...
> 
> If ruby code doesn't use MVM APIs, we can't see any incompatibility.
> IOW, it is binary api addtion, but it is not binary api change.
 So therefore using MVM and current C extensions would be mutually exclusive. I'd expect that if the MVM API was used, it would set a flag that would prohibit any C extensions with the current API from being loaded. Also, if a C extension using the current API is loaded, a flag should be set which would raise an exception if the MVM API were used. 

Without these checks, it's trivial for users to crash the process. This confuses the users and creates more work for ruby-core, since ruby-core then has to educate people on how you can use MVM.