Thread overview | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
May 17, 2008 DMD 1.030 and 2.014 releases | ||||
---|---|---|---|---|
| ||||
These contain a new way of building that I've wanted to do for a long time. dmd can now build libraries directly, without writing out object files or invoking the librarian. This accelerates library builds by a whopping factor of 3! Besides, it doesn't litter your directories with pointless object files. The library build option has another major coolness feature - before, one module compiles to one object file. With library build, one source file can compile to multiple object files. This cuts down on executable bloat from pulling in object files with irrelevant stuff in them. Another build improvement is when multiple modules are compiled at the same time to build an executable, only one object file is created with the generated code for all modules combined into it. This speeds linking, and also eliminates pointless file detritus. No, having dmd incorporate the linking is probably not going to happen :-(. Librarians are so simple, though, that this is a big win. Yes, both 1.0 and 2.0 dmd's get this (it doesn't affect the language). Another cool new feature is the dmd -man switch. Try it out! Lots of new library stuff, bugfixes, and Andrei has completely redone rdmd. http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.030.zip http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.014.zip |
May 17, 2008 Re: DMD 1.030 and 2.014 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter Bright | Walter Bright wrote:
> These contain a new way of building that I've wanted to do for a long time. dmd can now build libraries directly, without writing out object files or invoking the librarian. This accelerates library builds by a whopping factor of 3! Besides, it doesn't litter your directories with pointless object files.
>
> The library build option has another major coolness feature - before, one module compiles to one object file. With library build, one source file can compile to multiple object files. This cuts down on executable bloat from pulling in object files with irrelevant stuff in them.
>
> Another build improvement is when multiple modules are compiled at the same time to build an executable, only one object file is created with the generated code for all modules combined into it. This speeds linking, and also eliminates pointless file detritus.
>
> No, having dmd incorporate the linking is probably not going to happen :-(. Librarians are so simple, though, that this is a big win.
>
> Yes, both 1.0 and 2.0 dmd's get this (it doesn't affect the language).
>
> Another cool new feature is the dmd -man switch. Try it out! Lots of new library stuff, bugfixes, and Andrei has completely redone rdmd.
>
> http://www.digitalmars.com/d/1.0/changelog.html
> http://ftp.digitalmars.com/dmd.1.030.zip
>
> http://www.digitalmars.com/d/2.0/changelog.html
> http://ftp.digitalmars.com/dmd.2.014.zip
Sweet!
|
May 17, 2008 Re: DMD 1.030 and 2.014 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter Bright | <snip> > Changed std.to to throw exception when object-to-object cast fails. What always annoyed me in C# was the conversions causing exceptions. That's why they added the TryParse which would fail silently and return a best guess number (ie 0 if there was no number, MAX if overflow). Is there an alternative in the std? One that is silent or allows you to specify a default? Of course that would not be hard to write, but it would be useful. -Joel |
May 17, 2008 Re: DMD 1.030 and 2.014 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter Bright | Walter Bright wrote: > These contain a new way of building that I've wanted to do for a long > time. dmd can now build libraries directly, without writing out > object files or invoking the librarian. This accelerates library > builds by a whopping factor of 3! Besides, it doesn't litter your > directories with pointless object files. How does incremental compilation work then, if there are no files ? I'm assuming the factor applies when doing full rebuilds each time. > [...] Librarians are so simple, though, that this is a big win. > > Yes, both 1.0 and 2.0 dmd's get this (it doesn't affect the language). Neat, wonder if GDC should get this addition or if it will just add complexity with portability, and the various odd platform linkers... It's of course doable to emulate the -lib option in the gdmd script wrapper otherwise, and use a temporary directory for object storage. > Another cool new feature is the dmd -man switch. Try it out! Lots of new library stuff, bugfixes, and Andrei has completely redone rdmd. Will this new rdmd be released under an open source license as well ? (the old version, which is also in gdc now, was in the public domain) --anders |
May 17, 2008 Re: DMD 1.030 and 2.014 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter Bright | Thanks for the release!
Walter Bright wrote:
> The library build option has another major coolness feature - before, one module compiles to one object file. With library build, one source file can compile to multiple object files. This cuts down on executable bloat from pulling in object files with irrelevant stuff in them.
>
> Another build improvement is when multiple modules are compiled at the same time to build an executable, only one object file is created with the generated code for all modules combined into it. This speeds linking, and also eliminates pointless file detritus.
How does this affect incremental build tools a la DSSS/rebuild or bud?
|
May 17, 2008 Re: DMD 1.030 and 2.014 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Anders F Björklund | Anders F Björklund wrote: > Walter Bright wrote: > >> These contain a new way of building that I've wanted to do for a long >> time. dmd can now build libraries directly, without writing out >> object files or invoking the librarian. This accelerates library >> builds by a whopping factor of 3! Besides, it doesn't litter your >> directories with pointless object files. > > How does incremental compilation work then, if there are no files ? > I'm assuming the factor applies when doing full rebuilds each time. It does a full build each time, and the times apply to a full build. Perhaps in the future a -make switch could be added to do an incremental build. >> [...] Librarians are so simple, though, that this is a big win. >> Yes, both 1.0 and 2.0 dmd's get this (it doesn't affect the language). > > Neat, wonder if GDC should get this addition or if it will just add > complexity with portability, and the various odd platform linkers... It has no affect on the linker or linking phase. Also, since this isn't a language issue, whether gdc gets it or not is a tool decision. > It's of course doable to emulate the -lib option in the gdmd script > wrapper otherwise, and use a temporary directory for object storage. Yes. >> Another cool new feature is the dmd -man switch. Try it out! Lots of new library stuff, bugfixes, and Andrei has completely redone rdmd. > > Will this new rdmd be released under an open source license as well ? > (the old version, which is also in gdc now, was in the public domain) It should be, but I'll ask Andrei. |
May 17, 2008 Re: DMD 1.030 and 2.014 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert Fraser | Robert Fraser wrote:
> Thanks for the release!
>
> Walter Bright wrote:
>> The library build option has another major coolness feature - before, one module compiles to one object file. With library build, one source file can compile to multiple object files. This cuts down on executable bloat from pulling in object files with irrelevant stuff in them.
>>
>> Another build improvement is when multiple modules are compiled at the same time to build an executable, only one object file is created with the generated code for all modules combined into it. This speeds linking, and also eliminates pointless file detritus.
>
> How does this affect incremental build tools a la DSSS/rebuild or bud?
It shouldn't affect them. But they can now offer the option of building multiple objects per source file.
|
May 17, 2008 Re: DMD 1.030 and 2.014 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter Bright | Walter Bright wrote:
>> Neat, wonder if GDC should get this addition or if it will just add
>> complexity with portability, and the various odd platform linkers...
>
> It has no affect on the linker or linking phase. Also, since this isn't a language issue, whether gdc gets it or not is a tool decision.
Guess I meant object formats (such as the ELF variants or Mach-O),
but you are right that it is ultimately decision entirely in gdc...
Q: Will there be a -shlib option too, to generate shared libraries ?
Rebuild currently has one, that matches its -lib (for static libs).
--anders
|
May 17, 2008 Re: DMD 1.030 and 2.014 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Anders F Björklund | Anders F Björklund wrote:
> Q: Will there be a -shlib option too, to generate shared libraries ?
Shared libraries aren't built by the librarian, but by the linker. They are special executables. dmd supports the -fPIC option, which builds the object files for shared libraries.
|
May 17, 2008 Re: DMD 1.030 and 2.014 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter Bright | On Fri, 16 May 2008 23:29:49 -0700, Walter Bright <newshound1@digitalmars.com> wrote:
>These contain a new way of building that I've wanted to do for a long time. dmd can now build libraries directly, without writing out object files or invoking the librarian. This accelerates library builds by a whopping factor of 3! Besides, it doesn't litter your directories with pointless object files.
>
Thanks a lot! bug 2100 is not listed in 1.030 change log. I guess 2109 is also fixed in 1.030?
|
Copyright © 1999-2021 by the D Language Foundation