Pre-Announcing Project X

new topic     » topic index » view thread      » older message » newer message

Well, I've leaked it to enough to people over the last couple weeks, so with
Robert hinting at something coming for Linux in the near future (referring
to my Project X), I guess I should come out and say it:

"Project X" is an ANSI C clone of Euphoria.

Tentatively titled "Gnuphoria", it will have a number of features that will
ensure that it is useful, yet non-competitive with "real" Euphoria.

Please note that it is *not* complete. Much of it has been written, but
there's still quite a bit of work to do. If all goes well. I hope to have a
*very* basic demo up and running in a couple of weeks.

And no, I don't have access to any of RDS's code, or algorithms. It's all
coded by me.

Features (should) include:

Coded in ANSI C: First and foremost, that means that the code will be
portable to any platform that supports and 32 bit C compiler. It should
easily port to Linux, for example. I also hope to port it to the Mac,
although the memory handling on the Mac may present some problems.

Only 31 bit Numbers and Sequences: Read this as: if you want atoms and
integer optimizations, use Euphoria. This may not be a permanent limit.

No In Line Assembly: It's that portability thing.

No Binding or Shouding: Binding is a question of portability; shrouding is
pointless when the code when the source to the unshrouder is available.

No Cool Trace Facility: It's that portability thing again. There will be
*something* available, but it won't match Euphoria's tracer.

Less Features: There are primarily two reasons why a feature in Euphoria
would not appear in Gnuphoria: portability, or laziness on my part.

Slower Speed: What did you expect? I don't plan on making Gnuphoria slow,
but there's no way that I can compete against the kind of optimizations and
coding that Robert does with Euphoria.

More Bugs: Pretty much a given.

Less Support: Again, what did you expect?


Here's the FAQ:

Why Write a Euphoria Clone?
=======================
Firstly, so Euphoria could be ported to platforms that Robert is unlikely to
port Euphoria to in the near future, such as Linux and the Macintosh.

Secondly, to link Euphoria to some of the cool libraries that are available
for C compilers. A few come to mind:

- The GNU Allegro game library
- SciTech's MGL library
- Tcl/Tk

Because the licensing of some of these libraries (such as MGL) requires that
the user's source be freely available, it is unlikely that Robert could ever
be convinced to release an "enhanced" version of Euphoria that included
these libraries.

Thirdly, releasing a source code version of Euphoria will hopefully
encourage people to tinker with the language, and Robert can pick and choose
the best of those to add to the "real" Euphoria.


What's Been Done So Far?
=====================
I've got the parser, a basic sequence engine, some of the basic functions
and a bytecode interpreter up and running. So all the individual parts at
there. But putting them together is a bit of a trick - my C is *very* rusty,
and there is still a lot of glue left to write.


Will the Source be Free?
====================
This may sound a bit presumptous, but I *really* don't want to have
Gnuphoria compete with Euphoria. So I'll be looking at a number of different
licensing schemes that will ensure that Gnuphoria can be open, and Euphoria
is by and large uneffected by it.

But, yes - the source will be free.


How Compatible with Euphoria Will It Be?
================================
All the code written in "plain vanilla" Gnuphoria *should* run in Euphoria.
Obviously, the reverse will not hold true, since Euphoria will have features
unavailable in Gnuphoria.


What About the 300 Line Limit?
========================
This is problematic - I certainly don't want to cripple Gnuphoria, but at
the same time, Euphoria's 300 line limit is the biggest incentive to
register Euphoria.

I suspect that this will *not* be a problem. A number of very useful, but
unportable features of Euphoria will simply not be available in Gnuphoria. A
prime example is the ability to call assembly code. So people hoping to get
around the 300 line limit imposed by Euphoria will find no easy way out in
Gnuphoria.

Gnuphoria?
=========
It's a working name. It refers to the compiler I'm using, as well as the
licensing scheme I may adopt. It's certainly better than "Open Euphoria."


Comments? Anyone interested in using something like this?

-- David Cuny

new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu