digitalmars.D.announce - DMD svn and contract inheritance
- Leandro Lucarella (10/10) Sep 27 2009 Thanks for finally taking this way, Walter =)
- Walter Bright (3/4) Sep 27 2009 You're welcome. I hadn't done it before because I couldn't figure out a
- Leandro Lucarella (11/16) Sep 27 2009 I don't know if you are talking about DMD being in a public repo, the
- Vincenzo Ampolo (7/8) Sep 28 2009 Thanks Walter.
- Walter Bright (4/6) Sep 28 2009 I'm glad you guys have picked up gdc.
- Stewart Gordon (4/6) Oct 01 2009 What tricky bits are those?
- Walter Bright (6/12) Oct 01 2009 It's outlined in the code comments, but it's implemented by making the
- Stewart Gordon (5/18) Oct 01 2009 I'm still none the wiser about why it absolutely has to be done like
- Walter Bright (4/6) Oct 01 2009 Can you refresh my memory?
- Stewart Gordon (13/20) Oct 02 2009 Seems straightforward to find to me, but here it is:
- Kagamin (2/7) Oct 05 2009 'this' pointer could be passed as a regular argument just like stack poi...
- Dejan Lekic (2/2) Sep 30 2009 You guys are doing awesome job with GDC, thank you _VERY MUCH_!
- Robert Clipsham (6/9) Sep 30 2009 Actually, there are no D2 compilers for 64 bit. GDC's support for D2 is
- Dejan Lekic (8/8) Oct 23 2009 LDC2 does not work at all on my 64bit GNU/Linux box, while GDC works
- Robert Clipsham (9/12) Oct 05 2009 Now that DMD is under version control it should be fairly easy for me to...
- Walter Bright (3/17) Oct 05 2009 The problem is if some package fails, then I have a large debugging
- BCS (3/10) Oct 05 2009 Or it could just inform the owner of the lib and they can cut out a test...
- Walter Bright (2/14) Oct 06 2009 Then please go ahead and set it up.
- Robert Clipsham (13/14) Oct 06 2009 What exactly would you like setting up? Currently I'm thinking:
- Walter Bright (3/21) Oct 06 2009 I suggest setting it up to email the maintainers of the packages being
- Leandro Lucarella (13/36) Oct 06 2009 I think it would be best to have a newsgroup/mailing list/RSS for this.
- Moritz Warning (4/34) Oct 13 2009 A website would be my personal favorite.
- Don (11/25) Oct 06 2009 I think that'd be fantastic. It'd be helpful if you could at least get
- Robert Clipsham (15/26) Oct 06 2009 This page gets updated manually by Christian as he feels fit. For more
- Christian Kamm (3/8) Oct 06 2009 That's true. I've updated the front page with my email address and the
- Jason House (4/22) Oct 05 2009 With small commits to dmd, it should be trivial to know what small chang...
- Andrei Alexandrescu (6/38) Oct 05 2009 We clearly can't define the language around a best-effort kind of flow
- Leandro Lucarella (15/53) Oct 05 2009 I guess you answered to the wrong mail, Jason is talking about Robert's
- Walter Bright (5/18) Oct 05 2009 The problem is, one doesn't know if it is a problem with the change or
- Lutger (11/19) Oct 06 2009 But you don't have to take the stance that no regressions may occur (for...
Thanks for finally taking this way, Walter =) http://www.dsource.org/projects/dmd/timeline -- Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/ ---------------------------------------------------------------------------- GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05) ---------------------------------------------------------------------------- He andáu muchos caminos, muchos caminos he andáu, Chile tiene el buen vino y Suecia, el bacalao. Esta'o Unido tiene el hot do', Cuba tiene el mojito, Guatemala, el cornalito y Brasil la feishoada.
Sep 27 2009
Leandro Lucarella wrote:Thanks for finally taking this way, Walter =)You're welcome. I hadn't done it before because I couldn't figure out a reasonable way of implementing it.
Sep 27 2009
Walter Bright, el 27 de septiembre a las 13:45 me escribiste:Leandro Lucarella wrote:I don't know if you are talking about DMD being in a public repo, the contract inheritance or both. But anyway, I'm glad you could finally do both =) -- Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/ ---------------------------------------------------------------------------- GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05) ---------------------------------------------------------------------------- JUNTAN FIRMAS Y HUELLAS POR EL CACHORRO CONDENADO A MUERTE... -- Crónica TVThanks for finally taking this way, Walter =)You're welcome. I hadn't done it before because I couldn't figure out a reasonable way of implementing it.
Sep 27 2009
Leandro Lucarella wrote:http://www.dsource.org/projects/dmd/timelineThanks Walter. ;) Now, thanks to the public svn we can track changes easily. This will help development of gdc too! Btw today Michael merged dmd 1.035 and i'm close to finish dmd 2.015 See you.
Sep 28 2009
Vincenzo Ampolo wrote:Now, thanks to the public svn we can track changes easily. This will help development of gdc too!I'm glad you guys have picked up gdc. There are some tricky bits to doing contract inheritance, I hope gdc and ldc don't have trouble with it.
Sep 28 2009
Walter Bright wrote: <snip>There are some tricky bits to doing contract inheritance, I hope gdc and ldc don't have trouble with it.What tricky bits are those? Stewart.
Oct 01 2009
Stewart Gordon wrote:Walter Bright wrote: <snip>It's outlined in the code comments, but it's implemented by making the contract code a nested function. The overriding function calls those nested functions of the overridden function(s). In order for this to work successfully, the 'this' pointer and the stack parameters must wind up in the same relative position on the stack.There are some tricky bits to doing contract inheritance, I hope gdc and ldc don't have trouble with it.What tricky bits are those?
Oct 01 2009
Walter Bright wrote:Stewart Gordon wrote:I'm still none the wiser about why it absolutely has to be done like this instead of the simpler solution I proposed years ago. But in any case, thank you for finally getting round to it! Stewart.Walter Bright wrote: <snip>It's outlined in the code comments, but it's implemented by making the contract code a nested function. The overriding function calls those nested functions of the overridden function(s). In order for this to work successfully, the 'this' pointer and the stack parameters must wind up in the same relative position on the stack.There are some tricky bits to doing contract inheritance, I hope gdc and ldc don't have trouble with it.What tricky bits are those?
Oct 01 2009
Stewart Gordon wrote:I'm still none the wiser about why it absolutely has to be done like this instead of the simpler solution I proposed years ago.Can you refresh my memory? (The nested function approach is fairly simple in terms of lines of code to implement.)
Oct 01 2009
Walter Bright wrote:Stewart Gordon wrote:Seems straightforward to find to me, but here it is: http://www.digitalmars.com/d/archives/digitalmars/D/31595.htmlI'm still none the wiser about why it absolutely has to be done like this instead of the simpler solution I proposed years ago.Can you refresh my memory?(The nested function approach is fairly simple in terms of lines of code to implement.)I can imagine how it works now. Essentially it's a function that can act as a nested function to the function for which it is originally defined or any override of it, which works since a nested function is really just a function with a pointer to the outer function's stack frame as a parameter. Correct? BTW I just rediscovered this old thread http://www.digitalmars.com/d/archives/digitalmars/D/9775.html which is making me think we probably ought to enable contracts on bodyless functions some time. Stewart.
Oct 02 2009
Walter Bright Wrote:It's outlined in the code comments, but it's implemented by making the contract code a nested function. The overriding function calls those nested functions of the overridden function(s). In order for this to work successfully, the 'this' pointer and the stack parameters must wind up in the same relative position on the stack.'this' pointer could be passed as a regular argument just like stack pointer.
Oct 05 2009
You guys are doing awesome job with GDC, thank you _VERY MUCH_! GDC is the only D2 compiler for 64bit architecture...
Sep 30 2009
Dejan Lekic wrote:You guys are doing awesome job with GDC, thank you _VERY MUCH_! GDC is the only D2 compiler for 64bit architecture...Actually, there are no D2 compilers for 64 bit. GDC's support for D2 is very minimal, I don't know how it compares to LDC's, but I'd guess they were about the same (GDC might be slightly further ahead actually, I've never tried it). Either way, DMD is pretty much the only choice for a D2 compiler currently.
Sep 30 2009
LDC2 does not work at all on my 64bit GNU/Linux box, while GDC works without any problems (v2.014). Also D2 applications I wrote work well too. Sure, old version of D2 is supported so many cool features are missing, that is why I hoped some more up-to-date version of GDC will soon be released. D is loosing in popularity these days. Personally, i think one of the major reasons is the stale development of GDC. (Yes I am aware of the LDC project, but it is quite new one, and lacks working D2 support).
Oct 23 2009
Leandro Lucarella wrote:Thanks for finally taking this way, Walter =) http://www.dsource.org/projects/dmd/timelineNow that DMD is under version control it should be fairly easy for me to adapt the automated build system used for ldc for dmd. I can set it up to automatically build dmd after a commit, and run dstress/build popular projects and libraries, even package up dmd for "Nightly" builds and maybe even post the results to the D newsgroups/IRC channels. If you'd be interested to see this Walter, let me know what exactly you want automating/how and where you want results and I'll see about setting it up for you.
Oct 05 2009
Robert Clipsham wrote:Leandro Lucarella wrote:The problem is if some package fails, then I have a large debugging problem trying to figure out unfamiliar code.Thanks for finally taking this way, Walter =) http://www.dsource.org/projects/dmd/timelineNow that DMD is under version control it should be fairly easy for me to adapt the automated build system used for ldc for dmd. I can set it up to automatically build dmd after a commit, and run dstress/build popular projects and libraries, even package up dmd for "Nightly" builds and maybe even post the results to the D newsgroups/IRC channels. If you'd be interested to see this Walter, let me know what exactly you want automating/how and where you want results and I'll see about setting it up for you.
Oct 05 2009
Hello Walter,Or it could just inform the owner of the lib and they can cut out a test cases or even do most of the detective work for you.I can set it up to automatically build dmd after a commit, and run dstress/build popular projects and librariesThe problem is if some package fails, then I have a large debugging problem trying to figure out unfamiliar code.
Oct 05 2009
BCS wrote:Hello Walter,Then please go ahead and set it up.Or it could just inform the owner of the lib and they can cut out a test cases or even do most of the detective work for you.I can set it up to automatically build dmd after a commit, and run dstress/build popular projects and librariesThe problem is if some package fails, then I have a large debugging problem trying to figure out unfamiliar code.
Oct 06 2009
Walter Bright wrote:Then please go ahead and set it up.What exactly would you like setting up? Currently I'm thinking: * Automated builds of dmd 1 and 2 * Automated builds of druntime, phobos and tango * Automated DStress runs * Automated dmd test suite runs (if you're willing to provide me access to the test suite) * Automated builds of more popular projects from dsource (with permission from the maintainers obviously) Is there anything else you want? I also need to know how you would like results to be reported. Would you like them to sit on a web page with an RSS feed, email the results to a specified list of email addresses, post to the nextgroups, post to IRC?
Oct 06 2009
Robert Clipsham wrote:Walter Bright wrote:I suggest setting it up to email the maintainers of the packages being compiled any problems with compiling them.Then please go ahead and set it up.What exactly would you like setting up? Currently I'm thinking: * Automated builds of dmd 1 and 2 * Automated builds of druntime, phobos and tango * Automated DStress runs * Automated dmd test suite runs (if you're willing to provide me access to the test suite) * Automated builds of more popular projects from dsource (with permission from the maintainers obviously) Is there anything else you want? I also need to know how you would like results to be reported. Would you like them to sit on a web page with an RSS feed, email the results to a specified list of email addresses, post to the nextgroups, post to IRC?
Oct 06 2009
Walter Bright, el 6 de octubre a las 12:07 me escribiste:Robert Clipsham wrote:I think it would be best to have a newsgroup/mailing list/RSS for this. At least being able to see the result in a website. I'm very curious, I'd love to be able to see the results of this automated tests =) -- Leandro Lucarella (AKA luca) http://llucax.com.ar/ ---------------------------------------------------------------------- GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05) ---------------------------------------------------------------------- HACIA NEUQUEN: EL JUEVES SALDRA CARAVANA CON PERROS DESDE CAPITAL EN APOYO AL CACHORRO CONDENADO A MUERTE -- Crónica TVWalter Bright wrote:I suggest setting it up to email the maintainers of the packages being compiled any problems with compiling them.Then please go ahead and set it up.What exactly would you like setting up? Currently I'm thinking: * Automated builds of dmd 1 and 2 * Automated builds of druntime, phobos and tango * Automated DStress runs * Automated dmd test suite runs (if you're willing to provide me access to the test suite) * Automated builds of more popular projects from dsource (with permission from the maintainers obviously) Is there anything else you want? I also need to know how you would like results to be reported. Would you like them to sit on a web page with an RSS feed, email the results to a specified list of email addresses, post to the nextgroups, post to IRC?
Oct 06 2009
On Tue, 06 Oct 2009 21:28:58 -0300, Leandro Lucarella wrote:Walter Bright, el 6 de octubre a las 12:07 me escribiste:A website would be my personal favorite. It's open to everyone and don't spam the mail folder in times of broken code.Robert Clipsham wrote:I think it would be best to have a newsgroup/mailing list/RSS for this. At least being able to see the result in a website. I'm very curious, I'd love to be able to see the results of this automated tests =)Walter Bright wrote:I suggest setting it up to email the maintainers of the packages being compiled any problems with compiling them.Then please go ahead and set it up.What exactly would you like setting up? Currently I'm thinking: * Automated builds of dmd 1 and 2 * Automated builds of druntime, phobos and tango * Automated DStress runs * Automated dmd test suite runs (if you're willing to provide me access to the test suite) * Automated builds of more popular projects from dsource (with permission from the maintainers obviously) Is there anything else you want? I also need to know how you would like results to be reported. Would you like them to sit on a web page with an RSS feed, email the results to a specified list of email addresses, post to the nextgroups, post to IRC?
Oct 13 2009
Robert Clipsham wrote:Leandro Lucarella wrote:I think that'd be fantastic. It'd be helpful if you could at least get dstress to run after the main releases. The dstress test page from LDC doesn't seem to operate any more. http://www.incasoftware.de/~kamm/ldc/tests/index.html I'd really like to see the results for the latest DMD, almost all of the "ERROR" (segfault/ICE) bugs should be fixed now. Walter doesn't necessarily ever have to look at it, but it'd be good as a pre-release check. There are quite a few incorrect dstress tests. I've been making tickets for them as I find them.Thanks for finally taking this way, Walter =) http://www.dsource.org/projects/dmd/timelineNow that DMD is under version control it should be fairly easy for me to adapt the automated build system used for ldc for dmd. I can set it up to automatically build dmd after a commit, and run dstress/build popular projects and libraries, even package up dmd for "Nightly" builds and maybe even post the results to the D newsgroups/IRC channels. If you'd be interested to see this Walter, let me know what exactly you want automating/how and where you want results and I'll see about setting it up for you.
Oct 06 2009
Don wrote:I think that'd be fantastic. It'd be helpful if you could at least get dstress to run after the main releases. The dstress test page from LDC doesn't seem to operate any more. http://www.incasoftware.de/~kamm/ldc/tests/index.htmlThis page gets updated manually by Christian as he feels fit. For more up to date pages, see: http://ldc.octarineparrot.com/x86-32/web/ http://ldc.octarineparrot.com/x86-64/web/ For x86-32 and x86-64 respectively (these aren't completely automated yet, they require me to run a command to generate them every now and again... I'll sort this out when I get it set up for dmd). They still compare to dmd 1.045 as ldc still uses the 1.045 front end (I believe there were some regressions from 1.046+, not sure on the current status of this).I'd really like to see the results for the latest DMD, almost all of the "ERROR" (segfault/ICE) bugs should be fixed now.This will get run when I set it up :)Walter doesn't necessarily ever have to look at it, but it'd be good as a pre-release check.Agreed.There are quite a few incorrect dstress tests. I've been making tickets for them as I find them.I believe Christian is the maintainer for the dstress project on dsource, he should be able to give you commit access if you have patches.
Oct 06 2009
Robert Clipsham wrote:That's true. I've updated the front page with my email address and the request for help.There are quite a few incorrect dstress tests. I've been making tickets for them as I find them.I believe Christian is the maintainer for the dstress project on dsource, he should be able to give you commit access if you have patches.
Oct 06 2009
Walter Bright Wrote:Robert Clipsham wrote:With small commits to dmd, it should be trivial to know what small change in dmd caused a user observable change in behavior. If things look good on the dmd side, I'd really hope the code authors would help with debugging their code. Knowing of a failure within an hour is way better than finding out a month later. BTW, such regression tests work much better when all failing tests can be identified. It can help with figuring out patterns. Stopping on the first failure can be somewhat limiting, especially if the failure will stick around for a week.Leandro Lucarella wrote:The problem is if some package fails, then I have a large debugging problem trying to figure out unfamiliar code.Thanks for finally taking this way, Walter =) http://www.dsource.org/projects/dmd/timelineNow that DMD is under version control it should be fairly easy for me to adapt the automated build system used for ldc for dmd. I can set it up to automatically build dmd after a commit, and run dstress/build popular projects and libraries, even package up dmd for "Nightly" builds and maybe even post the results to the D newsgroups/IRC channels. If you'd be interested to see this Walter, let me know what exactly you want automating/how and where you want results and I'll see about setting it up for you.
Oct 05 2009
Jason House wrote:Walter Bright Wrote:We clearly can't define the language around a best-effort kind of flow analysis. I consider Walter's extra checks during optimization a nice perk, but definitely not something we can consider a part of the language. The language definition must work without those. AndreiRobert Clipsham wrote:With small commits to dmd, it should be trivial to know what small change in dmd caused a user observable change in behavior. If things look good on the dmd side, I'd really hope the code authors would help with debugging their code. Knowing of a failure within an hour is way better than finding out a month later. BTW, such regression tests work much better when all failing tests can be identified. It can help with figuring out patterns. Stopping on the first failure can be somewhat limiting, especially if the failure will stick around for a week.Leandro Lucarella wrote:The problem is if some package fails, then I have a large debugging problem trying to figure out unfamiliar code.Thanks for finally taking this way, Walter =) http://www.dsource.org/projects/dmd/timelineNow that DMD is under version control it should be fairly easy for me to adapt the automated build system used for ldc for dmd. I can set it up to automatically build dmd after a commit, and run dstress/build popular projects and libraries, even package up dmd for "Nightly" builds and maybe even post the results to the D newsgroups/IRC channels. If you'd be interested to see this Walter, let me know what exactly you want automating/how and where you want results and I'll see about setting it up for you.
Oct 05 2009
Andrei Alexandrescu, el 5 de octubre a las 19:17 me escribiste:Jason House wrote:I guess you answered to the wrong mail, Jason is talking about Robert's offering to set up a build/test bot for DMD, to build and test each commit, using dstress and maybe other popular libraries/programs. -- Leandro Lucarella (AKA luca) http://llucax.com.ar/ ---------------------------------------------------------------------- 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.Walter Bright Wrote:We clearly can't define the language around a best-effort kind of flow analysis. I consider Walter's extra checks during optimization a nice perk, but definitely not something we can consider a part of the language. The language definition must work without those.Robert Clipsham wrote:With small commits to dmd, it should be trivial to know what small change in dmd caused a user observable change in behavior. If things look good on the dmd side, I'd really hope the code authors would help with debugging their code. Knowing of a failure within an hour is way better than finding out a month later. BTW, such regression tests work much better when all failing tests can be identified. It can help with figuring out patterns. Stopping on the first failure can be somewhat limiting, especially if the failure will stick around for a week.Leandro Lucarella wrote:The problem is if some package fails, then I have a large debugging problem trying to figure out unfamiliar code.Thanks for finally taking this way, Walter =) http://www.dsource.org/projects/dmd/timelineNow that DMD is under version control it should be fairly easy for me to adapt the automated build system used for ldc for dmd. I can set it up to automatically build dmd after a commit, and run dstress/build popular projects and libraries, even package up dmd for "Nightly" builds and maybe even post the results to the D newsgroups/IRC channels. If you'd be interested to see this Walter, let me know what exactly you want automating/how and where you want results and I'll see about setting it up for you.
Oct 05 2009
Jason House wrote:With small commits to dmd, it should be trivial to know what small change in dmd caused a user observable change in behavior.The problem is, one doesn't know if it is a problem with the change or if it is a problem with the user code. To determine that requires working with and understanding the user code. It's just impractical for me to do that with a large base of code like that.If things look good on the dmd side, I'd really hope the code authors would help with debugging their code. Knowing of a failure within an hour is way better than finding out a month later. BTW, such regression tests work much better when all failing tests can be identified. It can help with figuring out patterns. Stopping on the first failure can be somewhat limiting, especially if the failure will stick around for a week.
Oct 05 2009
Walter Bright wrote:Jason House wrote:But you don't have to take the stance that no regressions may occur (for this very reason). I think automated builds + tests can be useful in different ways: - the authors of the code can be notified and look at the problem. Some will care and help you spot bugs earlier or may fix their own code earlier. This is at no cost to you. Eventually, this task can perhaps be delegated completely? - when a lot of stuff breaks, it is an indicator at least. - while you may need a lot of investment to determine all problems, at least some category of problems you may recognize quickly.With small commits to dmd, it should be trivial to know what small change in dmd caused a user observable change in behavior.The problem is, one doesn't know if it is a problem with the change or if it is a problem with the user code. To determine that requires working with and understanding the user code. It's just impractical for me to do that with a large base of code like that.
Oct 06 2009