Well, yes to both.

Now, about the performance, first I'd like to have a benchmark suite that
runs all the time, to at least understand if we lose some performance,
when/why was it.
Of course, this would have an impact depending on how often are globals
read/written. But I'd like to know with more certainty.

Also

[SystemNavigation new isUsedClass: IceRepository] bench
 => '172.497 per second'

So maybe we can pay the price of a couple of milliseconds every time we
remove a class for the moment. I prefer a "bit slower" system that is more
robust :)
Also, how often do we remove classes? I don't think this is critical, and
the robustness here pays for itself :)
We can think about how to optimize it later.

Guille

On Wed, May 2, 2018 at 2:20 PM, teso...@gmail.com <teso...@gmail.com> wrote:

> Two points.
>
> 1. Maybe we should centralize the removal of a class in a component as the
> class installer. So we can have it all in one place, and if we need to
> override and do fancy stuff.
> 2. Yes to the messages to the environment, I am doing so to have multiple
> environments sharing the same methods. We can check how much does it affect
> the performance, because it opens a lot of different options to extend the
> language.
>
> Cheers,
> Pablo
>
> On Wed, May 2, 2018 at 2:09 PM, Marcus Denker <marcus.den...@inria.fr>
> wrote:
>
>>
>>
>> > On 26 Apr 2018, at 09:28, Guillermo Polito <guillermopol...@gmail.com>
>> wrote:
>> >
>> > Hi,
>> >
>> > It looks you got bit by this issue:
>> >
>> > https://pharo.fogbugz.com/f/cases/21519/RemoveFromSystem-doe
>> s-not-work-well-with-Undeclareds
>> >
>> > It's not particular to Epicea. There should be a better management of
>> Undeclareds in general in all Pharo.
>> >
>>
>> It can be fixed by moving the binding to undeclared in #removeFromSystem:
>>
>> This is done by adding
>>
>>   Undeclared declare: self name asSymbol from: Smalltalk globals.
>>
>> before the "forgetClass: self logged:" line.
>>
>> What we need to do in addition: Only do that when the class is
>> referenced. #isUsedClass: does that, but it does integrate over all methods
>> in the system.
>>
>> (I sometimes wonder if we should not late-bind accesses to globals, that
>> is, just compile them as message sends to the environment).
>>
>>         Marcus
>>
>>
>>
>
>
> --
> Pablo Tesone.
> teso...@gmail.com
>



-- 



Guille Polito

Research Engineer

Centre de Recherche en Informatique, Signal et Automatique de Lille

CRIStAL - UMR 9189

French National Center for Scientific Research - *http://www.cnrs.fr
<http://www.cnrs.fr>*


*Web:* *http://guillep.github.io* <http://guillep.github.io>

*Phone: *+33 06 52 70 66 13

Reply via email to