Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
October 2010
- 130 participants
- 1604 messages
Re: [Pharo-project] Another fixes to finalization (was Re: [update 1.2] #12161 - #12172)
by Igor Stasenko
On 3 October 2010 12:36, Henrik Sperre Johansen
<henrik.s.johansen(a)veloxit.no> wrote:
> Â On 03.10.2010 05:47, Igor Stasenko wrote:
>>
>> On 3 October 2010 03:13, Henrik Sperre Johansen
>> <henrik.s.johansen(a)veloxit.no> Â wrote:
>>>
>>> Â On 02.10.2010 19:01, Igor Stasenko wrote:
>>>>
>>>> On 2 October 2010 19:47, Stéphane Ducasse<stephane.ducasse(a)inria.fr>
>>>> Â wrote:
>>>>>
>>>>> Hi igor
>>>>>
>>>>> do you understand why the previous definition was
>>>>>
>>>>> cachedDefinitions
>>>>> Â Â Â Â Definitions ifNil: [Definitions := WeakIdentityKeyDictionary
>>>>> new.
>>>>> Â WeakArray addWeakDependent: Definitions].
>>>>> Â Â Â Â ^ Definitions
>>>>>
>>>> i don't. :)
>>>>
>>>> It just a way to free memory as fast as possible.
>>>> But its really not worth spending so much CPU in order to save few
>>>> bytes of memory.
>>>
>>> Without registering the dict for finalization, the values won't ever be
>>> removed with the current implementation.
>>
>> They are removed. After each package load/unload operation.
>> I don't see a reason to do this more often.
>
> If they are removed explicitly, then yes. But then again, if that's the
> case, why use a weak dictionary in the first place?
i don't know much about MC to tell for sure.
>>>
>>> Which can be somewhat hampering to performance once you have lots of
>>> nil-keyed elements all stashed from index 1 and onwards after a rehash.
>>>
>> In Pharo, weak dict knows how to reuse expired associations:
>>
> And when do they expire? Only when they are either finalized, or removed
> explicitly.
> So if you do neither, they will stay indefinately without being
> removed/reused.
no. they expiring when key become nil.
>
> Cheers,
> Henry
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
--
Best regards,
Igor Stasenko AKA sig.
Oct. 3, 2010
Re: [Pharo-project] Another fixes to finalization (was Re: [update 1.2] #12161 - #12172)
by Henrik Sperre Johansen
On 03.10.2010 05:47, Igor Stasenko wrote:
> On 3 October 2010 03:13, Henrik Sperre Johansen
> <henrik.s.johansen(a)veloxit.no> wrote:
>> On 02.10.2010 19:01, Igor Stasenko wrote:
>>> On 2 October 2010 19:47, Stéphane Ducasse<stephane.ducasse(a)inria.fr>
>>> wrote:
>>>> Hi igor
>>>>
>>>> do you understand why the previous definition was
>>>>
>>>> cachedDefinitions
>>>> Definitions ifNil: [Definitions := WeakIdentityKeyDictionary new.
>>>> WeakArray addWeakDependent: Definitions].
>>>> ^ Definitions
>>>>
>>> i don't. :)
>>>
>>> It just a way to free memory as fast as possible.
>>> But its really not worth spending so much CPU in order to save few
>>> bytes of memory.
>> Without registering the dict for finalization, the values won't ever be
>> removed with the current implementation.
> They are removed. After each package load/unload operation.
> I don't see a reason to do this more often.
If they are removed explicitly, then yes. But then again, if that's the
case, why use a weak dictionary in the first place?
>> Which can be somewhat hampering to performance once you have lots of
>> nil-keyed elements all stashed from index 1 and onwards after a rehash.
>>
> In Pharo, weak dict knows how to reuse expired associations:
>
And when do they expire? Only when they are either finalized, or removed
explicitly.
So if you do neither, they will stay indefinately without being
removed/reused.
Cheers,
Henry
Oct. 3, 2010
Re: [Pharo-project] Less plugins, more Smalltalk code! (was: Re: Pharo 1.1.1 OneClickCogVm)
by Stéphane Ducasse
you should read the recurrent thread in the vm list, some of you may be concerned :)
Stef
>>> Less plugins, more Smalltalk code!
>>> I want to look at everything and never see C.
>>> Plugins/primitives should only be there when they are absolutely necessary (to access a platform feature or for crucial performance).
>>>
>>> Sven
>>>
>>
>> +1
>>
> Yes. This is the approach we advocate in the Ocean project.
> We would like to see it generalized beyond the network library.
>
> Noury
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Oct. 3, 2010
Re: [Pharo-project] In Latest OB I cannot add a class variable
by Mariano Martinez Peck
On Sun, Oct 3, 2010 at 9:31 AM, Lukas Renggli <renggli(a)gmail.com> wrote:
> This works for me.
>
> 'superclassName' is the superclass name, but contains the definition
> which should be in the variable 'definition'.
>
> Looks like you need to recompile your image, the instance variable
> indexes seem to be messed up.
>
Thanks Lukas, indeed, evaluating a Compiler recompileAll was the trick to
make it work.
>
> Another bug I noticed in the ClassBuilder is that existing instances
> cannot be migrated if the old or the new class are subclasses of nil
> or ProtoObject, because #instVarAt: is then missing.
>
Yes, I saw this also. I had some proxies that extended from ProtoObject,
then I wanted them to extend from Object...
thanks!
mariano
>
> Lukas
>
> 2010/10/2 Mariano Martinez Peck <marianopeck(a)gmail.com>:
> >
> >
> > On Sat, Oct 2, 2010 at 8:02 PM, Lukas Renggli <renggli(a)gmail.com> wrote:
> >>
> >> It works for me, are you sure to use the latest code?
> >
> > yep.
> >
> > I tried to evaluate:
> >
> > ProtoObject subclass: #RBSemanticTest
> > instanceVariableNames: 'instVar'
> > classVariableNames: 'ClassVar'
> > poolDictionaries: ''
> > category: 'AST-Tests-Semantic'
> >
> >
> > and got an error in
> >
> > AddClassChange >> definitionClass
> > ^ Smalltalk globals at: (self superclassName ifNil: [ ^ ProtoObject
> ])
> >
> > since self superclassName answers:
> >
> > a Text for 'ProtoObject subclass: #RBSemanticTest
> > instanceVariableNames: ''instVar''
> > classVariableNames: ''ClassVar''
> > poolDictionaries: ''''
> > category: ''AST-Tests-Semantic'''
> >
> >
> > weird....
> >
> > thanks
> >
> > mariano
> >
> >>
> >> 2010/10/2 Mariano Martinez Peck <marianopeck(a)gmail.com>:
> >> >
> >> >
> >> > On Sat, Oct 2, 2010 at 1:54 PM, Lukas Renggli <renggli(a)gmail.com>
> wrote:
> >> >>
> >> >> Ok, I fixed that. The refactoring engine now supports all the 24
> (!!!)
> >> >> distinct patterns of defining a subclass/trait in Pharo (see below).
> >> >>
> >> >> Name: Refactoring-Changes-lr.15
> >> >> Author: lr
> >> >> Time: 2 October 2010, 1:50:13 pm
> >> >> UUID: 82093dfb-e7f2-4ff7-afe7-ac7196632196
> >> >> Ancestors: Refactoring-Changes-lr.14
> >> >>
> >> >> - also support subclasses of nil
> >> >>
> >> >
> >> > Hi Lukas. I tried with nil and it works. However, putting ProtoObject,
> >> > it
> >> > didn't, since
> >> >
> >> > definitionClass
> >> > ^ Smalltalk globals at: (self superclassName ifNil: [ ^
> ProtoObject
> >> > ])
> >> >
> >> > self superclassName answers
> >> >
> >> > a Text for 'ProtoObject variableSubclass: #MessageCatchingProxy
> >> > instanceVariableNames: ''''
> >> > classVariableNames: ''''
> >> > poolDictionaries: ''''
> >> > category: ''Proxies'''
> >> >
> >> > Cheers
> >> >
> >> > Mariano
> >> >
> >> >
> >> >>
> >> >> The undo operation of the respective actions should work as well. The
> >> >> exception here is an asymmetry (bug?) in the Pharo class definition
> >> >> strings that causes classes without traits to be printed without the
> >> >> #uses: claus. Evaluating this definition string does not remove the
> >> >> trait composition if the class happens to have one though.
> >> >>
> >> >> Lukas
> >> >>
> >> >> #('`className class instanceVariableNames: `#instanceVariableNames'
> >> >> '`className class uses: `@traitComposition instanceVariableNames:
> >> >> `#instanceVariableNames' '`@superclass subclass: `#className
> >> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> >> `#category' 'ProtoObject subclass: `#className instanceVariableNames:
> >> >> `#instanceVariableNames classVariableNames: `#classVariableNames
> >> >> poolDictionaries: `#poolDictionaries category: `#category. `className
> >> >> superclass: `@superclass' '`@superclass subclass: `#className uses:
> >> >> `@traitComposition instanceVariableNames: `#instanceVariableNames
> >> >> classVariableNames: `#classVariableNames poolDictionaries:
> >> >> `#poolDictionaries category: `#category' 'ProtoObject subclass:
> >> >> `#className uses: `@traitComposition instanceVariableNames:
> >> >> `#instanceVariableNames classVariableNames: `#classVariableNames
> >> >> poolDictionaries: `#poolDictionaries category: `#category. `className
> >> >> superclass: `@superclass' '`@superclass variableByteSubclass:
> >> >> `#className instanceVariableNames: `#instanceVariableNames
> >> >> classVariableNames: `#classVariableNames poolDictionaries:
> >> >> `#poolDictionaries category: `#category' 'ProtoObject
> >> >> variableByteSubclass: `#className instanceVariableNames:
> >> >> `#instanceVariableNames classVariableNames: `#classVariableNames
> >> >> poolDictionaries: `#poolDictionaries category: `#category. `className
> >> >> superclass: `@superclass' '`@superclass variableByteSubclass:
> >> >> `#className uses: `@traitComposition instanceVariableNames:
> >> >> `#instanceVariableNames classVariableNames: `#classVariableNames
> >> >> poolDictionaries: `#poolDictionaries category: `#category'
> >> >> 'ProtoObject variableByteSubclass: `#className uses:
> >> >> `@traitComposition instanceVariableNames: `#instanceVariableNames
> >> >> classVariableNames: `#classVariableNames poolDictionaries:
> >> >> `#poolDictionaries category: `#category. `className superclass:
> >> >> `@superclass' '`@superclass variableSubclass: `#className
> >> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> >> `#category' 'ProtoObject variableSubclass: `#className
> >> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> >> `#category. `className superclass: `@superclass' '`@superclass
> >> >> variableSubclass: `#className uses: `@traitComposition
> >> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> >> `#category' 'ProtoObject variableSubclass: `#className uses:
> >> >> `@traitComposition instanceVariableNames: `#instanceVariableNames
> >> >> classVariableNames: `#classVariableNames poolDictionaries:
> >> >> `#poolDictionaries category: `#category. `className superclass:
> >> >> `@superclass' '`@superclass variableWordSubclass: `#className
> >> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> >> `#category' 'ProtoObject variableWordSubclass: `#className
> >> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> >> `#category. `className superclass: `@superclass' '`@superclass
> >> >> variableWordSubclass: `#className uses: `@traitComposition
> >> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> >> `#category' 'ProtoObject variableWordSubclass: `#className uses:
> >> >> `@traitComposition instanceVariableNames: `#instanceVariableNames
> >> >> classVariableNames: `#classVariableNames poolDictionaries:
> >> >> `#poolDictionaries category: `#category. `className superclass:
> >> >> `@superclass' '`@superclass weakSubclass: `#className
> >> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> >> `#category' 'ProtoObject weakSubclass: `#className
> >> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> >> `#category. `className superclass: `@superclass' '`@superclass
> >> >> weakSubclass: `#className uses: `@traitComposition
> >> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> >> `#category' 'ProtoObject weakSubclass: `#className uses:
> >> >> `@traitComposition instanceVariableNames: `#instanceVariableNames
> >> >> classVariableNames: `#classVariableNames poolDictionaries:
> >> >> `#poolDictionaries category: `#category. `className superclass:
> >> >> `@superclass' '`traitName classTrait uses: `@traitComposition' 'Trait
> >> >> named: `#traitName uses: `@traitComposition category: `#category')
> >> >>
> >> >> On 2 October 2010 13:01, Lukas Renggli <renggli(a)gmail.com> wrote:
> >> >> >> Lukas, now I have another problem. I am not sure if it is OB
> latest
> >> >> >> code
> >> >> >> related, but I think so.
> >> >> >
> >> >> > No, that was always the case.
> >> >> >
> >> >> >> If you take any class, suppose RBSemanticTest and go to its
> >> >> >> definition.
> >> >> >> Change it so that it extends from ProtoObject instead of TestCase.
> >> >> >> When
> >> >> >> you
> >> >> >> accept the code (save it), the browser goes directly to Browse
> >> >> >> ProtoObject,
> >> >> >> actually to :
> >> >> >>
> >> >> >> ProtoObject subclass: #ProtoObject
> >> >> >> instanceVariableNames: ''
> >> >> >> classVariableNames: ''
> >> >> >> poolDictionaries: ''
> >> >> >> category: 'Kernel-Objects'.
> >> >> >> ProtoObject superclass: nil
> >> >> >
> >> >> > Creating a subclass like this was never supported by the
> refactoring
> >> >> > engine.
> >> >> >
> >> >> > You have to write it like:
> >> >> >
> >> >> > nil subclass: #ProtoObject
> >> >> > instanceVariableNames: ''
> >> >> > classVariableNames: ''
> >> >> > poolDictionaries: ''
> >> >> > category: 'Kernel-Objects'
> >> >> >
> >> >> > Lukas
> >> >> >
> >> >> > --
> >> >> > Lukas Renggli
> >> >> > www.lukas-renggli.ch
> >> >> >
> >> >>
> >> >>
> >> >>
> >> >> --
> >> >> Lukas Renggli
> >> >> www.lukas-renggli.ch
> >> >>
> >> >> _______________________________________________
> >> >> Pharo-project mailing list
> >> >> Pharo-project(a)lists.gforge.inria.fr
> >> >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> >> >
> >> >
> >> > _______________________________________________
> >> > Pharo-project mailing list
> >> > Pharo-project(a)lists.gforge.inria.fr
> >> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> >> >
> >>
> >>
> >>
> >> --
> >> Lukas Renggli
> >> www.lukas-renggli.ch
> >>
> >> _______________________________________________
> >> Pharo-project mailing list
> >> Pharo-project(a)lists.gforge.inria.fr
> >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> >
> >
> > _______________________________________________
> > Pharo-project mailing list
> > Pharo-project(a)lists.gforge.inria.fr
> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> >
>
>
>
> --
> Lukas Renggli
> www.lukas-renggli.ch
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Oct. 3, 2010
[Pharo-project] Less plugins, more Smalltalk code! (was: Re: Pharo 1.1.1 OneClickCogVm)
by Noury Bouraqadi
On 30 sept. 2010, at 20:22, Germán Arduino wrote:
> 2010/9/30 Sven Van Caekenberghe <sven(a)beta9.be>:
>>
>> Less plugins, more Smalltalk code!
>> I want to look at everything and never see C.
>> Plugins/primitives should only be there when they are absolutely necessary (to access a platform feature or for crucial performance).
>>
>> Sven
>>
>
> +1
>
Yes. This is the approach we advocate in the Ocean project.
We would like to see it generalized beyond the network library.
Noury
Oct. 3, 2010
Re: [Pharo-project] XMLRPC project on Squeaksource is MIT
by Noury Bouraqadi
Thanks Germán, Markus and Christian.
On 1 oct. 2010, at 15:43, Germán Arduino wrote:
> Hi Guys:
>
> Attached the agreement of the authors of current XMLRPC code on
> Squeaksource to make it MIT.
>
> Thanks Markus and Christian.
>
>
>
>
> ---------- From Markus ----------
> From: Markus Fritsche <fritsche.markus(a)googlemail.com>
> Date: 2010/10/1
> Subject: Re: About the XMLRPC project on Squeaksource
> To: Germán Arduino <gsa(a)arsol.net>
>
>
> Hello Germán,
> as far as I am concerned, I am happy to release my code under MIT license.
>
> I hope it will be well adapted to recent developments happening around
> Smalltalk & Pharo!
>
> Kind regards,
> Markus (aka maf)
>
> 2010/9/22 Germán Arduino <gsa(a)arsol.net>
>>
>> Hi Markus, Christian, César:
>>
>> I asked previously about the xmlrpc code on Squeaksource of each one
>> of you and all agreed on release it as public domain.
>>
>> I need now (sorry by the bothering) your agreement that all your code
>> on this repo XMLRPC is MIT licensed. Then I will send your responses
>> to the pharo list to the system keeps track on that.
>>
>> Thanks Again!
>>
>> Germán.
>
>
>
> ---------- From Christian ----------
> 2010/9/22 Christian Langreiter <chris(a)langreiter.com>:
>> Hello Germán,
>>
>>> I need now (sorry by the bothering) your agreement that all your code
>>> on this repo XMLRPC is MIT licensed. Then I will send your responses
>>> to the pharo list to the system keeps track on that.
>>
>> no objections from my side.
>>
>> Best regards,
>> -- Chris
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Oct. 3, 2010
Re: [Pharo-project] In Latest OB I cannot add a class variable
by Lukas Renggli
This works for me.
'superclassName' is the superclass name, but contains the definition
which should be in the variable 'definition'.
Looks like you need to recompile your image, the instance variable
indexes seem to be messed up.
Another bug I noticed in the ClassBuilder is that existing instances
cannot be migrated if the old or the new class are subclasses of nil
or ProtoObject, because #instVarAt: is then missing.
Lukas
2010/10/2 Mariano Martinez Peck <marianopeck(a)gmail.com>:
>
>
> On Sat, Oct 2, 2010 at 8:02 PM, Lukas Renggli <renggli(a)gmail.com> wrote:
>>
>> It works for me, are you sure to use the latest code?
>
> yep.
>
> I tried to evaluate:
>
> ProtoObject subclass: #RBSemanticTest
> Â Â Â instanceVariableNames: 'instVar'
> Â Â Â classVariableNames: 'ClassVar'
> Â Â Â poolDictionaries: ''
> Â Â Â category: 'AST-Tests-Semantic'
>
>
> and got an error in
>
> Â AddClassChange >> definitionClass
> Â Â Â ^ Smalltalk globals at: (self superclassName ifNil: [ ^ ProtoObject ])
>
> since self superclassName answers:
>
> Â a Text for 'ProtoObject subclass: #RBSemanticTest
> Â Â Â instanceVariableNames: ''instVar''
> Â Â Â classVariableNames: ''ClassVar''
> Â Â Â poolDictionaries: ''''
> Â Â Â category: ''AST-Tests-Semantic'''
>
>
> weird....
>
> thanks
>
> mariano
>
>>
>> 2010/10/2 Mariano Martinez Peck <marianopeck(a)gmail.com>:
>> >
>> >
>> > On Sat, Oct 2, 2010 at 1:54 PM, Lukas Renggli <renggli(a)gmail.com> wrote:
>> >>
>> >> Ok, I fixed that. The refactoring engine now supports all the 24 (!!!)
>> >> distinct patterns of defining a subclass/trait in Pharo (see below).
>> >>
>> >> Â Name: Refactoring-Changes-lr.15
>> >> Â Author: lr
>> >> Â Time: 2 October 2010, 1:50:13 pm
>> >> Â UUID: 82093dfb-e7f2-4ff7-afe7-ac7196632196
>> >> Â Ancestors: Refactoring-Changes-lr.14
>> >>
>> >> Â - also support subclasses of nil
>> >>
>> >
>> > Hi Lukas. I tried with nil and it works. However, putting ProtoObject,
>> > it
>> > didn't, since
>> >
>> > definitionClass
>> > Â Â Â ^ Smalltalk globals at: (self superclassName ifNil: [ ^ ProtoObject
>> > ])
>> >
>> > self superclassName  answers
>> >
>> > Â a Text for 'ProtoObject variableSubclass: #MessageCatchingProxy
>> > Â Â Â instanceVariableNames: ''''
>> > Â Â Â classVariableNames: ''''
>> > Â Â Â poolDictionaries: ''''
>> > Â Â Â category: ''Proxies'''
>> >
>> > Cheers
>> >
>> > Mariano
>> >
>> >
>> >>
>> >> The undo operation of the respective actions should work as well. The
>> >> exception here is an asymmetry (bug?) in the Pharo class definition
>> >> strings that causes classes without traits to be printed without the
>> >> #uses: claus. Evaluating this definition string does not remove the
>> >> trait composition if the class happens to have one though.
>> >>
>> >> Lukas
>> >>
>> >> #('`className class instanceVariableNames: `#instanceVariableNames'
>> >> '`className class uses: `@traitComposition instanceVariableNames:
>> >> `#instanceVariableNames' '`@superclass subclass: `#className
>> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> >> `#category' 'ProtoObject subclass: `#className instanceVariableNames:
>> >> `#instanceVariableNames classVariableNames: `#classVariableNames
>> >> poolDictionaries: `#poolDictionaries category: `#category. `className
>> >> superclass: `@superclass' '`@superclass subclass: `#className uses:
>> >> `@traitComposition instanceVariableNames: `#instanceVariableNames
>> >> classVariableNames: `#classVariableNames poolDictionaries:
>> >> `#poolDictionaries category: `#category' 'ProtoObject subclass:
>> >> `#className uses: `@traitComposition instanceVariableNames:
>> >> `#instanceVariableNames classVariableNames: `#classVariableNames
>> >> poolDictionaries: `#poolDictionaries category: `#category. `className
>> >> superclass: `@superclass' '`@superclass variableByteSubclass:
>> >> `#className instanceVariableNames: `#instanceVariableNames
>> >> classVariableNames: `#classVariableNames poolDictionaries:
>> >> `#poolDictionaries category: `#category' 'ProtoObject
>> >> variableByteSubclass: `#className instanceVariableNames:
>> >> `#instanceVariableNames classVariableNames: `#classVariableNames
>> >> poolDictionaries: `#poolDictionaries category: `#category. `className
>> >> superclass: `@superclass' '`@superclass variableByteSubclass:
>> >> `#className uses: `@traitComposition instanceVariableNames:
>> >> `#instanceVariableNames classVariableNames: `#classVariableNames
>> >> poolDictionaries: `#poolDictionaries category: `#category'
>> >> 'ProtoObject variableByteSubclass: `#className uses:
>> >> `@traitComposition instanceVariableNames: `#instanceVariableNames
>> >> classVariableNames: `#classVariableNames poolDictionaries:
>> >> `#poolDictionaries category: `#category. `className superclass:
>> >> `@superclass' '`@superclass variableSubclass: `#className
>> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> >> `#category' 'ProtoObject variableSubclass: `#className
>> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> >> `#category. `className superclass: `@superclass' '`@superclass
>> >> variableSubclass: `#className uses: `@traitComposition
>> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> >> `#category' 'ProtoObject variableSubclass: `#className uses:
>> >> `@traitComposition instanceVariableNames: `#instanceVariableNames
>> >> classVariableNames: `#classVariableNames poolDictionaries:
>> >> `#poolDictionaries category: `#category. `className superclass:
>> >> `@superclass' '`@superclass variableWordSubclass: `#className
>> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> >> `#category' 'ProtoObject variableWordSubclass: `#className
>> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> >> `#category. `className superclass: `@superclass' '`@superclass
>> >> variableWordSubclass: `#className uses: `@traitComposition
>> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> >> `#category' 'ProtoObject variableWordSubclass: `#className uses:
>> >> `@traitComposition instanceVariableNames: `#instanceVariableNames
>> >> classVariableNames: `#classVariableNames poolDictionaries:
>> >> `#poolDictionaries category: `#category. `className superclass:
>> >> `@superclass' '`@superclass weakSubclass: `#className
>> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> >> `#category' 'ProtoObject weakSubclass: `#className
>> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> >> `#category. `className superclass: `@superclass' '`@superclass
>> >> weakSubclass: `#className uses: `@traitComposition
>> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> >> `#category' 'ProtoObject weakSubclass: `#className uses:
>> >> `@traitComposition instanceVariableNames: `#instanceVariableNames
>> >> classVariableNames: `#classVariableNames poolDictionaries:
>> >> `#poolDictionaries category: `#category. `className superclass:
>> >> `@superclass' '`traitName classTrait uses: `@traitComposition' 'Trait
>> >> named: `#traitName uses: `@traitComposition category: `#category')
>> >>
>> >> On 2 October 2010 13:01, Lukas Renggli <renggli(a)gmail.com> wrote:
>> >> >> Lukas, now I have another problem. I am not sure if it is OB latest
>> >> >> code
>> >> >> related, but I think so.
>> >> >
>> >> > No, that was always the case.
>> >> >
>> >> >> If you take any class, suppose RBSemanticTest and go to its
>> >> >> definition.
>> >> >> Change it so that it extends from ProtoObject instead of TestCase.
>> >> >> When
>> >> >> you
>> >> >> accept the code (save it), the browser goes directly to Browse
>> >> >> ProtoObject,
>> >> >> actually to :
>> >> >>
>> >> >> ProtoObject subclass: #ProtoObject
>> >> >> Â Â Â instanceVariableNames: ''
>> >> >> Â Â Â classVariableNames: ''
>> >> >> Â Â Â poolDictionaries: ''
>> >> >> Â Â Â category: 'Kernel-Objects'.
>> >> >> ProtoObject superclass: nil
>> >> >
>> >> > Creating a subclass like this was never supported by the refactoring
>> >> > engine.
>> >> >
>> >> > You have to write it like:
>> >> >
>> >> > nil subclass: #ProtoObject
>> >> > Â Â Â Â instanceVariableNames: ''
>> >> > Â Â Â Â classVariableNames: ''
>> >> > Â Â Â Â poolDictionaries: ''
>> >> > Â Â Â Â category: 'Kernel-Objects'
>> >> >
>> >> > Lukas
>> >> >
>> >> > --
>> >> > Lukas Renggli
>> >> > www.lukas-renggli.ch
>> >> >
>> >>
>> >>
>> >>
>> >> --
>> >> Lukas Renggli
>> >> www.lukas-renggli.ch
>> >>
>> >> _______________________________________________
>> >> Pharo-project mailing list
>> >> Pharo-project(a)lists.gforge.inria.fr
>> >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>> >
>> >
>> > _______________________________________________
>> > Pharo-project mailing list
>> > Pharo-project(a)lists.gforge.inria.fr
>> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>> >
>>
>>
>>
>> --
>> Lukas Renggli
>> www.lukas-renggli.ch
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
--
Lukas Renggli
www.lukas-renggli.ch
Oct. 3, 2010
Re: [Pharo-project] Statistic tools in Pharo
by Schwab,Wilhelm K
I recently became disillusioned with gnuplot and overall suggest prodding and helping the PLplot developers to improve their product. The breaking point for me was plotting ~500k sample time series and watching Pharo+gnuplot struggle with marshaling data into and out of text or worse, fighting with barely documented methods for moving binary data into gnuplot. Remember my questions about a Linux analog to Windows device contexts (one of the few things MS got right)? Ground zero for this.
My PLplot interface will likely appear "soon." It needs to be cleaned up with 1.1.1 in mind, as does (much more so) code that I will make available for AccesIO USB A/D hardware.
For numerical calculations, I agree that well-worn code (which can be hard to find) is of great value. GSL is pretty good. One thing that irritates me no end is that they use their vectors and matrices just enough to be a major pain but not at all consistently. They also need to be scolded for making .so's (GSL and BLAS) that can't be loaded separately - they know about it - don't hold your breath. Callbacks are sorely needed on our end[*]. When I have something worthy of release, I'll let you know; no promises about Windows support, though I won't deliberatly sabotage it - I simply don't care (and it feels GOOD<g>).
R is both friend and foe. In general, I prepare data using Smalltalk (so I widen or lengthen data frames in Pharo rather than trying to figure out R syntax for such things). Rejecting garbage, to a point, happens in R. I generally prefer to let R arrive at statistical measures (p-values, correlation coeffs, etc.) that are going to leave the nest. My late Friday PM submission (now we wait...) contains numbers generated with various libraries, massaged in R, graphs from R and PLplot and nothing from gnuplot (which I was using just a couple of months ago). One scary thing: PLplot is only now growing a formalized way to create legends, which gnuplot does very well. But if you deal with large numbers of points, gnuplot can become slow and pedantic. The usual excuses such as "if you have that much data, you can't see them anyway..." don't really cut it. There is something to be said for plotting everything and letting what Tufte would call ink density tell part of the story, especially with time series where peaks/outliers are interesting (downsampling will generally distort the message).
[*] Sig, yes, I know... :) With the release of 1.1.1 and completion (for now) of my grant proposal, I need to start looking at undoing any damage that I have caused in the name of avoiding underscores. Some things are arguably nicer for it, but most suffered mightily. I am thinking exclusively of exernal interfacing; some of the stuff was named in a way that expects underscore to be present, and removing them makes a hell of a mess. Time to fix that (thanks to all how have made it possible!!!), get daily operations on 1.1.1 and then to begin playing with NativeBoost. I see there are pre-built Cog vms. Is there a way to either build Cog+NB or to transfer the NB plugin built elsewhere to Cog? Sounds like a good problem to have.
Bill
-----Original Message-----
From: pharo-project-bounces(a)lists.gforge.inria.fr [mailto:pharo-project-bounces@lists.gforge.inria.fr] On Behalf Of csrabak(a)bol.com.br
Sent: Saturday, October 02, 2010 7:29 PM
To: Pharo-project(a)lists.gforge.inria.fr
Subject: Re: [Pharo-project] Statistic tools in Pharo
I've been lurking on this thread because I also need a lot of statistics in my work, but as already wrote in another thread on far but related subject: I think we are better of if we get the FFI or Alien or its successor to work in such a way that makes it easy to interface with existing, thoroughly tested and continuously developed functionality for these specific areas.
I presently work a lot with R http://www.r-project.org/ and I remember an embryonic interface to it was done in Dolphin Smalltalk (which is Windows only), besides seem a former associate testing it a little, I went not any further on exploring it.
BTW, going to wishful mode I _think_ having connection to packages of this calibre (another one I'll like to have easy access is GNUPlot) would be even better if we could get the image inside a morphic object which would work as a graphics device for these programs. . .
my .0199999. . .
[]s
Em 02/10/2010 11:24, Alexandre Bergel < alexandre(a)bergel.eu > escreveu:
Ok. I am personally more interested in regression models
Alexandre
On 2 Oct 2010, at 07:15, Cédrick Béler wrote:
>
> Le 29 sept. 2010 à 15:39, Alexandre Bergel a écrit :
>
>>>> Thanks Jimmie.
>>>> About half of the tests are red. This library is about linear Algebra. Not really about statistics.
>>>> But thanks for the link!
>>>>
>>>> Alexandre
>>>
>>> If it's the same as what you can find in VW, in addition to linear algebra, it includes numerical methods for quite a few probability distributions as well though.
>>
>> Ok, thanks for the input!
>
>
> FWIW, I plan to implement Bayesian Network in Smalltalk... Nevertheless, it will be more a research project...
>
> Until now, I haven't found any project nor code in that direction... except maybe SBN (Simple Bayesian Network) in ruby...
>
> Cheers
>
>
>
>
>
>>
>> Alexandre
>> --
>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>> Alexandre Bergel http://www.bergel.eu
>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
_______________________________________________
Pharo-project mailing list
Pharo-project(a)lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________
Pharo-project mailing list
Pharo-project(a)lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Oct. 3, 2010
Re: [Pharo-project] Another fixes to finalization (was Re: [update 1.2] #12161 - #12172)
by Igor Stasenko
On 3 October 2010 03:13, Henrik Sperre Johansen
<henrik.s.johansen(a)veloxit.no> wrote:
> Â On 02.10.2010 19:01, Igor Stasenko wrote:
>>
>> On 2 October 2010 19:47, Stéphane Ducasse<stephane.ducasse(a)inria.fr>
>> Â wrote:
>>>
>>> Hi igor
>>>
>>> do you understand why the previous definition was
>>>
>>> cachedDefinitions
>>> Â Â Â Â Definitions ifNil: [Definitions := WeakIdentityKeyDictionary new.
>>> Â WeakArray addWeakDependent: Definitions].
>>> Â Â Â Â ^ Definitions
>>>
>> i don't. :)
>>
>> It just a way to free memory as fast as possible.
>> But its really not worth spending so much CPU in order to save few
>> bytes of memory.
>
> Without registering the dict for finalization, the values won't ever be
> removed with the current implementation.
They are removed. After each package load/unload operation.
I don't see a reason to do this more often.
> Which can be somewhat hampering to performance once you have lots of
> nil-keyed elements all stashed from index 1 and onwards after a rehash.
>
In Pharo, weak dict knows how to reuse expired associations:
at: key put: anObject
"Set the value at key to be anObject. If key is not found, create a new
entry for key and set is value to anObject. Answer anObject."
| index element |
key isNil ifTrue:[^anObject].
index := self scanForEmpty: key.
"There should always be room."
index = 0 ifTrue: [ self error: 'No space left in dictionary' ].
element := array at: index.
element == nil
ifTrue: [self atNewIndex: index put: (WeakKeyAssociation key: key
value: anObject)]
ifFalse: [
element expired ifTrue: [ tally := tally + 1].
element key: key.
element value: anObject.
self fullCheck.
].
^ anObject
> Cheers,
> Henry
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
--
Best regards,
Igor Stasenko AKA sig.
Oct. 3, 2010
Re: [Pharo-project] Statistic tools in Pharo
by csrabak@bol.com.br
I've been lurking on this thread because I also need a lot of statistics in my work, but as already wrote in another thread on far but related subject: I think we are better of if we get the FFI or Alien or its successor to work in such a way that makes it easy to interface with existing, thoroughly tested and continuously developed functionality for these specific areas.
I presently work a lot with R http://www.r-project.org/ and I remember an embryonic interface to it was done in Dolphin Smalltalk (which is Windows only), besides seem a former associate testing it a little, I went not any further on exploring it.
BTW, going to wishful mode I _think_ having connection to packages of this calibre (another one I'll like to have easy access is GNUPlot) would be even better if we could get the image inside a morphic object which would work as a graphics device for these programs. . .
my .0199999. . .
[]s
Em 02/10/2010 11:24, Alexandre Bergel < alexandre(a)bergel.eu > escreveu:
Ok. I am personally more interested in regression models
Alexandre
On 2 Oct 2010, at 07:15, Cédrick Béler wrote:
>
> Le 29 sept. 2010 à 15:39, Alexandre Bergel a écrit :
>
>>>> Thanks Jimmie.
>>>> About half of the tests are red. This library is about linear Algebra. Not really about statistics.
>>>> But thanks for the link!
>>>>
>>>> Alexandre
>>>
>>> If it's the same as what you can find in VW, in addition to linear algebra, it includes numerical methods for quite a few probability distributions as well though.
>>
>> Ok, thanks for the input!
>
>
> FWIW, I plan to implement Bayesian Network in Smalltalk... Nevertheless, it will be more a research project...
>
> Until now, I haven't found any project nor code in that direction... except maybe SBN (Simple Bayesian Network) in ruby...
>
> Cheers
>
>
>
>
>
>>
>> Alexandre
>> --
>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>> Alexandre Bergel http://www.bergel.eu
>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
_______________________________________________
Pharo-project mailing list
Pharo-project(a)lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Oct. 3, 2010
Re: [Pharo-project] Another fixes to finalization (was Re: [update 1.2] #12161 - #12172)
by Henrik Sperre Johansen
On 02.10.2010 19:01, Igor Stasenko wrote:
> On 2 October 2010 19:47, Stéphane Ducasse<stephane.ducasse(a)inria.fr> wrote:
>> Hi igor
>>
>> do you understand why the previous definition was
>>
>> cachedDefinitions
>> Definitions ifNil: [Definitions := WeakIdentityKeyDictionary new. WeakArray addWeakDependent: Definitions].
>> ^ Definitions
>>
> i don't. :)
>
> It just a way to free memory as fast as possible.
> But its really not worth spending so much CPU in order to save few
> bytes of memory.
Without registering the dict for finalization, the values won't ever be
removed with the current implementation.
Which can be somewhat hampering to performance once you have lots of
nil-keyed elements all stashed from index 1 and onwards after a rehash.
Cheers,
Henry
Oct. 3, 2010
Re: [Pharo-project] In Latest OB I cannot add a class variable
by Mariano Martinez Peck
On Sat, Oct 2, 2010 at 8:02 PM, Lukas Renggli <renggli(a)gmail.com> wrote:
> It works for me, are you sure to use the latest code?
>
yep.
I tried to evaluate:
ProtoObject subclass: #RBSemanticTest
instanceVariableNames: 'instVar'
classVariableNames: 'ClassVar'
poolDictionaries: ''
category: 'AST-Tests-Semantic'
and got an error in
AddClassChange >> definitionClass
^ Smalltalk globals at: (self superclassName ifNil: [ ^ ProtoObject ])
since self superclassName answers:
a Text for 'ProtoObject subclass: #RBSemanticTest
instanceVariableNames: ''instVar''
classVariableNames: ''ClassVar''
poolDictionaries: ''''
category: ''AST-Tests-Semantic'''
weird....
thanks
mariano
> 2010/10/2 Mariano Martinez Peck <marianopeck(a)gmail.com>:
> >
> >
> > On Sat, Oct 2, 2010 at 1:54 PM, Lukas Renggli <renggli(a)gmail.com> wrote:
> >>
> >> Ok, I fixed that. The refactoring engine now supports all the 24 (!!!)
> >> distinct patterns of defining a subclass/trait in Pharo (see below).
> >>
> >> Name: Refactoring-Changes-lr.15
> >> Author: lr
> >> Time: 2 October 2010, 1:50:13 pm
> >> UUID: 82093dfb-e7f2-4ff7-afe7-ac7196632196
> >> Ancestors: Refactoring-Changes-lr.14
> >>
> >> - also support subclasses of nil
> >>
> >
> > Hi Lukas. I tried with nil and it works. However, putting ProtoObject, it
> > didn't, since
> >
> > definitionClass
> > ^ Smalltalk globals at: (self superclassName ifNil: [ ^ ProtoObject
> ])
> >
> > self superclassName answers
> >
> > a Text for 'ProtoObject variableSubclass: #MessageCatchingProxy
> > instanceVariableNames: ''''
> > classVariableNames: ''''
> > poolDictionaries: ''''
> > category: ''Proxies'''
> >
> > Cheers
> >
> > Mariano
> >
> >
> >>
> >> The undo operation of the respective actions should work as well. The
> >> exception here is an asymmetry (bug?) in the Pharo class definition
> >> strings that causes classes without traits to be printed without the
> >> #uses: claus. Evaluating this definition string does not remove the
> >> trait composition if the class happens to have one though.
> >>
> >> Lukas
> >>
> >> #('`className class instanceVariableNames: `#instanceVariableNames'
> >> '`className class uses: `@traitComposition instanceVariableNames:
> >> `#instanceVariableNames' '`@superclass subclass: `#className
> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> `#category' 'ProtoObject subclass: `#className instanceVariableNames:
> >> `#instanceVariableNames classVariableNames: `#classVariableNames
> >> poolDictionaries: `#poolDictionaries category: `#category. `className
> >> superclass: `@superclass' '`@superclass subclass: `#className uses:
> >> `@traitComposition instanceVariableNames: `#instanceVariableNames
> >> classVariableNames: `#classVariableNames poolDictionaries:
> >> `#poolDictionaries category: `#category' 'ProtoObject subclass:
> >> `#className uses: `@traitComposition instanceVariableNames:
> >> `#instanceVariableNames classVariableNames: `#classVariableNames
> >> poolDictionaries: `#poolDictionaries category: `#category. `className
> >> superclass: `@superclass' '`@superclass variableByteSubclass:
> >> `#className instanceVariableNames: `#instanceVariableNames
> >> classVariableNames: `#classVariableNames poolDictionaries:
> >> `#poolDictionaries category: `#category' 'ProtoObject
> >> variableByteSubclass: `#className instanceVariableNames:
> >> `#instanceVariableNames classVariableNames: `#classVariableNames
> >> poolDictionaries: `#poolDictionaries category: `#category. `className
> >> superclass: `@superclass' '`@superclass variableByteSubclass:
> >> `#className uses: `@traitComposition instanceVariableNames:
> >> `#instanceVariableNames classVariableNames: `#classVariableNames
> >> poolDictionaries: `#poolDictionaries category: `#category'
> >> 'ProtoObject variableByteSubclass: `#className uses:
> >> `@traitComposition instanceVariableNames: `#instanceVariableNames
> >> classVariableNames: `#classVariableNames poolDictionaries:
> >> `#poolDictionaries category: `#category. `className superclass:
> >> `@superclass' '`@superclass variableSubclass: `#className
> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> `#category' 'ProtoObject variableSubclass: `#className
> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> `#category. `className superclass: `@superclass' '`@superclass
> >> variableSubclass: `#className uses: `@traitComposition
> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> `#category' 'ProtoObject variableSubclass: `#className uses:
> >> `@traitComposition instanceVariableNames: `#instanceVariableNames
> >> classVariableNames: `#classVariableNames poolDictionaries:
> >> `#poolDictionaries category: `#category. `className superclass:
> >> `@superclass' '`@superclass variableWordSubclass: `#className
> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> `#category' 'ProtoObject variableWordSubclass: `#className
> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> `#category. `className superclass: `@superclass' '`@superclass
> >> variableWordSubclass: `#className uses: `@traitComposition
> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> `#category' 'ProtoObject variableWordSubclass: `#className uses:
> >> `@traitComposition instanceVariableNames: `#instanceVariableNames
> >> classVariableNames: `#classVariableNames poolDictionaries:
> >> `#poolDictionaries category: `#category. `className superclass:
> >> `@superclass' '`@superclass weakSubclass: `#className
> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> `#category' 'ProtoObject weakSubclass: `#className
> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> `#category. `className superclass: `@superclass' '`@superclass
> >> weakSubclass: `#className uses: `@traitComposition
> >> instanceVariableNames: `#instanceVariableNames classVariableNames:
> >> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> >> `#category' 'ProtoObject weakSubclass: `#className uses:
> >> `@traitComposition instanceVariableNames: `#instanceVariableNames
> >> classVariableNames: `#classVariableNames poolDictionaries:
> >> `#poolDictionaries category: `#category. `className superclass:
> >> `@superclass' '`traitName classTrait uses: `@traitComposition' 'Trait
> >> named: `#traitName uses: `@traitComposition category: `#category')
> >>
> >> On 2 October 2010 13:01, Lukas Renggli <renggli(a)gmail.com> wrote:
> >> >> Lukas, now I have another problem. I am not sure if it is OB latest
> >> >> code
> >> >> related, but I think so.
> >> >
> >> > No, that was always the case.
> >> >
> >> >> If you take any class, suppose RBSemanticTest and go to its
> definition.
> >> >> Change it so that it extends from ProtoObject instead of TestCase.
> When
> >> >> you
> >> >> accept the code (save it), the browser goes directly to Browse
> >> >> ProtoObject,
> >> >> actually to :
> >> >>
> >> >> ProtoObject subclass: #ProtoObject
> >> >> instanceVariableNames: ''
> >> >> classVariableNames: ''
> >> >> poolDictionaries: ''
> >> >> category: 'Kernel-Objects'.
> >> >> ProtoObject superclass: nil
> >> >
> >> > Creating a subclass like this was never supported by the refactoring
> >> > engine.
> >> >
> >> > You have to write it like:
> >> >
> >> > nil subclass: #ProtoObject
> >> > instanceVariableNames: ''
> >> > classVariableNames: ''
> >> > poolDictionaries: ''
> >> > category: 'Kernel-Objects'
> >> >
> >> > Lukas
> >> >
> >> > --
> >> > Lukas Renggli
> >> > www.lukas-renggli.ch
> >> >
> >>
> >>
> >>
> >> --
> >> Lukas Renggli
> >> www.lukas-renggli.ch
> >>
> >> _______________________________________________
> >> Pharo-project mailing list
> >> Pharo-project(a)lists.gforge.inria.fr
> >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> >
> >
> > _______________________________________________
> > Pharo-project mailing list
> > Pharo-project(a)lists.gforge.inria.fr
> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> >
>
>
>
> --
> Lukas Renggli
> www.lukas-renggli.ch
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Oct. 2, 2010
Re: [Pharo-project] Statistic tools in Pharo
by Alberto Bacchelli
>FWIW, I plan to implement Bayesian Network in Smalltalk... Nevertheless,
>it will be more a research project...
That would be awesome. Please keep us updated on it.
Isn't there anything in Java that could help your implementation?
Ciao,
Alberto
Oct. 2, 2010
Re: [Pharo-project] In Latest OB I cannot add a class variable
by Lukas Renggli
It works for me, are you sure to use the latest code?
2010/10/2 Mariano Martinez Peck <marianopeck(a)gmail.com>:
>
>
> On Sat, Oct 2, 2010 at 1:54 PM, Lukas Renggli <renggli(a)gmail.com> wrote:
>>
>> Ok, I fixed that. The refactoring engine now supports all the 24 (!!!)
>> distinct patterns of defining a subclass/trait in Pharo (see below).
>>
>> Â Name: Refactoring-Changes-lr.15
>> Â Author: lr
>> Â Time: 2 October 2010, 1:50:13 pm
>> Â UUID: 82093dfb-e7f2-4ff7-afe7-ac7196632196
>> Â Ancestors: Refactoring-Changes-lr.14
>>
>> Â - also support subclasses of nil
>>
>
> Hi Lukas. I tried with nil and it works. However, putting ProtoObject, it
> didn't, since
>
> definitionClass
> Â Â Â ^ Smalltalk globals at: (self superclassName ifNil: [ ^ ProtoObject ])
>
> self superclassName  answers
>
> Â a Text for 'ProtoObject variableSubclass: #MessageCatchingProxy
> Â Â Â instanceVariableNames: ''''
> Â Â Â classVariableNames: ''''
> Â Â Â poolDictionaries: ''''
> Â Â Â category: ''Proxies'''
>
> Cheers
>
> Mariano
>
>
>>
>> The undo operation of the respective actions should work as well. The
>> exception here is an asymmetry (bug?) in the Pharo class definition
>> strings that causes classes without traits to be printed without the
>> #uses: claus. Evaluating this definition string does not remove the
>> trait composition if the class happens to have one though.
>>
>> Lukas
>>
>> #('`className class instanceVariableNames: `#instanceVariableNames'
>> '`className class uses: `@traitComposition instanceVariableNames:
>> `#instanceVariableNames' '`@superclass subclass: `#className
>> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> `#category' 'ProtoObject subclass: `#className instanceVariableNames:
>> `#instanceVariableNames classVariableNames: `#classVariableNames
>> poolDictionaries: `#poolDictionaries category: `#category. `className
>> superclass: `@superclass' '`@superclass subclass: `#className uses:
>> `@traitComposition instanceVariableNames: `#instanceVariableNames
>> classVariableNames: `#classVariableNames poolDictionaries:
>> `#poolDictionaries category: `#category' 'ProtoObject subclass:
>> `#className uses: `@traitComposition instanceVariableNames:
>> `#instanceVariableNames classVariableNames: `#classVariableNames
>> poolDictionaries: `#poolDictionaries category: `#category. `className
>> superclass: `@superclass' '`@superclass variableByteSubclass:
>> `#className instanceVariableNames: `#instanceVariableNames
>> classVariableNames: `#classVariableNames poolDictionaries:
>> `#poolDictionaries category: `#category' 'ProtoObject
>> variableByteSubclass: `#className instanceVariableNames:
>> `#instanceVariableNames classVariableNames: `#classVariableNames
>> poolDictionaries: `#poolDictionaries category: `#category. `className
>> superclass: `@superclass' '`@superclass variableByteSubclass:
>> `#className uses: `@traitComposition instanceVariableNames:
>> `#instanceVariableNames classVariableNames: `#classVariableNames
>> poolDictionaries: `#poolDictionaries category: `#category'
>> 'ProtoObject variableByteSubclass: `#className uses:
>> `@traitComposition instanceVariableNames: `#instanceVariableNames
>> classVariableNames: `#classVariableNames poolDictionaries:
>> `#poolDictionaries category: `#category. `className superclass:
>> `@superclass' '`@superclass variableSubclass: `#className
>> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> `#category' 'ProtoObject variableSubclass: `#className
>> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> `#category. `className superclass: `@superclass' '`@superclass
>> variableSubclass: `#className uses: `@traitComposition
>> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> `#category' 'ProtoObject variableSubclass: `#className uses:
>> `@traitComposition instanceVariableNames: `#instanceVariableNames
>> classVariableNames: `#classVariableNames poolDictionaries:
>> `#poolDictionaries category: `#category. `className superclass:
>> `@superclass' '`@superclass variableWordSubclass: `#className
>> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> `#category' 'ProtoObject variableWordSubclass: `#className
>> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> `#category. `className superclass: `@superclass' '`@superclass
>> variableWordSubclass: `#className uses: `@traitComposition
>> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> `#category' 'ProtoObject variableWordSubclass: `#className uses:
>> `@traitComposition instanceVariableNames: `#instanceVariableNames
>> classVariableNames: `#classVariableNames poolDictionaries:
>> `#poolDictionaries category: `#category. `className superclass:
>> `@superclass' '`@superclass weakSubclass: `#className
>> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> `#category' 'ProtoObject weakSubclass: `#className
>> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> `#category. `className superclass: `@superclass' '`@superclass
>> weakSubclass: `#className uses: `@traitComposition
>> instanceVariableNames: `#instanceVariableNames classVariableNames:
>> `#classVariableNames poolDictionaries: `#poolDictionaries category:
>> `#category' 'ProtoObject weakSubclass: `#className uses:
>> `@traitComposition instanceVariableNames: `#instanceVariableNames
>> classVariableNames: `#classVariableNames poolDictionaries:
>> `#poolDictionaries category: `#category. `className superclass:
>> `@superclass' '`traitName classTrait uses: `@traitComposition' 'Trait
>> named: `#traitName uses: `@traitComposition category: `#category')
>>
>> On 2 October 2010 13:01, Lukas Renggli <renggli(a)gmail.com> wrote:
>> >> Lukas, now I have another problem. I am not sure if it is OB latest
>> >> code
>> >> related, but I think so.
>> >
>> > No, that was always the case.
>> >
>> >> If you take any class, suppose RBSemanticTest and go to its definition.
>> >> Change it so that it extends from ProtoObject instead of TestCase. When
>> >> you
>> >> accept the code (save it), the browser goes directly to Browse
>> >> ProtoObject,
>> >> actually to :
>> >>
>> >> ProtoObject subclass: #ProtoObject
>> >> Â Â Â instanceVariableNames: ''
>> >> Â Â Â classVariableNames: ''
>> >> Â Â Â poolDictionaries: ''
>> >> Â Â Â category: 'Kernel-Objects'.
>> >> ProtoObject superclass: nil
>> >
>> > Creating a subclass like this was never supported by the refactoring
>> > engine.
>> >
>> > You have to write it like:
>> >
>> > nil subclass: #ProtoObject
>> > Â Â Â Â instanceVariableNames: ''
>> > Â Â Â Â classVariableNames: ''
>> > Â Â Â Â poolDictionaries: ''
>> > Â Â Â Â category: 'Kernel-Objects'
>> >
>> > Lukas
>> >
>> > --
>> > Lukas Renggli
>> > www.lukas-renggli.ch
>> >
>>
>>
>>
>> --
>> Lukas Renggli
>> www.lukas-renggli.ch
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
--
Lukas Renggli
www.lukas-renggli.ch
Oct. 2, 2010
Re: [Pharo-project] CFP DYROS'10 - Deadline extension until October 8th 2010
by Serge Stinckwich
This CFP might interested some of you.
Regards,
On Sunday, October 3, 2010, Serge Stinckwich <serge.stinckwich(a)gmail.com> wrote:
> On Saturday, October 2, 2010, Serge Stinckwich
> <serge.stinckwich(a)gmail.com> wrote:
>> International Workshop on Dynamic languages for RObotic and
>> Sensors systems (DYROS)
>>
>> during the 2nd International Conference on Simulation, Modeling, and
>> Programming for Autonomous Robots (SIMPAR'10).
>>
>> http://www.doesnotunderstand.org/wikka.php?wakka=DYROS10
>>
>> Description :
>>
>> These days, dynamic languages (like JavaScript, Lua, Lisp, Python,
>> Smalltalk, etc, â¦) are getting more and more popular. Dynamic
>> programming language is a term used broadly in computer science to
>> describe a class of high-level programming languages that execute at
>> runtime many common behaviors that other languages might perform
>> during compilation, if at all: new classes may be created, new modules
>> may appear, software can be adapted very easily to new situation or
>> needs, etc. Most of the time, these languages are also dynamically
>> typed, which some static typing advocates consider a drawback.
>> However, according to advocates of dynamic programming languages, the
>> flexibility of dynamic languages offsets these drawbacks, and even
>> provides advantages so considerable as to make this an essential
>> feature, for example for interactive programming or scripting of
>> complex distributed systems. Dynamic languages features (like
>> reflection, dynamic reconfigurability, scripting facilities, software
>> adaptation, etc.) are almost essential to develop certain applications
>> related to robotics and sensors systems where hardware and software
>> are deeply mixed together. The main goal of this workshop is to be
>> able to discuss about the advantages of using dynamic languages (like
>> Lisp, Python, Urbi, Smalltalk, â¦) for controlling and simulating
>> robotic system (and also sensors system).
>>
>> Some examples of existing robotics products based on dynamic
>> programming languages includes: URBIScript an orchestration language
>> for robotics systems, ROS (Robot Operating Systems), heavily based on
>> Python  and Pyro (Python Robotics), a project designed to create
>> easy-to-use interface for accessing and controlling a wide variety of
>> real and simulated robots.
>>
>> Topics of interest included but is not limited to:
>> - domain-specific languages for robotics and sensors networks embedded
>> in dynamic languages,
>> - using dynamic languages facilities for simulation purpose,
>> - scripting complex sensors and robotics systems with dynamic languages,
>> - robotics libraries based on dynamic languages programming languages,
>> - embedded VM and object models suitable for dynamic languages needs.
>>
>> All submitted papers will be reviewed on the basis of technical
>> quality, relevance, significance, and clarity. At least two reviews
>> for each paper will be conducted.
>> We are looking for submission of full research papers and experiences
>> reports (up to 6 pages) and work in progress submissions (up to 4
>> pages).
>>
>> Important dates
>> Due date for full workshop papers submission: October 8th 2010
>> (deadline extension)
>> Final acceptance: October 15th 2010
>> Camera-ready paper due: November 1st 2010
>> Workshop date: 15 or 16 November 2010
>>
>> Chair
>> Serge Stinckwich, IRD, Vietnam
>>
>> Program Committee
>> - Jean-Christophe Baillie, GOSTAI, France
>> - Noury Bouraqadi, ENSM-DOUAI, France
>> - Luc Fabresse, ENSM-DOUAI, France
>> - Brian Gerkey, Willow Garage, USA
>> - Sylvain Joyeux, DFKI, Germany
>> - Joaquin Sitte, Queensland University of Technology, Australia
>> - Serge Stinckwich, IRD, Vietnam
>>
>> --
>> Serge Stinckwich
>> UMI UMMISCO 209 (IRD/UPMC), Hanoi, Vietnam
>> Every DSL ends up being Smalltalk
>> http://doesnotunderstand.org/
>>
>
> --
> Serge Stinckwich
> UMI UMMISCO 209 (IRD/UPMC), Hanoi, Vietnam
> Every DSL ends up being Smalltalk
> http://doesnotunderstand.org/
>
--
Serge Stinckwich
UMI UMMISCO 209 (IRD/UPMC), Hanoi, Vietnam
Every DSL ends up being Smalltalk
http://doesnotunderstand.org/
Oct. 2, 2010
Re: [Pharo-project] In Latest OB I cannot add a class variable
by Mariano Martinez Peck
On Sat, Oct 2, 2010 at 1:54 PM, Lukas Renggli <renggli(a)gmail.com> wrote:
> Ok, I fixed that. The refactoring engine now supports all the 24 (!!!)
> distinct patterns of defining a subclass/trait in Pharo (see below).
>
> Name: Refactoring-Changes-lr.15
> Author: lr
> Time: 2 October 2010, 1:50:13 pm
> UUID: 82093dfb-e7f2-4ff7-afe7-ac7196632196
> Ancestors: Refactoring-Changes-lr.14
>
> - also support subclasses of nil
>
>
Hi Lukas. I tried with nil and it works. However, putting ProtoObject, it
didn't, since
definitionClass
^ Smalltalk globals at: (self superclassName ifNil: [ ^ ProtoObject ])
self superclassName answers
a Text for 'ProtoObject variableSubclass: #MessageCatchingProxy
instanceVariableNames: ''''
classVariableNames: ''''
poolDictionaries: ''''
category: ''Proxies'''
Cheers
Mariano
> The undo operation of the respective actions should work as well. The
> exception here is an asymmetry (bug?) in the Pharo class definition
> strings that causes classes without traits to be printed without the
> #uses: claus. Evaluating this definition string does not remove the
> trait composition if the class happens to have one though.
>
> Lukas
>
> #('`className class instanceVariableNames: `#instanceVariableNames'
> '`className class uses: `@traitComposition instanceVariableNames:
> `#instanceVariableNames' '`@superclass subclass: `#className
> instanceVariableNames: `#instanceVariableNames classVariableNames:
> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> `#category' 'ProtoObject subclass: `#className instanceVariableNames:
> `#instanceVariableNames classVariableNames: `#classVariableNames
> poolDictionaries: `#poolDictionaries category: `#category. `className
> superclass: `@superclass' '`@superclass subclass: `#className uses:
> `@traitComposition instanceVariableNames: `#instanceVariableNames
> classVariableNames: `#classVariableNames poolDictionaries:
> `#poolDictionaries category: `#category' 'ProtoObject subclass:
> `#className uses: `@traitComposition instanceVariableNames:
> `#instanceVariableNames classVariableNames: `#classVariableNames
> poolDictionaries: `#poolDictionaries category: `#category. `className
> superclass: `@superclass' '`@superclass variableByteSubclass:
> `#className instanceVariableNames: `#instanceVariableNames
> classVariableNames: `#classVariableNames poolDictionaries:
> `#poolDictionaries category: `#category' 'ProtoObject
> variableByteSubclass: `#className instanceVariableNames:
> `#instanceVariableNames classVariableNames: `#classVariableNames
> poolDictionaries: `#poolDictionaries category: `#category. `className
> superclass: `@superclass' '`@superclass variableByteSubclass:
> `#className uses: `@traitComposition instanceVariableNames:
> `#instanceVariableNames classVariableNames: `#classVariableNames
> poolDictionaries: `#poolDictionaries category: `#category'
> 'ProtoObject variableByteSubclass: `#className uses:
> `@traitComposition instanceVariableNames: `#instanceVariableNames
> classVariableNames: `#classVariableNames poolDictionaries:
> `#poolDictionaries category: `#category. `className superclass:
> `@superclass' '`@superclass variableSubclass: `#className
> instanceVariableNames: `#instanceVariableNames classVariableNames:
> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> `#category' 'ProtoObject variableSubclass: `#className
> instanceVariableNames: `#instanceVariableNames classVariableNames:
> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> `#category. `className superclass: `@superclass' '`@superclass
> variableSubclass: `#className uses: `@traitComposition
> instanceVariableNames: `#instanceVariableNames classVariableNames:
> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> `#category' 'ProtoObject variableSubclass: `#className uses:
> `@traitComposition instanceVariableNames: `#instanceVariableNames
> classVariableNames: `#classVariableNames poolDictionaries:
> `#poolDictionaries category: `#category. `className superclass:
> `@superclass' '`@superclass variableWordSubclass: `#className
> instanceVariableNames: `#instanceVariableNames classVariableNames:
> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> `#category' 'ProtoObject variableWordSubclass: `#className
> instanceVariableNames: `#instanceVariableNames classVariableNames:
> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> `#category. `className superclass: `@superclass' '`@superclass
> variableWordSubclass: `#className uses: `@traitComposition
> instanceVariableNames: `#instanceVariableNames classVariableNames:
> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> `#category' 'ProtoObject variableWordSubclass: `#className uses:
> `@traitComposition instanceVariableNames: `#instanceVariableNames
> classVariableNames: `#classVariableNames poolDictionaries:
> `#poolDictionaries category: `#category. `className superclass:
> `@superclass' '`@superclass weakSubclass: `#className
> instanceVariableNames: `#instanceVariableNames classVariableNames:
> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> `#category' 'ProtoObject weakSubclass: `#className
> instanceVariableNames: `#instanceVariableNames classVariableNames:
> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> `#category. `className superclass: `@superclass' '`@superclass
> weakSubclass: `#className uses: `@traitComposition
> instanceVariableNames: `#instanceVariableNames classVariableNames:
> `#classVariableNames poolDictionaries: `#poolDictionaries category:
> `#category' 'ProtoObject weakSubclass: `#className uses:
> `@traitComposition instanceVariableNames: `#instanceVariableNames
> classVariableNames: `#classVariableNames poolDictionaries:
> `#poolDictionaries category: `#category. `className superclass:
> `@superclass' '`traitName classTrait uses: `@traitComposition' 'Trait
> named: `#traitName uses: `@traitComposition category: `#category')
>
> On 2 October 2010 13:01, Lukas Renggli <renggli(a)gmail.com> wrote:
> >> Lukas, now I have another problem. I am not sure if it is OB latest code
> >> related, but I think so.
> >
> > No, that was always the case.
> >
> >> If you take any class, suppose RBSemanticTest and go to its definition.
> >> Change it so that it extends from ProtoObject instead of TestCase. When
> you
> >> accept the code (save it), the browser goes directly to Browse
> ProtoObject,
> >> actually to :
> >>
> >> ProtoObject subclass: #ProtoObject
> >> instanceVariableNames: ''
> >> classVariableNames: ''
> >> poolDictionaries: ''
> >> category: 'Kernel-Objects'.
> >> ProtoObject superclass: nil
> >
> > Creating a subclass like this was never supported by the refactoring
> engine.
> >
> > You have to write it like:
> >
> > nil subclass: #ProtoObject
> > instanceVariableNames: ''
> > classVariableNames: ''
> > poolDictionaries: ''
> > category: 'Kernel-Objects'
> >
> > Lukas
> >
> > --
> > Lukas Renggli
> > www.lukas-renggli.ch
> >
>
>
>
> --
> Lukas Renggli
> www.lukas-renggli.ch
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Oct. 2, 2010
Re: [Pharo-project] Another fixes to finalization (was Re: [update 1.2] #12161 - #12172)
by Stéphane Ducasse
On Oct 2, 2010, at 7:01 PM, Igor Stasenko wrote:
> On 2 October 2010 19:47, Stéphane Ducasse <stephane.ducasse(a)inria.fr> wrote:
>> Hi igor
>>
>> do you understand why the previous definition was
>>
>> cachedDefinitions
>> Definitions ifNil: [Definitions := WeakIdentityKeyDictionary new. WeakArray addWeakDependent: Definitions].
>> ^ Definitions
>>
> i don't. :)
>
> It just a way to free memory as fast as possible.
> But its really not worth spending so much CPU in order to save few
> bytes of memory.
:)
I looked a bit at the code and it is used just so that MCDefinition flush them if they are not already GCed.
So I understand.
Stef
Oct. 2, 2010
Re: [Pharo-project] Another fixes to finalization (was Re: [update 1.2] #12161 - #12172)
by Igor Stasenko
On 2 October 2010 19:47, Stéphane Ducasse <stephane.ducasse(a)inria.fr> wrote:
> Hi igor
>
> do you understand why the previous definition was
>
> cachedDefinitions
> Â Â Â Â Definitions ifNil: [Definitions := WeakIdentityKeyDictionary new. Â WeakArray addWeakDependent: Definitions].
> Â Â Â Â ^ Definitions
>
i don't. :)
It just a way to free memory as fast as possible.
But its really not worth spending so much CPU in order to save few
bytes of memory.
> Stef
>
> On Oct 1, 2010, at 7:34 PM, Igor Stasenko wrote:
>
>> Here the simple fix for it.
>>
>>
>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>> <mc-cache-fix.1.cs>_______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
--
Best regards,
Igor Stasenko AKA sig.
Oct. 2, 2010
Re: [Pharo-project] Another fixes to finalization (was Re: [update 1.2] #12161 - #12172)
by Stéphane Ducasse
Hi igor
do you understand why the previous definition was
cachedDefinitions
Definitions ifNil: [Definitions := WeakIdentityKeyDictionary new. WeakArray addWeakDependent: Definitions].
^ Definitions
Stef
On Oct 1, 2010, at 7:34 PM, Igor Stasenko wrote:
> Here the simple fix for it.
>
>
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
> <mc-cache-fix.1.cs>_______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Oct. 2, 2010
[Pharo-project] [update 1.2] #12167
by Stéphane Ducasse
12167
-----
- Issue 3036: SUnit Refactoring (introduced class factory). Thanks Thanks Sean De Nigris.
- Issue 3047: Added intention revealing helper method to AppRegistry class>>register:. Thanks Sean De Nigris.
- Issue 3055: postCopy in StrikeFontSet. Thanks Nicolas Cellier.
- Issue 3056: EventManager uses postCopy. Thanks Nicolas Cellier.
- Issue 3054: Heap improvements. Thanks Nicolas Cellier.
- Issue 3053: Better showMenu. Thanks Tobias Pape.
Oct. 2, 2010
Re: [Pharo-project] Issue 3036: SUnit Refactoring
by Sean P. DeNigris
Stéphane Ducasse wrote:
>
> Sean we just merged SUnit 4.0 so can you have a look.
>
Okay, thanks.
--
View this message in context: http://forum.world.st/Issue-3036-SUnit-Refactoring-tp2914375p2952516.html
Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
Oct. 2, 2010
Re: [Pharo-project] Statistic tools in Pharo
by Alexandre Bergel
Ok. I am personally more interested in regression models
Alexandre
On 2 Oct 2010, at 07:15, Cédrick Béler wrote:
>
> Le 29 sept. 2010 à 15:39, Alexandre Bergel a écrit :
>
>>>> Thanks Jimmie.
>>>> About half of the tests are red. This library is about linear Algebra. Not really about statistics.
>>>> But thanks for the link!
>>>>
>>>> Alexandre
>>>
>>> If it's the same as what you can find in VW, in addition to linear algebra, it includes numerical methods for quite a few probability distributions as well though.
>>
>> Ok, thanks for the input!
>
>
> FWIW, I plan to implement Bayesian Network in Smalltalk... Nevertheless, it will be more a research project...
>
> Until now, I haven't found any project nor code in that direction... except maybe SBN (Simple Bayesian Network) in ruby...
>
> Cheers
>
>
>
>
>
>>
>> Alexandre
>> --
>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>> Alexandre Bergel http://www.bergel.eu
>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Oct. 2, 2010
Re: [Pharo-project] In Latest OB I cannot add a class variable
by Lukas Renggli
Ok, I fixed that. The refactoring engine now supports all the 24 (!!!)
distinct patterns of defining a subclass/trait in Pharo (see below).
Name: Refactoring-Changes-lr.15
Author: lr
Time: 2 October 2010, 1:50:13 pm
UUID: 82093dfb-e7f2-4ff7-afe7-ac7196632196
Ancestors: Refactoring-Changes-lr.14
- also support subclasses of nil
The undo operation of the respective actions should work as well. The
exception here is an asymmetry (bug?) in the Pharo class definition
strings that causes classes without traits to be printed without the
#uses: claus. Evaluating this definition string does not remove the
trait composition if the class happens to have one though.
Lukas
#('`className class instanceVariableNames: `#instanceVariableNames'
'`className class uses: `@traitComposition instanceVariableNames:
`#instanceVariableNames' '`@superclass subclass: `#className
instanceVariableNames: `#instanceVariableNames classVariableNames:
`#classVariableNames poolDictionaries: `#poolDictionaries category:
`#category' 'ProtoObject subclass: `#className instanceVariableNames:
`#instanceVariableNames classVariableNames: `#classVariableNames
poolDictionaries: `#poolDictionaries category: `#category. `className
superclass: `@superclass' '`@superclass subclass: `#className uses:
`@traitComposition instanceVariableNames: `#instanceVariableNames
classVariableNames: `#classVariableNames poolDictionaries:
`#poolDictionaries category: `#category' 'ProtoObject subclass:
`#className uses: `@traitComposition instanceVariableNames:
`#instanceVariableNames classVariableNames: `#classVariableNames
poolDictionaries: `#poolDictionaries category: `#category. `className
superclass: `@superclass' '`@superclass variableByteSubclass:
`#className instanceVariableNames: `#instanceVariableNames
classVariableNames: `#classVariableNames poolDictionaries:
`#poolDictionaries category: `#category' 'ProtoObject
variableByteSubclass: `#className instanceVariableNames:
`#instanceVariableNames classVariableNames: `#classVariableNames
poolDictionaries: `#poolDictionaries category: `#category. `className
superclass: `@superclass' '`@superclass variableByteSubclass:
`#className uses: `@traitComposition instanceVariableNames:
`#instanceVariableNames classVariableNames: `#classVariableNames
poolDictionaries: `#poolDictionaries category: `#category'
'ProtoObject variableByteSubclass: `#className uses:
`@traitComposition instanceVariableNames: `#instanceVariableNames
classVariableNames: `#classVariableNames poolDictionaries:
`#poolDictionaries category: `#category. `className superclass:
`@superclass' '`@superclass variableSubclass: `#className
instanceVariableNames: `#instanceVariableNames classVariableNames:
`#classVariableNames poolDictionaries: `#poolDictionaries category:
`#category' 'ProtoObject variableSubclass: `#className
instanceVariableNames: `#instanceVariableNames classVariableNames:
`#classVariableNames poolDictionaries: `#poolDictionaries category:
`#category. `className superclass: `@superclass' '`@superclass
variableSubclass: `#className uses: `@traitComposition
instanceVariableNames: `#instanceVariableNames classVariableNames:
`#classVariableNames poolDictionaries: `#poolDictionaries category:
`#category' 'ProtoObject variableSubclass: `#className uses:
`@traitComposition instanceVariableNames: `#instanceVariableNames
classVariableNames: `#classVariableNames poolDictionaries:
`#poolDictionaries category: `#category. `className superclass:
`@superclass' '`@superclass variableWordSubclass: `#className
instanceVariableNames: `#instanceVariableNames classVariableNames:
`#classVariableNames poolDictionaries: `#poolDictionaries category:
`#category' 'ProtoObject variableWordSubclass: `#className
instanceVariableNames: `#instanceVariableNames classVariableNames:
`#classVariableNames poolDictionaries: `#poolDictionaries category:
`#category. `className superclass: `@superclass' '`@superclass
variableWordSubclass: `#className uses: `@traitComposition
instanceVariableNames: `#instanceVariableNames classVariableNames:
`#classVariableNames poolDictionaries: `#poolDictionaries category:
`#category' 'ProtoObject variableWordSubclass: `#className uses:
`@traitComposition instanceVariableNames: `#instanceVariableNames
classVariableNames: `#classVariableNames poolDictionaries:
`#poolDictionaries category: `#category. `className superclass:
`@superclass' '`@superclass weakSubclass: `#className
instanceVariableNames: `#instanceVariableNames classVariableNames:
`#classVariableNames poolDictionaries: `#poolDictionaries category:
`#category' 'ProtoObject weakSubclass: `#className
instanceVariableNames: `#instanceVariableNames classVariableNames:
`#classVariableNames poolDictionaries: `#poolDictionaries category:
`#category. `className superclass: `@superclass' '`@superclass
weakSubclass: `#className uses: `@traitComposition
instanceVariableNames: `#instanceVariableNames classVariableNames:
`#classVariableNames poolDictionaries: `#poolDictionaries category:
`#category' 'ProtoObject weakSubclass: `#className uses:
`@traitComposition instanceVariableNames: `#instanceVariableNames
classVariableNames: `#classVariableNames poolDictionaries:
`#poolDictionaries category: `#category. `className superclass:
`@superclass' '`traitName classTrait uses: `@traitComposition' 'Trait
named: `#traitName uses: `@traitComposition category: `#category')
On 2 October 2010 13:01, Lukas Renggli <renggli(a)gmail.com> wrote:
>> Lukas, now I have another problem. I am not sure if it is OB latest code
>> related, but I think so.
>
> No, that was always the case.
>
>> If you take any class, suppose RBSemanticTest and go to its definition.
>> Change it so that it extends from ProtoObject instead of TestCase. When you
>> accept the code (save it), the browser goes directly to Browse ProtoObject,
>> actually to :
>>
>> ProtoObject subclass: #ProtoObject
>> Â Â Â instanceVariableNames: ''
>> Â Â Â classVariableNames: ''
>> Â Â Â poolDictionaries: ''
>> Â Â Â category: 'Kernel-Objects'.
>> ProtoObject superclass: nil
>
> Creating a subclass like this was never supported by the refactoring engine.
>
> You have to write it like:
>
> nil subclass: #ProtoObject
> Â Â Â Â instanceVariableNames: ''
> Â Â Â Â classVariableNames: ''
> Â Â Â Â poolDictionaries: ''
> Â Â Â Â category: 'Kernel-Objects'
>
> Lukas
>
> --
> Lukas Renggli
> www.lukas-renggli.ch
>
--
Lukas Renggli
www.lukas-renggli.ch
Oct. 2, 2010
Re: [Pharo-project] Statistic tools in Pharo
by Cédrick Béler
Le 29 sept. 2010 à 15:39, Alexandre Bergel a écrit :
>>> Thanks Jimmie.
>>> About half of the tests are red. This library is about linear Algebra. Not really about statistics.
>>> But thanks for the link!
>>>
>>> Alexandre
>>
>> If it's the same as what you can find in VW, in addition to linear algebra, it includes numerical methods for quite a few probability distributions as well though.
>
> Ok, thanks for the input!
FWIW, I plan to implement Bayesian Network in Smalltalk... Nevertheless, it will be more a research project...
Until now, I haven't found any project nor code in that direction... except maybe SBN (Simple Bayesian Network) in ruby...
Cheers
>
> Alexandre
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Oct. 2, 2010
Re: [Pharo-project] In Latest OB I cannot add a class variable
by Lukas Renggli
> Lukas, now I have another problem. I am not sure if it is OB latest code
> related, but I think so.
No, that was always the case.
> If you take any class, suppose RBSemanticTest and go to its definition.
> Change it so that it extends from ProtoObject instead of TestCase. When you
> accept the code (save it), the browser goes directly to Browse ProtoObject,
> actually to :
>
> ProtoObject subclass: #ProtoObject
> Â Â Â instanceVariableNames: ''
> Â Â Â classVariableNames: ''
> Â Â Â poolDictionaries: ''
> Â Â Â category: 'Kernel-Objects'.
> ProtoObject superclass: nil
Creating a subclass like this was never supported by the refactoring engine.
You have to write it like:
nil subclass: #ProtoObject
   instanceVariableNames: ''
   classVariableNames: ''
   poolDictionaries: ''
   category: 'Kernel-Objects'
Lukas
--
Lukas Renggli
www.lukas-renggli.ch
Oct. 2, 2010