On Mon, May 14, 2018 at 11:22 AM, Herbert Vojčík <he...@mailbox.sk> wrote:

>
>
> Guillermo Polito wrote:
>
>>
>> On Sun, May 13, 2018 at 6:37 PM, Herbert Vojčík <he...@mailbox.sk
>> <mailto:he...@mailbox.sk>> wrote:
>>
>>
>>
>>     Guillermo Polito wrote:
>>
>>         Just be careful, that privateState thing looks like a Moose only
>>         Famix feature. It't not available in plain Pharo objects :)
>>
>>
>>     In ES6 mailing list, they had this problem re how to do private
>>     state for objects, and it was shown that having private state is
>>     sort of isomorphic to having WeakMap indexed by objects. So in case
>>     of Pharo, I'd say using WeakIdentitityKeyDictionary can do the
>>     trick. Without resorting to any external dependency.
>>
>>
>> This works if the WeakMap is ephemeral. We should see in latest Pharo7 if
>> Ephemerons are working.
>>
>
> Isn't Weak[Identity]KeyDictionary meant to have weak keys?


Yes


> Since it is named after that and contains it in its docs? Or is Pharo7
> thinking about removing WeakXxx from the vm / image completely :-o ?
>

No, what makes you say so?

What I said is that there is a (not so) "new" finalization mechanism called
ephemerons implemented in the VM since some time ago, that avoids memory
leaks when using weak dictionarys.

WeakArrays work ok.

WeakDictionaries may generate a memory leak if a **strong** value has a
reference to a __weak__ key.



>
>     Herby
>>
>>         On Wed, May 9, 2018 at 2:09 AM, Alidra Abdelghani via
>>         Pharo-users <pharo-users@lists.pharo.org
>>         <mailto:pharo-users@lists.pharo.org>
>>         <mailto:pharo-users@lists.pharo.org
>>         <mailto:pharo-users@lists.pharo.org>>> wrote:
>>
>>
>>
>>              ---------- Forwarded message ----------
>>              From: Alidra Abdelghani <alidran...@yahoo.fr
>>         <mailto:alidran...@yahoo.fr>
>>              <mailto:alidran...@yahoo.fr <mailto:alidran...@yahoo.fr>>>
>>              To: Pavel Krivanek <pavel.kriva...@gmail.com
>>         <mailto:pavel.kriva...@gmail.com>
>>              <mailto:pavel.kriva...@gmail.com
>>         <mailto:pavel.kriva...@gmail.com>>>
>>              Cc: Any question about pharo is welcome
>>         <pharo-users@lists.pharo.org <mailto:pharo-users@lists.pharo.org>
>>              <mailto:pharo-users@lists.pharo.org
>>         <mailto:pharo-users@lists.pharo.org>>>
>>              Bcc:
>>              Date: Wed, 9 May 2018 01:09:06 +0100
>>              Subject: Re: Package extension. Adding instance variables
>>         to classes
>>              Hi Pavel,
>>
>>              Thank you for your answer.
>>              I actually didn’t know about this mechanism.
>>              I think it is will do the job :)
>>                I have probably to rewrite some parts pf my code to access
>> my
>>              variables through privateState.  no?
>>
>>
>>              Thanks again
>>              Abdelghani
>>
>>                  On 07 May 2018, at 13:15,
>>             pharo-users-requ...@lists.pharo.org
>>             <mailto:pharo-users-requ...@lists.pharo.org>
>>                  <mailto:pharo-users-requ...@lists.pharo.org
>>             <mailto:pharo-users-requ...@lists.pharo.org>> wrote:
>>
>>
>>                  Message: 1
>>                  Date: Mon, 7 May 2018 13:43:56 +0200
>>                  From: Pavel Krivanek <pavel.kriva...@gmail.com
>>             <mailto:pavel.kriva...@gmail.com>
>>                  <mailto:pavel.kriva...@gmail.com
>>             <mailto:pavel.kriva...@gmail.com>>>
>>                  To: Any question about pharo is welcome
>>                  <pharo-users@lists.pharo.org
>>             <mailto:pharo-users@lists.pharo.org>
>>             <mailto:pharo-users@lists.pharo.org
>>             <mailto:pharo-users@lists.pharo.org>>>
>>                  Subject: Re: [Pharo-users] Package extension. Adding
>>             instance
>>                  variables to classes
>>                  Message-ID:
>>                             <CAHN2FzeMiBL4Y8asJ0XCjS2AQdxycoN+pbc+Hsd=
>> trmnmui...@mail.gmail.com
>>             <mailto:trmnmui...@mail.gmail.com>
>>             <mailto:CAHN2FzeMiBL4Y8asJ0XCjS2AQdxycoN+pbc+Hsd
>>             <mailto:CAHN2FzeMiBL4Y8asJ0XCjS2AQdxycoN%2Bpbc%2BHsd>=trMnmu
>> i...@mail.gmail.com
>>             <mailto:trmnmui...@mail.gmail.com>>>
>>                  Content-Type: text/plain; charset="utf-8"
>>
>>                  2018-05-07 12:25 GMT+02:00 Alidra Abdelghani via
>>             Pharo-users <
>>             pharo-users@lists.pharo.org
>>             <mailto:pharo-users@lists.pharo.org>
>>             <mailto:pharo-users@lists.pharo.org
>>             <mailto:pharo-users@lists.pharo.org>>>:
>>
>>
>>
>>                      ---------- P?eposlan? zpr?va ----------
>>                      From: Alidra Abdelghani <alidran...@yahoo.fr
>>                 <mailto:alidran...@yahoo.fr>
>>                      <mailto:alidran...@yahoo.fr
>>                 <mailto:alidran...@yahoo.fr>>>
>>                 To:pharo-users@lists.pharo.org
>>                 <mailto:to%3apharo-us...@lists.pharo.org>
>>                 <mailto:pharo-users@lists.pharo.org
>>                 <mailto:pharo-users@lists.pharo.org>>
>>                      Cc:
>>                      Bcc:
>>                      Date: Mon, 7 May 2018 11:25:49 +0100
>>                      Subject: Package extension. Adding instance
>>                 variables to classes
>>                      Hi,
>>
>>                      I am working on a package named ClassNamesAnalyzer
>>                 and I need to
>>                      add code
>>                      to third party classes in other packages (for
>>                 instance the FAMIX-Core
>>                      package).
>>                      ?Extending? third party classes with methods is
>>                 easy; I just need to
>>                      categorise my methods under the *ClassNamesAnalyzer
>>                 protocole so that
>>                      loading my package will load them in the image.
>>                      However, if I want to add instance variables to
>>                 theses classes,
>>                      they are
>>                      not there when I load the package in a new image.
>>
>>                      *So my question is* : is there a way to include
>>                 instance variables
>>                      addition to other packages in my package?
>>
>>
>>                  Currently not, you should use privateState
>>
>>
>>                      *Another question is* : is it good practice to add
>>                 instance
>>                      variables to
>>                      classes in third party packages and is there a way
>>                 to avoid it
>>                      (because I
>>                      am not very confortable with that idea)?
>>
>>
>>                  It is not, see
>>             FAMIXContainerEntity>>#definedAnnotationTypes how
>>                  this issue
>>                  is currently being solved using the privateState.
>>
>>                  Cheers,
>>                  -- Pavel
>>
>>
>>
>>                      Thanks in advance,
>>                      Abdelghani
>>
>>
>>
>>
>>
>>
>>
>>         --
>>
>>
>>         Guille Polito
>>
>>         Research Engineer
>>
>>         Centre de Recherche en Informatique, Signal et Automatique de
>> Lille
>>
>>         CRIStAL - UMR 9189
>>
>>         French National Center for Scientific Research -
>>         _http://www.cnrs.fr_
>>
>>
>>         *Web:* _http://guillep.github.io_
>>
>>         *Phone: *+33 06 52 70 66 13
>>
>>
>>
>>
>> --
>>
>>
>>
>> Guille Polito
>>
>> Research Engineer
>>
>> Centre de Recherche en Informatique, Signal et Automatique de Lille
>>
>> CRIStAL - UMR 9189
>>
>> French National Center for Scientific Research - _http://www.cnrs.fr_
>>
>>
>> *Web:* _http://guillep.github.io_
>>
>> *Phone: *+33 06 52 70 66 13
>>
>>


-- 



Guille Polito

Research Engineer

Centre de Recherche en Informatique, Signal et Automatique de Lille

CRIStAL - UMR 9189

French National Center for Scientific Research - *http://www.cnrs.fr
<http://www.cnrs.fr>*


*Web:* *http://guillep.github.io* <http://guillep.github.io>

*Phone: *+33 06 52 70 66 13

Reply via email to