digitalmars.D.announce - DMD 1.030 and 2.014 releases
- Walter Bright (22/22) May 16 2008 These contain a new way of building that I've wanted to do for a long
- janderson (2/31) May 17 2008 Sweet!
- janderson (8/9) May 17 2008 What always annoyed me in C# was the conversions causing exceptions.
- =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= (10/19) May 17 2008 How does incremental compilation work then, if there are no files ?
- Walter Bright (8/30) May 17 2008 It does a full build each time, and the times apply to a full build.
- =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= (6/11) May 17 2008 Guess I meant object formats (such as the ELF variants or Mach-O),
- Walter Bright (4/5) May 17 2008 Shared libraries aren't built by the librarian, but by the linker. They
- Robert Fraser (3/12) May 17 2008 How does this affect incremental build tools a la DSSS/rebuild or bud?
- Walter Bright (3/18) May 17 2008 It shouldn't affect them. But they can now offer the option of building
- Max Samukha (4/9) May 17 2008 Thanks a lot! bug 2100 is not listed in 1.030 change log. I guess 2109
- davidl (7/29) May 17 2008 Thanks for the hard working. Downloading now!
- Tom S (8/8) May 17 2008 Thanks, Walter!
- Walter Bright (3/6) May 17 2008 The new dmd also does not trace imports for dependencies, nor does it do...
- davidl (8/30) May 17 2008 Added -lib switch to generate library files. Also causes multiple object...
- pragma (5/46) May 17 2008 Agreed. While I can download and futz around with this myself, I'd like...
- Walter Bright (2/7) May 17 2008 http://www.digitalmars.com/d/2.0/dmd-windows.html#library
- =?UTF-8?B?IkrDqXLDtG1lIE0uIEJlcmdlciI=?= (40/48) May 17 2008 -----BEGIN PGP SIGNED MESSAGE-----
- Bruno Medeiros (6/14) May 28 2008 There, where you say "and existing object file bar.obj", don't you mean
- John C (3/8) May 17 2008 When an executable is built using two libs built using this method, the ...
- Walter Bright (2/5) May 17 2008 You're right, that's a bug.
- Ary Borenszweig (6/6) May 17 2008 Great!
- Walter Bright (2/4) May 17 2008 No :-)
- Ary Borenszweig (10/10) May 17 2008 Walter, I think I've found a potential bug in DMD 1.030 while porting it...
- Walter Bright (3/15) May 17 2008 Yes. Thanks for letting me know about this. I wonder how it passed the
- Sean Kelly (3/8) May 17 2008 Sweet! And I guess this works on both Win32 and Linux?
- Walter Bright (2/3) May 17 2008 Yes.
- Sean Kelly (8/13) May 17 2008 Oh, I'm not sure if it does this already, but it would be great if DMD
- Walter Bright (2/8) May 17 2008 Andrei suggested the same, I just haven't gotten around to it.
- pragma (4/33) May 17 2008 Looks like seriously cool stuff Walter. Thanks for the hard work and
- Bill Baxter (4/9) May 18 2008 Any chance we'll be getting a backport of the fix to bug 493 in DMD
- Walter Bright (4/6) May 19 2008 I understand your point, and I have mixed feelings about it. The trouble...
- Bill Baxter (3/10) May 20 2008 You're worried about existing D1 code that relies on IFTI failing?
- Walter Bright (3/13) May 21 2008 No, I'm concerned about different D1 compilers that support different
- BCS (4/11) May 21 2008 For the time being there /are/ no other compilers (that I know of) to wo...
- Sean Kelly (3/16) May 21 2008 But again, how does this represent a language change?
- Bill Baxter (28/42) May 21 2008 I think the issue is that the spec gives one or maybe two specific
- Sean Kelly (9/34) May 22 2008 My understanding of IFTI was that it was intended to eventually work a
- Jarrett Billingsley (3/16) May 21 2008 Uh, DMD 1.000 vs. DMD 1.030?
- Jarrett Billingsley (4/21) May 21 2008 The point being that _this has already happened_ with, apparently, no re...
- Sean Kelly (9/28) May 22 2008 Walter's argument could apply to really any bug fix anyway, because they...
- Robert Fraser (6/9) May 22 2008 Indeed that's a fear I have as well. D 1.0 has never been fully stable
- Chris Wright (4/14) May 22 2008 A lot of people have been annoyed by a lot of these changes.
- Bill Baxter (4/19) May 22 2008 When you say "nobody" are you suggesting that the D community should
- Robert Fraser (4/25) May 22 2008 That's a good idea (I don't think Walter would be against it; but he
- Chris Wright (7/27) May 23 2008 I am. There seems to be demand for it. And if there were such a branch,
- Lutger (14/24) May 23 2008 imho, this would only be a good idea if 1.1 would not be another branch,...
- Robert Fraser (20/24) May 23 2008 I'd hope the features selected would be such that most D libraries would...
- Chris Wright (7/35) May 23 2008 So you'd accept added keywords such as __traits, I take it? Though
- Robert Fraser (13/19) May 24 2008 Well, __traits is okay because it isn't commonly used as an identifier.
- Frits van Bommel (11/12) May 24 2008 I haven't used D2 much, but from what I've read on overload sets I can't...
- Chris Wright (8/25) May 25 2008 It's another point of friction; ideally, anything that compiles in D1
- Frits van Bommel (2/3) May 25 2008 Thanks, but my name is Frits...
- Chris Wright (4/8) May 25 2008 Sorry, I've been reading a book where the main character's name is Fitz
- Chris Wright (8/32) May 23 2008 Though this is made harder since the DMD frontend isn't developed using
- Tomas Lindquist Olsen (3/33) May 26 2008 I've wanted a D 1.1 for a long time. When LLVMDC gets more stable (by th...
- Lutger (4/11) May 20 2008 In this case though the change can be interpreted as a bug right? So it ...
- Sean Kelly (5/11) May 20 2008 I'm not sure I understand. Could you please explain why this issue is
- Bill Baxter (25/36) May 20 2008 I think we just need to have a D1.1 release. That would make everyone
- Chris R. Miller (29/67) May 20 2008 e
- BCS (5/9) May 20 2008 One problem, 2.0 has things that can't not be breaking changes. I don't ...
- BCS (5/8) May 20 2008 I'll second that.
- Robert Fraser (4/6) May 20 2008 I don't think Walter would ever go for it. That doesn't mean someone in
- Don (5/21) May 21 2008 It's not just that. By making _no_ changes to D1.0, it makes later
- Miles (14/17) May 20 2008 Again, I reinforce that D versioning scheme is one of its most painful
- Bruno Medeiros (6/17) May 28 2008 Hum, nice, I didn't know that was possible. I guess I didn't see it
- =?iso-8859-1?Q?Julio=20C=e9sar=20Carrascal=20Urquijo?= (4/9) May 19 2008 On question, though. How does DMD decide to split a module in servera .o...
- Walter Bright (3/5) May 19 2008 It's done for things that would be generated in multiple files, like
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 16 2008
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.zipSweet!
May 17 2008
<snip>Changed std.to to throw exception when object-to-object cast fails.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
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
Anders F Bjrklund wrote:Walter Bright wrote: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.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 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.[...] 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.Yes.It should be, but I'll ask Andrei.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)
May 17 2008
Walter Bright wrote: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). --andersNeat, 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.
May 17 2008
Anders F Bjrklund 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
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
Robert Fraser wrote:Thanks for the release! Walter Bright wrote:It shouldn't affect them. But they can now offer the option of building multiple objects per source file.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
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?
May 17 2008
在 Sat, 17 May 2008 14:29:49 +0800,Walter Bright <newshound1 digitalmars.com> 写道: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.zipThanks for the hard working. Downloading now! I wish we can preview some stuff/ new features visually on the website on the update release. -- 使用 Opera 革命性的电子邮件客户程序: http://www.opera.com/mail/
May 17 2008
Thanks, Walter! To everyone worried about the .obj generation change: ReBuild still provides incremental compilation, as it passes -c to the compiler, which makes it output multiple .obj-s. -- Tomasz Stachowiak http://h3.team0xf.com/ h3/h3r3tic on #D freenode
May 17 2008
Tom S wrote:To everyone worried about the .obj generation change: ReBuild still provides incremental compilation, as it passes -c to the compiler, which makes it output multiple .obj-s.The new dmd also does not trace imports for dependencies, nor does it do incremental builds.
May 17 2008
在 Sat, 17 May 2008 14:29:49 +0800,Walter Bright <newshound1 digitalmars.com> 写道: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.zipAdded -lib switch to generate library files. Also causes multiple object files to be generated from one source module. <-- what does this exactly mean We need more docs on this. -- 使用 Opera 革命性的电子邮件客户程序: http://www.opera.com/mail/
May 17 2008
davidl wrote:在 Sat, 17 May 2008 14:29:49 +0800,Walter Bright <newshound1 digitalmars.com> 写道:Agreed. While I can download and futz around with this myself, I'd like to know ahead of time what I'm getting into. Does anyone have a practical example? - PragmaThese 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.zipAdded -lib switch to generate library files. Also causes multiple object files to be generated from one source module. <-- what does this exactly mean We need more docs on this. --使用 Opera 革命性的电子邮件客户程序: http://www.opera.com/mail/
May 17 2008
davidl wrote:Added -lib switch to generate library files. Also causes multiple object files to be generated from one source module. <-- what does this exactly mean We need more docs on this.http://www.digitalmars.com/d/2.0/dmd-windows.html#library
May 17 2008
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Walter Bright wrote:davidl wrote:This isn't very clear for people who don't already know how the linker works and what static libraries are. Here's a go at something more complete: When you create an executable (or a shared library), the linker takes all the object files that you specified and glues them together. It also translates all the external references, so that if you use function "foo" in file a.o and this function is defined in file b.o it will modify the code of a.o to point the implementation of "foo". Static libraries are just collections of *optional* additional object files. This means that if you have an object file c.o in a static library and nobody refers to it, then it won't be included in the executable, but if you use one function in c.o, then the *whole* object file is included. The usual way to make object files is that one source file gives one object file. This means that if you want to avoid executable bloat, you need to split your source files so that people can call one function without bringing in a lot of unnecessary functions that just happened to be defined in the same file. What the "-lib" option does is to automagically split the files so that a single source file will generate several small object files instead of a single big one. This way you don't need to split your source code into lots of small files if you don't want to, and your executables won't become unnecessarily big from all those extra functions. Jerome - -- +------------------------- Jerome M. BERGER ---------------------+ | mailto:jeberger free.fr | ICQ: 238062172 | | http://jeberger.free.fr/ | Jabber: jeberger jabber.fr | +---------------------------------+------------------------------+ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (GNU/Linux) iD8DBQFILzeqd0kWM4JG3k8RAtzmAJ9M4wIEe+KU7M5akehypBOfg5feKgCgsqTw xLLOuj4Cvj/PkjjgSjumQ2E= =6Nba -----END PGP SIGNATURE-----Added -lib switch to generate library files. Also causes multiple object files to be generated from one source module. <-- what does this exactly mean We need more docs on this.http://www.digitalmars.com/d/2.0/dmd-windows.html#library
May 17 2008
Walter Bright wrote:davidl wrote:There, where you say "and existing object file bar.obj", don't you mean "abc.obj" instead? -- Bruno Medeiros - Software Developer, MSc. in CS/E graduate http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#DAdded -lib switch to generate library files. Also causes multiple object files to be generated from one source module. <-- what does this exactly mean We need more docs on this.http://www.digitalmars.com/d/2.0/dmd-windows.html#library
May 28 2008
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.When an executable is built using two libs built using this method, the compiler (or optlink) errors out: Previous Definition Different : _D10object.16212__ModuleInfoZ
May 17 2008
John C wrote:When an executable is built using two libs built using this method, the compiler (or optlink) errors out: Previous Definition Different : _D10object.16212__ModuleInfoZYou're right, that's a bug.
May 17 2008
Great! I see a lot of "Got rid of some gotos" in the D2 changelog for phobos. Any plans for getting rid of them in DMD front-end? ;-) How does rdmd compares to other build tools like bud or dsss? (I guess my "dream" is to release a Descent version that matches the latest versions of DMD... it's always about catching up...)
May 17 2008
Ary Borenszweig wrote:I see a lot of "Got rid of some gotos" in the D2 changelog for phobos. Any plans for getting rid of them in DMD front-end? ;-)No :-)
May 17 2008
Walter, I think I've found a potential bug in DMD 1.030 while porting it to Descent. Take a look at cast.c, Expression *BinExp::typeCombine(Scope *sc), lines 1371 and 1374: /* Pick 'tightest' type */ ClassDeclaration *cd1 = tc1->sym->baseClass; ClassDeclaration *cd2 = tc1->sym->baseClass; shouldn't the second line use tc2 instead of tc1? (Eclipse pointed me out that tc2 wasn't used... ;-)
May 17 2008
Ary Borenszweig wrote:Walter, I think I've found a potential bug in DMD 1.030 while porting it to Descent. Take a look at cast.c, Expression *BinExp::typeCombine(Scope *sc), lines 1371 and 1374: /* Pick 'tightest' type */ ClassDeclaration *cd1 = tc1->sym->baseClass; ClassDeclaration *cd2 = tc1->sym->baseClass; shouldn't the second line use tc2 instead of tc1?Yes. Thanks for letting me know about this. I wonder how it passed the test case!
May 17 2008
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.Sweet! And I guess this works on both Win32 and Linux? Sean
May 17 2008
Sean Kelly wrote:Sweet! And I guess this works on both Win32 and Linux?Yes.
May 17 2008
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.Oh, I'm not sure if it does this already, but it would be great if DMD used the fully qualified module name instead of the file name for library additions. Or something along those lines anyway. Having to deal with filename collisions while building libraries is an annoying anachronism. I believe with Tango we tell the librarian to use the path name instead of just the file name, but not all librarians support this. Sean
May 17 2008
Sean Kelly wrote:Oh, I'm not sure if it does this already, but it would be great if DMD used the fully qualified module name instead of the file name for library additions. Or something along those lines anyway. Having to deal with filename collisions while building libraries is an annoying anachronism. I believe with Tango we tell the librarian to use the path name instead of just the file name, but not all librarians support this.Andrei suggested the same, I just haven't gotten around to it.
May 17 2008
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.zipLooks like seriously cool stuff Walter. Thanks for the hard work and the bug patches, as always. - Pragma
May 17 2008
Walter Bright wrote: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.zipAny chance we'll be getting a backport of the fix to bug 493 in DMD 1.031? [ http://d.puremagic.com/issues/show_bug.cgi?id=493 ] --bb
May 18 2008
Bill Baxter wrote:Any chance we'll be getting a backport of the fix to bug 493 in DMD 1.031? [ http://d.puremagic.com/issues/show_bug.cgi?id=493 ]I understand your point, and I have mixed feelings about it. The trouble is, it isn't a stable target if it gets language changes, and everyone has a different idea on what should be moved from 2.0 to 1.0.
May 19 2008
Walter Bright wrote:Bill Baxter wrote:You're worried about existing D1 code that relies on IFTI failing? --bbAny chance we'll be getting a backport of the fix to bug 493 in DMD 1.031? [ http://d.puremagic.com/issues/show_bug.cgi?id=493 ]I understand your point, and I have mixed feelings about it. The trouble is, it isn't a stable target if it gets language changes, and everyone has a different idea on what should be moved from 2.0 to 1.0.
May 20 2008
Bill Baxter wrote:Walter Bright wrote:No, I'm concerned about different D1 compilers that support different languages.Bill Baxter wrote:You're worried about existing D1 code that relies on IFTI failing?Any chance we'll be getting a backport of the fix to bug 493 in DMD 1.031? [ http://d.puremagic.com/issues/show_bug.cgi?id=493 ]I understand your point, and I have mixed feelings about it. The trouble is, it isn't a stable target if it gets language changes, and everyone has a different idea on what should be moved from 2.0 to 1.0.
May 21 2008
Reply to Walter,Bill Baxter wrote:For the time being there /are/ no other compilers (that I know of) to worry about unless you count older versions of DMD. So I'm not so shure that is a big issue.You're worried about existing D1 code that relies on IFTI failing?No, I'm concerned about different D1 compilers that support different languages.
May 21 2008
== Quote from Walter Bright (newshound1 digitalmars.com)'s articleBill Baxter wrote:But again, how does this represent a language change? SeanWalter Bright wrote:No, I'm concerned about different D1 compilers that support different languages.Bill Baxter wrote:You're worried about existing D1 code that relies on IFTI failing?Any chance we'll be getting a backport of the fix to bug 493 in DMD 1.031? [ http://d.puremagic.com/issues/show_bug.cgi?id=493 ]I understand your point, and I have mixed feelings about it. The trouble is, it isn't a stable target if it gets language changes, and everyone has a different idea on what should be moved from 2.0 to 1.0.
May 21 2008
Sean Kelly wrote:== Quote from Walter Bright (newshound1 digitalmars.com)'s articleI think the issue is that the spec gives one or maybe two specific examples of when IFTI works[1]. It says "if blah blah blah, then the template parameters will be deduced automatically". It does not say what happens if *not* blah blah blah. Plus it does say "implicitly, where the /TemplateArgumentList/ is deduced from the arguments", and not something like "*some or all* of the /TemplateArgumentList/ is deduced". So I think Walter is right that a literal reading of the spec suggests that this a language change. But my position is that A) it just makes sense that if you can deduce them all then you should also be able to deduce just some. Why wouldn't you be able to? I never read the spec as saying "this is all that IFTI is intended to do", more like "here's one thing IFTI can do". Actually the D2 spec doesn't mention this supposedly new feature[2], so that would argue that even Walter didn't see it as a spec change when he added it. B) this is an important capability for porting D2 algorithms to D1. The std2 project is halted mostly because of lack of this ability. C) adding it should introduce little or no errors in existing D1 code since it used to be an error. -- ok it is /conceivable/ that some code somewhere is using "is(typeof(...))" and counting on it failing when not all template parameters are specified, but I think this is pretty unlikely to affect much code at all. [1] http://www.digitalmars.com/d/1.0/template.html under "Function Templates" [2] If it does, I can't find it. At least D2.0's [1] has the exact same text as D1's. --bbBill Baxter wrote:But again, how does this represent a language change?Walter Bright wrote:No, I'm concerned about different D1 compilers that support different languages.Bill Baxter wrote:You're worried about existing D1 code that relies on IFTI failing?Any chance we'll be getting a backport of the fix to bug 493 in DMD 1.031? [ http://d.puremagic.com/issues/show_bug.cgi?id=493 ]I understand your point, and I have mixed feelings about it. The trouble is, it isn't a stable target if it gets language changes, and everyone has a different idea on what should be moved from 2.0 to 1.0.
May 21 2008
Bill Baxter wrote:Sean Kelly wrote:My understanding of IFTI was that it was intended to eventually work a lot like IFTI in C++. Walter has certainly said as much in the past, at any rate. So I don't accept that we should have read between the lines in the spec regarding this. Besides, if a strict interpretation of the spec were required then I'd expect D 1.0 to have things like inheritable contracts--a feature which may never actually make it into the language at all, despite requests. Sean== Quote from Walter Bright (newshound1 digitalmars.com)'s articleI think the issue is that the spec gives one or maybe two specific examples of when IFTI works[1]. It says "if blah blah blah, then the template parameters will be deduced automatically". It does not say what happens if *not* blah blah blah. Plus it does say "implicitly, where the /TemplateArgumentList/ is deduced from the arguments", and not something like "*some or all* of the /TemplateArgumentList/ is deduced". So I think Walter is right that a literal reading of the spec suggests that this a language change.Bill Baxter wrote:But again, how does this represent a language change?Walter Bright wrote:No, I'm concerned about different D1 compilers that support different languages.Bill Baxter wrote:You're worried about existing D1 code that relies on IFTI failing?Any chance we'll be getting a backport of the fix to bug 493 in DMD 1.031? [ http://d.puremagic.com/issues/show_bug.cgi?id=493 ]I understand your point, and I have mixed feelings about it. The trouble is, it isn't a stable target if it gets language changes, and everyone has a different idea on what should be moved from 2.0 to 1.0.
May 22 2008
"Walter Bright" <newshound1 digitalmars.com> wrote in message news:g11ove$181r$1 digitalmars.com...Bill Baxter wrote:Uh, DMD 1.000 vs. DMD 1.030?Walter Bright wrote:No, I'm concerned about different D1 compilers that support different languages.Bill Baxter wrote:You're worried about existing D1 code that relies on IFTI failing?Any chance we'll be getting a backport of the fix to bug 493 in DMD 1.031? [ http://d.puremagic.com/issues/show_bug.cgi?id=493 ]I understand your point, and I have mixed feelings about it. The trouble is, it isn't a stable target if it gets language changes, and everyone has a different idea on what should be moved from 2.0 to 1.0.
May 21 2008
"Jarrett Billingsley" <kb3ctd2 yahoo.com> wrote in message news:g12s4e$j26$1 digitalmars.com..."Walter Bright" <newshound1 digitalmars.com> wrote in message news:g11ove$181r$1 digitalmars.com...The point being that _this has already happened_ with, apparently, no real problems.Bill Baxter wrote:Uh, DMD 1.000 vs. DMD 1.030?Walter Bright wrote:No, I'm concerned about different D1 compilers that support different languages.Bill Baxter wrote:You're worried about existing D1 code that relies on IFTI failing?Any chance we'll be getting a backport of the fix to bug 493 in DMD 1.031? [ http://d.puremagic.com/issues/show_bug.cgi?id=493 ]I understand your point, and I have mixed feelings about it. The trouble is, it isn't a stable target if it gets language changes, and everyone has a different idea on what should be moved from 2.0 to 1.0.
May 21 2008
Jarrett Billingsley wrote:"Jarrett Billingsley" <kb3ctd2 yahoo.com> wrote in message news:g12s4e$j26$1 digitalmars.com...Walter's argument could apply to really any bug fix anyway, because they all affect compiler behavior. I think what's important is to determine what the intended feature set was for D 1.0 and decide based on that. Clearly, we all thought that IFTI would eventually work as advertised in D 1.0, and perhaps Walter does not agree. What worries me is that long asked-for bug fixes like this may be left out of DMD 1.0 as a way to "encourage" people to move to D 2.0. If that happens, I'm out. Sean"Walter Bright" <newshound1 digitalmars.com> wrote in message news:g11ove$181r$1 digitalmars.com...The point being that _this has already happened_ with, apparently, no real problems.Bill Baxter wrote:Uh, DMD 1.000 vs. DMD 1.030?Walter Bright wrote:No, I'm concerned about different D1 compilers that support different languages.Bill Baxter wrote:You're worried about existing D1 code that relies on IFTI failing?Any chance we'll be getting a backport of the fix to bug 493 in DMD 1.031? [ http://d.puremagic.com/issues/show_bug.cgi?id=493 ]I understand your point, and I have mixed feelings about it. The trouble is, it isn't a stable target if it gets language changes, and everyone has a different idea on what should be moved from 2.0 to 1.0.
May 22 2008
Sean Kelly wrote:What worries me is that long asked-for bug fixes like this may be left out of DMD 1.0 as a way to "encourage" people to move to D 2.0. If that happens, I'm out.Indeed that's a fear I have as well. D 1.0 has never been fully stable (look at the ".init" change that happened after 2.0 was out... that broke a lot of code). So it seems rather arbitrary that a bug fix like this (reported as bug, not an enhancement, before 2.0 was on the horizon) would only make it to the 2.0 branch.
May 22 2008
Robert Fraser wrote:Sean Kelly wrote:A lot of people have been annoyed by a lot of these changes. Unfortunately, nobody (and that includes the lack of me) has gotten off their butts to release a DMD 1.1.x branch.What worries me is that long asked-for bug fixes like this may be left out of DMD 1.0 as a way to "encourage" people to move to D 2.0. If that happens, I'm out.Indeed that's a fear I have as well. D 1.0 has never been fully stable (look at the ".init" change that happened after 2.0 was out... that broke a lot of code). So it seems rather arbitrary that a bug fix like this (reported as bug, not an enhancement, before 2.0 was on the horizon) would only make it to the 2.0 branch.
May 22 2008
Chris Wright wrote:Robert Fraser wrote:When you say "nobody" are you suggesting that the D community should create a 1.1 branch and release it whether Walter wants it or not? --bbSean Kelly wrote:A lot of people have been annoyed by a lot of these changes. Unfortunately, nobody (and that includes the lack of me) has gotten off their butts to release a DMD 1.1.x branch.What worries me is that long asked-for bug fixes like this may be left out of DMD 1.0 as a way to "encourage" people to move to D 2.0. If that happens, I'm out.Indeed that's a fear I have as well. D 1.0 has never been fully stable (look at the ".init" change that happened after 2.0 was out... that broke a lot of code). So it seems rather arbitrary that a bug fix like this (reported as bug, not an enhancement, before 2.0 was on the horizon) would only make it to the 2.0 branch.
May 22 2008
Bill Baxter wrote:Chris Wright wrote:That's a good idea (I don't think Walter would be against it; but he certainly doesn't have the time to maintain 3 branches). I suspect it would be of GDC, though; since DMD's backend is closed-source.Robert Fraser wrote:When you say "nobody" are you suggesting that the D community should create a 1.1 branch and release it whether Walter wants it or not? --bbSean Kelly wrote:A lot of people have been annoyed by a lot of these changes. Unfortunately, nobody (and that includes the lack of me) has gotten off their butts to release a DMD 1.1.x branch.What worries me is that long asked-for bug fixes like this may be left out of DMD 1.0 as a way to "encourage" people to move to D 2.0. If that happens, I'm out.Indeed that's a fear I have as well. D 1.0 has never been fully stable (look at the ".init" change that happened after 2.0 was out... that broke a lot of code). So it seems rather arbitrary that a bug fix like this (reported as bug, not an enhancement, before 2.0 was on the horizon) would only make it to the 2.0 branch.
May 22 2008
Bill Baxter wrote:Chris Wright wrote:I am. There seems to be demand for it. And if there were such a branch, Walter could even stop maintaining the 1.x branch because bugfixes from the 2.x branch would get ported to the 1.1 branch. This isn't ideal for the community, perhaps. If enough people were involved, however, Walter would just be working on an experimental branch, and the community would handle bugfixes.Robert Fraser wrote:When you say "nobody" are you suggesting that the D community should create a 1.1 branch and release it whether Walter wants it or not?Sean Kelly wrote:A lot of people have been annoyed by a lot of these changes. Unfortunately, nobody (and that includes the lack of me) has gotten off their butts to release a DMD 1.1.x branch.What worries me is that long asked-for bug fixes like this may be left out of DMD 1.0 as a way to "encourage" people to move to D 2.0. If that happens, I'm out.Indeed that's a fear I have as well. D 1.0 has never been fully stable (look at the ".init" change that happened after 2.0 was out... that broke a lot of code). So it seems rather arbitrary that a bug fix like this (reported as bug, not an enhancement, before 2.0 was on the horizon) would only make it to the 2.0 branch.--bb
May 23 2008
Chris Wright wrote:I am. There seems to be demand for it. And if there were such a branch, Walter could even stop maintaining the 1.x branch because bugfixes from the 2.x branch would get ported to the 1.1 branch. This isn't ideal for the community, perhaps. If enough people were involved, however, Walter would just be working on an experimental branch, and the community would handle bugfixes.imho, this would only be a good idea if 1.1 would not be another branch, but replace the current D1 language. D1 was and is about D not being a moving target and that has been pretty successful as far as I can see. Creating a language incompatible with both 1.0x and 2.x will only complicate matters. Implementing 'changes' like the currently discussed one that don't have much impact or are actually clarifications from the spec is one thing. But adding new features, even if backward compatible, may introduce again the situation that libraries grow out-of-sync. How much of a problem that will be in practice, I don't know. But development in D is much more practical now than before D1 was stabilized, and it would be very unfortunate to lose that. Besides, the plan is stabilize D2 somewhere this year already (iirc). Thus such a branch might not even be worthwhile before the migration starts.--bb
May 23 2008
Lutger wrote:Implementing 'changes' like the currently discussed one that don't have much impact or are actually clarifications from the spec is one thing. But adding new features, even if backward compatible, may introduce again the situation that libraries grow out-of-sync.I'd hope the features selected would be such that most D libraries would still be able to compile. For example, Java is _mostly_ backwards compatible to 1.0 (if you take out the "enum" and "assert" keywords, it;s likely that 1.0 code would compile fine under 1.6). I'd hope the same is true of D if it gets a 1.1 branch (that is, if any new features are added, they are done in a way that DOES not keep libraries out-of-sync). If it was designed in a way to keep a large, mostly-spanning subset of (multiple versions of) D1 libraries/apps (i.e. Tango, Phobos, DFL, DWT, Derelict, MiniD, a few other big ones) compiling at every release, it would be reasonable to assume that most D1 code would compile rather easily with it. I'd also hope that any DStress tests that pass with D 1.030 (or whenever the branch is made) would remain a strict subset of the DStress tests that pass as the branch evolves. If these conditions were met, it would be possible to add in *some* backwards-compatible changes that would benefit the community and still allow libraries designed for the 1.0 branch to keep compiling. But that's just my personal pipe dream: I'm sure some people wouldn't mind having 3 completely distinct branches, while others would prefer that only bugfixies make it into 1.1.
May 23 2008
Robert Fraser wrote:Lutger wrote:So you'd accept added keywords such as __traits, I take it? Though invariant would be a pretty controversial one to add.Implementing 'changes' like the currently discussed one that don't have much impact or are actually clarifications from the spec is one thing. But adding new features, even if backward compatible, may introduce again the situation that libraries grow out-of-sync.I'd hope the features selected would be such that most D libraries would still be able to compile. For example, Java is _mostly_ backwards compatible to 1.0 (if you take out the "enum" and "assert" keywords, it;s likely that 1.0 code would compile fine under 1.6). I'd hope the same is true of D if it gets a 1.1 branch (that is, if any new features are added, they are done in a way that DOES not keep libraries out-of-sync).If it was designed in a way to keep a large, mostly-spanning subset of (multiple versions of) D1 libraries/apps (i.e. Tango, Phobos, DFL, DWT, Derelict, MiniD, a few other big ones) compiling at every release, it would be reasonable to assume that most D1 code would compile rather easily with it. I'd also hope that any DStress tests that pass with D 1.030 (or whenever the branch is made) would remain a strict subset of the DStress tests that pass as the branch evolves. If these conditions were met, it would be possible to add in *some* backwards-compatible changes that would benefit the community and still allow libraries designed for the 1.0 branch to keep compiling. But that's just my personal pipe dream: I'm sure some people wouldn't mind having 3 completely distinct branches, while others would prefer that only bugfixies make it into 1.1.I think a fair number of people would be perfectly happy with a D2 branch minus const. I mean, what else was added that's not to love? Besides instability, that is. But the only thing preventing people from using most of these libraries with dmd2.014 is probably const.
May 23 2008
Chris Wright wrote:So you'd accept added keywords such as __traits, I take it? Though invariant would be a pretty controversial one to add.Well, __traits is okay because it isn't commonly used as an identifier. But I'd prefer "macro" be changed to something like "__macro" in a backport (people might be using that as a variable name). Again, just personal opinion, that stuff doesn't matter too much.I think a fair number of people would be perfectly happy with a D2 branch minus const. I mean, what else was added that's not to love? Besides instability, that is. But the only thing preventing people from using most of these libraries with dmd2.014 is probably const.IMO, pure and nothrow, too. I think it's a good idea but it requires too much library support (i.e. there's no way to write a standard lib that would work well under D1.0 and D1.1 if the latter had pure and nothrow). Also, overload sets (great idea, but very much breaking). I think there's at least one naysayer for every D2 feature, so you can't please everybody. I think whoever creates the branch needs to go mini-Walter and decide for him/her self which features to back port -- the D community will be richer with it than without it.
May 24 2008
Robert Fraser wrote:Also, overload sets (great idea, but very much breaking).I haven't used D2 much, but from what I've read on overload sets I can't see how they'd breaking (very much) stuff. From what I understand, the "single overload set" case is identical to what happens in D1, and the cases with multiple ones are always an error in D1 (assuming a call to one of the overloads is attempted). The only case where the behavior would differ in the case of valid D1 code compiled as "D1 + overload sets" would be the result of something like is(typeof(foo(ARGS))) where "foo" consists of multiple overload sets, AFAICT. And I can't imagine that corner case to be "very much breaking" all by itself...
May 24 2008
Robert Fraser wrote:Chris Wright wrote:It's another point of friction; ideally, anything that compiles in D1 will compile in D1.1. (Dunno yet how serious I am about forking, unless someone offers to help. In that case, I am quite serious.)So you'd accept added keywords such as __traits, I take it? Though invariant would be a pretty controversial one to add.Well, __traits is okay because it isn't commonly used as an identifier. But I'd prefer "macro" be changed to something like "__macro" in a backport (people might be using that as a variable name). Again, just personal opinion, that stuff doesn't matter too much.Pure and nothrow aren't implemented yet, I think, so it'd be easy to exclude them. I agree with Fritz's assessment on overload sets, unless you can come up with a sample of code that overload sets breaks.I think a fair number of people would be perfectly happy with a D2 branch minus const. I mean, what else was added that's not to love? Besides instability, that is. But the only thing preventing people from using most of these libraries with dmd2.014 is probably const.IMO, pure and nothrow, too. I think it's a good idea but it requires too much library support (i.e. there's no way to write a standard lib that would work well under D1.0 and D1.1 if the latter had pure and nothrow). Also, overload sets (great idea, but very much breaking).
May 25 2008
Chris Wright wrote:I agree with Fritz's assessment on overload sets, [...]Thanks, but my name is Frits...
May 25 2008
Frits van Bommel wrote:Chris Wright wrote:Sorry, I've been reading a book where the main character's name is Fitz (the Farseer trilogy by Robin Hobb), so I'm lucky that I remembered the R. I meant to check the spelling, but I got lazy.I agree with Fritz's assessment on overload sets, [...]Thanks, but my name is Frits...
May 25 2008
Chris Wright wrote:Bill Baxter wrote:Though this is made harder since the DMD frontend isn't developed using any version control system that I can access. So I can only see a whole lump of changes between two dmd2 revisions, many of which are bugfixes, many of which are changed features that will impact user code, and some of which are actually nonbreaking features. Given the overhauls done to const, it may be a better idea just to diff dmd1.030 and dmd2.014 and start from there.Chris Wright wrote:I am. There seems to be demand for it. And if there were such a branch, Walter could even stop maintaining the 1.x branch because bugfixes from the 2.x branch would get ported to the 1.1 branch.Robert Fraser wrote:When you say "nobody" are you suggesting that the D community should create a 1.1 branch and release it whether Walter wants it or not?Sean Kelly wrote:A lot of people have been annoyed by a lot of these changes. Unfortunately, nobody (and that includes the lack of me) has gotten off their butts to release a DMD 1.1.x branch.What worries me is that long asked-for bug fixes like this may be left out of DMD 1.0 as a way to "encourage" people to move to D 2.0. If that happens, I'm out.Indeed that's a fear I have as well. D 1.0 has never been fully stable (look at the ".init" change that happened after 2.0 was out... that broke a lot of code). So it seems rather arbitrary that a bug fix like this (reported as bug, not an enhancement, before 2.0 was on the horizon) would only make it to the 2.0 branch.
May 23 2008
Chris Wright wrote:Bill Baxter wrote:I've wanted a D 1.1 for a long time. When LLVMDC gets more stable (by that I mean to a point where it can compete with DMD), I could be interested in starting such a fork.Chris Wright wrote:I am. There seems to be demand for it. And if there were such a branch, Walter could even stop maintaining the 1.x branch because bugfixes from the 2.x branch would get ported to the 1.1 branch. This isn't ideal for the community, perhaps. If enough people were involved, however, Walter would just be working on an experimental branch, and the community would handle bugfixes.Robert Fraser wrote:When you say "nobody" are you suggesting that the D community should create a 1.1 branch and release it whether Walter wants it or not?Sean Kelly wrote:A lot of people have been annoyed by a lot of these changes. Unfortunately, nobody (and that includes the lack of me) has gotten off their butts to release a DMD 1.1.x branch.What worries me is that long asked-for bug fixes like this may be left out of DMD 1.0 as a way to "encourage" people to move to D 2.0. If that happens, I'm out.Indeed that's a fear I have as well. D 1.0 has never been fully stable (look at the ".init" change that happened after 2.0 was out... that broke a lot of code). So it seems rather arbitrary that a bug fix like this (reported as bug, not an enhancement, before 2.0 was on the horizon) would only make it to the 2.0 branch.--bb
May 26 2008
Walter Bright wrote:Bill Baxter wrote:In this case though the change can be interpreted as a bug right? So it is not a question of opinion on what should be moved but rather whether it is seen as a bug or a change. That's a pretty clear line.Any chance we'll be getting a backport of the fix to bug 493 in DMD 1.031? [ http://d.puremagic.com/issues/show_bug.cgi?id=493 ]I understand your point, and I have mixed feelings about it. The trouble is, it isn't a stable target if it gets language changes, and everyone has a different idea on what should be moved from 2.0 to 1.0.
May 20 2008
== Quote from Walter Bright (newshound1 digitalmars.com)'s articleBill Baxter wrote:I'm not sure I understand. Could you please explain why this issue is a language change and not a bug? The ticket was certainly submitted well prior to D 2.0's release. SeanAny chance we'll be getting a backport of the fix to bug 493 in DMD 1.031? [ http://d.puremagic.com/issues/show_bug.cgi?id=493 ]I understand your point, and I have mixed feelings about it. The trouble is, it isn't a stable target if it gets language changes, and everyone has a different idea on what should be moved from 2.0 to 1.0.
May 20 2008
Sean Kelly wrote:== Quote from Walter Bright (newshound1 digitalmars.com)'s articleI think we just need to have a D1.1 release. That would make everyone happy. Like Miles just said, basically. The majority of available code right now is D1 only. So if you don't want to reinvent lots of wheels, your best bet is D1. As most everyone knows, Tango is D1 only. Probably the majority of long-timers here are still D1 only simply because if you have lots of code that works, moving all of it to an unstable D2 is not a very compelling proposition. Let me put it this way. I don't have the time or really the interest at this point to get my libs (OpenMeshD, Multiarray, Luigi) or the libs I depend on (DWT and Tango via that) updated to D2. And beyond my dsource libs I have probably about an equal amount of application code written in D1. I think probably a number of folks in the Tango team are in the same boat, and probably various others who got started with D1 and have been enjoying using it. So does it make sense to leave this demographic of heavy D users behind with an aging feature set? Ugh, I don't think I'm saying this well at all, but I can't spend any more time on this email, because I have to get back to my actual full-time job (writing D1 code, ATM). Basically to sum it up, it seems to me like current development priorities neglect some of the most loyal D users, those who have been using it and writing large-ish libraries since D0 days. A backward-compatible features-only D1.1 release would serve that, IMHO, important demographic. --bbBill Baxter wrote:I'm not sure I understand. Could you please explain why this issue is a language change and not a bug? The ticket was certainly submitted well prior to D 2.0's release.Any chance we'll be getting a backport of the fix to bug 493 in DMD 1.031? [ http://d.puremagic.com/issues/show_bug.cgi?id=493 ]I understand your point, and I have mixed feelings about it. The trouble is, it isn't a stable target if it gets language changes, and everyone has a different idea on what should be moved from 2.0 to 1.0.
May 20 2008
Bill Baxter wrote:Sean Kelly wrote:=3D=3D Quote from Walter Bright (newshound1 digitalmars.com)'s article=bleBill Baxter wrote:Any chance we'll be getting a backport of the fix to bug 493 in DMD 1.031? [ http://d.puremagic.com/issues/show_bug.cgi?id=3D493 ]I understand your point, and I have mixed feelings about it. The trou=eis, it isn't a stable target if it gets language changes, and everyon=has a different idea on what should be moved from 2.0 to 1.0.I'm not sure I understand. Could you please explain why this issue is=a language change and not a bug? The ticket was certainly submitted well prior to D 2.0's release.=20 I think we just need to have a D1.1 release. That would make everyone =happy. Like Miles just said, basically.Perhaps just using D2 as a testing version where new features are=20 debugged before they're merged onto D1? That might even be better, so=20 that library makers have an opportunity to see a new feature coming in=20 the future.The majority of available code right now is D1 only. So if you don't=20 want to reinvent lots of wheels, your best bet is D1. As most everyone==20knows, Tango is D1 only. Probably the majority of long-timers here are==20still D1 only simply because if you have lots of code that works, movin=g=20all of it to an unstable D2 is not a very compelling proposition. =20 Let me put it this way. I don't have the time or really the interest a=t=20this point to get my libs (OpenMeshD, Multiarray, Luigi) or the libs I =depend on (DWT and Tango via that) updated to D2. And beyond my dsourc=e=20libs I have probably about an equal amount of application code written =in D1. I think probably a number of folks in the Tango team are in the==20same boat, and probably various others who got started with D1 and have==20been enjoying using it.I know there was an experimental branch a while back that was supposed=20 to have worked with D2. I don't know if it's still maintained.So does it make sense to leave this demographic of heavy D users behind==20with an aging feature set? =20 Ugh, I don't think I'm saying this well at all, but I can't spend any=20 more time on this email, because I have to get back to my actual=20 full-time job (writing D1 code, ATM). Basically to sum it up, it seems==20to me like current development priorities neglect some of the most loya=l=20D users, those who have been using it and writing large-ish libraries=20 since D0 days. A backward-compatible features-only D1.1 release would =serve that, IMHO, important demographic.Perhaps a Debian-like system, with an experimental, unstable, testing,=20 and stable branch? New stuff can be introduced in experimental,=20 debugged to unstable, and then people can debate whether they like it or = not as it phases from there into testing and finally stable. Hopefully=20 it'd slow down the rate of new compiler releases on the stable line, and = make the changes between releases smaller, which would benefit library=20 makers. I'm not saying its the only system, or even the best, but if "the=20 system" is going to change (which seems a mighty big assumption to me),=20 it's something to at least consider.
May 20 2008
Reply to Chris,New stuff can be introduced in experimental, debugged to unstable, and then people can debate whether they like it or not as it phases from there into testing and finally stable.One problem, 2.0 has things that can't not be breaking changes. I don't ever want to see them in 1.0. I feel that is a distinction that must be maintained, and if it is, we need the 2.0 branch to play them in. With that IMHO, there won't be much reason to have the other levels.
May 20 2008
Reply to Bill,A backward-compatible features-only D1.1 release would serve that, IMHO, important demographic.I'll second that. I'd kinda like to see a version that is backwards compatible with 1.0 but allows in most anything that can be argued well as fixing an "issue" even if it is more than just a bug fix.
May 20 2008
Bill Baxter wrote:A backward-compatible features-only D1.1 release would serve that, IMHO, important demographic.I don't think Walter would ever go for it. That doesn't mean someone in the D community couldn't make a compiler for a version of D with only backwards-compatible additions from D2.
May 20 2008
Bill Baxter wrote:Sean Kelly wrote:== Quote from Walter Bright (newshound1 digitalmars.com)'s articleThe majority of available code right now is D1 only. So if you don't want to reinvent lots of wheels, your best bet is D1. As most everyone knows, Tango is D1 only. Probably the majority of long-timers here are still D1 only simply because if you have lots of code that works, moving all of it to an unstable D2 is not a very compelling proposition.Bill Baxter wrote:Any chance we'll be getting a backport of the fix to bug 493 in DMD 1.031? [ http://d.puremagic.com/issues/show_bug.cgi?id=493 ]I understand your point, and I have mixed feelings about it. The trouble is, it isn't a stable target if it gets language changes, and everyone has a different idea on what should be moved from 2.0 to 1.0.So does it make sense to leave this demographic of heavy D users behind with an aging feature set?It's not just that. By making _no_ changes to D1.0, it makes later migration to D2.0 more painful. I think migration is an issue that needs more thought. Especially considering that the majority of new code will be developed under D1.0, not D2, probably for a year or so longer.
May 21 2008
Walter Bright wrote:I understand your point, and I have mixed feelings about it. The trouble is, it isn't a stable target if it gets language changes, and everyone has a different idea on what should be moved from 2.0 to 1.0.Again, I reinforce that D versioning scheme is one of its most painful deficiencies. A three-component version numbering scheme (major.minor.patch) would best support this kind of development. Such a change would land on the 1.x branch, without affecting the current 1.0.x branch, and eventually released as 1.1.0. No problem at all. Soon, when the 2.x branch is stable enough for release as "stable", you will find that you won't be able to call it 2.anything, because there won't be any "reference point" inside the 2.x branch to call it stable, and the first "stable" release of 2.x will probably be called 3.0. This should have been done long ago, since the first 1.x versions. Good articles to read: http://en.wikipedia.org/wiki/Software_versioning http://www.advogato.org/article/40.html
May 20 2008
Bill Baxter wrote:Walter Bright wrote:Hum, nice, I didn't know that was possible. I guess I didn't see it since no spec change occurred because of that fix (although it should?). -- Bruno Medeiros - Software Developer, MSc. in CS/E graduate http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#Dhttp://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.zipAny chance we'll be getting a backport of the fix to bug 493 in DMD 1.031? [ http://d.puremagic.com/issues/show_bug.cgi?id=493 ] --bb
May 28 2008
Great stuff Walter. Thanks 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.On question, though. How does DMD decide to split a module in servera .obj files? By class or once a threshold is reached?
May 19 2008
Julio Csar Carrascal Urquijo wrote:On question, though. How does DMD decide to split a module in servera .obj files? By class or once a threshold is reached?It's done for things that would be generated in multiple files, like template instantiations and typeinfo data.
May 19 2008