digitalmars.D.announce - Mono-D v0.4.1.2 - Heavily improved performance + Completion bugs
- alex (27/27) Aug 23 2012 Hi everyone,
- Piotr Szturmaj (2/9) Aug 23 2012 try marking SubClass with static keyword.
- alex (4/16) Aug 23 2012 This works indeed, but nervertheless not for templated sub
- F i L (2/2) Aug 23 2012 http://i3.kym-cdn.com/entries/icons/original/000/004/128/BRILLIANT_.jpg
- Piotr Szturmaj (2/4) Aug 23 2012 Yes! This is really good project! :)
- alex (2/7) Aug 24 2012 Thanks :D
- Nick Sabalausky (6/10) Aug 23 2012 IIRC, I've had problems doing anything complex in a no-paren template
- Bernard Helyer (1/7) Aug 24 2012 primitive or identifier, iirc
- alex (4/16) Aug 24 2012 It's working just with the subclass marked as static and without
- Jacob Carlborg (4/25) Aug 23 2012 That sounds great. I think it's time I give Mono-D a try.
- Bruno Medeiros (10/13) Nov 07 2012 I also have to extend my congratulations for the work you have done. I
- alex (4/19) Nov 08 2012 Thanks!
Hi everyone, Right after the GSoC finished (I'm really sure I passed :)), I've just found more time to improve things drastically: By using a nice combination of storing AST children both sorted by name in a dictionary and in normal list, I was able to increase the resolution performance extremely - that means it takes ~0.3 milliseconds instead of ~3ms to resolve a normal symbol like a local variable or a local class definition. As a side effect, UFCS completion and preparation right after startup gained a maximum of performance boost! Tooltips and (later on) semantic highlighting could be done even more faster :) Then I fixed several issues with template parameter deduction - and figured out several bugs or a kinda undefined behaviour of dmd: class A(T) { class SubClass {} } class C(U: A!W.SubClass, W){} class D : C!(A!int.SubClass) { } // is not allowed, but A!int is -- why? Furthermore I fixed the parameter completion on this() and super() expressions, what implies a great usability bonus imho. Not to forget all the classic null-check issues and smaller bugs. Cheers, Alex http://mono-d.alexanderbothe.com https://github.com/aBothe/Mono-D/issues
Aug 23 2012
alex wrote:Then I fixed several issues with template parameter deduction - and figured out several bugs or a kinda undefined behaviour of dmd: class A(T) { class SubClass {} } class C(U: A!W.SubClass, W){} class D : C!(A!int.SubClass) { } // is not allowed, but A!int is -- why?try marking SubClass with static keyword.
Aug 23 2012
On Thursday, 23 August 2012 at 23:23:39 UTC, Piotr Szturmaj wrote:alex wrote:This works indeed, but nervertheless not for templated sub classes like ... { static class SubClass(U) {} }Then I fixed several issues with template parameter deduction - and figured out several bugs or a kinda undefined behaviour of dmd: class A(T) { class SubClass {} } class C(U: A!W.SubClass, W){} class D : C!(A!int.SubClass) { } // is not allowed, but A!int is -- why?try marking SubClass with static keyword.
Aug 23 2012
http://i3.kym-cdn.com/entries/icons/original/000/004/128/BRILLIANT_.jpg Great work as always, Alex :D
Aug 23 2012
F i L wrote:http://i3.kym-cdn.com/entries/icons/original/000/004/128/BRILLIANT_.jpg Great work as always, Alex :DYes! This is really good project! :)
Aug 23 2012
On Friday, 24 August 2012 at 00:10:03 UTC, Piotr Szturmaj wrote:F i L wrote:Thanks :Dhttp://i3.kym-cdn.com/entries/icons/original/000/004/128/BRILLIANT_.jpg Great work as always, Alex :DYes! This is really good project! :)
Aug 24 2012
On Fri, 24 Aug 2012 01:18:25 +0200 "alex" <info alexanderbothe.com> wrote:class D : C!(A!int.SubClass) { } // is not allowed, but A!int is -- why?IIRC, I've had problems doing anything complex in a no-paren template parameter. I always figured if you're doing no-parens, it had to be a single token (Maybe I'm wrong?). Does it work if you do this?: A!(int.SubClass)
Aug 23 2012
IIRC, I've had problems doing anything complex in a no-paren template parameter. I always figured if you're doing no-parens, it had to be a single token (Maybe I'm wrong?). Does it work if you do this?: A!(int.SubClass)primitive or identifier, iirc
Aug 24 2012
On Friday, 24 August 2012 at 02:40:43 UTC, Nick Sabalausky wrote:On Fri, 24 Aug 2012 01:18:25 +0200 "alex" <info alexanderbothe.com> wrote:It's working just with the subclass marked as static and without any further template paramters, not with A!(int.SubClass) but with A!int.SubClass :)class D : C!(A!int.SubClass) { } // is not allowed, but A!int is -- why?IIRC, I've had problems doing anything complex in a no-paren template parameter. I always figured if you're doing no-parens, it had to be a single token (Maybe I'm wrong?). Does it work if you do this?: A!(int.SubClass)
Aug 24 2012
On 2012-08-24 01:18, alex wrote:Hi everyone, Right after the GSoC finished (I'm really sure I passed :)), I've just found more time to improve things drastically: By using a nice combination of storing AST children both sorted by name in a dictionary and in normal list, I was able to increase the resolution performance extremely - that means it takes ~0.3 milliseconds instead of ~3ms to resolve a normal symbol like a local variable or a local class definition. As a side effect, UFCS completion and preparation right after startup gained a maximum of performance boost! Tooltips and (later on) semantic highlighting could be done even more faster :) Then I fixed several issues with template parameter deduction - and figured out several bugs or a kinda undefined behaviour of dmd: class A(T) { class SubClass {} } class C(U: A!W.SubClass, W){} class D : C!(A!int.SubClass) { } // is not allowed, but A!int is -- why? Furthermore I fixed the parameter completion on this() and super() expressions, what implies a great usability bonus imho. Not to forget all the classic null-check issues and smaller bugs.That sounds great. I think it's time I give Mono-D a try. -- /Jacob Carlborg
Aug 23 2012
On 24/08/2012 00:18, alex wrote:Hi everyone, Right after the GSoC finished (I'm really sure I passed :)), I've just found more time to improve things drastically:I also have to extend my congratulations for the work you have done. I tried Mono-D several releases ago (before Summmer), and even then it was already very good in its semantic functionality (autocomplete etc.). It was the only D IDE to come anywhere close to what DDT and Descent had in terms of semantic functionality (sorry VisualD and others :P ), and even more, it actually didn't just come close but actually surpassed it significantly! -- Bruno Medeiros - Software Engineer
Nov 07 2012
On Wednesday, 7 November 2012 at 12:48:30 UTC, Bruno Medeiros wrote:On 24/08/2012 00:18, alex wrote:Thanks! Hopefully I can release the new 0.4.1.9 version today :)Hi everyone, Right after the GSoC finished (I'm really sure I passed :)), I've just found more time to improve things drastically:I also have to extend my congratulations for the work you have done. I tried Mono-D several releases ago (before Summmer), and even then it was already very good in its semantic functionality (autocomplete etc.). It was the only D IDE to come anywhere close to what DDT and Descent had in terms of semantic functionality (sorry VisualD and others :P ), and even more, it actually didn't just come close but actually surpassed it significantly!
Nov 08 2012