On Fri, Jun 21, 2013 at 4:59 PM, Nathan Kurz <[email protected]> wrote:
> As/if Clownfish moves to having more of a runtime role (which I think
> it has to if truly non-fragile ABI is desired) it seems like it would
> have a lot in common with the Objective C runtimes.  In particular,
> the Étoilé runtime seems to have a lot of the same features you are
> looking for.

Clownfish is a symbiotic object system.  Though it may be used standalone, it
is designed to pair with a "host" dynamic language, not to provide a platform
on top of which the dynamic language can run.

Étoilé aims to provide "a metaobject protocol flexible enough to implement
Objective-C and other languages of interest"[1], using prototype-based
inheritance and smalltalk-style messaging.  Like the CLI, like Parrot, in
order to attain its goal of fully implementing multiple languages, Étoilé must
provide a feature set which is the *superset* of all features in all supported
languages.

In contrast, the Clownfish object model is deliberately classical and
conservative.  Instead of trying to be all things to all languages, Clownfish
only attempts to provide a *subset* of selected features.

*   Python supports coroutines, Clownfish doesn't.
*   Ruby supports attaching methods to individual objects, Clownfish doesn't.
*   Perl supports list context, Clownfish doesn't.
*   Python, Ruby and Perl all support classical inheritance -- and so does
    Clownfish.

Rather than Étoilé, the two options I'd mention as closest to Clownfish are
GObject/Vala and SWIG/C++.

    http://en.wikipedia.org/wiki/GObject
    http://search.cpan.org/perldoc?Glib::Object::Subclass
    http://en.wikipedia.org/wiki/Vala_%28programming_language%29
    http://www.swig.org/Doc2.0/SWIGPlus.html

However, neither offers a solution to the fragile ABI problem, so they are not
appropriate for CPAN-style distributed development of compiled extensions.
Admittedly, Clownfish instance variables still present fragile ABI problems at
the moment; addressing that issue is very important, in my opinion.

Marvin Humphrey

[1] http://www.jot.fm/issues/issue_2009_01/article4.pdf

Reply via email to