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


Guillermo Polito wrote:

On Sun, May 13, 2018 at 6:37 PM, Herbert Voj����k <herby@mailbox.sk <mailto:herby@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 <alidrandco@yahoo.fr
�� �� �� �� <mailto:alidrandco@yahoo.fr>
�� �� �� �� �� �� ��<mailto:alidrandco@yahoo.fr <mailto:alidrandco@yahoo.fr>>>
�� �� �� �� �� �� ��To: Pavel Krivanek <pavel.krivanek@gmail.com
�� �� �� �� <mailto:pavel.krivanek@gmail.com>
�� �� �� �� �� �� ��<mailto:pavel.krivanek@gmail.com
�� �� �� �� <mailto:pavel.krivanek@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-request@lists.pharo.org
�� �� �� �� �� �� <mailto:pharo-users-request@lists.pharo.org>
�� �� �� �� �� �� �� �� ��<mailto:pharo-users-request@lists.pharo.org
�� �� �� �� �� �� <mailto:pharo-users-request@lists.pharo.org>> wrote:


�� �� �� �� �� �� �� �� ��Message: 1
�� �� �� �� �� �� �� �� ��Date: Mon, 7 May 2018 13:43:56 +0200
�� �� �� �� �� �� �� �� ��From: Pavel Krivanek <pavel.krivanek@gmail.com
�� �� �� �� �� �� <mailto:pavel.krivanek@gmail.com>
�� �� �� �� �� �� �� �� ��<mailto:pavel.krivanek@gmail.com
�� �� �� �� �� �� <mailto:pavel.krivanek@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=trMnmuiJqw@mail.gmail.com
�� �� �� �� �� �� <mailto:trMnmuiJqw@mail.gmail.com>
�� �� �� �� �� �� <mailto:CAHN2FzeMiBL4Y8asJ0XCjS2AQdxycoN+pbc+Hsd
�� �� �� �� �� �� <mailto:CAHN2FzeMiBL4Y8asJ0XCjS2AQdxycoN%2Bpbc%2BHsd>=trMnmuiJqw@mail.gmail.com
�� �� �� �� �� �� <mailto:trMnmuiJqw@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 <alidrandco@yahoo.fr
�� �� �� �� �� �� �� �� <mailto:alidrandco@yahoo.fr>
�� �� �� �� �� �� �� �� �� �� ��<mailto:alidrandco@yahoo.fr
�� �� �� �� �� �� �� �� <mailto:alidrandco@yahoo.fr>>>
�� �� �� �� �� �� �� �� To:pharo-users@lists.pharo.org
�� �� �� �� �� �� �� �� <mailto:To%3Apharo-users@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


Web: http://guillep.github.io

Phone: +33 06 52 70 66 13