On Wed, Jul 31, 2002 at 12:29:58AM +0900, David Alan Black wrote:
> [...]
> The question being... what exactly is an implementation of Ruby?  I
> know this has come up before, but I still don't have a handle on it.
> 
> For example, if your interpreter lets me use named parameters, it
> ceases to be a drop-in replacement for Ruby.  To my way of thinking,
> it then by definition ceases to be an implementation of Ruby.
> 
> This isn't about the merits of the changes you (or other implementors)
> might make.  My concern is what happens when there are various Rubies
> around (whether or not they are more/less/equally elegant than/as
> Ruby), and people start writing ostensible Ruby code that requires a
> certain Ruby implementation.

Well, see what happened to lisp, got blown up, changed, incompatible,
common lisp came, and slowly all were walking back to that - but on
the good side, scheme and T were born (and again various dialects) :)

I suppose having something like the r5rs for ruby (r1rr?:), and marking
own extensions as exactly that - extensions, would help. Especially if
things which can be brought in with libraries and other ruby modules are
offered as modules to the 'true' ruby (i.e. one that is only "r1rr" compliant).

Most manuals of scheme implementations e.g. refer to r4/5rs for all
the stuff, and document things not implemented or extensions. This way
you can, if you (have to) port from one imp to another, easily locate
all possible problems. Now if you offered modules which offer functionalities
in other ruby interpreters, and say "when you go from ruby-X to matz-ruby,
just require 'ruby-X-compliance', well ...


-Martin