digitalmars.D.announce - DMD 1.036 and 2.020 releases
- Walter Bright (11/11) Oct 20 2008 http://www.digitalmars.com/d/1.0/changelog.html
- Dejan Lekic (6/6) Oct 20 2008 Mr. Bright, can we please have 64bit version of DMD 2.020?
- Bill Baxter (7/18) Oct 20 2008 Hooray for progress on mending the Tango/Phobos schism!
- KennyTM~ (3/27) Oct 21 2008 But http://www.digitalmars.com/d/2.0/phobos/std_array.html got 404'ed,
- Andrei Alexandrescu (4/37) Oct 21 2008 That's odd. I have a bunch of (uncommitted) stuff in my array.d. Of
- Steven Schveighoffer (8/40) Oct 21 2008 The comment for the commit is
- Paul D. Anderson (4/19) Oct 20 2008 Gee, Walter -- could we change 'immutable' to 'nonchangeable'? (What hav...
- Craig Black (3/3) Oct 20 2008 This is a huge step forward for D libraries. Great work guys! Is the p...
- Walter Bright (2/4) Oct 20 2008 No plans for that at the moment. Just the ability to mix & match.
- Walter Bright (3/4) Oct 20 2008 Eh, I already screwed up. There was supposed to be a change in the
- dsimcha (4/4) Oct 20 2008 I'd love to try these releases, but on a stock setup trying to compile a...
- Bill Baxter (6/10) Oct 20 2008 Assuming Windows, looks like DFLAGS aren't set right in dmd\bin\sc.ini.
- dsimcha (3/15) Oct 20 2008 Works. Thanks. Now I just get weird, inscrutable linker errors. This ...
- Bill Baxter (4/19) Oct 20 2008 Even with Hello World? That one linked and ran fine for me after
- dsimcha (3/24) Oct 20 2008 No, but with anything much more complex, like a small home-brew statisti...
- dsimcha (12/33) Oct 20 2008 Ok, looks like DMD isn't finding Object properly, using stock config exc...
- Bill Baxter (10/43) Oct 20 2008 Hmm, first off it looks like druntime.lib doesn't exist in the D2 downlo...
- Sergey Gromov (8/59) Oct 20 2008 You need to delete the src/phobos/object.d. Then
- Walter Bright (4/11) Oct 20 2008 I see the problem. The phobos.lib was built correctly, but I'd forgotten...
- Walter Bright (2/5) Oct 20 2008 I removed them from the zip file.
- Sergey Gromov (7/13) Oct 21 2008 Still a problem in dmd.conf:
- Walter Bright (2/3) Oct 21 2008 Sigh, I seem to have a hard time getting this right!
- Sean Kelly (24/42) Oct 20 2008 I have family visiting and haven't been online much the past few days as...
- Robert Fraser (2/58) Oct 21 2008 Thanks to you & Walter for all your hard work.
- Leandro Lucarella (10/11) Oct 21 2008 ditto =)
- Walter Bright (3/15) Oct 20 2008 and dmd.conf should be:
- Bill Baxter (6/16) Oct 20 2008 Actually it doesn't work for me with the whole string as one big
- Walter Bright (1/1) Oct 20 2008 You're right again.
- John Reimer (3/16) Oct 20 2008 Thank you! :)
- bearophile (7/7) Oct 20 2008 Thank you Walter, this step improves D2 significantly :-)
- Jarrett Billingsley (3/10) Oct 20 2008 As far as I know that bug exists only in D2. I remember being
- bearophile (5/7) Oct 20 2008 Ah, I see. Sorry for bothering then.
- Yigal Chripun (2/17) Oct 20 2008 Great news! thank you Sean And Walter for this important first step. I h...
- Andrei Alexandrescu (4/24) Oct 20 2008 I was hoping there is no more issue. The common runtime levels the
- Yigal Chripun (14/41) Oct 20 2008 What I meant was that now that the runtime is unified the next step
- Lionello Lunesu (7/12) Oct 20 2008 There are good reasons for keeping the IO separate. Phobos is based on t...
- Yigal Chripun (6/21) Oct 21 2008 IMHO, Tango's IO is a better default for D exactly because it's written
- Steven Schveighoffer (9/32) Oct 21 2008 one big issue: druntime only supported with phobos using D2. but Tango ...
- Walter Bright (3/5) Oct 21 2008 You're welcome!
- Steven Schveighoffer (6/9) Oct 21 2008 Yes, I wasn't suggesting it should be done for D1, what I was saying is ...
- Walter Bright (2/6) Oct 21 2008 Right!
- BCS (4/17) Oct 20 2008 I have been ignoring the tango/phobos stuff for the most part because it...
- Saaa (1/2) Oct 20 2008
- Walter Bright (2/3) Oct 21 2008 No, as there are many changes that break existing code.
- Bill Baxter (54/65) Oct 20 2008 Wao! Missed this at first:
- Steven Schveighoffer (5/76) Oct 21 2008 I think it should be a bug. I believe Andrei fully intended to use it t...
- Extrawurst (6/21) Oct 21 2008 Sounds great !
- Lars Ivar Igesund (7/34) Oct 21 2008 Because shared is now a keyword.
- Extrawurst (3/33) Oct 21 2008 Ok, what is it for ? Where is it documented ? Or is it another reserved
- KennyTM~ (2/39) Oct 21 2008 shared & unshared memories for parallel computing IIRC.
- Jason House (3/16) Oct 21 2008 There was a long discussion on digitalmars.d about this. It's definitel...
- Extrawurst (2/19) Oct 21 2008 Ok thank you for the summary.
- Don (9/24) Oct 21 2008 Thanks Walter. This is a great day!
- Sean Kelly (9/14) Oct 21 2008 It applies if the modules from both Phobos and druntime end up in the
- Sergey Gromov (4/19) Oct 21 2008 I actually was expecting all the runtime stuff to be in core.* and was
- Sean Kelly (7/25) Oct 21 2008 I didn't even create core until just recently--before that, the modules
- Extrawurst (2/30) Oct 21 2008 I am all for one toplevel package too.
-
Sergey Gromov
(4/29)
Oct 21 2008
I think the
package should be left for the user. This also - Bill Baxter (9/38) Oct 21 2008 I like core as the package name. Or maybe even std.core if that's
- Sean Kelly (3/6) Oct 21 2008 Yeah it does :-)
- Lars Ivar Igesund (19/37) Oct 22 2008 Functionality exposed from the runtime should reside in core, std should...
- Andrei Alexandrescu (5/40) Oct 22 2008 A problem I see with the proliferation of top-level packages in the
- Don (8/54) Oct 22 2008 'std', 'stdc' and 'sys' sound OK to me. Although is there any reason why...
- Sean Kelly (9/13) Oct 22 2008 My current thought is to have:
- Extrawurst (2/22) Oct 22 2008 vote++;
- Simen Kjaeraas (5/18) Oct 22 2008 core is good. d or base also, but I think core is the best.
- Jesse Phillips (3/27) Oct 22 2008 I like core. std better if phobos would step aside, for the reasons
- Leandro Lucarella (14/43) Oct 24 2008 I think std is the best too. It's a little confusing that there are
- bearophile (15/16) Oct 22 2008 "d" is the name of the package my libs, so I hope you will use something...
- Bill Baxter (8/11) Oct 22 2008 I would have thought that having a 'd' as the name of a top-level
- bearophile (6/12) Oct 22 2008 I have had no problems so far. And my identifiers are usually a little l...
- torhu (7/16) Oct 22 2008 Seems it'll work as long as you don't refer to something in the 'd'
- bearophile (4/7) Oct 22 2008 I see. Then I'll invent and use a different package name. Thank you.
- Bill Baxter (11/14) Oct 22 2008 But I think that's starting to bite Python in the behind as the number
- bearophile (4/6) Oct 22 2008 I tend to agree. That's why I have never complained for D having a "std"...
- Jason House (2/18) Oct 22 2008 What happens to the other parts of Phobos? Like others, I hope it will b...
- Sean Kelly (4/22) Oct 22 2008 That isn't something I can answer, though I'd expect Phobos to continue
- Leandro Lucarella (15/33) Oct 24 2008 If phobos is part of a "spec-conformant" compiler, I think it should sti...
- Moritz Warning (7/29) Oct 22 2008 Would be nice no have std renamed to phobos. This would enable a common
- =?UTF-8?B?QW5kZXJzIEYgQmrDtnJrbHVuZA==?= (6/14) Oct 22 2008 Then again "etc" was already named deimos, so it would still confuse...
- Sergey Gromov (3/17) Oct 23 2008 I like it.
- Lars Ivar Igesund (9/49) Oct 22 2008 This is not about proliferation, but having _one_ for common functionali...
- Robert Fraser (4/50) Oct 23 2008 I thought that's what this idea was trying to address ;-P ... Having
- Sergey Gromov (6/18) Oct 23 2008 There is no 'truly common' functionality beyond the absolutely necessary...
- Don (3/22) Oct 23 2008 ??? Don't understand.
- Sergey Gromov (15/38) Oct 23 2008 I can see a reason for a general-purpose library which is supplied with ...
- Max Samukha (3/14) Oct 21 2008 Thank you!
- Moritz Warning (2/22) Oct 21 2008 Nice! Thank you.
- Max Samukha (3/14) Oct 21 2008 Please add the compiler versions to bugzilla.
- Brad Roberts (2/3) Oct 21 2008 Done.
- Jason House (2/84) Oct 21 2008 opindexAssign will still be needed when opindex has a non-ref return typ...
- Bill Baxter (9/15) Oct 21 2008 Yep, definitely shouldn't get rid of opIndexAssign. It's still a nice
- Andrei Alexandrescu (3/87) Oct 21 2008 I think the entire operator paraphernalia is due for a serious overhaul.
- John Reimer (3/8) Oct 21 2008 This may not be a popular opinion, but I agree!
- bearophile (7/8) Oct 21 2008 I presume such rehashing is done from time to time when the hash grows u...
- Graham St Jack (3/17) Oct 21 2008 This is FANTASTIC news. Many thanks to everyone involved, especially Sea...
- digited (5/9) Oct 23 2008 Great!
- Bill Baxter (6/15) Oct 23 2008 I have no idea why the generated code got bigger again, but it's far
- digited (3/10) Oct 23 2008 I thought this bug was a feature... Back to 1.035 then.
- torhu (5/8) Oct 23 2008 I tried building DWT with -lib when that feature was first added. -lib
http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.
Oct 20 2008
Mr. Bright, can we please have 64bit version of DMD 2.020? Alternatively, we can have ability to specify where 32bit libraries are in the case one wishes to use DMD 2.x on 64bit Linux box. Thanks for wonderful news, and BIG THANKS to Sean Kelly and You for separating the core library! It is IMHO a major step forward. Kind regards
Oct 20 2008
On Tue, Oct 21, 2008 at 8:29 AM, Walter Bright <newshound1 digitalmars.com> wrote:http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Hooray for progress on mending the Tango/Phobos schism! One question about the D2 release notes. This one doesn't look quite right: OLD NEW import std.array; import core.exception; --bb
Oct 20 2008
Bill Baxter wrote:On Tue, Oct 21, 2008 at 8:29 AM, Walter Bright <newshound1 digitalmars.com> wrote:But http://www.digitalmars.com/d/2.0/phobos/std_array.html got 404'ed, and std/array.d is really removed.http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Hooray for progress on mending the Tango/Phobos schism! One question about the D2 release notes. This one doesn't look quite right: OLD NEW import std.array; import core.exception; --bb
Oct 21 2008
KennyTM~ wrote:Bill Baxter wrote:That's odd. I have a bunch of (uncommitted) stuff in my array.d. Of course, if there's any problem with the module name I can gladly change it. AndreiOn Tue, Oct 21, 2008 at 8:29 AM, Walter Bright <newshound1 digitalmars.com> wrote:But http://www.digitalmars.com/d/2.0/phobos/std_array.html got 404'ed, and std/array.d is really removed.http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Hooray for progress on mending the Tango/Phobos schism! One question about the D2 release notes. This one doesn't look quite right: OLD NEW import std.array; import core.exception; --bb
Oct 21 2008
"KennyTM~" wroteBill Baxter wrote:The comment for the commit is "Removed std.array. To trap an array bounds error, import 'exception' from druntime and catch ArrayBoundsException." It says nothing about the other functions that were in std.array. Are those replaced by functions elsewhere? It might have been an oversight by Sean. -SteveOn Tue, Oct 21, 2008 at 8:29 AM, Walter Bright <newshound1 digitalmars.com> wrote:But http://www.digitalmars.com/d/2.0/phobos/std_array.html got 404'ed, and std/array.d is really removed.http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Hooray for progress on mending the Tango/Phobos schism! One question about the D2 release notes. This one doesn't look quite right: OLD NEW import std.array; import core.exception; --bb
Oct 21 2008
Walter Bright Wrote:http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Gee, Walter -- could we change 'immutable' to 'nonchangeable'? (What have you done for me lately?) Thank you (and Sean too!!) Paul
Oct 20 2008
This is a huge step forward for D libraries. Great work guys! Is the plan to eventually merge Tango and Phobos? -Craig
Oct 20 2008
Craig Black wrote:This is a huge step forward for D libraries. Great work guys! Is the plan to eventually merge Tango and Phobos?No plans for that at the moment. Just the ability to mix & match.
Oct 20 2008
Walter Bright wrote:It may take a followup release to file them down.Eh, I already screwed up. There was supposed to be a change in the Exception hierarchy. I'll have to fix that next update.
Oct 20 2008
I'd love to try these releases, but on a stock setup trying to compile a Hello World, I get: E:\dmd\bin\..\src\phobos\std\stdio.d(27): module memory cannot read file 'core\memory.d'
Oct 20 2008
On Tue, Oct 21, 2008 at 9:16 AM, dsimcha <dsimcha yahoo.com> wrote:I'd love to try these releases, but on a stock setup trying to compile a Hello World, I get: E:\dmd\bin\..\src\phobos\std\stdio.d(27): module memory cannot read file 'core\memory.d'Assuming Windows, looks like DFLAGS aren't set right in dmd\bin\sc.ini. Should be: DFLAGS="-I% P%\..\src\phobos" "-I% P%\..\src\druntime\import" That fixes things for me. --bb
Oct 20 2008
== Quote from Bill Baxter (wbaxter gmail.com)'s articleOn Tue, Oct 21, 2008 at 9:16 AM, dsimcha <dsimcha yahoo.com> wrote:Works. Thanks. Now I just get weird, inscrutable linker errors. This one might be a little too bleeding edge even for me.I'd love to try these releases, but on a stock setup trying to compile a Hello World, I get: E:\dmd\bin\..\src\phobos\std\stdio.d(27): module memory cannot read file 'core\memory.d'Assuming Windows, looks like DFLAGS aren't set right in dmd\bin\sc.ini. Should be: DFLAGS="-I% P%\..\src\phobos" "-I% P%\..\src\druntime\import" That fixes things for me. --bb
Oct 20 2008
On Tue, Oct 21, 2008 at 9:39 AM, dsimcha <dsimcha yahoo.com> wrote:== Quote from Bill Baxter (wbaxter gmail.com)'s articleEven with Hello World? That one linked and ran fine for me after adding the druntime include. --bbOn Tue, Oct 21, 2008 at 9:16 AM, dsimcha <dsimcha yahoo.com> wrote:Works. Thanks. Now I just get weird, inscrutable linker errors. This one might be a little too bleeding edge even for me.I'd love to try these releases, but on a stock setup trying to compile a Hello World, I get: E:\dmd\bin\..\src\phobos\std\stdio.d(27): module memory cannot read file 'core\memory.d'Assuming Windows, looks like DFLAGS aren't set right in dmd\bin\sc.ini. Should be: DFLAGS="-I% P%\..\src\phobos" "-I% P%\..\src\druntime\import" That fixes things for me. --bb
Oct 20 2008
== Quote from Bill Baxter (wbaxter gmail.com)'s articleOn Tue, Oct 21, 2008 at 9:39 AM, dsimcha <dsimcha yahoo.com> wrote:No, but with anything much more complex, like a small home-brew statistics lib I'm trying to port. I'm sure it's just some silly thing. I'll figure it out eventually.== Quote from Bill Baxter (wbaxter gmail.com)'s articleEven with Hello World? That one linked and ran fine for me after adding the druntime include. --bbOn Tue, Oct 21, 2008 at 9:16 AM, dsimcha <dsimcha yahoo.com> wrote:Works. Thanks. Now I just get weird, inscrutable linker errors. This one might be a little too bleeding edge even for me.I'd love to try these releases, but on a stock setup trying to compile a Hello World, I get: E:\dmd\bin\..\src\phobos\std\stdio.d(27): module memory cannot read file 'core\memory.d'Assuming Windows, looks like DFLAGS aren't set right in dmd\bin\sc.ini. Should be: DFLAGS="-I% P%\..\src\phobos" "-I% P%\..\src\druntime\import" That fixes things for me. --bb
Oct 20 2008
== Quote from Bill Baxter (wbaxter gmail.com)'s articleOn Tue, Oct 21, 2008 at 9:39 AM, dsimcha <dsimcha yahoo.com> wrote:Ok, looks like DMD isn't finding Object properly, using stock config except for Bill Baxter's change to sc.ini. class Foo {} void main() { auto foo = new Foo; } Error 42: Symbol Undefined _D6object6Object5printMFZv Seriously, though, Walter, thank you very much for this release. You have done a tremendous job bringing us a better language. Merging the Phobos and Tango runtime is a monumental task (Sean, thank you, too) and a few bumps along the road are definitely understandable.== Quote from Bill Baxter (wbaxter gmail.com)'s articleEven with Hello World? That one linked and ran fine for me after adding the druntime include. --bbOn Tue, Oct 21, 2008 at 9:16 AM, dsimcha <dsimcha yahoo.com> wrote:Works. Thanks. Now I just get weird, inscrutable linker errors. This one might be a little too bleeding edge even for me.I'd love to try these releases, but on a stock setup trying to compile a Hello World, I get: E:\dmd\bin\..\src\phobos\std\stdio.d(27): module memory cannot read file 'core\memory.d'Assuming Windows, looks like DFLAGS aren't set right in dmd\bin\sc.ini. Should be: DFLAGS="-I% P%\..\src\phobos" "-I% P%\..\src\druntime\import" That fixes things for me. --bb
Oct 20 2008
On Tue, Oct 21, 2008 at 10:59 AM, dsimcha <dsimcha yahoo.com> wrote:== Quote from Bill Baxter (wbaxter gmail.com)'s articleHmm, first off it looks like druntime.lib doesn't exist in the D2 download. I was able to build it by running build-dmd.bat in one of the druntime subdirectories. But there's more to it than that. There's an object.d in src/phobos with a prototype for a print() function. But the object.di in src/druntime/import does not have a print() function. So maybe the phobos.lib included was built using the old object.d instead of the new one from druntime? --bbOn Tue, Oct 21, 2008 at 9:39 AM, dsimcha <dsimcha yahoo.com> wrote:Ok, looks like DMD isn't finding Object properly, using stock config except for Bill Baxter's change to sc.ini. class Foo {} void main() { auto foo = new Foo; } Error 42: Symbol Undefined _D6object6Object5printMFZv Seriously, though, Walter, thank you very much for this release. You have done a tremendous job bringing us a better language. Merging the Phobos and Tango runtime is a monumental task (Sean, thank you, too) and a few bumps along the road are definitely understandable.== Quote from Bill Baxter (wbaxter gmail.com)'s articleEven with Hello World? That one linked and ran fine for me after adding the druntime include. --bbOn Tue, Oct 21, 2008 at 9:16 AM, dsimcha <dsimcha yahoo.com> wrote:Works. Thanks. Now I just get weird, inscrutable linker errors. This one might be a little too bleeding edge even for me.I'd love to try these releases, but on a stock setup trying to compile a Hello World, I get: E:\dmd\bin\..\src\phobos\std\stdio.d(27): module memory cannot read file 'core\memory.d'Assuming Windows, looks like DFLAGS aren't set right in dmd\bin\sc.ini. Should be: DFLAGS="-I% P%\..\src\phobos" "-I% P%\..\src\druntime\import" That fixes things for me. --bb
Oct 20 2008
Tue, 21 Oct 2008 11:19:22 +0900, Bill Baxter wrote:On Tue, Oct 21, 2008 at 10:59 AM, dsimcha <dsimcha yahoo.com> wrote:You need to delete the src/phobos/object.d. Then src/druntime/import/object.di is included instead and everything starts to work (for some simple projects at least). Building druntime.lib doesn't seem to be required. I think it's also a good idea to delete src/phobos/std/gc.d because it's not in the libs. You have to use core.memory instead.== Quote from Bill Baxter (wbaxter gmail.com)'s articleHmm, first off it looks like druntime.lib doesn't exist in the D2 download. I was able to build it by running build-dmd.bat in one of the druntime subdirectories. But there's more to it than that. There's an object.d in src/phobos with a prototype for a print() function. But the object.di in src/druntime/import does not have a print() function. So maybe the phobos.lib included was built using the old object.d instead of the new one from druntime?On Tue, Oct 21, 2008 at 9:39 AM, dsimcha <dsimcha yahoo.com> wrote:Ok, looks like DMD isn't finding Object properly, using stock config except for Bill Baxter's change to sc.ini. class Foo {} void main() { auto foo = new Foo; } Error 42: Symbol Undefined _D6object6Object5printMFZv Seriously, though, Walter, thank you very much for this release. You have done a tremendous job bringing us a better language. Merging the Phobos and Tango runtime is a monumental task (Sean, thank you, too) and a few bumps along the road are definitely understandable.== Quote from Bill Baxter (wbaxter gmail.com)'s articleEven with Hello World? That one linked and ran fine for me after adding the druntime include. --bbOn Tue, Oct 21, 2008 at 9:16 AM, dsimcha <dsimcha yahoo.com> wrote:Works. Thanks. Now I just get weird, inscrutable linker errors. This one might be a little too bleeding edge even for me.I'd love to try these releases, but on a stock setup trying to compile a Hello World, I get: E:\dmd\bin\..\src\phobos\std\stdio.d(27): module memory cannot read file 'core\memory.d'Assuming Windows, looks like DFLAGS aren't set right in dmd\bin\sc.ini. Should be: DFLAGS="-I% P%\..\src\phobos" "-I% P%\..\src\druntime\import" That fixes things for me. --bb
Oct 20 2008
Bill Baxter wrote:But there's more to it than that. There's an object.d in src/phobos with a prototype for a print() function. But the object.di in src/druntime/import does not have a print() function. So maybe the phobos.lib included was built using the old object.d instead of the new one from druntime?I see the problem. The phobos.lib was built correctly, but I'd forgotten to remove the old object.d. If you simply delete /dmd/src/phobos/object.d, it should work.
Oct 20 2008
Walter Bright wrote:I see the problem. The phobos.lib was built correctly, but I'd forgotten to remove the old object.d. If you simply delete /dmd/src/phobos/object.d, it should work.I removed them from the zip file.
Oct 20 2008
Mon, 20 Oct 2008 19:56:01 -0700, Walter Bright wrote:Walter Bright wrote:Still a problem in dmd.conf: -I% P%/../src/runtime/import should be -I% P%/../src/druntime/import note the 'd' in 'druntime'I see the problem. The phobos.lib was built correctly, but I'd forgotten to remove the old object.d. If you simply delete /dmd/src/phobos/object.d, it should work.I removed them from the zip file.
Oct 21 2008
Sergey Gromov wrote:note the 'd' in 'druntime'Sigh, I seem to have a hard time getting this right!
Oct 21 2008
Bill Baxter wrote:On Tue, Oct 21, 2008 at 10:59 AM, dsimcha <dsimcha yahoo.com> wrote:I have family visiting and haven't been online much the past few days as a result. But from a quick perusal these are some issues with the current release: * ship druntime.lib in dmd/lib * remove object.d and errno.c from phobos/ * modify DFLAGS to reference the druntime import path Also, something will have to be done about druntime including a 'std' package in its import directory. I'd say just remove it for now, but hopefully at some point it won't be necessary to retain it at all (the reasons for it being there are somewhat weird). This shouldn't affect use of the current release, though you may have to place the phobos directory first in your import path list. Finally, I still need to look over the core.memory.GC.xxxHandle() routines, which were added by necessity just prior to release. The basic functionality will remain, but names may be changed to protect the innocent, etc. If anyone runs across any other issues, please submit a ticket on dsource or the puremagic site as appropriate, or simply post them here. By the way... thank you all for testing this out. I know the initial release is a bit rough, but hopefully things will be smoothed out soon. Once DMD is sorted I'll be porting the GDC runtime as well. I just wanted to get one distro sorted out first before dealing with the others. SeanSeriously, though, Walter, thank you very much for this release. You have done a tremendous job bringing us a better language. Merging the Phobos and Tango runtime is a monumental task (Sean, thank you, too) and a few bumps along the road are definitely understandable.Hmm, first off it looks like druntime.lib doesn't exist in the D2 download. I was able to build it by running build-dmd.bat in one of the druntime subdirectories. But there's more to it than that. There's an object.d in src/phobos with a prototype for a print() function. But the object.di in src/druntime/import does not have a print() function. So maybe the phobos.lib included was built using the old object.d instead of the new one from druntime?
Oct 20 2008
Sean Kelly wrote:Bill Baxter wrote:Thanks to you & Walter for all your hard work.On Tue, Oct 21, 2008 at 10:59 AM, dsimcha <dsimcha yahoo.com> wrote:I have family visiting and haven't been online much the past few days as a result. But from a quick perusal these are some issues with the current release: * ship druntime.lib in dmd/lib * remove object.d and errno.c from phobos/ * modify DFLAGS to reference the druntime import path Also, something will have to be done about druntime including a 'std' package in its import directory. I'd say just remove it for now, but hopefully at some point it won't be necessary to retain it at all (the reasons for it being there are somewhat weird). This shouldn't affect use of the current release, though you may have to place the phobos directory first in your import path list. Finally, I still need to look over the core.memory.GC.xxxHandle() routines, which were added by necessity just prior to release. The basic functionality will remain, but names may be changed to protect the innocent, etc. If anyone runs across any other issues, please submit a ticket on dsource or the puremagic site as appropriate, or simply post them here. By the way... thank you all for testing this out. I know the initial release is a bit rough, but hopefully things will be smoothed out soon. Once DMD is sorted I'll be porting the GDC runtime as well. I just wanted to get one distro sorted out first before dealing with the others. SeanSeriously, though, Walter, thank you very much for this release. You have done a tremendous job bringing us a better language. Merging the Phobos and Tango runtime is a monumental task (Sean, thank you, too) and a few bumps along the road are definitely understandable.Hmm, first off it looks like druntime.lib doesn't exist in the D2 download. I was able to build it by running build-dmd.bat in one of the druntime subdirectories. But there's more to it than that. There's an object.d in src/phobos with a prototype for a print() function. But the object.di in src/druntime/import does not have a print() function. So maybe the phobos.lib included was built using the old object.d instead of the new one from druntime?
Oct 21 2008
Robert Fraser, el 21 de octubre a las 03:09 me escribiste:Thanks to you & Walter for all your hard work.ditto =) -- Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/ ---------------------------------------------------------------------------- GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05) ---------------------------------------------------------------------------- El día que falten los niños, que sobren las mujeres y que se prenda fuego el último árbol, será el Apocalípsis. -- Ricardo Vaporeso. Camino Negro, 1916.
Oct 21 2008
Bill Baxter wrote:Assuming Windows, looks like DFLAGS aren't set right in dmd\bin\sc.ini.You're right. sc.ini should be:[Version] version=7.51 Build 020 [Environment] LIB="% P%\..\lib";\dm\lib DFLAGS="-I% P%\..\src\phobos -I% P%\..\src\druntime\import" LINKCMD=% P%\..\..\dm\bin\link.exeand dmd.conf should be:[Environment] DFLAGS=-I% P%/../src/phobos -I% P%/../src/runtime/import -L-L% P%/../lib
Oct 20 2008
On Tue, Oct 21, 2008 at 9:45 AM, Walter Bright <newshound1 digitalmars.com> wrote:Bill Baxter wrote:Actually it doesn't work for me with the whole string as one big quote. I had to split it into two quotes like I posted it before: DFLAGS="-I% P%\..\src\phobos" "-I% P%\..\src\druntime\import" --bbAssuming Windows, looks like DFLAGS aren't set right in dmd\bin\sc.ini.You're right. sc.ini should be:[Version] version=7.51 Build 020 [Environment] LIB="% P%\..\lib";\dm\lib DFLAGS="-I% P%\..\src\phobos -I% P%\..\src\druntime\import"
Oct 20 2008
Hello Walter,http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Thank you! :) -JJR
Oct 20 2008
Thank you Walter, this step improves D2 significantly :-) I have seen that's there's an improvement in the AAs in D1 too, I'll do few benchmarks. I have also seen this nasty bug fixed in D2: http://d.puremagic.com/issues/show_bug.cgi?id=2333 Can't it be fixed in D1 too? Bye, bearophile
Oct 20 2008
On Mon, Oct 20, 2008 at 10:40 PM, bearophile <bearophileHUGS lycos.com> wrote:Thank you Walter, this step improves D2 significantly :-) I have seen that's there's an improvement in the AAs in D1 too, I'll do few benchmarks. I have also seen this nasty bug fixed in D2: http://d.puremagic.com/issues/show_bug.cgi?id=2333 Can't it be fixed in D1 too? Bye, bearophileAs far as I know that bug exists only in D2. I remember being confused about this before; it works fine in D1.
Oct 20 2008
Jarrett Billingsley:As far as I know that bug exists only in D2. I remember being confused about this before; it works fine in D1.Ah, I see. Sorry for bothering then. A note: 1.036 has compiled successfully all my code :-) Bye, bearophile
Oct 20 2008
Walter Bright Wrote:http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Great news! thank you Sean And Walter for this important first step. I hope the rest of the tango/phobos issue will be sorted out as well..
Oct 20 2008
Yigal Chripun wrote:Walter Bright Wrote:I was hoping there is no more issue. The common runtime levels the ground for library interoperability. Andreihttp://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Great news! thank you Sean And Walter for this important first step. I hope the rest of the tango/phobos issue will be sorted out as well..
Oct 20 2008
Andrei Alexandrescu wrote:Yigal Chripun wrote:What I meant was that now that the runtime is unified the next step would be to unify the user APIs. You've posted in the NG your intention to re-implement several key modules in phobos including IO and algorithm, I'm hoping that instead of two separate IO systems (tango and phobos) you could use the Tango IO and implement your Range proposal on top of it. Others already suggested that on this NG. I know that there are license issues with this which I don't understand. both Tango and Phobos use very liberal open-source licenses so all is needed to use Tango code legally in the future unified standard library is to comply with the restrictions which IIRC require only acknowledgment. IANAL but all those differences between open source licenses shouldn't be a big deal.Walter Bright Wrote:I was hoping there is no more issue. The common runtime levels the ground for library interoperability. Andreihttp://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Great news! thank you Sean And Walter for this important first step. I hope the rest of the tango/phobos issue will be sorted out as well..
Oct 20 2008
"Yigal Chripun" <yigal100 gmail.com> wrote in message news:gdjqd6$2mia$1 digitalmars.com...You've posted in the NG your intention to re-implement several key modules in phobos including IO and algorithm, I'm hoping that instead of two separate IO systems (tango and phobos) you could use the Tango IO and implement your Range proposal on top of it. Others already suggested that on this NG.There are good reasons for keeping the IO separate. Phobos is based on the C runtime, meaning you can interleave D IO with C IO and everything will behave nicely. Tango's IO layer is written from scratch, using OS calls. You shouldn't mix Tango IO with IO in a linked-in C library. L.
Oct 20 2008
Lionello Lunesu wrote:"Yigal Chripun" <yigal100 gmail.com> wrote in message news:gdjqd6$2mia$1 digitalmars.com...IMHO, Tango's IO is a better default for D exactly because it's written from scratch specifically for D. the benefits are better performance and no dependence on the C stdlib. interleaving D IO with C IO is also possible with tango, with the relevant stdc modules, but that should IMHO be an opt-in feature.You've posted in the NG your intention to re-implement several key modules in phobos including IO and algorithm, I'm hoping that instead of two separate IO systems (tango and phobos) you could use the Tango IO and implement your Range proposal on top of it. Others already suggested that on this NG.There are good reasons for keeping the IO separate. Phobos is based on the C runtime, meaning you can interleave D IO with C IO and everything will behave nicely. Tango's IO layer is written from scratch, using OS calls. You shouldn't mix Tango IO with IO in a linked-in C library. L.
Oct 21 2008
"Andrei Alexandrescu" wroteYigal Chripun wrote:one big issue: druntime only supported with phobos using D2. but Tango only supports D1 ;) But some of us are working to get Tango to compile on D2 (it does currently, but Tango is not fully constified yet). I think I'll wait until some of the dust settles before trying to build Tango with D2 druntime. Thanks for the efforts! -SteveWalter Bright Wrote:I was hoping there is no more issue. The common runtime levels the ground for library interoperability.http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Great news! thank you Sean And Walter for this important first step. I hope the rest of the tango/phobos issue will be sorted out as well..
Oct 21 2008
Steven Schveighoffer wrote:one big issue: druntime only supported with phobos using D2.That's because the druntime support is a breaking change for Phobos users.Thanks for the efforts!You're welcome!
Oct 21 2008
"Walter Bright" wroteSteven Schveighoffer wrote:Yes, I wasn't suggesting it should be done for D1, what I was saying is the magical land where Tango and Phobos apps live together in harmony is not available yet ;) Which is part of the reason why several of us Tango devs are working on a D2 branch. -Steveone big issue: druntime only supported with phobos using D2.That's because the druntime support is a breaking change for Phobos users.
Oct 21 2008
Steven Schveighoffer wrote:Yes, I wasn't suggesting it should be done for D1, what I was saying is the magical land where Tango and Phobos apps live together in harmony is not available yet ;) Which is part of the reason why several of us Tango devs are working on a D2 branch.Right!
Oct 21 2008
Reply to Walter,http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.I have been ignoring the tango/phobos stuff for the most part because it's not something I have time for. :( Will D1.0 ever get the same fix-up?
Oct 20 2008
BCS wrote:Will D1.0 ever get the same fix-up?No, as there are many changes that break existing code.
Oct 21 2008
On Tue, Oct 21, 2008 at 8:29 AM, Walter Bright <newshound1 digitalmars.com> wrote:http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Wao! Missed this at first: class Foo { ref int getref() { return m_int; } private: int m_int = 23; } void main() { auto foo = new Foo; writefln(foo.getref); foo.getref() = 7; writefln(foo.getref); } //Outputs: //23 //7 It works! This is maybe even bigger news than cure for TangoPhobia! But I think maybe more documentation is needed in the Ref returns section regarding how this affects opIndex. class Foo { this() { m_arr.length = 10; foreach(i, ref a; m_arr) { a=i;} } int[] array() { return m_arr; } ref int opIndex(size_t idx) { return m_arr[idx]; } private: int[] m_arr; } void main() { auto foo = new Foo; foo[3] = -99; //hello.d(44): Error: operator [] assignment overload with opIndex(i, value) illegal, use opIndexAssign(value, i) //hello.d(44): function hello.Foo.opIndex (uint idx) does not match parameter types (int,int) //hello.d(44): Error: expected 1 arguments, not 2 } Apparently using opIndex with ref return is not allowed as a way to set an index. This works though: *(&foo[3]) = -99; Is there a good reason why it shouldn't be possible to use opAssign as a replacement for opIndexAssign? --bb
Oct 20 2008
"Bill Baxter" <wbaxter gmail.com> wrote in message news:mailman.186.1224567134.3087.digitalmars-d-announce puremagic.com...On Tue, Oct 21, 2008 at 8:29 AM, Walter Bright <newshound1 digitalmars.com> wrote:I think it should be a bug. I believe Andrei fully intended to use it this way. -Stevehttp://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Wao! Missed this at first: class Foo { ref int getref() { return m_int; } private: int m_int = 23; } void main() { auto foo = new Foo; writefln(foo.getref); foo.getref() = 7; writefln(foo.getref); } //Outputs: //23 //7 It works! This is maybe even bigger news than cure for TangoPhobia! But I think maybe more documentation is needed in the Ref returns section regarding how this affects opIndex. class Foo { this() { m_arr.length = 10; foreach(i, ref a; m_arr) { a=i;} } int[] array() { return m_arr; } ref int opIndex(size_t idx) { return m_arr[idx]; } private: int[] m_arr; } void main() { auto foo = new Foo; foo[3] = -99; //hello.d(44): Error: operator [] assignment overload with opIndex(i, value) illegal, use opIndexAssign(value, i) //hello.d(44): function hello.Foo.opIndex (uint idx) does not match parameter types (int,int) //hello.d(44): Error: expected 1 arguments, not 2 } Apparently using opIndex with ref return is not allowed as a way to set an index. This works though: *(&foo[3]) = -99; Is there a good reason why it shouldn't be possible to use opAssign as a replacement for opIndexAssign?
Oct 21 2008
Walter Bright wrote:http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Sounds great ! But why is it that since 2.020 i cannot name a package "shared" anymore? moudle shared.foo; dmd: "Identifier expected following module" WTF ?
Oct 21 2008
Extrawurst wrote:Walter Bright wrote:Because shared is now a keyword. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tangohttp://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Sounds great ! But why is it that since 2.020 i cannot name a package "shared" anymore? moudle shared.foo; dmd: "Identifier expected following module" WTF ?
Oct 21 2008
Lars Ivar Igesund wrote:Extrawurst wrote:Ok, what is it for ? Where is it documented ? Or is it another reserved keyword like "macro" is ?Walter Bright wrote:Because shared is now a keyword.http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Sounds great ! But why is it that since 2.020 i cannot name a package "shared" anymore? moudle shared.foo; dmd: "Identifier expected following module" WTF ?
Oct 21 2008
Extrawurst wrote:Lars Ivar Igesund wrote:shared & unshared memories for parallel computing IIRC.Extrawurst wrote:Ok, what is it for ? Where is it documented ? Or is it another reserved keyword like "macro" is ?Walter Bright wrote:Because shared is now a keyword.http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Sounds great ! But why is it that since 2.020 i cannot name a package "shared" anymore? moudle shared.foo; dmd: "Identifier expected following module" WTF ?
Oct 21 2008
Extrawurst Wrote:There was a long discussion on digitalmars.d about this. It's definitely coming in the short term. It was on Walter's top 5 a week or so ago... along with integrating druntime, ref return values, and implementing immutable. I don't recall the whole list, but he's definitely working on this. This is part of the change to allow thread local storage and have non-local objects marked as shared. Shared objects would have a number of volatile-like properties. I'm sure I've butchered the whole topic in trying to do a summary in a sentence or two, but it should give you the general idea of what it is and why the word has become a keyword.Ok, what is it for ? Where is it documented ? Or is it another reserved keyword like "macro" is ?But why is it that since 2.020 i cannot name a package "shared" anymore? moudle shared.foo; dmd: "Identifier expected following module" WTF ?Because shared is now a keyword.
Oct 21 2008
Jason House wrote:Extrawurst Wrote:Ok thank you for the summary.There was a long discussion on digitalmars.d about this. It's definitely coming in the short term. It was on Walter's top 5 a week or so ago... along with integrating druntime, ref return values, and implementing immutable. I don't recall the whole list, but he's definitely working on this. This is part of the change to allow thread local storage and have non-local objects marked as shared. Shared objects would have a number of volatile-like properties. I'm sure I've butchered the whole topic in trying to do a summary in a sentence or two, but it should give you the general idea of what it is and why the word has become a keyword.Ok, what is it for ? Where is it documented ? Or is it another reserved keyword like "macro" is ?But why is it that since 2.020 i cannot name a package "shared" anymore? moudle shared.foo; dmd: "Identifier expected following module" WTF ?Because shared is now a keyword.
Oct 21 2008
Walter Bright wrote:http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Thanks Walter. This is a great day! One rough patch: Phobos docs don't include the new 'core' modules, except core.memory which appears where std.gc used to be. We also now have two modules called 'bitmanip', which is somewhat ironic since we brainstormed for ages trying to come up with a better name for it. Modules with duplicate names have caused linking problems in the past -- not sure if that applies here.
Oct 21 2008
Don wrote:We also now have two modules called 'bitmanip', which is somewhat ironic since we brainstormed for ages trying to come up with a better name for it. Modules with duplicate names have caused linking problems in the past -- not sure if that applies here.It applies if the modules from both Phobos and druntime end up in the same library on *nix. Windows doesn't appear to have the same issue. But I'd love to hear suggestions for alternative names-- I'm not terribly good at naming modules :-p. Also, any I'd like to see how people feel about having three top-level packages in druntime vs. one-- an alternative I'd considered was to put everything under core. Sean
Oct 21 2008
Tue, 21 Oct 2008 09:40:28 -0700, Sean Kelly wrote:Don wrote:I actually was expecting all the runtime stuff to be in core.* and was surprised to find std and sys there.We also now have two modules called 'bitmanip', which is somewhat ironic since we brainstormed for ages trying to come up with a better name for it. Modules with duplicate names have caused linking problems in the past -- not sure if that applies here.It applies if the modules from both Phobos and druntime end up in the same library on *nix. Windows doesn't appear to have the same issue. But I'd love to hear suggestions for alternative names-- I'm not terribly good at naming modules :-p. Also, any I'd like to see how people feel about having three top-level packages in druntime vs. one-- an alternative I'd considered was to put everything under core.
Oct 21 2008
Sergey Gromov wrote:Tue, 21 Oct 2008 09:40:28 -0700, Sean Kelly wrote:I didn't even create core until just recently--before that, the modules in core were global, much like object. So my thoughts on the druntime package layout are still evolving. I do now think that having a single top-level package would probably be best, but figured I'd solicit opinions before changing anything. SeanDon wrote:I actually was expecting all the runtime stuff to be in core.* and was surprised to find std and sys there.We also now have two modules called 'bitmanip', which is somewhat ironic since we brainstormed for ages trying to come up with a better name for it. Modules with duplicate names have caused linking problems in the past -- not sure if that applies here.It applies if the modules from both Phobos and druntime end up in the same library on *nix. Windows doesn't appear to have the same issue. But I'd love to hear suggestions for alternative names-- I'm not terribly good at naming modules :-p. Also, any I'd like to see how people feel about having three top-level packages in druntime vs. one-- an alternative I'd considered was to put everything under core.
Oct 21 2008
Sean Kelly wrote:Sergey Gromov wrote:I am all for one toplevel package too.Tue, 21 Oct 2008 09:40:28 -0700, Sean Kelly wrote:I didn't even create core until just recently--before that, the modules in core were global, much like object. So my thoughts on the druntime package layout are still evolving. I do now think that having a single top-level package would probably be best, but figured I'd solicit opinions before changing anything. SeanDon wrote:I actually was expecting all the runtime stuff to be in core.* and was surprised to find std and sys there.We also now have two modules called 'bitmanip', which is somewhat ironic since we brainstormed for ages trying to come up with a better name for it. Modules with duplicate names have caused linking problems in the past -- not sure if that applies here.It applies if the modules from both Phobos and druntime end up in the same library on *nix. Windows doesn't appear to have the same issue. But I'd love to hear suggestions for alternative names-- I'm not terribly good at naming modules :-p. Also, any I'd like to see how people feel about having three top-level packages in druntime vs. one-- an alternative I'd considered was to put everything under core.
Oct 21 2008
Tue, 21 Oct 2008 11:04:56 -0700, Sean Kelly wrote:Sergey Gromov wrote:I think the <default> package should be left for the user. This also gives you an opportunity to use package protection where appropriate.Tue, 21 Oct 2008 09:40:28 -0700, Sean Kelly wrote:I didn't even create core until just recently--before that, the modules in core were global, much like object. So my thoughts on the druntime package layout are still evolving. I do now think that having a single top-level package would probably be best, but figured I'd solicit opinions before changing anything.Don wrote:I actually was expecting all the runtime stuff to be in core.* and was surprised to find std and sys there.We also now have two modules called 'bitmanip', which is somewhat ironic since we brainstormed for ages trying to come up with a better name for it. Modules with duplicate names have caused linking problems in the past -- not sure if that applies here.It applies if the modules from both Phobos and druntime end up in the same library on *nix. Windows doesn't appear to have the same issue. But I'd love to hear suggestions for alternative names-- I'm not terribly good at naming modules :-p. Also, any I'd like to see how people feel about having three top-level packages in druntime vs. one-- an alternative I'd considered was to put everything under core.
Oct 21 2008
On Wed, Oct 22, 2008 at 9:19 AM, Sergey Gromov <snake.scaly gmail.com> wrote:Tue, 21 Oct 2008 11:04:56 -0700, Sean Kelly wrote:I like core as the package name. Or maybe even std.core if that's technically possible. The stuff in there is going to be kind of rare to import directly, right? So doesn't seem like the modules need to be top-level (or even second level). I also like the idea of renaming the whole project from druntime to dcore. Just sounds cooler. :-) --bbSergey Gromov wrote:I think the <default> package should be left for the user. This also gives you an opportunity to use package protection where appropriate.Tue, 21 Oct 2008 09:40:28 -0700, Sean Kelly wrote:I didn't even create core until just recently--before that, the modules in core were global, much like object. So my thoughts on the druntime package layout are still evolving. I do now think that having a single top-level package would probably be best, but figured I'd solicit opinions before changing anything.Don wrote:I actually was expecting all the runtime stuff to be in core.* and was surprised to find std and sys there.We also now have two modules called 'bitmanip', which is somewhat ironic since we brainstormed for ages trying to come up with a better name for it. Modules with duplicate names have caused linking problems in the past -- not sure if that applies here.It applies if the modules from both Phobos and druntime end up in the same library on *nix. Windows doesn't appear to have the same issue. But I'd love to hear suggestions for alternative names-- I'm not terribly good at naming modules :-p. Also, any I'd like to see how people feel about having three top-level packages in druntime vs. one-- an alternative I'd considered was to put everything under core.
Oct 21 2008
Bill Baxter wrote:I also like the idea of renaming the whole project from druntime to dcore. Just sounds cooler. :-)Yeah it does :-) Sean
Oct 21 2008
Sean Kelly wrote:Don wrote:Functionality exposed from the runtime should reside in core, std shouldn't be used in druntime and any other packages (sys) is presumingly reserved for what corresponds to tango.sys In any case, a hierarchy of the type common/ core/ sys/ stdc/ should be highly considered. This would allow a namespace for functionality that is truly common, not only the runtime, but math and eventually other functionality. In addition it is naive to believe that just because druntime is meant to be a common runtime, that it will be the only runtime in the long run. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the TangoWe also now have two modules called 'bitmanip', which is somewhat ironic since we brainstormed for ages trying to come up with a better name for it. Modules with duplicate names have caused linking problems in the past -- not sure if that applies here.It applies if the modules from both Phobos and druntime end up in the same library on *nix. Windows doesn't appear to have the same issue. But I'd love to hear suggestions for alternative names-- I'm not terribly good at naming modules :-p. Also, any I'd like to see how people feel about having three top-level packages in druntime vs. one-- an alternative I'd considered was to put everything under core. Sean
Oct 22 2008
Lars Ivar Igesund wrote:Sean Kelly wrote:A problem I see with the proliferation of top-level packages in the standard library is that each of them makes homonym user-defined packages inaccessible. Heck, I have a package called "common" today. AndreiDon wrote:Functionality exposed from the runtime should reside in core, std shouldn't be used in druntime and any other packages (sys) is presumingly reserved for what corresponds to tango.sys In any case, a hierarchy of the type common/ core/ sys/ stdc/ should be highly considered. This would allow a namespace for functionality that is truly common, not only the runtime, but math and eventually other functionality. In addition it is naive to believe that just because druntime is meant to be a common runtime, that it will be the only runtime in the long run.We also now have two modules called 'bitmanip', which is somewhat ironic since we brainstormed for ages trying to come up with a better name for it. Modules with duplicate names have caused linking problems in the past -- not sure if that applies here.It applies if the modules from both Phobos and druntime end up in the same library on *nix. Windows doesn't appear to have the same issue. But I'd love to hear suggestions for alternative names-- I'm not terribly good at naming modules :-p. Also, any I'd like to see how people feel about having three top-level packages in druntime vs. one-- an alternative I'd considered was to put everything under core. Sean
Oct 22 2008
Andrei Alexandrescu wrote:Lars Ivar Igesund wrote:'std', 'stdc' and 'sys' sound OK to me. Although is there any reason why stdc couldn't be part of 'sys'? IMHO: 'common' sounds far too generic. 'core' is borderline. Of course if the non-common parts of Phobos were moved to a namespace called 'phobos', std would become the perfect location for common code. But changing std.stdio to phobos.stdio might not be acceptable. Anyway, we need to arrange a common location somehow.Sean Kelly wrote:A problem I see with the proliferation of top-level packages in the standard library is that each of them makes homonym user-defined packages inaccessible. Heck, I have a package called "common" today. AndreiDon wrote:Functionality exposed from the runtime should reside in core, std shouldn't be used in druntime and any other packages (sys) is presumingly reserved for what corresponds to tango.sys In any case, a hierarchy of the type common/ core/ sys/ stdc/ should be highly considered. This would allow a namespace for functionality that is truly common, not only the runtime, but math and eventually other functionality. In addition it is naive to believe that just because druntime is meant to be a common runtime, that it will be the only runtime in the long run.We also now have two modules called 'bitmanip', which is somewhat ironic since we brainstormed for ages trying to come up with a better name for it. Modules with duplicate names have caused linking problems in the past -- not sure if that applies here.It applies if the modules from both Phobos and druntime end up in the same library on *nix. Windows doesn't appear to have the same issue. But I'd love to hear suggestions for alternative names-- I'm not terribly good at naming modules :-p. Also, any I'd like to see how people feel about having three top-level packages in druntime vs. one-- an alternative I'd considered was to put everything under core. Sean
Oct 22 2008
Don wrote:'std', 'stdc' and 'sys' sound OK to me. Although is there any reason why stdc couldn't be part of 'sys'? IMHO: 'common' sounds far too generic. 'core' is borderline.My current thought is to have: core/ stdc/ sys/posix sys/windows (yes, I'm planning to move posix support out of stdc) Alternatives to core are: lang, d, base... But I like core the best so far. Sean
Oct 22 2008
Sean Kelly wrote:Don wrote:vote++;'std', 'stdc' and 'sys' sound OK to me. Although is there any reason why stdc couldn't be part of 'sys'? IMHO: 'common' sounds far too generic. 'core' is borderline.My current thought is to have: core/ stdc/ sys/posix sys/windows (yes, I'm planning to move posix support out of stdc) Alternatives to core are: lang, d, base... But I like core the best so far. Sean
Oct 22 2008
On Wed, 22 Oct 2008 20:42:05 +0200, Sean Kelly <sean invisibleduck.org> wrote:Don wrote:core is good. d or base also, but I think core is the best. -- Simen'std', 'stdc' and 'sys' sound OK to me. Although is there any reason why stdc couldn't be part of 'sys'? IMHO: 'common' sounds far too generic. 'core' is borderline.My current thought is to have: core/ stdc/ sys/posix sys/windows (yes, I'm planning to move posix support out of stdc) Alternatives to core are: lang, d, base... But I like core the best so far. Sean
Oct 22 2008
On Wed, 22 Oct 2008 22:44:56 +0200, Simen Kjaeraas wrote:On Wed, 22 Oct 2008 20:42:05 +0200, Sean Kelly <sean invisibleduck.org> wrote:I like core. std better if phobos would step aside, for the reasons already stated.Don wrote:core is good. d or base also, but I think core is the best.'std', 'stdc' and 'sys' sound OK to me. Although is there any reason why stdc couldn't be part of 'sys'? IMHO: 'common' sounds far too generic. 'core' is borderline.My current thought is to have: core/ stdc/ sys/posix sys/windows (yes, I'm planning to move posix support out of stdc) Alternatives to core are: lang, d, base... But I like core the best so far. Sean
Oct 22 2008
Jesse Phillips, el 23 de octubre a las 02:04 me escribiste:On Wed, 22 Oct 2008 22:44:56 +0200, Simen Kjaeraas wrote:I think std is the best too. It's a little confusing that there are 2 *standard* namespaces :S -- Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/ ---------------------------------------------------------------------------- GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05) ---------------------------------------------------------------------------- When I was a child I had a fever My hands felt just like two balloons. Now I've got that feeling once again I can't explain you would not understand This is not how I am. I have become comfortably numb.On Wed, 22 Oct 2008 20:42:05 +0200, Sean Kelly <sean invisibleduck.org> wrote:I like core. std better if phobos would step aside, for the reasons already stated.Don wrote:core is good. d or base also, but I think core is the best.'std', 'stdc' and 'sys' sound OK to me. Although is there any reason why stdc couldn't be part of 'sys'? IMHO: 'common' sounds far too generic. 'core' is borderline.My current thought is to have: core/ stdc/ sys/posix sys/windows (yes, I'm planning to move posix support out of stdc) Alternatives to core are: lang, d, base... But I like core the best so far. Sean
Oct 24 2008
Sean Kelly:Alternatives to core are: lang, d, base... But I like core the best so far."d" is the name of the package my libs, so I hope you will use something different :-) (But this isn't really much important). A possible organization (if technically possible) that looks more symmetric to me is to keep the std as core and push the rest of phobos into a phobos package: import std.gc; // the common core import phobos.md5; // from Phobos import tango.foo; // from tango In Python standard modules aren't in a top-level package, so you just do: import collections from gc import enable, disable Following that Python style it may become: import gc; // the common core import phobos.md5; // from Phobos import tango.foo; // from tango Bye, bearophile
Oct 22 2008
On Thu, Oct 23, 2008 at 6:22 AM, bearophile <bearophileHUGS lycos.com> wrote:Sean Kelly:I would have thought that having a 'd' as the name of a top-level package would make it impossible to use 'd' as a local identifier. Is that not so? Anyway, if you have to rename it then you'll be getting what you deserve from having the meglomania to use the name of the language as your package name. --bbAlternatives to core are: lang, d, base... But I like core the best so far."d" is the name of the package my libs, so I hope you will use something different :-) (But this isn't really much important).
Oct 22 2008
Bill Baxter:I would have thought that having a 'd' as the name of a top-level package would make it impossible to use 'd' as a local identifier. Is that not so?I have had no problems so far. And my identifiers are usually a little longer, and I generally use qualified imports. (In my opinion a well designed module system has to not import the name of the module/package when you import qualified names from it.)Anyway, if you have to rename it then you'll be getting what you deserve from having the meglomania to use the name of the language as your package name.No meglomania, I think. I did chose "d" because it's short and I was unable to invent a better name... But I've I have said it's not a problem, changing the package name requires me just few minutes. Bye, bearophile
Oct 22 2008
Bill Baxter wrote:On Thu, Oct 23, 2008 at 6:22 AM, bearophile <bearophileHUGS lycos.com> wrote:Seems it'll work as long as you don't refer to something in the 'd' package using its fully qualified name. Then the package name will conflict with any locals named 'd'. But the package name will always conflict with globals, at least it does when I try it with DMD 1.033. Not that globals with single-letter names is something I'd recommend using.Sean Kelly:I would have thought that having a 'd' as the name of a top-level package would make it impossible to use 'd' as a local identifier. Is that not so?Alternatives to core are: lang, d, base... But I like core the best so far."d" is the name of the package my libs, so I hope you will use something different :-) (But this isn't really much important).
Oct 22 2008
torhu:But the package name will always conflict with globals, at least it does when I try it with DMD 1.033. Not that globals with single-letter names is something I'd recommend using.I see. Then I'll invent and use a different package name. Thank you. Bye, bearophile
Oct 22 2008
On Thu, Oct 23, 2008 at 6:22 AM, bearophile <bearophileHUGS lycos.com> wrote:In Python standard modules aren't in a top-level package, so you just do: import collections from gc import enable, disableBut I think that's starting to bite Python in the behind as the number of std library packages increases. Funny to have so many top level things in a language whose motto is "Namespaces are one honking great idea. Let's do more of those." Other responsible development organizations that release packages tend to collect them under a single top level package like "zope.*" or "enthought.*". There's also so many standard packages these days that when I see an unfamiliar import I'm never sure if it's a standard one or not. --bb
Oct 22 2008
Bill Baxter:But I think that's starting to bite Python in the behind as the number of std library packages increases.I tend to agree. That's why I have never complained for D having a "std" package name for its standard lib :-) Bye, bearophile
Oct 22 2008
Sean Kelly Wrote:Don wrote:What happens to the other parts of Phobos? Like others, I hope it will be ranamed from std to phobos.'std', 'stdc' and 'sys' sound OK to me. Although is there any reason why stdc couldn't be part of 'sys'? IMHO: 'common' sounds far too generic. 'core' is borderline.My current thought is to have: core/ stdc/ sys/posix sys/windows (yes, I'm planning to move posix support out of stdc) Alternatives to core are: lang, d, base... But I like core the best so far.
Oct 22 2008
Jason House wrote:Sean Kelly Wrote:That isn't something I can answer, though I'd expect Phobos to continue using 'std'. SeanDon wrote:What happens to the other parts of Phobos? Like others, I hope it will be ranamed from std to phobos.'std', 'stdc' and 'sys' sound OK to me. Although is there any reason why stdc couldn't be part of 'sys'? IMHO: 'common' sounds far too generic. 'core' is borderline.My current thought is to have: core/ stdc/ sys/posix sys/windows (yes, I'm planning to move posix support out of stdc) Alternatives to core are: lang, d, base... But I like core the best so far.
Oct 22 2008
Sean Kelly, el 22 de octubre a las 16:14 me escribiste:Jason House wrote:If phobos is part of a "spec-conformant" compiler, I think it should still be in the std namespace, with the runtime (also in the std namespace). I this currently there are 2 separated projects for phobos and runtime, but if in the specification there is only one standard library, all it's modules should be in the same namespace (std). The fact that now are 2 separated projects is an "implementation detail" and should not impact in the namespace naming (IHMO). -- Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/ ---------------------------------------------------------------------------- GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05) ---------------------------------------------------------------------------- More than 50% of the people in the world have never made Or received a telephone callSean Kelly Wrote:That isn't something I can answer, though I'd expect Phobos to continue using 'std'.Don wrote:What happens to the other parts of Phobos? Like others, I hope it will be ranamed from std to phobos.'std', 'stdc' and 'sys' sound OK to me. Although is there any reason why stdc couldn't be part of 'sys'? IMHO: 'common' sounds far too generic. 'core' is borderline.My current thought is to have: core/ stdc/ sys/posix sys/windows (yes, I'm planning to move posix support out of stdc) Alternatives to core are: lang, d, base... But I like core the best so far.
Oct 24 2008
On Wed, 22 Oct 2008 18:47:49 -0400, Jason House wrote:Sean Kelly Wrote:Would be nice no have std renamed to phobos. This would enable a common ground and just looks well designed. It would also remove confusion for newcomers (why is std also named phobos?). But I don't think this will happen... (...and tango should be renamed to deimos, so both can circle around mars - just kidding)Don wrote:What happens to the other parts of Phobos? Like others, I hope it will be ranamed from std to phobos.'std', 'stdc' and 'sys' sound OK to me. Although is there any reason why stdc couldn't be part of 'sys'? IMHO: 'common' sounds far too generic. 'core' is borderline.My current thought is to have: core/ stdc/ sys/posix sys/windows (yes, I'm planning to move posix support out of stdc) Alternatives to core are: lang, d, base... But I like core the best so far.
Oct 22 2008
Moritz Warning wrote:Would be nice no have std renamed to phobos. This would enable a common ground and just looks well designed. It would also remove confusion for newcomers (why is std also named phobos?). But I don't think this will happen... (...and tango should be renamed to deimos, so both can circle around mars - just kidding)Then again "etc" was already named deimos, so it would still confuse... http://dsource.org/projects/deimos/ http://www.dsource.org/forums/viewforum.php?f=26 Everything but etc.c.zlib and etc.gamma died, but that's another story. --anders
Oct 22 2008
Wed, 22 Oct 2008 11:42:05 -0700, Sean Kelly wrote:Don wrote:I like it.'std', 'stdc' and 'sys' sound OK to me. Although is there any reason why stdc couldn't be part of 'sys'? IMHO: 'common' sounds far too generic. 'core' is borderline.My current thought is to have: core/ stdc/ sys/posix sys/windows (yes, I'm planning to move posix support out of stdc)
Oct 23 2008
Andrei Alexandrescu wrote:Lars Ivar Igesund wrote:This is not about proliferation, but having _one_ for common functionality. common was just a suggestion that I like, it could be something else that fits the purpose. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the TangoSean Kelly wrote:A problem I see with the proliferation of top-level packages in the standard library is that each of them makes homonym user-defined packages inaccessible. Heck, I have a package called "common" today.Don wrote:Functionality exposed from the runtime should reside in core, std shouldn't be used in druntime and any other packages (sys) is presumingly reserved for what corresponds to tango.sys In any case, a hierarchy of the type common/ core/ sys/ stdc/ should be highly considered. This would allow a namespace for functionality that is truly common, not only the runtime, but math and eventually other functionality. In addition it is naive to believe that just because druntime is meant to be a common runtime, that it will be the only runtime in the long run.We also now have two modules called 'bitmanip', which is somewhat ironic since we brainstormed for ages trying to come up with a better name for it. Modules with duplicate names have caused linking problems in the past -- not sure if that applies here.It applies if the modules from both Phobos and druntime end up in the same library on *nix. Windows doesn't appear to have the same issue. But I'd love to hear suggestions for alternative names-- I'm not terribly good at naming modules :-p. Also, any I'd like to see how people feel about having three top-level packages in druntime vs. one-- an alternative I'd considered was to put everything under core. Sean
Oct 22 2008
Andrei Alexandrescu wrote:Lars Ivar Igesund wrote:I thought that's what this idea was trying to address ;-P ... Having "common" in the global namespace is only a single identifier; having "core", "sys", "stdc" and "std" is 4.Sean Kelly wrote:A problem I see with the proliferation of top-level packages in the standard library is that each of them makes homonym user-defined packages inaccessible. Heck, I have a package called "common" today. AndreiDon wrote:Functionality exposed from the runtime should reside in core, std shouldn't be used in druntime and any other packages (sys) is presumingly reserved for what corresponds to tango.sys In any case, a hierarchy of the type common/ core/ sys/ stdc/ should be highly considered. This would allow a namespace for functionality that is truly common, not only the runtime, but math and eventually other functionality. In addition it is naive to believe that just because druntime is meant to be a common runtime, that it will be the only runtime in the long run.We also now have two modules called 'bitmanip', which is somewhat ironic since we brainstormed for ages trying to come up with a better name for it. Modules with duplicate names have caused linking problems in the past -- not sure if that applies here.It applies if the modules from both Phobos and druntime end up in the same library on *nix. Windows doesn't appear to have the same issue. But I'd love to hear suggestions for alternative names-- I'm not terribly good at naming modules :-p. Also, any I'd like to see how people feel about having three top-level packages in druntime vs. one-- an alternative I'd considered was to put everything under core. Sean
Oct 23 2008
Wed, 22 Oct 2008 15:56:30 +0200, Lars Ivar Igesund wrote:In any case, a hierarchy of the type common/ core/ sys/ stdc/ should be highly considered. This would allow a namespace for functionality that is truly common, not only the runtime, but math and eventually other functionality. In addition it is naive to believe that just because druntime is meant to be a common runtime, that it will be the only runtime in the long run.There is no 'truly common' functionality beyond the absolutely necessary core runtime. The fact that Phobos and Tango share some code only means that such code is ought to be in any stand-alone, general-purpose library. Not that it must be built-in.
Oct 23 2008
Sergey Gromov wrote:Wed, 22 Oct 2008 15:56:30 +0200, Lars Ivar Igesund wrote:??? Don't understand. Are you simply saying that there's no need for standard libraries?In any case, a hierarchy of the type common/ core/ sys/ stdc/ should be highly considered. This would allow a namespace for functionality that is truly common, not only the runtime, but math and eventually other functionality. In addition it is naive to believe that just because druntime is meant to be a common runtime, that it will be the only runtime in the long run.There is no 'truly common' functionality beyond the absolutely necessary core runtime. The fact that Phobos and Tango share some code only means that such code is ought to be in any stand-alone, general-purpose library. Not that it must be built-in.
Oct 23 2008
Thu, 23 Oct 2008 17:47:46 +0200, Don wrote:Sergey Gromov wrote:I can see a reason for a general-purpose library which is supplied with a compiler. It's for faster setup, faster learning, and for quick-n-dirty utilities with less dependencies. I can see why one would want a different general-purpose library instead of the default. It's for more appealing (for that one person) library architecture and for different trade-offs. I can see a reason for a specialized math library, biological, chemical library etc. They're specialized. But I cannot justify a separate library only because Phobos and Tango happen to use the same approach in some parts. A library without any architecture, with only purpose to make Phobos and Tango dependent upon it, and to make users wonder where to search for a particular general- purpose functionality.Wed, 22 Oct 2008 15:56:30 +0200, Lars Ivar Igesund wrote:??? Don't understand. Are you simply saying that there's no need for standard libraries?In any case, a hierarchy of the type common/ core/ sys/ stdc/ should be highly considered. This would allow a namespace for functionality that is truly common, not only the runtime, but math and eventually other functionality. In addition it is naive to believe that just because druntime is meant to be a common runtime, that it will be the only runtime in the long run.There is no 'truly common' functionality beyond the absolutely necessary core runtime. The fact that Phobos and Tango share some code only means that such code is ought to be in any stand-alone, general-purpose library. Not that it must be built-in.
Oct 23 2008
On Mon, 20 Oct 2008 16:29:36 -0700, Walter Bright <newshound1 digitalmars.com> wrote:http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Thank you!
Oct 21 2008
On Tue, 21 Oct 2008 18:40:04 +0300, Max Samukha wrote:On Mon, 20 Oct 2008 16:29:36 -0700, Walter Bright <newshound1 digitalmars.com> wrote:Nice! Thank you.http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Thank you!
Oct 21 2008
On Mon, 20 Oct 2008 16:29:36 -0700, Walter Bright <newshound1 digitalmars.com> wrote:http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Please add the compiler versions to bugzilla.
Oct 21 2008
On Tue, 21 Oct 2008, Max Samukha wrote:Please add the compiler versions to bugzilla.Done.
Oct 21 2008
Bill Baxter Wrote:On Tue, Oct 21, 2008 at 8:29 AM, Walter Bright <newshound1 digitalmars.com> wrote:opindexAssign will still be needed when opindex has a non-ref return type.http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Wao! Missed this at first: class Foo { ref int getref() { return m_int; } private: int m_int = 23; } void main() { auto foo = new Foo; writefln(foo.getref); foo.getref() = 7; writefln(foo.getref); } //Outputs: //23 //7 It works! This is maybe even bigger news than cure for TangoPhobia! But I think maybe more documentation is needed in the Ref returns section regarding how this affects opIndex. class Foo { this() { m_arr.length = 10; foreach(i, ref a; m_arr) { a=i;} } int[] array() { return m_arr; } ref int opIndex(size_t idx) { return m_arr[idx]; } private: int[] m_arr; } void main() { auto foo = new Foo; foo[3] = -99; //hello.d(44): Error: operator [] assignment overload with opIndex(i, value) illegal, use opIndexAssign(value, i) //hello.d(44): function hello.Foo.opIndex (uint idx) does not match parameter types (int,int) //hello.d(44): Error: expected 1 arguments, not 2 } Apparently using opIndex with ref return is not allowed as a way to set an index. This works though: *(&foo[3]) = -99; Is there a good reason why it shouldn't be possible to use opAssign as a replacement for opIndexAssign? --bb
Oct 21 2008
On Wed, Oct 22, 2008 at 7:01 AM, Jason House <jason.james.house gmail.com> wrote:Bill Baxter Wrote:Yep, definitely shouldn't get rid of opIndexAssign. It's still a nice advantage of D over C++ when you want to monitor and control all modifications to an array-like object. But if the opIndex does return a ref, and an opIndexAssign has not been defined then I don't see why that opIndex shouldn't allow users to say foo[10] = x. Instead of *(&foo[10])=x; --bbIs there a good reason why it shouldn't be possible to use opAssign as a replacement for opIndexAssign? --bbopindexAssign will still be needed when opindex has a non-ref return type.
Oct 21 2008
Jason House wrote:Bill Baxter Wrote:I think the entire operator paraphernalia is due for a serious overhaul. AndreiOn Tue, Oct 21, 2008 at 8:29 AM, Walter Bright <newshound1 digitalmars.com> wrote:opindexAssign will still be needed when opindex has a non-ref return type.http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.Wao! Missed this at first: class Foo { ref int getref() { return m_int; } private: int m_int = 23; } void main() { auto foo = new Foo; writefln(foo.getref); foo.getref() = 7; writefln(foo.getref); } //Outputs: //23 //7 It works! This is maybe even bigger news than cure for TangoPhobia! But I think maybe more documentation is needed in the Ref returns section regarding how this affects opIndex. class Foo { this() { m_arr.length = 10; foreach(i, ref a; m_arr) { a=i;} } int[] array() { return m_arr; } ref int opIndex(size_t idx) { return m_arr[idx]; } private: int[] m_arr; } void main() { auto foo = new Foo; foo[3] = -99; //hello.d(44): Error: operator [] assignment overload with opIndex(i, value) illegal, use opIndexAssign(value, i) //hello.d(44): function hello.Foo.opIndex (uint idx) does not match parameter types (int,int) //hello.d(44): Error: expected 1 arguments, not 2 } Apparently using opIndex with ref return is not allowed as a way to set an index. This works though: *(&foo[3]) = -99; Is there a good reason why it shouldn't be possible to use opAssign as a replacement for opIndexAssign? --bb
Oct 21 2008
Hello Andrei,I think the entire operator paraphernalia is due for a serious overhaul. AndreiThis may not be a popular opinion, but I agree! -JJR
Oct 21 2008
== Quote from John Reimer (terminal.node gmail.com)'s articleHello Andrei,I'll second that. D's operator overloading is a bit confusing because it's kind of grown rather than having been designed. This should be fixed now, while breaking changes are still considered acceptable.I think the entire operator paraphernalia is due for a serious overhaul. AndreiThis may not be a popular opinion, but I agree! -JJR
Oct 21 2008
Reply to dsimcha,== Quote from John Reimer (terminal.node gmail.com)'s articleClean it up if you want to. But overall I like the *general* way it work.Hello Andrei,I'll second that. D's operator overloading is a bit confusing because it's kind of grown rather than having been designed. This should be fixed now, while breaking changes are still considered acceptable.I think the entire operator paraphernalia is due for a serious overhaul. AndreiThis may not be a popular opinion, but I agree! -JJR
Oct 21 2008
The change log says:Improved performance of AAs by rebalancing trees when rehashing.<I presume such rehashing is done from time to time when the hash grows up, and when the .rehash method is called too. I have performed some benchmarks, with both string and int keys, and the creation (building) of associative arrays in DMD1.036 is about 10-15% slower than in DMD1.035 (I can show code if you want, but it's the same code I have used in the past). I have not tested the key retrieval time, I presume it's faster... Anyway: often performance isn't absolute, usually you have to tune something for a specific class of usages. So you want to tune it for the average use cases, this means for the most common usages of D AAs. This means that before tuning something you collect a statistically significant base of such usages, generally from a sizable amount of code. What are the average use cases the current performance improvements are based on? Where's the people creating such user cases to base the performance tuning on? I think we need to put a little more "science" in this tuning business. Bye, bearophile
Oct 21 2008
On Mon, 20 Oct 2008 16:29:36 -0700, Walter Bright wrote:http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zip The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library. http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.020.zip There are a lot of structural changes that go along with this, so expect some rough patches with this release. It may take a followup release to file them down. There's also some renaming of imports and function names, as a compromise with Tango names.This is FANTASTIC news. Many thanks to everyone involved, especially Sean for all the hard work.
Oct 21 2008
Walter Bright Wrote:http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zipGreat! I failed to compile Tango svn trunk with 1.036, but Tango 0.99.7, compiled with 1.035, works fine. I got a small fps boost when compiled my graphics engine with new dmd - maybe some improvements in associative arrays operations?.. Fps stability also improved. When I was compiling DWT with 1.035 in a single command to dmd (dmd -lib modules), it took 11.66 seconds on 2GHz processor, size of lib was 7.6MB. With 1.036 it took 16.74 seconds and lib size became 8.1. I get same results with "-lib" while compiling derelict opengl and glu - it now takes a bit longer and produces bigger libs. Have you changed something?
Oct 23 2008
On Fri, Oct 24, 2008 at 1:59 AM, digited <digited yandex.ru> wrote:Walter Bright Wrote:I have no idea why the generated code got bigger again, but it's far from being the first time. Check the graph here: http://www.billbaxter.com/techblog/?p=9 --bbhttp://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.036.zipGreat! I failed to compile Tango svn trunk with 1.036, but Tango 0.99.7, compiled with 1.035, works fine. I got a small fps boost when compiled my graphics engine with new dmd - maybe some improvements in associative arrays operations?.. Fps stability also improved. When I was compiling DWT with 1.035 in a single command to dmd (dmd -lib modules), it took 11.66 seconds on 2GHz processor, size of lib was 7.6MB. With 1.036 it took 16.74 seconds and lib size became 8.1. I get same results with "-lib" while compiling derelict opengl and glu - it now takes a bit longer and produces bigger libs. Have you changed something?
Oct 23 2008
Bill Baxter Wrote:I have no idea why the generated code got bigger again, but it's far from being the first time. Check the graph here: http://www.billbaxter.com/techblog/?p=9 --bbI thought this bug was a feature... Back to 1.035 then.
Oct 23 2008
digited wrote: ...When I was compiling DWT with 1.035 in a single command to dmd (dmd -lib modules), it took 11.66 seconds on 2GHz processor, size of lib was 7.6MB. With 1.036 it took 16.74 seconds and lib size became 8.1. I get same results with "-lib" while compiling derelict opengl and glu - it now takes a bit longer and produces bigger libs. Have you changed something?I tried building DWT with -lib when that feature was first added. -lib seems to be broken somehow, because just compiling one file at a time results in a much smaller .lib file.
Oct 23 2008
torhu Wrote:I tried building DWT with -lib when that feature was first added. -lib seems to be broken somehow, because just compiling one file at a time results in a much smaller .lib file.That's normal (really a feature, not a bug) - "-lib" creates more than one object file from a module to make executables smaller (by linking not the full module object file, but it's piece that the executable really needs), it also does not any IO with hdd, all compiling and linking in RAM, so creating static libs is extremely fast and doesn't produce object files as output. I've just compared "-lib" results from 1.035 and 1.036, it now works differently.
Oct 23 2008
digited wrote:torhu Wrote:Sorry, what I meant to say was that the executable ends up bigger when using libs created with -lib.I tried building DWT with -lib when that feature was first added. -lib seems to be broken somehow, because just compiling one file at a time results in a much smaller .lib file.That's normal (really a feature, not a bug) - "-lib" creates more than one object file from a module to make executables smaller (by linking not the full module object file, but it's piece that the executable really needs), it also does not any IO with hdd, all compiling and linking in RAM, so creating static libs is extremely fast and doesn't produce object files as output. I've just compared "-lib" results from 1.035 and 1.036, it now works differently.
Oct 24 2008