> On 1 Jul 2019, at 08:45, Marcus Denker <[email protected]> wrote:
>
> For the ones I add for other to do I put the “Easy” tag and add them to this
> GitHub project (kanban board):
>
> https://github.com/orgs/pharo-project/projects/8
>
Small fix Friday:
=============
3700-simplify-allUnreferencedInstanceVariables
https://github.com/pharo-project/pharo/pull/3701/files
same idea as the class vars, now that variables are object, bit strings, we can
implement it simply as:
^self allSlots reject: [:slot | slot isReferenced]
(and it will returns object, that e.g. know the class they are declared in)
Saturday
=======
I did one of the simple ones posted the day before:
3630-small-cleanup-traits-in-Behaviour-isComposedBy-move-to-traits
https://github.com/pharo-project/pharo/pull/3704
Then I did a small (one var added, two lines changed)l, but definitely not
trivial improvement:
SystemDictionary: add a cache for allBehaviors
https://github.com/pharo-project/pharo/issues/3702
Right now SystemDictionary caches names, we should cache Objects instead. this
is the first step.
And it enables Sunday
===================
speedup "implementors of
https://github.com/pharo-project/pharo/pull/3711
With the allBehaviors cache, we can radically simplify (and speedup!) a lot of
code used very very often.
[#name implementors] bench
before: "'69.688 per second'"
after: "'119.385 per second'"
The new implementation is this:
SystemNavigation>>allImplementorsOf: aSelector
"Answer all the methods that implement the message aSelector."
^self allBehaviors
select: [:class | class includesSelector: aSelector]
thenCollect: [:class | (class>>aSelector) methodReference ]
This #allBehaviors cache will allow many more simplifications (check senders of
#allBehaviorsDo:)
e.g. for today, I did two as part of this (isUnsentMessage: and
allPrimitiveMethods):
https://github.com/pharo-project/pharo/pull/3725/files
Marcus