Besides several TBehavior-like traits with more than one user in the kernel
(TApplyingOnClassSide TBehavior TClass TClassDescription
TComposingDescription) we have some more general ones (TSortable
TTranscript). So we will have some code duplicities.

-- Pavel


2017-06-27 15:13 GMT+02:00 Guillermo Polito <[email protected]>:

> But that's not the case. The only usage of traits in the Kernel is
> TBehaviour, to share some common behaviour between traits and classes. But
> Pablo is working on a new modular implementation of traits that would not
> require TBehavior, and would simplify the code of classes.
>
> On Tue, Jun 27, 2017 at 3:04 PM, Juraj Kubelka <[email protected]>
> wrote:
>
>>
>> El 27-06-2017, a las 14:43, Pavel Krivanek <[email protected]>
>> escribió:
>>
>>
>>
>> 2017-06-27 14:26 GMT+02:00 Juraj Kubelka <[email protected]>:
>>
>>> Just for curiosity: Is it a good decision? It is supposed that with
>>> Traits we can have less code duplication. And maybe the code duplication
>>> happens also in the Pharo kernel, right?
>>>
>>> Thanks for any explanation :-)
>>>
>>
>> You are right, it will cause more code duplicities in the kernel. On the
>> other hand we will be able to clean the traits implementation and make it
>> more modular, so the users will have more options like stateful traits,
>> talents etc. We needed to do a small step back to be able to move forward.
>> It was not an easy decision but it was planned for a long time. And in
>> the end, this decision was done by people who introduced traits and
>> invested a lot of time and effort into them.
>>
>>
>> That’s interesting. Thanks for the explanation :-)
>>
>> Juraj
>>
>>
>> -- Pavel
>>
>>
>>
>>>
>>> Cheers,
>>> Juraj
>>>
>>> > El 27-06-2017, a las 14:16, Pavel Krivanek <[email protected]>
>>> escribió:
>>> >
>>> > Hi,
>>> >
>>> > because we want to have traits only as an option where people will be
>>> able to choose custom traits implementation, the Pharo kernel cannot depend
>>> on them. For that reason we had to flatten all classes that use traits in
>>> the kernel packages.
>>> > That means that methods from system traits as TBehavior [1] were
>>> copied to the trait users and the traits were removed from the class
>>> definitions. For now these traits are still present in the image.
>>> > If you use own traits in your projects, this step will have no impact
>>> on you. Only if your project extends the system traits, you will need to
>>> adopt it for Pharo 7.
>>> >
>>> > [1] complete list: TApplyingOnClassSide TBehavior
>>> TBehaviorCategorization TClass TClassDescription TComposingDescription
>>> TSortable TTranscript TTransformationCompatibility
>>> >
>>> > Cheers,
>>> > -- Pavel
>>>
>>>
>>>
>>
>>
>
>
> --
>
>
>
> Guille Polito
>
>
> Research Engineer
>
> 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 <+33%206%2052%2070%2066%2013>
>

Reply via email to