These are chat archives for ceylon/ceylon-ide-eclipse

21st
Jun 2016
David Festal
@davidfestal
Jun 21 2016 08:37
@jvasileff : hi ! I didn't realize that this were commits in the Ceylon distribution. The Eclipse SR releases only brings minor changes in the Eclipse plugin code, not in the embedded Ceylon distribution. Sorry about that, but I prefer not to include any distribution change in this SR that has to be released very soon (for tomorrow)
Gavin King
@gavinking
Jun 21 2016 08:41
They are commits on Ceylon master or what?
David Festal
@davidfestal
Jun 21 2016 08:48
yes
Gavin King
@gavinking
Jun 21 2016 08:52
ok
John Vasileff
@jvasileff
Jun 21 2016 11:39
@davidfestal no problem, I understand
Gavin King
@gavinking
Jun 21 2016 13:51
@davidfestal what is the ETA on Neon?
David Festal
@davidfestal
Jun 21 2016 13:52
I fixed the 2 incompatibilities and tested them since yesterday.
I'm backportinh that to the 1.2.2-fixes branche
Gavin King
@gavinking
Jun 21 2016 13:53
back porting?!
how hard can that be?
David Festal
@davidfestal
Jun 21 2016 13:53
to push a fix on the official 1.2.2 update site
not hard at all indeed
Gavin King
@gavinking
Jun 21 2016 13:53
have you checked up on ceylon/ceylon-ide-eclipse#1804
is the 1.2.2 release using ceylon-common for quick fixes yet?
no, right?
David Festal
@davidfestal
Jun 21 2016 13:53
no no, what I'm saying is
I'll just produce a fix update of the 1.2.2 release, with only the Neon compatibility changes
Gavin King
@gavinking
Jun 21 2016 13:55
ok good
tonight?
David Festal
@davidfestal
Jun 21 2016 13:55
yes
Gavin King
@gavinking
Jun 21 2016 13:55
ok fine
David Festal
@davidfestal
Jun 21 2016 13:56
in fact I'm rebuilding the IDE on 1.2.2 fixes currently
Gavin King
@gavinking
Jun 21 2016 13:56
alright
David Festal
@davidfestal
Jun 21 2016 13:56
and then I'll test in a raw Neon setup
However I had some bad surprise of the overall Ceylon build being very slow. And had to check it was not related to something new in Neon
so I had to make some performance tests
but finally it appeared that it was related to a recent change I've been able to fix.
So no problem now
Gavin King
@gavinking
Jun 21 2016 14:11
ok, which change?
David Festal
@davidfestal
Jun 21 2016 14:12
I'll open an issue on the SDK as soon as possible
Using ceylon.language.HashMap instead of the map created by ceylon.language.map at some place made the build very slower visibly
but I've not had time to dive deeper into the root cause
or write precise testing code that would showcase the problem
I'll do it though
Gavin King
@gavinking
Jun 21 2016 14:14
“some place”?
where?
in common
David Festal
@davidfestal
Jun 21 2016 14:14
in ImmutableMapWrapper in common
Gavin King
@gavinking
Jun 21 2016 14:16
ok
that’s strange
David Festal
@davidfestal
Jun 21 2016 14:16
yes, quite strange
an on the other hand, when I use the set method in ImmutableSetWrapper, a hidden reference to the iterable used as a parameter is kept so that we have a memory leak
by the way, looking in tthe implementation of HashMap and HashSet
I found strange that
the entries stream passed in the constructor is stored internally
so that the map / set will keep a reference to this iterable
sounds strange to me
because it's not used anymore after the initilization of the map / set
Well, I'll have to look into that once tobe sure the Immutable<Set/Map>Wrapper I use are optimized and hve good performance
especially for adding into it and for getting an element
Gavin King
@gavinking
Jun 21 2016 14:23
what is ImmutableSetWrapper?
and why do you say that HashMap stores the entries stream?
it’s only used in the initializer, AFAICS
it should not be captured
David Festal
@davidfestal
Jun 21 2016 14:26
ImmutableSetWrapper is a class in ceylon-ide-common
Gavin King
@gavinking
Jun 21 2016 14:27
who wrote that?
David Festal
@davidfestal
Jun 21 2016 14:27
me why ?
I did
Gavin King
@gavinking
Jun 21 2016 14:27
ok, so you’re complaining about your own code?
David Festal
@davidfestal
Jun 21 2016 14:27
it can surely be made better
Gavin King
@gavinking
Jun 21 2016 14:27
I’m looking at HashMap in the decompiler
it has no instvar entries
so I don’t know what you mean
David Festal
@davidfestal
Jun 21 2016 14:27
I'm not complaining ;-)
Gavin King
@gavinking
Jun 21 2016 14:28
I think you think that every initializer variable in a class with constructors is a Java-style field
but that’s not the case
David Festal
@davidfestal
Jun 21 2016 14:28
yes, I misinterpreted the code here
sorry
So don't care about all this:-)
Gavin King
@gavinking
Jun 21 2016 14:29
ok
i will stop caring :)
David Festal
@davidfestal
Jun 21 2016 14:29
You asked where I found some cause of slowness, I told you ;-)
I reverted the change that made things slow and it's just as before now
but I'll still take some time to go better understand what was happening
Gavin King
@gavinking
Jun 21 2016 14:33
ok
John Vasileff
@jvasileff
Jun 21 2016 15:06
@davidfestal, you changed it to HashMap, right? So HashMap is the "good" one.
John Vasileff
@jvasileff
Jun 21 2016 15:12
@gavinking do you think the memory leak could be the outer reference in the anonymous object created by Iterable.summarize()?
Gavin King
@gavinking
Jun 21 2016 15:14
oh you think because it’s an inner class instead of a toplevel class?
John Vasileff
@jvasileff
Jun 21 2016 15:15
yeah, maybe
Gavin King
@gavinking
Jun 21 2016 15:15
hrm that’s a good point
lemme see
Gavin King
@gavinking
Jun 21 2016 15:22
I don’t think there is any this ref, @jvasileff
first, it’s an interface
so there’s none implicitly coming from java
oh wait, no, it gets compiled into the $impl class
so does Java always make an implicit outer field for non-static inner classes?
John Vasileff
@jvasileff
Jun 21 2016 15:25
I think the outer ref would have to be optimized away by javac to avoid a leak
Gavin King
@gavinking
Jun 21 2016 15:25
yes, it depends what javac does
Stéphane Épardaud
@FroMage
Jun 21 2016 15:25
I think it's an always, yes
Gavin King
@gavinking
Jun 21 2016 15:25
whether it treats it as implictly static
David Festal
@davidfestal
Jun 21 2016 16:08
@jvasileff : I initially changed it to HashMap and HashSet instead of ceylon.language::map and ceylon.language::set first for the memory leak
but then, for the map case (with hashMap), it appeared to slow the build quite much, so I reverted (locally for now) to ceylon.language.map
and this brought back decent build times
but I didn't have the opportunity to debug that more
Gavin King
@gavinking
Jun 21 2016 16:11
but this is not the actual performance of HashMap here
but of the build
something to do with modules, I assume
David Festal
@davidfestal
Jun 21 2016 16:11
but this only change made the difference
I'll debug / profile and tell you more
Gavin King
@gavinking
Jun 21 2016 16:12
that’s not a priority right now
David Festal
@davidfestal
Jun 21 2016 16:13
sure
I think you'll have to open mspaint to make @2x icons for eclipse ;)
Gavin King
@gavinking
Jun 21 2016 16:51
it’s already done for some of them
most of them i think
Bastien Jansen
@bjansen
Jun 21 2016 16:51
really?
well, that's good news then
Gavin King
@gavinking
Jun 21 2016 16:52
oh no i lie
the pngs have transparencies and stuff
but they’re still not 2x
i guess
Gavin King
@gavinking
Jun 21 2016 17:04
ohyes, it’s true — hires icons finally!
yay!
much better :)
Gavin King
@gavinking
Jun 21 2016 17:12
naw, well, actually, only some of the icons are rires
most are still fuzzy
David Festal
@davidfestal
Jun 21 2016 17:33
OK, so now the 1.2.2 update site has been upgraded with a Neon-compatible maintenance resease
we are ready for tomorrow :-)
Gavin King
@gavinking
Jun 21 2016 18:06
:) great
David Festal
@davidfestal
Jun 21 2016 18:07
I tested in first install or update from the previous installation.
Bastien Jansen
@bjansen
Jun 21 2016 18:15
The guys making eclipse just made a couple of hires icons as a poc, then said "ship it" 😊
John Vasileff
@jvasileff
Jun 21 2016 18:29
another 4 years, and they’ll all be hi-res!
A potential ceylon compile optimzation to turn anonymous classes into static classes (when possible) would also be nice for Callables, which also implicitly capture this.
Gavin King
@gavinking
Jun 21 2016 22:40
I must admit, that after staring at intellij for 2 weeks
I really notice the relative ugliness of Eclipse
it’s a bit jarring