D.gnu - D compiler written in D
- Stephan Wienczny <wienczny web.de> Feb 03 2004
- "Walter" <walter digitalmars.com> Feb 03 2004
- Stephan Wienczny <wienczny web.de> Feb 05 2004
- Marcel Meyer <meyerm fs.tum.de> Feb 06 2004
- Stephan Wienczny <wienczny web.de> Feb 06 2004
- Marcel Meyer <meyerm fs.tum.de> Feb 06 2004
- Stephan Wienczny <wienczny web.de> Feb 07 2004
- Marcel Meyer <meyerm fs.tum.de> Feb 07 2004
- Stephan Wienczny <wienczny web.de> Feb 07 2004
- Ilya Minkov <minkov cs.tum.edu> Feb 07 2004
- Friedrich Dominicus <frido q-software-solutions.com> Feb 09 2004
- "Ben Hinkle" <bhinkle4 juno.com> Feb 06 2004
- Stephan Wienczny <wienczny web.de> Feb 06 2004
Hallo, the GCC efford will improve D's usability. When I tryed into GCC development, I saw that it has a horrible documentation and design. On the long run it might be a good idea to write an new open source compiler supporting D using D. I've been starting such a project, but I'd like to talk about some design issues with somebody else. maybe sombody would even joing my project. What I'd like to do better than GCC: 1. As language indepent tree structure as possible. 2. Making it a real cross-compiler. If I want to use GCC as cross compiler, I've got to recompile GCC. Why do we have dynamic libraries? 3. Making it easier to write and integrate a language frontend. 4. Integrating a compile manager (like make) into the compiler driver to make source easily platform independent. How I would design such a thing: My compiler should be modular. Compiler driver: Managing compile process. Language frontend: Creating syntax tree. Optimizer: Doing non platform specific optimisations. Backend: System specific codegeneator doing system specific optimisation The syntax-tree can be split into two parts. The first one are deklarations (like classes) which indirectly result in code (eg. for construction etc.) and implementations (eg. functions) In my dreams the tree structure should be albe to represent the complete D syntax as it is a very advanced one. Being able to represent D's syntax C++, C, maybe Java are not a great problem. What do you think? At the end a great praise to Walter for his work.
Feb 03 2004
The D front end code would be pretty easy to translate into D, as I tend to write C++ code using 'D style' anyway. Creating a new optimizer and back end is an enormous project, though. Wouldn't it be easier to clean up GCC? "Stephan Wienczny" <wienczny web.de> wrote in message news:bvosu7$rf2$1 digitaldaemon.com...Hallo, the GCC efford will improve D's usability. When I tryed into GCC development, I saw that it has a horrible documentation and design. On the long run it might be a good idea to write an new open source compiler supporting D using D. I've been starting such a project, but I'd like to talk about some design issues with somebody else. maybe sombody would even joing my project. What I'd like to do better than GCC: 1. As language indepent tree structure as possible. 2. Making it a real cross-compiler. If I want to use GCC as cross compiler, I've got to recompile GCC. Why do we have dynamic libraries? 3. Making it easier to write and integrate a language frontend. 4. Integrating a compile manager (like make) into the compiler driver to make source easily platform independent. How I would design such a thing: My compiler should be modular. Compiler driver: Managing compile process. Language frontend: Creating syntax tree. Optimizer: Doing non platform specific optimisations. Backend: System specific codegeneator doing system specific optimisation The syntax-tree can be split into two parts. The first one are deklarations (like classes) which indirectly result in code (eg. for construction etc.) and implementations (eg. functions) In my dreams the tree structure should be albe to represent the complete D syntax as it is a very advanced one. Being able to represent D's syntax C++, C, maybe Java are not a great problem. What do you think? At the end a great praise to Walter for his work.
Feb 03 2004
Walter wrote:The D front end code would be pretty easy to translate into D, as I tend to write C++ code using 'D style' anyway. Creating a new optimizer and back end is an enormous project, though. Wouldn't it be easier to clean up GCC?
I don't think that it is that easy to persuade the gcc developers to clean GCC as they are to busy implementing SSA. If you see how hard it is to integrate a new language frontend into GCC you will see that it has flaws. Flaws I'm trying to cover. I think its possible to "reuse" GCC code e.g. for the code generators. When translating to D they should be cleaned. P.s.: What do you think about SSA? Is it that big hit in optimization the GCC people are saying?
Feb 05 2004
Stephan Wienczny wrote:On the long run it might be a good idea to write an new open source compiler supporting D using D. I've been starting such a project,
oh man, everytime I think I have found a nice project which I could sell a professor as my "Diplomarbeit" someone else starts it a few days later... Is this annoying ;-) [hey, just to be sure - that was a joke *g*] Nonetheless, I would like the idea of a DCC - especially if all those conf and "make" thinks are somehow implemented. But do you think this is doable in a senseable time? I'm not yet very deep in compiler builds - so I'm quite naive. But everytime I think "what can be done" I just see sooo much work - just like making a really good GUI-toolkit (more like QT) for D - and then I just keep running away crying ;-). What's after a GUI-tk? A toolcollection - hmm, DING (DING is not GNU) ;-). And then a kernel? :-D However, count on me at least as a "break-my-machine-beta-tester". Marcel
Feb 06 2004
Marcel Meyer wrote:Stephan Wienczny wrote:On the long run it might be a good idea to write an new open source compiler supporting D using D. I've been starting such a project,
oh man, everytime I think I have found a nice project which I could sell a professor as my "Diplomarbeit" someone else starts it a few days later... Is this annoying ;-) [hey, just to be sure - that was a joke *g*]
Nonetheless, I would like the idea of a DCC - especially if all those conf and "make" thinks are somehow implemented. But do you think this is doable in a senseable time? I'm not yet very deep in compiler builds - so I'm quite naive. But everytime I think "what can be done" I just see sooo much work - just like making a really good GUI-toolkit (more like QT) for D - and then I just keep running away crying ;-).
The first thing I thought when starting the project was: "There is a lot of work", but I think I overestimated it. The hardest thing is the backend. Do you know some ASM-Guru that could help? Maybe you want to join in if you have some time.What's after a GUI-tk? A toolcollection - hmm, DING (DING is not GNU) ;-). And then a kernel? :-D
Who told you my agenda? I'm planning a new OS that is as easy to use as windows and open source.However, count on me at least as a "break-my-machine-beta-tester".
Marcel
Feb 06 2004
Stephan Wienczny wrote:Marcel Meyer wrote:Stephan Wienczny wrote:On the long run it might be a good idea to write an new open source compiler supporting D using D. I've been starting such a project,
Nonetheless, I would like the idea of a DCC - especially if all those conf and "make" thinks are somehow implemented. But do you think this is doable in a senseable time? I'm not yet very deep in compiler builds - so I'm quite naive. But everytime I think "what can be done" I just see sooo much work - just like making a really good GUI-toolkit (more like QT) for D - and then I just keep running away crying ;-).
The first thing I thought when starting the project was: "There is a lot of work", but I think I overestimated it. The hardest thing is the backend. Do you know some ASM-Guru that could help?
"backend"-language, you could reuse their ports. I heard the Universität Karlsruhe created some great stuff in during the last year.Maybe you want to join in if you have some time.
[* Nett, das jemand dabei ist, mit dem man auch Deutsch sprechen kannn *]
noch viele deutschsprachige Studis hinzustossen.
Feb 06 2004
Marcel Meyer wrote:Hmm, if you don't reinvent the wheel but search for a nice existing "backend"-language, you could reuse their ports. I heard the Universität Karlsruhe created some great stuff in during the last year.
Do you still know how it was called? Have they published something? Stephan
Feb 07 2004
Stephan Wienczny wrote:Marcel Meyer wrote:Hmm, if you don't reinvent the wheel but search for a nice existing "backend"-language, you could reuse their ports. I heard the Universität Karlsruhe created some great stuff in during the last year.
Do you still know how it was called? Have they published something?
Phew... I already searched for it. But I can't recall. Well, but that was just an example. There are others. How deep is your experience in building compilers? Did you already write some? Despite of some lectures in "formale Sprachen" and a (very) few projects in MI-assembler I don't have any clue what you really need for a compiler. I will start learning for my "Diplomhauptprüfung" the next semester - we'll see what happens ;-). But for now I really can't give you any tips - I guess you're far more qualilfied if you dare to start such a project :-D Is the principle of GCC, source-frontend-intermediate-_language-backend-asm, unique to it? I've never seen any other compiler working like that.
Feb 07 2004
Marcel Meyer wrote:Stephan Wienczny wrote:Marcel Meyer wrote:Hmm, if you don't reinvent the wheel but search for a nice existing "backend"-language, you could reuse their ports. I heard the Universität Karlsruhe created some great stuff in during the last year.
Do you still know how it was called? Have they published something?
Phew... I already searched for it. But I can't recall. Well, but that was just an example. There are others.
I something called Flex. Thats a project they are working on. There has not been any documentation how it works ;-( I want one of the best intermediate languages currently available. What do you think, is it possible generate a syntax tree that a backend can easily convert into asm? Do you really need to have a seperate backend language? I don't think Walter's compiler generates some intermediate language.How deep is your experience in building compilers? Did you already write some? Despite of some lectures in "formale Sprachen" and a (very) few projects in MI-assembler I don't have any clue what you really need for a compiler. I will start learning for my "Diplomhauptprüfung" the next semester - we'll see what happens ;-).
This will be my first one.... I'm quite good at designing software to be flexible and portable. The compiler will _not_ be designed to just compile D. It will be able to compile D, but that is not its only purpose. To be successful we will need C and C++. Maybe Java, Object Pascal. These are the languages I would design my abstract syntax tree for. My current planes for a syntax tree are: 1. As many basic types as possible, defined using templates. Everything being a class in the syntaxtree. Handled by the backend. 2. Different class allocation with and without GC. 3. SSA like expression design.But for now I really can't give you any tips - I guess you're far more qualilfied if you dare to start such a project :-D
I started the project not because I'm more qualified, I started it because I wanted to have such a compiler and nobody else is writing it for me ;) We'll see what happens.Is the principle of GCC, source-frontend-intermediate-_language-backend-asm, unique to it? I've never seen any other compiler working like that.
GCC uses source - syntax tree - RegisterTypeLanguage - symbol the next step will be source - syntax tree - saa representation - RTL - symbol I don't think this will be too fast. Stephan
Feb 07 2004
Marcel Meyer wrote:Hmm, if you don't reinvent the wheel but search for a nice existing "backend"-language, you could reuse their ports. I heard the Universit=E4=
Karlsruhe created some great stuff in during the last year.
I have searched the net up and down on intermediate representations,=20 compiler back-ends, cross-platform low-level language compilers and so=20 on. So far, nothing is as portable as C as an intermediate, with GCC=20 being the second best. The great adbantage if GCC is that's a *real*=20 compiler backend with debug information and other services and not just=20 C. :) One interesting option is TenDRA (www.ten15.org) which uses its binary=20 intermediate representation. There are commercial and free back-ends,=20 but i think i heard somewhere the free x86 back-end was... weak! Looking = at c-- and others doesn't make me particularly optimistic either. I would definately not want to start a new back-end. It would be=20 imaginable to create a correct back-end, and maybe even some optimising=20 back-end, but it still would be no match to current senior ones. They=20 (GCC, DMC, OW) have optimisers with patterns developed in hard work=20 during a decade or more. There is an interesting read from the autor of=20 LCC-Win32 - which generates by orders of magnitude better code than=20 original LCC, but doesn't match the other compilers. And it was 10 years = of work...[* Nett, das jemand dabei ist, mit dem man auch Deutsch sprechen kannn =
=20 och, ich bin mir sicher sollte das mit dem DCC wirklich was werden, wer=
noch viele deutschsprachige Studis hinzustossen.
Wie ich zum Beispiel? -eye/midiclub
Feb 07 2004
Marcel Meyer wrote:Stephan Wienczny wrote:Marcel Meyer wrote:Stephan Wienczny wrote:On the long run it might be a good idea to write an new open source compiler supporting D using D. I've been starting such a project,
Nonetheless, I would like the idea of a DCC - especially if all those conf and "make" thinks are somehow implemented. But do you think this is doable in a senseable time? I'm not yet very deep in compiler builds - so I'm quite naive. But everytime I think "what can be done" I just see sooo much work - just like making a really good GUI-toolkit (more like QT) for D - and then I just keep running away crying ;-).
The first thing I thought when starting the project was: "There is a lot of work", but I think I overestimated it. The hardest thing is the backend. Do you know some ASM-Guru that could help?
I am sure Jacob Navia could be told to be an ASM-Guru too. And I assume he has enough experience with Compiler development. But I'm sure you look after unsolicited co-workers.... And I disagree that you think you overestimated, you underestimated... Regards Friedrich
Feb 09 2004
Googling for "GCC rewrite" turns up an interesting thread on the gcc mailing list http://gcc.gnu.org/ml/gcc/2001-02/msg01037.html Basically everyone knows GCC is a mess but it is hard to write a replacement from scratch. Would be nice to see, though. If you want to be flexible enough to use the native cc compilers you could try to port the DMD front-end source to spit out C code or something. I think Ilya was looking into this approach. -Ben
Feb 06 2004
Ben Hinkle wrote:Googling for "GCC rewrite" turns up an interesting thread on the gcc mailing list http://gcc.gnu.org/ml/gcc/2001-02/msg01037.html Basically everyone knows GCC is a mess but it is hard to write a replacement from scratch. Would be nice to see, though. If you want to be flexible enough to use the native cc compilers you could try to port the DMD front-end source to spit out C code or something. I think Ilya was looking into this approach. -Ben
They know it for years now. 2001... Have a look at what they say: http://gcc.gnu.org/ml/gcc/2001-02/msg01042.html GC, strongly typed... D? Stephan
Feb 06 2004









Stephan Wienczny <wienczny web.de> 