digitalmars.D.announce - Mono-D v0.4.1.2 - Heavily improved performance + Completion bugs
- "alex" <info alexanderbothe.com> Aug 23 2012
- Piotr Szturmaj <bncrbme jadamspam.pl> Aug 23 2012
- "alex" <info alexanderbothe.com> Aug 23 2012
- "F i L" <witte2008 gmail.com> Aug 23 2012
- Piotr Szturmaj <bncrbme jadamspam.pl> Aug 23 2012
- Nick Sabalausky <SeeWebsiteToContactMe semitwist.com> Aug 23 2012
- Jacob Carlborg <doob me.com> Aug 23 2012
- "Bernard Helyer" <b.helyer gmail.com> Aug 24 2012
- "alex" <info alexanderbothe.com> Aug 24 2012
- "alex" <info alexanderbothe.com> Aug 24 2012
- Bruno Medeiros <brunodomedeiros+dng gmail.com> Nov 07 2012
- "alex" <info alexanderbothe.com> Nov 08 2012
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: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.
This works indeed, but nervertheless not for templated sub classes like ... { static class SubClass(U) {} }
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 :D
Yes! This is really good project! :)
Aug 23 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
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
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 00:10:03 UTC, Piotr Szturmaj wrote:F i L wrote:http://i3.kym-cdn.com/entries/icons/original/000/004/128/BRILLIANT_.jpg Great work as always, Alex :D
Yes! This is really good project! :)
Thanks :D
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: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)
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 :)
Aug 24 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: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!
Thanks! Hopefully I can release the new 0.4.1.9 version today :)
Nov 08 2012









Piotr Szturmaj <bncrbme jadamspam.pl> 