Jump to page: 1 2
Thread overview
Creation of a Build tool on top of the D compiler
Jan 27, 2007
kris
Jan 27, 2007
Sean Kelly
Jan 27, 2007
Hasan Aljudy
Jan 27, 2007
kris
Jan 27, 2007
Andrey Khropov
Jan 27, 2007
Sean Kelly
Jan 27, 2007
Bill Baxter
Jan 27, 2007
Sean Kelly
Jan 28, 2007
BCS
Jan 27, 2007
BCS
Jan 27, 2007
kris
Jan 27, 2007
BCS
Jan 27, 2007
kris
Jan 27, 2007
Derek Parnell
Jan 27, 2007
BCS
January 26, 2007
Now we have dependency information in the verbose output of DMD. But one thing is still missing:

pragma( lib, "mylib.so" );

Can we have that in the output also? "pragma<\t>lib<\t>mylib.so"


January 27, 2007
Frank Benoit (keinfarbton) wrote:
> Now we have dependency information in the verbose output of DMD.
> But one thing is still missing:
> 
> pragma( lib, "mylib.so" );
> 
> Can we have that in the output also?
> "pragma<\t>lib<\t>mylib.so"


Er, why not just have a compiler option to do a simplistic "build" instead? It already loads and parses /all/ imported modules, but then apparently discards everything not noted on the command line.

Wouldn't it be a whole lot more efficient if the compiler simply retained all those parsed modules for subsequent codegen and linking?

Sure, a build tool is still really handy for generating libs, and so on. But the basic compilation/linking task really ought to be handled by the compiler itself. I mean, c'mon -- the compiler has an option to /run/ the resultant executable ... should at least be able to /create/ it first?

- Kris
January 27, 2007
kris wrote:
> Frank Benoit (keinfarbton) wrote:
>> Now we have dependency information in the verbose output of DMD.
>> But one thing is still missing:
>>
>> pragma( lib, "mylib.so" );
>>
>> Can we have that in the output also?
>> "pragma<\t>lib<\t>mylib.so"
> 
> 
> Er, why not just have a compiler option to do a simplistic "build" instead? It already loads and parses /all/ imported modules, but then apparently discards everything not noted on the command line.
> 
> Wouldn't it be a whole lot more efficient if the compiler simply retained all those parsed modules for subsequent codegen and linking?

Seems like it would.

> Sure, a build tool is still really handy for generating libs, and so on. But the basic compilation/linking task really ought to be handled by the compiler itself. I mean, c'mon -- the compiler has an option to /run/ the resultant executable ... should at least be able to /create/ it first?

Good point :-)  I guess the run option currently only works for single-module apps, huh?


Sean
January 27, 2007

Sean Kelly wrote:
> kris wrote:
>> Sure, a build tool is still really handy for generating libs, and so on. But the basic compilation/linking task really ought to be handled by the compiler itself. I mean, c'mon -- the compiler has an option to /run/ the resultant executable ... should at least be able to /create/ it first?
> 
> Good point :-)  I guess the run option currently only works for single-module apps, huh?


I thought it'd also work if you pass all the file names at the command line, heh.
January 27, 2007
Hasan Aljudy wrote:
> 
> 
> Sean Kelly wrote:
> 
>> kris wrote:
>>
>>> Sure, a build tool is still really handy for generating libs, and so on. But the basic compilation/linking task really ought to be handled by the compiler itself. I mean, c'mon -- the compiler has an option to /run/ the resultant executable ... should at least be able to /create/ it first?
>>
>>
>> Good point :-)  I guess the run option currently only works for single-module apps, huh?
> 
> 
> 
> I thought it'd also work if you pass all the file names at the command line, heh.

heh - it will, but that's impractical to do by hand [1]. Especially when you can't successfully utilize certain types of D code from a library -- such as templates.

[1] you can always create make files or whatever, but that requires setting up the makefile and keeping it up-to-date. Thus, Build/Bud is a better solution than makefiles for many people. Yet, there's no need for a build tool for the basic compilation cycle, particularly when the compiler has already parsed /all/ the relevant files.
January 27, 2007
Reply to kris,

> Frank Benoit (keinfarbton) wrote:
> 
>> Now we have dependency information in the verbose output of DMD. But
>> one thing is still missing:
>> 
>> pragma( lib, "mylib.so" );
>> 
>> Can we have that in the output also?
>> "pragma<\t>lib<\t>mylib.so"
> Er, why not just have a compiler option to do a simplistic "build"
> instead? It already loads and parses /all/ imported modules, but then
> apparently discards everything not noted on the command line.
> 
> Wouldn't it be a whole lot more efficient if the compiler simply
> retained all those parsed modules for subsequent codegen and linking?
> 
> Sure, a build tool is still really handy for generating libs, and so
> on. But the basic compilation/linking task really ought to be handled
> by the compiler itself. I mean, c'mon -- the compiler has an option to
> /run/ the resultant executable ... should at least be able to /create/
> it first?
> 
> - Kris
> 

what If I have a 200+ module project that take ten minutes to compile (lots of templates say) a build only what's needed strategy is still needed. having bud walk the whole tree and still only build what is needed is still useful. I don't think /that/ functionality should go into the compiler.


January 27, 2007
On Sat, 27 Jan 2007 00:24:09 +0100, Frank Benoit (keinfarbton) wrote:

> Now we have dependency information in the verbose output of DMD. But one thing is still missing:
> 
> pragma( lib, "mylib.so" );
> 
> Can we have that in the output also? "pragma<\t>lib<\t>mylib.so"

Just a reminder that this sort of thing might be placed into a D compiler but it should not be a part of the D Programming Language specification.

-- 
Derek Parnell
January 27, 2007
BCS wrote:
> Reply to kris,
> 
>> Frank Benoit (keinfarbton) wrote:
>>
>>> Now we have dependency information in the verbose output of DMD. But
>>> one thing is still missing:
>>>
>>> pragma( lib, "mylib.so" );
>>>
>>> Can we have that in the output also?
>>> "pragma<\t>lib<\t>mylib.so"
>>
>> Er, why not just have a compiler option to do a simplistic "build"
>> instead? It already loads and parses /all/ imported modules, but then
>> apparently discards everything not noted on the command line.
>>
>> Wouldn't it be a whole lot more efficient if the compiler simply
>> retained all those parsed modules for subsequent codegen and linking?
>>
>> Sure, a build tool is still really handy for generating libs, and so
>> on. But the basic compilation/linking task really ought to be handled
>> by the compiler itself. I mean, c'mon -- the compiler has an option to
>> /run/ the resultant executable ... should at least be able to /create/
>> it first?
>>
>> - Kris
>>
> 
> what If I have a 200+ module project that take ten minutes to compile (lots of templates say) a build only what's needed strategy is still needed. having bud walk the whole tree and still only build what is needed is still useful. I don't think /that/ functionality should go into the compiler.

Yes, I agree. The compiler should still handle the basic requirement though. After all, currently loads /and/ parses every single one of those 200+ modules regardless (if they're imported in any fashion)

January 27, 2007
kris wrote:

> Especially when you
> can't successfully utilize certain types of D code from a library -- such as
> templates.

I strongly believe that compiler *should* be able to compile templates to a some intermediate form and put it into libraries. Otherwise you will be forced to create d 'header' files for your template-enabled libraries or even use them as source code only.

-- 
AKhropov
January 27, 2007
Andrey Khropov wrote:
> kris wrote:
> 
>> Especially when you
>> can't successfully utilize certain types of D code from a library -- such as
>> templates.
> 
> I strongly believe that compiler *should* be able to compile templates to a
> some intermediate form and put it into libraries. Otherwise you will be forced
> to create d 'header' files for your template-enabled libraries or even use them
> as source code only.

C++ tried this with "export" and it's been a bit of a fiasco.  Last I heard, EDG had it implemented (they were the only compiler team to have done so), and the benefit didn't seem all that great.


Sean
« First   ‹ Prev
1 2