Old ClassBuilder remove!

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
36 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Old ClassBuilder remove!

Marcus Denker-4
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
Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

tinchodias
wow, impressive!


On Thu, Nov 21, 2013 at 9:02 AM, Marcus Denker <[hidden email]> 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

Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

Tudor Girba-2
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 <[hidden email]> wrote:
wow, impressive!


On Thu, Nov 21, 2013 at 9:02 AM, Marcus Denker <[hidden email]> 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




--

"Every thing has its own flow"
Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

kilon.alios
any links why newcomers like me should be impressed ? Whats the advantages ? 


On Thu, Nov 21, 2013 at 2:21 PM, Tudor Girba <[hidden email]> 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 <[hidden email]> wrote:
wow, impressive!


On Thu, Nov 21, 2013 at 9:02 AM, Marcus Denker <[hidden email]> 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




--

"Every thing has its own flow"

Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

NorbertHartl
In reply to this post by Tudor Girba-2

Am 21.11.2013 um 13:21 schrieb Tudor Girba <[hidden email]>:

Ladies and gentlemen, I know you are busy, but please take the time to acknowledge it :)
 
full ack

Norbert
Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

camille teruel
In reply to this post by kilon.alios

On 21 nov. 2013, at 13:44, kilon alios <[hidden email]> 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: 
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 <[hidden email]> 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 <[hidden email]> wrote:
wow, impressive!


On Thu, Nov 21, 2013 at 9:02 AM, Marcus Denker <[hidden email]> 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




--

"Every thing has its own flow"


Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

philippeback
facking awesome !

On Thursday, November 21, 2013, Camille Teruel wrote:

On 21 nov. 2013, at 13:44, kilon alios <<a href="javascript:_e({}, &#39;cvml&#39;, &#39;kilon.alios@gmail.com&#39;);" target="_blank">kilon.alios@...> wrote:
A
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: 
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 <<a href="javascript:_e({}, &#39;cvml&#39;, &#39;tudor@tudorgirba.com&#39;);" target="_blank">tudor@...> 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 <<a href="javascript:_e({}, &#39;cvml&#39;, &#39;tinchodias@gmail.com&#39;);" target="_blank">tinchodias@...> wrote:
wow, impressive!


On Thu, Nov 21, 2013 at 9:02 AM, Marcus Denker <<a href="javascript:_e({}, &#39;cvml&#39;, &#39;marcus.denker@inria.fr&#39;);" target="_blank">marcus.denker@...> 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




--

"Every thing has its own flow"




--
---
Philippe Back
Dramatic Performance Improvements
Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
Blog: http://philippeback.be | Twitter: @philippeback

High Octane SPRL
rue cour Boisacq 101 | 1301 Bierges | Belgium

Pharo Consortium Member - http://consortium.pharo.org/
Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com
Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller
 


Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

Luc Fabresse
In reply to this post by camille teruel
yes thanks a lot!
I like cleaning.


#Luc


2013/11/21 Camille Teruel <[hidden email]>

On 21 nov. 2013, at 13:44, kilon alios <[hidden email]> 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: 
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 <[hidden email]> 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 <[hidden email]> wrote:
wow, impressive!


On Thu, Nov 21, 2013 at 9:02 AM, Marcus Denker <[hidden email]> 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




--

"Every thing has its own flow"



Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

Tudor Girba-2
In reply to this post by camille teruel
Hi,

This is not *just cleaning*! 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 <[hidden email]> wrote:

On 21 nov. 2013, at 13:44, kilon alios <[hidden email]> 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: 
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 <[hidden email]> 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 <[hidden email]> wrote:
wow, impressive!


On Thu, Nov 21, 2013 at 9:02 AM, Marcus Denker <[hidden email]> 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




--

"Every thing has its own flow"





--

"Every thing has its own flow"
Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

Tudor Girba-2
And then, imagine what this will do for tools. Given that the class instance will know what kind of slots are around, the tools can help you manage them. You will be able to build your class and then simply say that you want a slot to be bidirrectional and point it to the opposite slot. Really, I am so excited :)

Doru


On Thu, Nov 21, 2013 at 2:45 PM, Tudor Girba <[hidden email]> wrote:
Hi,

This is not *just cleaning*! 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 <[hidden email]> wrote:

On 21 nov. 2013, at 13:44, kilon alios <[hidden email]> 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: 
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 <[hidden email]> 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 <[hidden email]> wrote:
wow, impressive!


On Thu, Nov 21, 2013 at 9:02 AM, Marcus Denker <[hidden email]> 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




--

"Every thing has its own flow"





--

"Every thing has its own flow"



--

"Every thing has its own flow"
Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

Sean P. DeNigris
Administrator
In reply to this post by Tudor Girba-2
Tudor Girba-2 wrote
Triple impressive! This is another sample of an apparently tiny change that
actually has deep impact on the future of our beloved environment.
Yes!!!!
Cheers,
Sean
Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

camille teruel
In reply to this post by Tudor Girba-2

On 21 nov. 2013, at 14:45, Tudor Girba <[hidden email]> 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 <[hidden email]> wrote:

On 21 nov. 2013, at 13:44, kilon alios <[hidden email]> 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: 
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 <[hidden email]> 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 <[hidden email]> wrote:
wow, impressive!


On Thu, Nov 21, 2013 at 9:02 AM, Marcus Denker <[hidden email]> 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




--

"Every thing has its own flow"





--

"Every thing has its own flow"

Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

Sean P. DeNigris
Administrator
In reply to this post by kilon.alios
kilon alios wrote
any links why newcomers like me should be impressed ? Whats the advantages?
Great question! As Camille mentioned, the email is more about cleaning. As a new user, this will likely effect you in two ways. The new clean replacement code:
1) will empower members of our community to write killer IDE enhancements and libraries that you can use
2) will allow you to express yourself in code more effectively. I remember when I first found Smalltalk. I was smitten by the promise of turtles-all-the-way-down, all parts of the system available for exploration and modification. This was quickly followed by the reality of (sometimes) impossible (for me anyway) to understand code (cough... Morphic, FileDirectory). On several shoot-the-moon IDE ideas, I became frustrated and quit. Now we have FileSystem, which is a joy to work with, and rarely gets in my way. Multiply this by the number of items above, and all the others over the releases of Pharo, and... you get the picture...

HTH
Cheers,
Sean
Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

Esteban A. Maringolo
In reply to this post by Tudor Girba-2
I don't fully see what are the immediate benefits.

But as usually happen when you replace something old, limited and "not
so well designed" by something better designed from the ground up I
guess it will open Pharo to features not yet thought of.

Does the new debugger have something "better" than the previous one?


Regards!
Esteban A. Maringolo


2013/11/21 Tudor Girba <[hidden email]>:

> 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 <[hidden email]> wrote:
>>
>> wow, impressive!
>>
>>
>> On Thu, Nov 21, 2013 at 9:02 AM, Marcus Denker <[hidden email]>
>> 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"

Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

kilon.alios
yeah me too Esteban, I checked the link to the pdf but is written in a language its very difficult to understand. Also Sean points tell me nothing about this feature, they look too generic. Oh well maybe its for the people that want to deeply hack the language and system which is not my area of expertise or interest. 

In any case any positive contribution to Pharo whether interests me or not is ALWAYS welcomed, so thank you :) 


On Thu, Nov 21, 2013 at 4:21 PM, Esteban A. Maringolo <[hidden email]> wrote:
I don't fully see what are the immediate benefits.

But as usually happen when you replace something old, limited and "not
so well designed" by something better designed from the ground up I
guess it will open Pharo to features not yet thought of.

Does the new debugger have something "better" than the previous one?


Regards!
Esteban A. Maringolo


2013/11/21 Tudor Girba <[hidden email]>:
> 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 <[hidden email]> wrote:
>>
>> wow, impressive!
>>
>>
>> On Thu, Nov 21, 2013 at 9:02 AM, Marcus Denker <[hidden email]>
>> 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"


Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

Sven Van Caekenberghe-2
In reply to this post by Tudor Girba-2

On 21 Nov 2013, at 13:21, Tudor Girba <[hidden email]> 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

+10

Also, all these changes in different areas reinforce each other. That is Pharo.

>
> On Thu, Nov 21, 2013 at 12:58 PM, Martin Dias <[hidden email]> wrote:
> wow, impressive!
>
>
> On Thu, Nov 21, 2013 at 9:02 AM, Marcus Denker <[hidden email]> 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"


Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

Stephan Eggermont-3
In reply to this post by Marcus Denker-4
Nice!

kilon wrote:
>any links why newcomers like me should be impressed ? Whats the advantages ?

Then we can now have more compact versions of

FreeTypeSettings LabelMorph MorphTreeNodeMorph MorphTreeListManager ThemeSettings MultistateButtonMorph PharoUserPermissions SimpleHierarchicalListMorph Nautilus class SpecTreeColumn PluggableIconListMorph MorphTreeMorph Workspace CompositionScanner Paragraph MethodOveridesAction HandMorph TextComposer ScrollBar NECContext MultiByteFileStream NewValueHolder DynamicClassGroup SearchMorph NautilusHistoryEntry PluggableTextFieldMorph PluggableListMorph TableLayoutProperties DynamicGroup DropListMorph GradientFillStyle PackageTreeNautilus PluggableTextMorphWithLimits NECUntypedModel BalloonEngine MetacelloPharo30Platform SystemWindow NautilusWindow NECPreferences class EditorFindReplaceDialogWindow GoBackStringMorph NautilusHistoryEntryWithSourceCode MCCacheRepository PluggableButtonMorph AlphaImageMorph PluggableTextMorph RxMatcher MorphExtension TextMorphForFieldView MorphTreeColumn FindReplaceService CheckboxMorph TextMorphForEditView IndentingListItemMorph ControlButtonMorph CheckboxButtonMorph

with multiple booleans mapped to one instVar


|set|
set := IdentitySet new.
Object allSubclasses do: [ :aClass |
        |varSize coll nr candidate |
        candidate := false.
        varSize := aClass instSize.
        coll := aClass allInstances.
        nr := 10 min: coll size.
        (coll first: nr) do: [ :anInstance |
                |value nrBoolean|
                nrBoolean := 0.
                1 to: varSize do: [ :varIndex |
                        value := anInstance instVarAt: varIndex.
                        value class = True ifTrue: [ nrBoolean := nrBoolean + 1  ].
                        value class = False ifTrue: [ nrBoolean := nrBoolean + 1  ]].
                nrBoolean >1 ifTrue: [ candidate := true ]   ].
        candidate ifTrue: [ set add: aClass ]].
set.


Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

Camillo Bruni-3

On 2013-11-22, at 11:56, Stephan Eggermont <[hidden email]> wrote:

> Nice!
>
> kilon wrote:
>> any links why newcomers like me should be impressed ? Whats the advantages ?
>
> Then we can now have more compact versions of
>
> FreeTypeSettings LabelMorph MorphTreeNodeMorph MorphTreeListManager ThemeSettings MultistateButtonMorph PharoUserPermissions SimpleHierarchicalListMorph Nautilus class SpecTreeColumn PluggableIconListMorph MorphTreeMorph Workspace CompositionScanner Paragraph MethodOveridesAction HandMorph TextComposer ScrollBar NECContext MultiByteFileStream NewValueHolder DynamicClassGroup SearchMorph NautilusHistoryEntry PluggableTextFieldMorph PluggableListMorph TableLayoutProperties DynamicGroup DropListMorph GradientFillStyle PackageTreeNautilus PluggableTextMorphWithLimits NECUntypedModel BalloonEngine MetacelloPharo30Platform SystemWindow NautilusWindow NECPreferences class EditorFindReplaceDialogWindow GoBackStringMorph NautilusHistoryEntryWithSourceCode MCCacheRepository PluggableButtonMorph AlphaImageMorph PluggableTextMorph RxMatcher MorphExtension TextMorphForFieldView MorphTreeColumn FindReplaceService CheckboxMorph TextMorphForEditView IndentingListItemMorph ControlButtonMorph CheckboxButtonMorph
>
> with multiple booleans mapped to one instVar
>
>
> |set|
> set := IdentitySet new.
> Object allSubclasses do: [ :aClass |
> |varSize coll nr candidate |
> candidate := false.
> varSize := aClass instSize.
> coll := aClass allInstances.
> nr := 10 min: coll size.
> (coll first: nr) do: [ :anInstance |
> |value nrBoolean|
> nrBoolean := 0.
> 1 to: varSize do: [ :varIndex |
> value := anInstance instVarAt: varIndex.
> value class = True ifTrue: [ nrBoolean := nrBoolean + 1  ].
> value class = False ifTrue: [ nrBoolean := nrBoolean + 1  ]].
> nrBoolean >1 ifTrue: [ candidate := true ]   ].
> candidate ifTrue: [ set add: aClass ]].
> set.
I love these scripts :P..
maybe you should make gists [1] out of them :)

[1] https://gist.github.com/

signature.asc (457 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

Stephan Eggermont-3
In reply to this post by Marcus Denker-4
Camillo wrote:
>I love these scripts :P..
>maybe you should make gists [1] out of them :)

Good idea

https://gist.github.com/StephanEggermont/7598946

Reply | Threaded
Open this post in threaded view
|

Re: Old ClassBuilder remove!

Nicolas Cellier
It has to be more simple than that...
Why not searching for allReferences to true and false, and gather the class of referents?
This would also remove the limitation of first 10 instances...


2013/11/22 Stephan Eggermont <[hidden email]>
Camillo wrote:
>I love these scripts :P..
>maybe you should make gists [1] out of them :)

Good idea

https://gist.github.com/StephanEggermont/7598946


12