On 21 nov. 2013, at 14:45, Tudor Girba <[email protected]> wrote:

> Hi,
> 
> This is not *just cleaning*!

I wasn't talking about the creation of the slot model nor its integration in 
the image, but about killing the old class builder, a really enjoyable moment 
BTW :)

> You might perceive it as such being so involved in it. You guys replaced 
> something ugly with something based on a sound explicit model.
> When you do this at such a core level, the possibilities explode two layers 
> on top. You might just do not see it, yet :).
> 
> Just two examples:
> - Morphic uses a dictionary to allow extensions to add attributes to the base 
> class. This is closed-world-based-assumption thinking because I have to know 
> in advance what parts will be extended by someone else. This should be easily 
> changeable with slots given that slots are manipulate-able at runtime 
> (ideally).
> - In Fame we implement bidirectional relationships. By bidirectional 
> relationships I mean you have classes like A ->* B, and when you have a B 
> object and set the A parent, it automatically adds the B instance to the 
> collection in A. The current implementation in Fame is difficult to grasp and 
> the code of specifying the slots is spread over the whole Moose models. Once 
> slots are supported as first class, we can build the strategy of 
> bidirectionality directly in the slot support. This will be more elegant.
> 
> Doru
> 
> 
> On Thu, Nov 21, 2013 at 2:24 PM, Camille Teruel <[email protected]> 
> wrote:
> 
> On 21 nov. 2013, at 13:44, kilon alios <[email protected]> wrote:
> 
>> any links why newcomers like me should be impressed ? Whats the advantages ?
> 
> That's just cleaning. The old class builder was an incredibly complex piece 
> of code that is now replaced with the Slot class builder.
> The later is based on slots and is much more understandable and thus much 
> easier to maintain.
> It's been integrated some time ago thanks to Martin.
> 
> Slots are the work of Toon and Camillo and enables a lot of useful features: 
> http://rmod.lille.inria.fr/archives/papers/Verw11a-OOSPLA11-FlexibleObjectLayouts.pdf
> They are based on the reification of class layouts (variable,weak,fixed and 
> co) and instance variables (slots).
> Slots are an abstraction added on top of low-level class "fields".
> It means that one will be able to create a customized slot class that define 
> the logic to read and write a slot:
> 
> Object subclass: #MyClass
>       slots: { x => MyFancySlot }
>       category: 'Playground'
> 
> Then when a method read or writes x, the logic you defined in MyFancySlot is 
> executed.
> All that still need to be absorbed by Opal so it's not available right now 
> but it will (Pharo 4)!
> 
>>  
>> 
>> 
>> On Thu, Nov 21, 2013 at 2:21 PM, Tudor Girba <[email protected]> wrote:
>> Triple impressive! This is another sample of an apparently tiny change that 
>> actually has deep impact on the future of our beloved environment.
>> 
>> Ladies and gentlemen, I know you are busy, but please take the time to 
>> acknowledge it :)
>> 
>> Doru
>> 
>> 
>> 
>> 
>> On Thu, Nov 21, 2013 at 12:58 PM, Martin Dias <[email protected]> wrote:
>> wow, impressive!
>> 
>> 
>> On Thu, Nov 21, 2013 at 9:02 AM, Marcus Denker <[email protected]> 
>> wrote:
>> Hi,
>> 
>> Yesterday Camille did the change to finally remove the old class builder!
>> (just a removal + a small change to NativeBoost to use the new class builder 
>> to create anonymous classes).
>> 
>> This means
>>         - 1000 Loc of completely un-understandable code removed.
>>         -  we now 100% run on the new class builder from the Slot Project.
>> 
>> Next on the list (not all for Pharo3):
>> 
>>         - remove PackageInfo
>>         - old Browser + CodeHolder hierarchy
>>         - PseudoClass&Co —> Ring
>>         - old AST+Compiler (this in Pharo4)
>> 
>> We already did (all in Pharo3):
>>         -> remove URI
>>         -> deprecated Url for ZnUrl
>>         -> removed HTTPSocket facade
>>         -> MIMEType retired for ZnMimeType
>>         -> old Debugger is removed
>>         -> Class categories are replaced by Protocols
>> 
>> I am quite sure that these cleanups will enable us to build a lot of very 
>> interesting things
>> in the future.
>> 
>>         Marcus
>> 
>> 
>> 
>> 
>> -- 
>> www.tudorgirba.com
>> 
>> "Every thing has its own flow"
>> 
> 
> 
> 
> 
> -- 
> www.tudorgirba.com
> 
> "Every thing has its own flow"

Reply via email to