D - D alpha compiler
- Walter (5/5) Dec 08 2001 This is mainly to help along discussion of language features and to see ...
- Russ Lewis (8/13) Dec 08 2001 Would you like us to post bugs (other than not-implemented-features list...
- Walter (9/20) Dec 08 2001 what
- Russ Lewis (14/14) Dec 08 2001 Bug 0001: Trailing (superfluous) semicolons cause syntax errors.
- Pavel Minayev (8/17) Dec 09 2001 early
- Russ Lewis (9/9) Dec 09 2001 I use it all over my MSVC code.
- Walter (6/15) Dec 09 2001 Ok, I'll fix it to allow empty declarations, mainly to be symmetric with
- Russ Lewis (50/50) Dec 08 2001 Bug 0002: Link problems
- Pavel Minayev (30/36) Dec 09 2001 ?WS@@YAAAVistream@@AAV1@@Z
-
Walter
(4/10)
Dec 09 2001
It does now.
- Walter (9/32) Dec 09 2001 works:
- Russ Lewis (10/16) Dec 09 2001 Yeah, that seemed odd, but I found that syntax in the sample a.d. So I ...
- Russ Lewis (10/10) Dec 08 2001 I tried to use the compiler to link in a .lib file with something I was
- Pavel Minayev (8/13) Dec 09 2001 compiler
- Walter (8/13) Dec 09 2001 compiler
- Pavel Minayev (31/31) Dec 09 2001 Program consists of two files:
- Pavel Minayev (9/9) Dec 09 2001 Now even more funny. I've made all identifiers in mod1
- Walter (3/12) Dec 09 2001 Ok, these are fixed. -Walter
- Axel Kittenberger (4/10) Dec 09 2001 Buck! The license in the download that seems to cover now this
- Walter (6/16) Dec 09 2001 While I intend to do some sort of open source license in the future, for...
- a (5/10) Dec 09 2001 You'll have to let us know how that goes. Frankly, I'm not in the mood
- Russ Lewis (12/15) Dec 09 2001 I've got it copied over to my Linux box to try it out with Wine. Troubl...
- Walter (6/10) Dec 09 2001 It's specifically a Win32 executable, not a DOS one. It doesn't push the...
- Christof Meerwald (14/16) Dec 15 2001 It does work with Wine (at least with Wine-20011108)
- Walter (6/22) Dec 15 2001 Cool!
- Walter (5/14) Dec 09 2001 multiple
- Axel Kittenberger (23/28) Dec 10 2001 I work now a while in the OpenSource Environment, there might be valid
- Axel Kittenberger (4/6) Dec 10 2001 A painfull error, of course I mean ... assignment like the *FSF* does
- Russ Lewis (7/7) Dec 09 2001 It's kind of a triviality, but gcc's -MM (list includes) is very useful ...
This is mainly to help along discussion of language features and to see what fundamental issues I've overlooked! ftp://ftp.digitalmars.com/dmdalpha.zip Enjoy. -Walter
Dec 08 2001
Walter wrote:This is mainly to help along discussion of language features and to see what fundamental issues I've overlooked! ftp://ftp.digitalmars.com/dmdalpha.zip Enjoy. -WalterWould you like us to post bugs (other than not-implemented-features listed in the docs)? -- The Villagers are Online! http://villagersonline.com .[ (the fox.(quick,brown)) jumped.over(the dog.lazy) ] .[ (a version.of(English).(precise.more)) is(possible) ] ?[ you want.to(help(develop(it))) ]
Dec 08 2001
"Russ Lewis" <spamhole-2001-07-16 deming-os.org> wrote in message news:3C12991D.67140D22 deming-os.org...Walter wrote:whatThis is mainly to help along discussion of language features and to seeinfundamental issues I've overlooked! ftp://ftp.digitalmars.com/dmdalpha.zip Enjoy. -WalterWould you like us to post bugs (other than not-implemented-features listedthe docs)?I'm absolutely interested in any and all bug reports. Post away, there's nothing secret here! As for the bugs listed in the doc, I'm interested in what priorities people have for them. I need to get it whipped into shape before my DDJ article on D gets published! -Walter
Dec 08 2001
Bug 0001: Trailing (superfluous) semicolons cause syntax errors. I know, I know, all the style purists hate me for this...but somewhere, early when I learned C++, I got into the habit of adding superfluous semicolons after my functions and other blocks: void foo() { .... }; It's ugly (to most people's eyes), but legal (I think) -- The Villagers are Online! http://villagersonline.com .[ (the fox.(quick,brown)) jumped.over(the dog.lazy) ] .[ (a version.of(English).(precise.more)) is(possible) ] ?[ you want.to(help(develop(it))) ]
Dec 08 2001
"Russ Lewis" <spamhole-2001-07-16 deming-os.org> wrote in message news:3C12B1C5.47154D71 deming-os.org...Bug 0001: Trailing (superfluous) semicolons cause syntax errors.I know, I know, all the style purists hate me for this...but somewhere,earlywhen I learned C++, I got into the habit of adding superfluous semicolonsaftermy functions and other blocks: void foo() { .... }; It's ugly (to most people's eyes), but legal (I think)Not sure. I might be wrong, but AFAIK VC++ doesn't allow such things. Borland compilers do. Is it in ANSI C++ or not, I wonder? Not sure I'd like to see it be legal in D, anyhow.
Dec 09 2001
I use it all over my MSVC code. Frankly, any superfluous semicolons should be treated by the compiler as null statements. I know that that is true in code, I can't swear that it's accurate in function body declarations...but I think that it's true there, too. -- The Villagers are Online! http://villagersonline.com .[ (the fox.(quick,brown)) jumped.over(the dog.lazy) ] .[ (a version.of(English).(precise.more)) is(possible) ] ?[ you want.to(help(develop(it))) ]
Dec 09 2001
Ok, I'll fix it to allow empty declarations, mainly to be symmetric with allowing empty statements. -Walter "Russ Lewis" <spamhole-2001-07-16 deming-os.org> wrote in message news:3C12B1C5.47154D71 deming-os.org...Bug 0001: Trailing (superfluous) semicolons cause syntax errors. I know, I know, all the style purists hate me for this...but somewhere,earlywhen I learned C++, I got into the habit of adding superfluous semicolonsaftermy functions and other blocks: void foo() { .... }; It's ugly (to most people's eyes), but legal (I think)
Dec 09 2001
Bug 0002: Link problems I compiled the following source file, wanting to test out how the GC works: import stdio; class Foo { static this() { printf("%p ",this); } ~this () { printf("~%p ",this); } } int main() { { Foo ptr = new Foo; printf("x"); } printf("x"); long i; for(i=0; i<1000*1000*1000; i++); printf("x"); return 0; } My makefile was as follows: russ.exe: russ.obj link ..\lib\phobos.lib ..\lib\snn.lib russ.obj russ.obj: russ.d mars russ.d -I..\src\phobos I get the following errors on the link: link ..\lib\phobos.lib ..\lib\snn.lib russ.obj OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved ..\lib\snn.lib(stream) Offset 3CFB1H Record Type 00C3 Error 1: Previous Definition Different : ?WS YAAAVistream AAV1 Z (istream &c decl WS(istream &)) ..\lib\snn.lib(_wfopen) Offset 51C1DH Record Type 00C3 Error 1: Previous Definition Different : __WFOPEN ..\lib\snn.lib(wconstar) Error 42: Symbol Undefined _wmain ..\lib\snn.lib(wwinstar) Error 42: Symbol Undefined _wWinMain 16 ..\lib\snn.lib(winstart) Error 42: Symbol Undefined _WinMain 16 --- errorlevel 5 I have never used DM compilers before, so I downloaded dm823c.zip, extracted it, dmdalpha.zip and extracted it, and then copied all the files in the dmd/ directory over into the corresponding ones in dm/ -- The Villagers are Online! http://villagersonline.com .[ (the fox.(quick,brown)) jumped.over(the dog.lazy) ] .[ (a version.of(English).(precise.more)) is(possible) ] ?[ you want.to(help(develop(it))) ]
Dec 08 2001
"Russ Lewis" <spamhole-2001-07-16 deming-os.org> wrote in message news:3C12B2C8.949F65F3 deming-os.org...I get the following errors on the link: link ..\lib\phobos.lib ..\lib\snn.lib russ.obj OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved ..\lib\snn.lib(stream) Offset 3CFB1H Record Type 00C3 Error 1: Previous Definition Different :?WS YAAAVistream AAV1 ZUse a different command to link OBJs: sc russ.obj Works fine for me. I had modified the program a little: import stdio; class Foo { this() { printf("%p created\n", this); } ~this() { printf("%p destroyed\n", this); } } int main() { { Foo ptr = new Foo; printf("ptr %p out of scope\n", ptr); ptr = cast(Foo) null; // no effect } printf("waiting for gc...\n"); for (long i = 0; i < 1000*1000; i++); printf("done\n"); return 0; } Now when I run it, Foo gets created but is never destroyed, even with 1000000000 iterations of loop! Shouldn't the GC run at the end of the program anyhow? Also note one weird thing. null is a void*, and is incompatible with any other pointers, requiring explicit cast! This should definitely be changed...
Dec 09 2001
"Pavel Minayev" <evilone omen.ru> wrote in message news:9uvcm8$2dng$1 digitaldaemon.com...Now when I run it, Foo gets created but is never destroyed, even with 1000000000 iterations of loop! Shouldn't the GC run at the end of the program anyhow?It does now. <g>Also note one weird thing. null is a void*, and is incompatible with any other pointers, requiring explicit cast! This should definitely be changed...Hmm. I've seen different positions on this!
Dec 09 2001
"Russ Lewis" <spamhole-2001-07-16 deming-os.org> wrote in message news:3C12B2C8.949F65F3 deming-os.org...Bug 0002: Link problems I compiled the following source file, wanting to test out how the GCworks:import stdio; class Foo { static this() { printf("%p ",this); }The static is an error, it is now diagnosed.~this () { printf("~%p ",this); } } int main() { { Foo ptr = new Foo; printf("x"); } printf("x"); long i; for(i=0; i<1000*1000*1000; i++);Empty loops should be {}, this is now diagnosed.printf("x"); return 0; } My makefile was as follows: russ.exe: russ.obj link ..\lib\phobos.lib ..\lib\snn.lib russ.objThis command will link in the entire libraries, instead of just searching them. Try: sc russ.obj to link.
Dec 09 2001
Walter wrote:The static is an error, it is now diagnosed.Yeah, that seemed odd, but I found that syntax in the sample a.d. So I guess it's an error there :)Empty loops should be {}, this is now diagnosed.(slap forehead) Yeah, that was a requirement, wasn't it?This command will link in the entire libraries, instead of just searching them. Try: sc russ.obj to link.Thanks! -- The Villagers are Online! http://villagersonline.com .[ (the fox.(quick,brown)) jumped.over(the dog.lazy) ] .[ (a version.of(English).(precise.more)) is(possible) ] ?[ you want.to(help(develop(it))) ]
Dec 09 2001
I tried to use the compiler to link in a .lib file with something I was compiling, since I've seen that done on gcc. I don't know if the DM d compiler supports that sort of thing, but instead of reporting an error I get an "Illegal Operation" window with the following line: mars russ.d -I..\src\phobos ..\lib\phobos.lib -- The Villagers are Online! http://villagersonline.com .[ (the fox.(quick,brown)) jumped.over(the dog.lazy) ] .[ (a version.of(English).(precise.more)) is(possible) ] ?[ you want.to(help(develop(it))) ]
Dec 08 2001
"Russ Lewis" <spamhole-2001-07-16 deming-os.org> wrote in message news:3C12B418.BF0C42F3 deming-os.org...I tried to use the compiler to link in a .lib file with something I was compiling, since I've seen that done on gcc. I don't know if the DM dcompilersupports that sort of thing, but instead of reporting an error I get an"IllegalOperation" window with the following line: mars russ.d -I..\src\phobos ..\lib\phobos.libIt might have just treated the LIB file as a D program... probably not the best idea. Anyhow, you should do it when linking: mars russ.d -I..\src\phobos sc russ.obj phobos.lib
Dec 09 2001
"Russ Lewis" <spamhole-2001-07-16 deming-os.org> wrote in message news:3C12B418.BF0C42F3 deming-os.org...I tried to use the compiler to link in a .lib file with something I was compiling, since I've seen that done on gcc. I don't know if the DM dcompilersupports that sort of thing, but instead of reporting an error I get an"IllegalOperation" window with the following line: mars russ.d -I..\src\phobos ..\lib\phobos.libThe mars executable doesn't handle the link step, you need to link separately using sc: sc russ.obj should do it.
Dec 09 2001
Program consists of two files: // mod1.d import mod2; char[] name() { return "EvilOne"; } int main(char[][] args) { greet(); } // mod2.d import mod1; import stdio; void greet() { printf(name()); } First, I've compiled it as follows (repeating -I stuff omitted): > mars mod1.d mod2.d mod1.d(10): undefined identifier greet OK, now vice-versa: > mars mod2.d mod1.d mod2.d(7): undefined identifier name Then I decided to compile them separately: > mars mod1.d !!!Works!!! > mars mod2.d Internal error: ..\ztc\cgcs.c 348 Here, the order doesn't matter. mod2 always fails to compile. Wassup?
Dec 09 2001
Now even more funny. I've made all identifiers in mod1 fully qualified: // mod1.d, line 10 mod2.greet(); Compiling: > mars mod1.d mod2.d mod1.d(10): undefined identifier Expression::toCBuffer('import').greet.greet ?WHAT THE?
Dec 09 2001
Ok, these are fixed. -Walter "Pavel Minayev" <evilone omen.ru> wrote in message news:9uvct6$2dq0$1 digitaldaemon.com...Now even more funny. I've made all identifiers in mod1 fully qualified: // mod1.d, line 10 mod2.greet(); Compiling: > mars mod1.d mod2.d mod1.d(10): undefined identifier Expression::toCBuffer('import').greet.greet ?WHAT THE?
Dec 09 2001
Walter wrote:This is mainly to help along discussion of language features and to see what fundamental issues I've overlooked! ftp://ftp.digitalmars.com/dmdalpha.zip Enjoy.Buck! The license in the download that seems to cover now this project doesn't look like something I like .... - Axel
Dec 09 2001
While I intend to do some sort of open source license in the future, for the moment I think it's best that it be given some time to gel before multiple incompatible versions appear <g>. A colleague of mine is investigating what it would take to hook it up to GCC's back end. "Axel Kittenberger" <axel dtone.org> wrote in message news:9v0gf1$qt$1 digitaldaemon.com...Walter wrote:This is mainly to help along discussion of language features and to see what fundamental issues I've overlooked! ftp://ftp.digitalmars.com/dmdalpha.zip Enjoy.Buck! The license in the download that seems to cover now this project doesn't look like something I like .... - Axel
Dec 09 2001
Walter wrote:While I intend to do some sort of open source license in the future, for the moment I think it's best that it be given some time to gel before multiple incompatible versions appear <g>. A colleague of mine is investigating what it would take to hook it up to GCC's back end.You'll have to let us know how that goes. Frankly, I'm not in the mood to buy, install and setup windows in a semi-comfortable manner just to test an alpha compiler. Dan
Dec 09 2001
a wrote:You'll have to let us know how that goes. Frankly, I'm not in the mood to buy, install and setup windows in a semi-comfortable manner just to test an alpha compiler.I've got it copied over to my Linux box to try it out with Wine. Trouble is, I've never used Wine before...and I don't have it configured properly yet. Speaking of which...is mars.exe specifically a Windows executable, or might it be worth trying in the Linux DOS Emulator (dosemu). Ofc, Walter, I don't expect you to support running your compiler under Wine...but I am very curious about whether it might work or not :) -- The Villagers are Online! http://villagersonline.com .[ (the fox.(quick,brown)) jumped.over(the dog.lazy) ] .[ (a version.of(English).(precise.more)) is(possible) ] ?[ you want.to(help(develop(it))) ]
Dec 09 2001
It's specifically a Win32 executable, not a DOS one. It doesn't push the API very hard, so if Wine works at all, then mars.exe should <g>. "Russ Lewis" <spamhole-2001-07-16 deming-os.org> wrote in message news:3C1429BB.ED2E6D27 deming-os.org...Speaking of which...is mars.exe specifically a Windows executable, ormight it beworth trying in the Linux DOS Emulator (dosemu). Ofc, Walter, I don't expect you to support running your compiler underWine...but Iam very curious about whether it might work or not :)
Dec 09 2001
On Sun, 09 Dec 2001 20:19:23 -0700, Russ Lewis wrote:Ofc, Walter, I don't expect you to support running your compiler under Wine...but I am very curious about whether it might work or not :)It does work with Wine (at least with Wine-20011108) You only have to make sure that all filenames are in lowercase only (if you want to install DM on a case-sensitive filesystem like ext2) And you have to use "--" on the wine command line to make wine stop parsing command line options, e.g. use wine -- c:/dmd/bin/mars -o sieve.d instead of wine c:/dmd/bin/mars -o sieve.d bye, Christof -- http://cmeerw.cjb.net JID: cmeerw jabber.at mailto cmeerw at web.de ...and what have you contributed to the Net?
Dec 15 2001
Cool! "Christof Meerwald" <cmeerw web.de> wrote in message news:9vfoo4$ms4$1 digitaldaemon.com...On Sun, 09 Dec 2001 20:19:23 -0700, Russ Lewis wrote:Wine...but IOfc, Walter, I don't expect you to support running your compiler underyouam very curious about whether it might work or not :)It does work with Wine (at least with Wine-20011108) You only have to make sure that all filenames are in lowercase only (ifwant to install DM on a case-sensitive filesystem like ext2) And you have to use "--" on the wine command line to make wine stopparsingcommand line options, e.g. use wine -- c:/dmd/bin/mars -o sieve.d instead of wine c:/dmd/bin/mars -o sieve.d bye, Christof -- http://cmeerw.cjb.net JID: cmeerw jabber.at mailto cmeerw at web.de ...and what have you contributed to the Net?
Dec 15 2001
"a" <a b.c> wrote in message news:3C14164B.913EF689 b.c...Walter wrote:theWhile I intend to do some sort of open source license in the future, formultiplemoment I think it's best that it be given some time to gel beforewhatincompatible versions appear <g>. A colleague of mine is investigatingI wouldn't expect anyone to. -Walterit would take to hook it up to GCC's back end.You'll have to let us know how that goes. Frankly, I'm not in the mood to buy, install and setup windows in a semi-comfortable manner just to test an alpha compiler.
Dec 09 2001
Walter wrote:While I intend to do some sort of open source license in the future, for the moment I think it's best that it be given some time to gel before multiple incompatible versions appear <g>. AI work now a while in the OpenSource Environment, there might be valid concerns I do understand (If you want to make money/finance yourself) but this particular one of multiple version is in practise baseless, never underestimate the power of the "official" distribution. Beeing on the other side I know how few chamces one has at the community maintainting an non official version of an OpenSource Package. I would suggest distiebuting under GPL (also your libraries) or one of the very GPL-like licenses as this gives commercial competiton great drawbacks as they have to publicate their modifications, or globassy have to move one of their applications to GPL if they use your library. Then require from patch contributions a copyright assignment like the GPL does (and some other projects mainly backed by companies (meaning most of the devs work there)), this allows -you- to link the code against your libraries without having to OpenSoure them, allows you to sell superceded version parallell to the GPL version (ie QT) allows you to sell the GPL libraries with a non GPL license for people who want to pay for nat having to transiest to GPL (see sleepycat.com and their buisness model)colleague of mine is investigating what it would take to hook it up to GCC's back end.GPL, or until your willing to workaround with files. However the FSF is doing pretty strong politics with gcc, and it has its reason why the GCC companents are interwoven with each other, and do no longer work on file interfacing, so they are able to force all frontends to be GPL or having to do pretty unpleasing workarounds (I do not yet know of any)
Dec 10 2001
one of their applications to GPL if they use your library. Then require from patch contributions a copyright assignment like the GPL does (andA painfull error, of course I mean ... assignment like the *FSF* does Generally sorry for the aou mismatches I'm currently playing with Dvorak keyboard layout... - Axel
Dec 10 2001
It's kind of a triviality, but gcc's -MM (list includes) is very useful to me. Having that work on the D compiler would be a high priority for me :) -- The Villagers are Online! http://villagersonline.com .[ (the fox.(quick,brown)) jumped.over(the dog.lazy) ] .[ (a version.of(English).(precise.more)) is(possible) ] ?[ you want.to(help(develop(it))) ]
Dec 09 2001