Pre-Announcing Project X
- Posted by David Cuny <dcuny at LANSET.COM> Jul 20, 1998
- 452 views
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