D.gnu - gdmd-0.1.tar.gz
- Ben Hinkle (69/69) Jan 31 2004 Posted to my web site http://home.comcast.net/~benhinkle/gdmd-0.1.tar.gz
- Walter (3/3) Feb 01 2004 Nice work! BTW, you can 'fake' gc just by having it call C's malloc and
- Olaf Rogalsky (14/16) Feb 02 2004 I almost lost hope on GNU-D. Thank you very much so far. The last
Posted to my web site http://home.comcast.net/~benhinkle/gdmd-0.1.tar.gz New features: - compiles arbitrary number of toplevel functions - basic C-style constructs: if statements, loops, labels, arithmetic, comparison - templates (Walter was right- this was easy. It just worked with minimal intervention) - function overloading Still missing: - arrays - classes - GC - exceptions - asserts - D function name mangling - ... everything else ... I think next up are dynamic arrays or classes. The dynamic array support will probably have to be bootstrapped without any GC since the GC doesn't exist yet. Maybe I'll get lucky and the GC will compile without ever needing to allocate anything. -Ben Here is one of the test files gdmd can now compile and run: module hello2; extern (C) void printf(char*,...); template Foo(T) { extern (C) /* needed for now since it looks like mangling isn't right*/ T addone(T x) {return x+1;} } alias Foo!(int).addone fooAdd; /* try some overloading */ int hello_fcn(int y) { return y + 5; } double hello_fcn(double y) { return y + 6.0; /* must be 6.0 not 6 since const folding doesn't cast */ } extern (C) /* declare as extern (C) until D's main works */ int main(char[][] args) { printf("hello world.\n"); printf("got %d.\n",hello_fcn(4)); printf("got %g.\n",hello_fcn(4.0)); int x; /* note initializers don't work yet */ int y; y = 4; x = y; L4: x = x+y; /* labels and basic arithmetic work */ printf("x=%d, y=%d x-y=%d\n",x,y,x-y); int[] da; if (x > 10) goto FOO; /* printf("len=%u\n",da.length); length property doesn't work */ int u; /* declaration inside for loop initialization doesn't work */ GOGO: for (u=0; (u-2) <= 20; u++) { if (u == 9) continue; printf("howdy %d\n",u); if (u==10) goto L4; /* jumping around seems ok */ } FOO: int w; w = 6; w = fooAdd(w); /* template functions seem to work just fine */ printf("%d\n",w); return 0; }
Jan 31 2004
Nice work! BTW, you can 'fake' gc just by having it call C's malloc and never worrying about it. On the other hand, dmd's gc is pretty portable, after all, it already works on win32 and linux.
Feb 01 2004
Ben Hinkle wrote:Posted to my web site http://home.comcast.net/~benhinkle/gdmd-0.1.tar.gzI almost lost hope on GNU-D. Thank you very much so far. The last time I tried to compile GCC (3.0.xx) on my old IBM RS/6000 workstation (PowerPC with AIX 4.1.4), it failed miserably on the triple test. Perhaps I should try to give it another chance and then get D running :-). Olaf -- +-------------------------------------------------------------------+ I Dr. rer. nat. Olaf Rogalsky Institut fuer Theoretische Physik I I Universitaet Erlangen-Nuernberg I I Tel.: 09131 8528440 Staudtstr. 7 B3 I I Fax.: 09131 8528444 D-91058 Erlangen I | rogalsky theorie1.physik.uni-erlangen.de I +-------------------------------------------------------------------+
Feb 02 2004