Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- September
- August
- 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
- 1 participants
- 144619 messages
[pharo-project/pharo-core] fc582f: 50538
by GitHub
Branch: refs/heads/5.0
Home: https://github.com/pharo-project/pharo-core
Commit: fc582fc4eeb561e379af0bc84c155e610c4d88e4
https://github.com/pharo-project/pharo-core/commit/fc582fc4eeb561e379af0bc8…
Author: Jenkins Build Server <board(a)pharo-project.org>
Date: 2016-01-21 (Thu, 21 Jan 2016)
Changed paths:
M ConfigurationOfUnifiedFFI.package/ConfigurationOfUnifiedFFI.class/instance/symbolic versions/stable_.st
A ConfigurationOfUnifiedFFI.package/ConfigurationOfUnifiedFFI.class/instance/versions/v0%5F10%5F1_.st
M DebuggerActions.package/RestartDebugAction.class/instance/accessing/defaultKeyText.st
M DebuggerActions.package/ResumeDebugAction.class/instance/accessing/defaultKeyText.st
M DebuggerActions.package/StepOverDebugAction.class/instance/accessing/defaultKeyText.st
M Morphic-Widgets-ColorPicker.package/SVColorSelectorMorph.class/instance/as yet unclassified/hideLocation.st
M Morphic-Widgets-ColorPicker.package/SVColorSelectorMorph.class/instance/as yet unclassified/showLocation.st
R ScriptLoader50.package/ScriptLoader.class/instance/pharo - scripts/script50537.st
A ScriptLoader50.package/ScriptLoader.class/instance/pharo - scripts/script50538.st
R ScriptLoader50.package/ScriptLoader.class/instance/pharo - updates/update50537.st
A ScriptLoader50.package/ScriptLoader.class/instance/pharo - updates/update50538.st
M ScriptLoader50.package/ScriptLoader.class/instance/public/commentForCurrentUpdate.st
A UnifiedFFI.package/FFIExternalObject.class/instance/external resource management/resourceData.st
M UnifiedFFI.package/FFIExternalType.class/class/public/sizeOf_.st
Log Message:
-----------
50538
17444 SVColorSelectorMorph should not use (World displayWorldSafely)
https://pharo.fogbugz.com/f/cases/17444
17408 The generic stack debugger defines double meaning for some keybindings when editing code
https://pharo.fogbugz.com/f/cases/17408
17335 We should add a #ffiSizeOf:
https://pharo.fogbugz.com/f/cases/17335
http://files.pharo.org/image/50/50538.zip
Jan. 21, 2016
[ANN] Pharo on Bountysource Salt
by Marcus Denker
Hi,
We have set up a Pharo on the new Salt platform of bountysource:
https://salt.bountysource.com/teams/pharo
This is an easy way to support pharo development. If you support
above a certain threshold, being a Salt supporter includes a
membership for the Pharo Association.
Marcus
Jan. 21, 2016
Re: [Pharo-dev] Pharo bootstrap
by Christophe Demarey
Le 20 janv. 2016 à 20:09, Craig Latta a écrit :
>
> Hi all--
>
> Phil writes:
>
>> The point is not to clean but to start with an empty object engine and
>> fill it in with the minimum required core. Currently, the image is
>> the result of an evolutionary process and rebuilding it from zero was
>> not possible.
>
> Another approach is to modify the virtual machine so that it marks
> methods as they are run, and modify the garbage collector to reclaim
> methods that haven't been run. Then you can create systems that consist
> of only what is necessary to run unit tests, effectively imprinting the
> unit tests. You can interact with the target system from completely
> independent one over a remote messaging network connection, so your unit
> tests need not include graphics support, etc.[1] This seems much simpler
> to me than making a virtual machine that can run multiple object
> memories, and distributed object memories have several other important
> uses too.
Guillermo also implemented this kind of approach with Tornado.
"Tornado, a technique to dynamically tailor applications to only embed code (classes and methods) they use. Tornado uses a run-fail-grow approach to prepare an application for deployment. It launches minimal version of an application and installs a minimal set of statements that will start the user's application. This ap- plication is run and these statements are executed. When the application fails because there are classes or methods missing, the necessary code is installed.
Extended results of Tornado: A Run-Fail-Grow approach for Dynamic Application Tayloring (PDF Download Available). Available from: https://www.researchgate.net/publication/278629977_Extended_results_of_Torn… [accessed Jan 21, 2016]."
But is not so easy ...
>
>> This makes it possible to audit the whole build process, create
>> different base image for various purposes (very small, headless with
>> no UI objects at all, using the object engine in a completely
>> different way that is used today).
>>
>> That makes the image the result of a fully reproducible process, from
>> a file of zero bytes, to a file with a working image.
>
> You can do all of these things with imprinted unit tests as well.
>
>> Also, this allows to experiment with new low level mechanisms. This is
>> currently not possible since it makes us like performing surgery on
>> our own brain.
>
> With remote messaging, which has been around for many years, you
> can perform this surgery from afar.
>
>> Also, the Oz-inspired system will help in exploring other image
>> memories (small or large) and manipulate them as entities. At this
>> point, this is also not common pratice.
>
> This has been common practice since the introduction of the virtual
> machine simulator in 1996. The remote facilities I mentioned all work
> under simulation, too.
>
> There's a lot of prior art here.
>
>
> -C
>
> [1] http://netjam.org/context
>
> --
> Craig Latta
> netjam.org
> +31 6 2757 7177 (SMS ok)
> + 1 415 287 3547 (no SMS)
>
>
Jan. 21, 2016
Re: [Pharo-dev] [ANN] Pharo bootstrap
by Christophe Demarey
Hi Ben,
Le 19 janv. 2016 à 17:35, Ben Coman a écrit :
> On Tue, Jan 19, 2016 at 10:29 PM, Christophe Demarey
> <christophe.demarey(a)inria.fr> wrote:
>> Hi all,
>>
>> In case you do not know, we work on bootstrapping Pharo, i.e. create a Pharo
>> image from sources, not based on a previous image (well, we use a pharo
>> image to produce it but no code / state from it).
>>
>> This process will allow to define a minimal Pharo kernel (currently 52
>> packages but we could have it far smaller) and to modularize the whole image
>> (currently packages have too much dependencies on packages already loaded
>> into the image).
>> The bootstrap process also allows to write down the recipe to initialize a
>> new image from scratch (some code is missing in the image or is wrong). In
>> addition, I think we will clean a lot of historical objects that are not
>> used anymore.
>>
>> With the amazing work done by Guillermo Polito during his Phd (around
>> Espell, Oz): https://guillep.github.io/files/publications/Poli15Thesis.pdf,
>> we succeeded to get a first prototype of a bootstraped Pharo 5 image (from
>> 5.392).
>> This prototype is able to run an eval command line handler and to log output
>> / errors. Not all classes are yet initialized and you cannot yet save /
>> restart this image but it is a big step forward.
>> It is a 4 mb image (could be half the size without unicode data). You can
>> download it at:
>> http://chercheurs.lille.inria.fr/~demarey/pmwiki/pub/pharo-bootstrap/pharo-….
>>
>> Next steps are to have a bootstrapped image fully working, then to load
>> packages on top of it (like network, sunit) to produce a minimal image.
>> Then, we need to implement an Oz VM on top of Spur.
>> After that, we need to work on a reliable way to build the bootstrap (not
>> too sensitive to changes in the image).
>
> Great work guys. Now what stops me feeling compelled to really look
> deep into this is having a class browser / senders / implementers
> interface. I guess this is what Oz would facilitate for peeking into
> the bootstrap image from another image ??
what we have with Espell, are mirrors pointing to the object space we created for the bootstrap.
The idea would be to use mirrors in Pharo for all reflective operations to not mix pre-coccupations. Guillermo created this project: http://smalltalkhub.com/#!/~Pharo/Mirrors wit this perspective. Then tools like browser, inspectors, debugger should use these mirrors.
Denis is also working to enable remote mirrors (a proxy to a local mirror).
With this infrastructure in place, you will be able to browse code from another object space or another image.
The bootstrap is a perfect use case to test the work of Denis on remote browsing / debugging.
Cheers,
Christophe
Jan. 21, 2016
Re: [Pharo-dev] [ANN] Pharo bootstrap
by Sven Van Caekenberghe
This is a much more complex and challenging subject that you might think.
There has been a lot of work done on this for many years, many approaches have been tried.
I am pretty sure that the people behind the Pharo Bootstrap project are aware of the existing literature.
> On 21 Jan 2016, at 09:49, Peter H. Meadows via Pharo-dev <pharo-dev(a)lists.pharo.org> wrote:
>
>
> From: "Peter H. Meadows" <peter.h.meadows(a)googlemail.com>
> Subject: Re: [Pharo-dev] [ANN] Pharo bootstrap
> Date: 21 January 2016 at 09:48:23 GMT+1
> To: Pharo Development List <pharo-dev(a)lists.pharo.org>
>
>
> On 20 January 2016 at 16:36, phil(a)highoctane.be <phil(a)highoctane.be> wrote:
>>
>>
>> On Wed, Jan 20, 2016 at 4:19 PM, Peter H. Meadows via Pharo-dev
>> <pharo-dev(a)lists.pharo.org> wrote:
>>>
>>>
>>>
>>> ---------- Forwarded message ----------
>>> From: "Peter H. Meadows" <peter.h.meadows(a)googlemail.com>
>>> To: Pharo Development List <pharo-dev(a)lists.pharo.org>
>>> Cc:
>>> Date: Wed, 20 Jan 2016 15:17:59 +0000
>>> Subject: Re: [Pharo-dev] [ANN] Pharo bootstrap
>>> Cool. Any chance someone can explain for beginners to understand
>>> what's going on here?
>>> Why is cleaning the image not as simple as running it and deleting any
>>> object that wasn't used?
>>
>>
>> The point is not to clean but to start with an empty object engine and fill
>> it in with the minimum required core.
>
> But why should this not end up with the same end result?
> One way is to start with nothing, and only add stuff we need to make
> it run/boot, and the other way is to start with what we have, and
> remove anything that is not needed to make it run/boot. In both cases
> don't you end up with the same thing?
>
>
>> Currently, the image is the result of an evolutionary process and rebuilding
>> it from zero was not possible.
>
> I wonder if they thought about this when they created the first image.
> Didn't they think 'hey, we should really have a way for anyone to
> create new images from nothing'? Or was it just that they didn't get
> around to making this tool?
>
>> This maes it possible to audit the whole build process, create different
>> base image for various purposes (very small, headless with no UI objects at
>> all, using the object engine in a completely different way that is used
>> today).
>>
>> That makes the image the result of a fully reproducible process, from a file
>> of zero bytes, to a file with a working image.
>>
>> That would make us master the whole chain. Today, there is still black magic
>> in the image, due to the history.
>>
>> That's an exciting development. For example, in C, one compiles all files,
>> and links, giving the exe. All that from a file of zero size. We will be
>> able to do the same kind of thing at the image level.
>>
>> Also, this allows to experiment with new low level mechanisms. This is
>> currently not possible since it makes us like performing surgery on our own
>> brain. Also, the Oz-inspired system will help in exploring other image
>> memories (small or large) and manipulate them as entities. At this point,
>> this is also not common pratice.
>>
>> HTH
>> Phil, wishing to master the mitosis competency...
>>>
>>>
>>> (Thanks in advance)
>>>
>>> On 20 January 2016 at 12:52, Guillermo Polito <guillermopolito(a)gmail.com>
>>> wrote:
>>>> Well, there is no formal specification⦠But I could summarize the
>>>> features
>>>> as follows (and as Christophe points mostly out)
>>>>
>>>> OzVM supports having two images in logically separated spaces. This
>>>> separation is achieved by using the free bit in the object header. Thus
>>>> we
>>>> support only two spaces by now.
>>>>
>>>> - The main addition is actually a new primitive:
>>>> #resumeFromSpecialObjectsArray that receives an special objects array as
>>>> argument and:
>>>> - resumes the execution from the active process of such array
>>>> - on context switch, if the VM is running from a second special
>>>> objects
>>>> array, it will return to the first one instead.
>>>>
>>>> - fixes to primitives/bytecodes that assume a single special objects
>>>> array.
>>>> e.g.,
>>>> - #someObject and #nextObject should only iterate objects from the
>>>> correct âspaceâ
>>>> - #isNil comparisons should take the correct nil
>>>> - the GC should set the correct nil object on Weak containers
>>>>
>>>> The extensions I made are about 20 overrides to StackPrimitive and
>>>> NewObjectMemory methods.
>>>>
>>>> The rest is implemented completely on image side. We use mirror
>>>> primitives
>>>> to manipulate objects from other space (as each image/space has itâs own
>>>> selector table).
>>>>
>>>> I have in my long TODO list see if the "clever hackâ I did can be
>>>> supported
>>>> in a nice manner on top of Spurâs segmented memory. However, I should
>>>> stop
>>>> commencing new projects and start finishing them :P.
>>>>
>>>> On 20 ene 2016, at 9:03 a.m., Christophe Demarey
>>>> <Christophe.Demarey(a)inria.fr> wrote:
>>>>
>>>> Hi Eliot,
>>>>
>>>> Le 19 janv. 2016 à 19:29, Eliot Miranda a écrit :
>>>>
>>>> Hi All,
>>>>
>>>> great news! Where can I read a specification of the Oz VM
>>>> facilities?
>>>>
>>>>
>>>> I do not know all the details of the Oz VM but basically, it is a
>>>> standard
>>>> stack interpreter vm specialized to be able to run 2 images at the same
>>>> time
>>>> on top of it.
>>>> Guillermo made it possible by using one available bit in the object
>>>> header
>>>> of objects to mark the ownership of an object (e.g. is my object from
>>>> image1
>>>> or image2?). Then, he mainly had to specialize VM primitives dealing
>>>> with
>>>> objects retrieval from memory. By example, he had to modify the garbage
>>>> collector to set the right nil instance (yes, we have 2 images so 2 nil
>>>> instances. we need to take the one of the active image) when an object
>>>> is
>>>> garbage collected; the primitive someObject has to return an object from
>>>> the
>>>> active image, etc.
>>>> There is also a way to switch execution from an image to the other just
>>>> by
>>>> switching the special objects array reference.
>>>>
>>>> You can find some information in:
>>>> https://guillep.github.io/files/publications/Poli15Thesis.pdf.
>>>> The Oz code is in http://smalltalkhub.com/#!/~Guille/ObjectSpace and in
>>>> https://github.com/guillep/OzVM
>>>> The current implementation uses Cog 6.6.1and OzVM-GuillermoPolito.22.
>>>> I do not know if Guille has a more formal specification of the Oz VM.
>>>>
>>>> If you have advices on what is the best way to handle two distinct
>>>> object
>>>> (memory) spaces in Spur, they will be welcomed :)
>>>>
>>>> Cheers,
>>>> Christophe
>>>>
>>>>
>>>> _,,,^..^,,,_ (phone)
>>>>
>>>> On Jan 19, 2016, at 6:29 AM, Christophe Demarey
>>>> <christophe.demarey(a)inria.fr> wrote:
>>>>
>>>> Hi all,
>>>>
>>>> In case you do not know, we work on bootstrapping Pharo, i.e. create a
>>>> Pharo
>>>> image from sources, not based on a previous image (well, we use a pharo
>>>> image to produce it but no code / state from it).
>>>>
>>>> This process will allow to define a minimal Pharo kernel (currently 52
>>>> packages but we could have it far smaller) and to modularize the whole
>>>> image
>>>> (currently packages have too much dependencies on packages already
>>>> loaded
>>>> into the image).
>>>> The bootstrap process also allows to write down the recipe to initialize
>>>> a
>>>> new image from scratch (some code is missing in the image or is wrong).
>>>> In
>>>> addition, I think we will clean a lot of historical objects that are not
>>>> used anymore.
>>>>
>>>> With the amazing work done by Guillermo Polito during his Phd (around
>>>> Espell, Oz):
>>>> https://guillep.github.io/files/publications/Poli15Thesis.pdf,
>>>> we succeeded to get a first prototype of a bootstraped Pharo 5 image
>>>> (from
>>>> 5.392).
>>>> This prototype is able to run an eval command line handler and to log
>>>> output
>>>> / errors. Not all classes are yet initialized and you cannot yet save /
>>>> restart this image but it is a big step forward.
>>>> It is a 4 mb image (could be half the size without unicode data). You
>>>> can
>>>> download it at:
>>>>
>>>> http://chercheurs.lille.inria.fr/~demarey/pmwiki/pub/pharo-bootstrap/pharo-….
>>>>
>>>> Next steps are to have a bootstrapped image fully working, then to load
>>>> packages on top of it (like network, sunit) to produce a minimal image.
>>>> Then, we need to implement an Oz VM on top of Spur.
>>>> After that, we need to work on a reliable way to build the bootstrap
>>>> (not
>>>> too sensitive to changes in the image).
>>>>
>>>> Christophe.
>>>>
>>>> -------
>>>> demarey@193-51-236-143:~/dev/rmod/bootstrap/bootstrap-2016-01-19$
>>>> ../pharo
>>>> bootstrap.image --no-default-preferences eval "1 + 1"
>>>> 2
>>>> demarey@193-51-236-143:~/dev/rmod/bootstrap/bootstrap-2016-01-19$
>>>> ../pharo
>>>> bootstrap.image --no-default-preferences eval "'a' , 'b'"
>>>> 'ab'
>>>> demarey@193-51-236-143:~/dev/rmod/bootstrap/bootstrap-2016-01-19$
>>>> ../pharo
>>>> bootstrap.image --no-default-preferences eval "1 / 0"
>>>> ZeroDivide
>>>> SmallInteger>>/
>>>> UndefinedObject>>DoIt
>>>> OpalCompiler>>evaluate
>>>> OpalCompiler(AbstractCompiler)>>evaluate:
>>>> SmalltalkImage>>evaluate:
>>>>
>>>> EvaluateCommandLineHandler>>no (source is Undeclared)
>>>> no source in EvaluateCommandLineHandler>>evaluate: in Block: no source
>>>> BlockClosure>>on:do:
>>>> EvaluateCommandLineHandler>>evaluate:
>>>> EvaluateCommandLineHandler>>evaluateArguments
>>>> EvaluateCommandLineHandler>>activate
>>>> EvaluateCommandLineHandler class(CommandLineHandler
>>>> class)>>activateWith:
>>>>
>>>> BasicCommandLineHandler>>no (source is Undeclared)
>>>> no source in
>>>> PharoCommandLineHandler(BasicCommandLineHandler)>>activateSubCommand: in
>>>> Block: no source
>>>> BlockClosure>>on:do:
>>>> PharoCommandLineHandler(BasicCommandLineHandler)>>activateSubCommand:
>>>> PharoCommandLineHandler(BasicCommandLineHandler)>>handleSubcommand
>>>> PharoCommandLineHandler(BasicCommandLineHandler)>>handleArgument:
>>>>
>>>> BasicCommandLineHandler>>no (source is Undeclared)
>>>> no source in PharoCommandLineHandler(BasicCommandLineHandler)>>activate
>>>> in
>>>> Block: no source
>>>> BlockClosure>>on:do:
>>>> PharoCommandLineHandler(BasicCommandLineHandler)>>activate
>>>> PharoCommandLineHandler>>activate
>>>> PharoCommandLineHandler class(CommandLineHandler class)>>activateWith:
>>>>
>>>> PharoCommandLineHandler class>>no (source is Undeclared)
>>>> no source in PharoCommandLineHandler class>>activateWith: in Block: no
>>>> source
>>>> NonInteractiveUIManager(UIManager)>>defer:
>>>> PharoCommandLineHandler class>>activateWith:
>>>> no source in BasicCommandLineHandler>>activateSubCommand: in Block: no
>>>> source
>>>> BlockClosure>>on:do:
>>>> BasicCommandLineHandler>>activateSubCommand:
>>>> BasicCommandLineHandler>>handleSubcommand
>>>> BasicCommandLineHandler>>handleArgument:
>>>> no source in BasicCommandLineHandler>>activate in Block: no source
>>>>
>>>> SmallInteger>>no (source is Undeclared)
>>>>
>>>> UndefinedObject>>no (source is Undeclared)
>>>>
>>>> AbstractCompiler>>no (source is Undeclared)
>>>>
>>>> SmalltalkImage>>no (source is Undeclared)
>>>>
>>>> BlockClosure>>no (source is Undeclared)
>>>>
>>>> EvaluateCommandLineHandler>>no (source is Undeclared)
>>>>
>>>> EvaluateCommandLineHandler>>no (source is Undeclared)
>>>>
>>>> CommandLineHandler class>>no (source is Undeclared)
>>>>
>>>> BasicCommandLineHandler>>no (source is Undeclared)
>>>>
>>>> BasicCommandLineHandler>>no (source is Undeclared)
>>>>
>>>> PharoCommandLineHandler>>no (source is Undeclared)
>>>>
>>>> UIManager>>no (source is Undeclared)
>>>>
>>>> UndefinedObject>>no (source is Undeclared)
>>>>
>>>> CommandLineUIManager>>no (source is Undeclared)
>>>>
>>>> SmalltalkImage>>no (source is Undeclared)
>>>>
>>>> DelayMicrosecondScheduler>>no (source is Undeclared)
>>>>
>>>> BlockClosure>>no (source is Undeclared)
>>>>
>>>> SmalltalkImage>>no (source is Undeclared)
>>>>
>>>> WeakArray class>>no (source is Undeclared)
>>>>
>>>>
>>>> ps: source cannot be displayed because there is no formatter available
>>>> in
>>>> the bootstrap
Jan. 21, 2016
Re: [Pharo-dev] [ANN] Pharo bootstrap
by Christophe Demarey
Hi Peter,
Le 21 janv. 2016 à 09:49, Peter H. Meadows via Pharo-dev a écrit :
>
> De : "Peter H. Meadows" <peter.h.meadows(a)googlemail.com>
> Date : 21 janvier 2016 09:48:23 HNEC
> Ã : Pharo Development List <pharo-dev(a)lists.pharo.org>
> Objet : Rép : [Pharo-dev] [ANN] Pharo bootstrap
>
>
> On 20 January 2016 at 16:36, phil(a)highoctane.be <phil(a)highoctane.be> wrote:
>>
>>
>> On Wed, Jan 20, 2016 at 4:19 PM, Peter H. Meadows via Pharo-dev
>> <pharo-dev(a)lists.pharo.org> wrote:
>>>
>>>
>>>
>>> ---------- Forwarded message ----------
>>> From: "Peter H. Meadows" <peter.h.meadows(a)googlemail.com>
>>> To: Pharo Development List <pharo-dev(a)lists.pharo.org>
>>> Cc:
>>> Date: Wed, 20 Jan 2016 15:17:59 +0000
>>> Subject: Re: [Pharo-dev] [ANN] Pharo bootstrap
>>> Cool. Any chance someone can explain for beginners to understand
>>> what's going on here?
>>> Why is cleaning the image not as simple as running it and deleting any
>>> object that wasn't used?
>>
>>
>> The point is not to clean but to start with an empty object engine and fill
>> it in with the minimum required core.
>
> But why should this not end up with the same end result?
> One way is to start with nothing, and only add stuff we need to make
> it run/boot, and the other way is to start with what we have, and
> remove anything that is not needed to make it run/boot. In both cases
> don't you end up with the same thing?
in theory but in practice it is more difficult to clean, especially when you are not aware of what needs to be cleaned.
Also, you have in a current image objects that have been modified by scripts that are not (anymore) available in the image. How do you reach the same state? The bootstrap forces you to have all the code to produce this state. It also checks some initialization code that has been run a couple of times, maybe years ago, and that does not work anymore.
>
>> Currently, the image is the result of an evolutionary process and rebuilding
>> it from zero was not possible.
>
> I wonder if they thought about this when they created the first image.
> Didn't they think 'hey, we should really have a way for anyone to
> create new images from nothing'? Or was it just that they didn't get
> around to making this tool?
>
>> This maes it possible to audit the whole build process, create different
>> base image for various purposes (very small, headless with no UI objects at
>> all, using the object engine in a completely different way that is used
>> today).
yes, it will enforce a lot modularity of Pharo. By example, you could have a version of Pharo without Traits or with a different kind of collections.
>> That makes the image the result of a fully reproducible process, from a file
>> of zero bytes, to a file with a working image.
>>
>> That would make us master the whole chain. Today, there is still black magic
>> in the image, due to the history.
>>
>> That's an exciting development. For example, in C, one compiles all files,
>> and links, giving the exe. All that from a file of zero size. We will be
>> able to do the same kind of thing at the image level.
>>
>> Also, this allows to experiment with new low level mechanisms. This is
>> currently not possible since it makes us like performing surgery on our own
>> brain. Also, the Oz-inspired system will help in exploring other image
>> memories (small or large) and manipulate them as entities. At this point,
>> this is also not common pratice.
>>
>> HTH
>> Phil, wishing to master the mitosis competency...
>>>
>>>
>>> (Thanks in advance)
>>>
>>> On 20 January 2016 at 12:52, Guillermo Polito <guillermopolito(a)gmail.com>
>>> wrote:
>>>> Well, there is no formal specification⦠But I could summarize the
>>>> features
>>>> as follows (and as Christophe points mostly out)
>>>>
>>>> OzVM supports having two images in logically separated spaces. This
>>>> separation is achieved by using the free bit in the object header. Thus
>>>> we
>>>> support only two spaces by now.
>>>>
>>>> - The main addition is actually a new primitive:
>>>> #resumeFromSpecialObjectsArray that receives an special objects array as
>>>> argument and:
>>>> - resumes the execution from the active process of such array
>>>> - on context switch, if the VM is running from a second special
>>>> objects
>>>> array, it will return to the first one instead.
>>>>
>>>> - fixes to primitives/bytecodes that assume a single special objects
>>>> array.
>>>> e.g.,
>>>> - #someObject and #nextObject should only iterate objects from the
>>>> correct âspaceâ
>>>> - #isNil comparisons should take the correct nil
>>>> - the GC should set the correct nil object on Weak containers
>>>>
>>>> The extensions I made are about 20 overrides to StackPrimitive and
>>>> NewObjectMemory methods.
>>>>
>>>> The rest is implemented completely on image side. We use mirror
>>>> primitives
>>>> to manipulate objects from other space (as each image/space has itâs own
>>>> selector table).
>>>>
>>>> I have in my long TODO list see if the "clever hackâ I did can be
>>>> supported
>>>> in a nice manner on top of Spurâs segmented memory. However, I should
>>>> stop
>>>> commencing new projects and start finishing them :P.
>>>>
>>>> On 20 ene 2016, at 9:03 a.m., Christophe Demarey
>>>> <Christophe.Demarey(a)inria.fr> wrote:
>>>>
>>>> Hi Eliot,
>>>>
>>>> Le 19 janv. 2016 à 19:29, Eliot Miranda a écrit :
>>>>
>>>> Hi All,
>>>>
>>>> great news! Where can I read a specification of the Oz VM
>>>> facilities?
>>>>
>>>>
>>>> I do not know all the details of the Oz VM but basically, it is a
>>>> standard
>>>> stack interpreter vm specialized to be able to run 2 images at the same
>>>> time
>>>> on top of it.
>>>> Guillermo made it possible by using one available bit in the object
>>>> header
>>>> of objects to mark the ownership of an object (e.g. is my object from
>>>> image1
>>>> or image2?). Then, he mainly had to specialize VM primitives dealing
>>>> with
>>>> objects retrieval from memory. By example, he had to modify the garbage
>>>> collector to set the right nil instance (yes, we have 2 images so 2 nil
>>>> instances. we need to take the one of the active image) when an object
>>>> is
>>>> garbage collected; the primitive someObject has to return an object from
>>>> the
>>>> active image, etc.
>>>> There is also a way to switch execution from an image to the other just
>>>> by
>>>> switching the special objects array reference.
>>>>
>>>> You can find some information in:
>>>> https://guillep.github.io/files/publications/Poli15Thesis.pdf.
>>>> The Oz code is in http://smalltalkhub.com/#!/~Guille/ObjectSpace and in
>>>> https://github.com/guillep/OzVM
>>>> The current implementation uses Cog 6.6.1and OzVM-GuillermoPolito.22.
>>>> I do not know if Guille has a more formal specification of the Oz VM.
>>>>
>>>> If you have advices on what is the best way to handle two distinct
>>>> object
>>>> (memory) spaces in Spur, they will be welcomed :)
>>>>
>>>> Cheers,
>>>> Christophe
>>>>
>>>>
>>>> _,,,^..^,,,_ (phone)
>>>>
>>>> On Jan 19, 2016, at 6:29 AM, Christophe Demarey
>>>> <christophe.demarey(a)inria.fr> wrote:
>>>>
>>>> Hi all,
>>>>
>>>> In case you do not know, we work on bootstrapping Pharo, i.e. create a
>>>> Pharo
>>>> image from sources, not based on a previous image (well, we use a pharo
>>>> image to produce it but no code / state from it).
>>>>
>>>> This process will allow to define a minimal Pharo kernel (currently 52
>>>> packages but we could have it far smaller) and to modularize the whole
>>>> image
>>>> (currently packages have too much dependencies on packages already
>>>> loaded
>>>> into the image).
>>>> The bootstrap process also allows to write down the recipe to initialize
>>>> a
>>>> new image from scratch (some code is missing in the image or is wrong).
>>>> In
>>>> addition, I think we will clean a lot of historical objects that are not
>>>> used anymore.
>>>>
>>>> With the amazing work done by Guillermo Polito during his Phd (around
>>>> Espell, Oz):
>>>> https://guillep.github.io/files/publications/Poli15Thesis.pdf,
>>>> we succeeded to get a first prototype of a bootstraped Pharo 5 image
>>>> (from
>>>> 5.392).
>>>> This prototype is able to run an eval command line handler and to log
>>>> output
>>>> / errors. Not all classes are yet initialized and you cannot yet save /
>>>> restart this image but it is a big step forward.
>>>> It is a 4 mb image (could be half the size without unicode data). You
>>>> can
>>>> download it at:
>>>>
>>>> http://chercheurs.lille.inria.fr/~demarey/pmwiki/pub/pharo-bootstrap/pharo-….
>>>>
>>>> Next steps are to have a bootstrapped image fully working, then to load
>>>> packages on top of it (like network, sunit) to produce a minimal image.
>>>> Then, we need to implement an Oz VM on top of Spur.
>>>> After that, we need to work on a reliable way to build the bootstrap
>>>> (not
>>>> too sensitive to changes in the image).
>>>>
>>>> Christophe.
>>>>
>>>> -------
>>>> demarey@193-51-236-143:~/dev/rmod/bootstrap/bootstrap-2016-01-19$
>>>> ../pharo
>>>> bootstrap.image --no-default-preferences eval "1 + 1"
>>>> 2
>>>> demarey@193-51-236-143:~/dev/rmod/bootstrap/bootstrap-2016-01-19$
>>>> ../pharo
>>>> bootstrap.image --no-default-preferences eval "'a' , 'b'"
>>>> 'ab'
>>>> demarey@193-51-236-143:~/dev/rmod/bootstrap/bootstrap-2016-01-19$
>>>> ../pharo
>>>> bootstrap.image --no-default-preferences eval "1 / 0"
>>>> ZeroDivide
>>>> SmallInteger>>/
>>>> UndefinedObject>>DoIt
>>>> OpalCompiler>>evaluate
>>>> OpalCompiler(AbstractCompiler)>>evaluate:
>>>> SmalltalkImage>>evaluate:
>>>>
>>>> EvaluateCommandLineHandler>>no (source is Undeclared)
>>>> no source in EvaluateCommandLineHandler>>evaluate: in Block: no source
>>>> BlockClosure>>on:do:
>>>> EvaluateCommandLineHandler>>evaluate:
>>>> EvaluateCommandLineHandler>>evaluateArguments
>>>> EvaluateCommandLineHandler>>activate
>>>> EvaluateCommandLineHandler class(CommandLineHandler
>>>> class)>>activateWith:
>>>>
>>>> BasicCommandLineHandler>>no (source is Undeclared)
>>>> no source in
>>>> PharoCommandLineHandler(BasicCommandLineHandler)>>activateSubCommand: in
>>>> Block: no source
>>>> BlockClosure>>on:do:
>>>> PharoCommandLineHandler(BasicCommandLineHandler)>>activateSubCommand:
>>>> PharoCommandLineHandler(BasicCommandLineHandler)>>handleSubcommand
>>>> PharoCommandLineHandler(BasicCommandLineHandler)>>handleArgument:
>>>>
>>>> BasicCommandLineHandler>>no (source is Undeclared)
>>>> no source in PharoCommandLineHandler(BasicCommandLineHandler)>>activate
>>>> in
>>>> Block: no source
>>>> BlockClosure>>on:do:
>>>> PharoCommandLineHandler(BasicCommandLineHandler)>>activate
>>>> PharoCommandLineHandler>>activate
>>>> PharoCommandLineHandler class(CommandLineHandler class)>>activateWith:
>>>>
>>>> PharoCommandLineHandler class>>no (source is Undeclared)
>>>> no source in PharoCommandLineHandler class>>activateWith: in Block: no
>>>> source
>>>> NonInteractiveUIManager(UIManager)>>defer:
>>>> PharoCommandLineHandler class>>activateWith:
>>>> no source in BasicCommandLineHandler>>activateSubCommand: in Block: no
>>>> source
>>>> BlockClosure>>on:do:
>>>> BasicCommandLineHandler>>activateSubCommand:
>>>> BasicCommandLineHandler>>handleSubcommand
>>>> BasicCommandLineHandler>>handleArgument:
>>>> no source in BasicCommandLineHandler>>activate in Block: no source
>>>>
>>>> SmallInteger>>no (source is Undeclared)
>>>>
>>>> UndefinedObject>>no (source is Undeclared)
>>>>
>>>> AbstractCompiler>>no (source is Undeclared)
>>>>
>>>> SmalltalkImage>>no (source is Undeclared)
>>>>
>>>> BlockClosure>>no (source is Undeclared)
>>>>
>>>> EvaluateCommandLineHandler>>no (source is Undeclared)
>>>>
>>>> EvaluateCommandLineHandler>>no (source is Undeclared)
>>>>
>>>> CommandLineHandler class>>no (source is Undeclared)
>>>>
>>>> BasicCommandLineHandler>>no (source is Undeclared)
>>>>
>>>> BasicCommandLineHandler>>no (source is Undeclared)
>>>>
>>>> PharoCommandLineHandler>>no (source is Undeclared)
>>>>
>>>> UIManager>>no (source is Undeclared)
>>>>
>>>> UndefinedObject>>no (source is Undeclared)
>>>>
>>>> CommandLineUIManager>>no (source is Undeclared)
>>>>
>>>> SmalltalkImage>>no (source is Undeclared)
>>>>
>>>> DelayMicrosecondScheduler>>no (source is Undeclared)
>>>>
>>>> BlockClosure>>no (source is Undeclared)
>>>>
>>>> SmalltalkImage>>no (source is Undeclared)
>>>>
>>>> WeakArray class>>no (source is Undeclared)
>>>>
>>>>
>>>> ps: source cannot be displayed because there is no formatter available
>>>> in
>>>> the bootstrap
>>>>
>>>>
>>>>
>>>
>>>
>>
>
>
>
Jan. 21, 2016
Re: [Pharo-dev] Use cases for methods with optional parameters
by Max Leske
I donât have any examples right now, but the idea is great! The situation is a familiar one. Iâm looking forward to what you find.
Cheers,
Max
> On 20 Jan 2016, at 16:08, Damien Cassou <Damien.Cassou(a)inria.fr> wrote:
>
> Hi,
>
> I would like to study the impact of adding optional parameters to
> keyword methods in Pharo. The goal of optional parameters is to
> facilitate the implementation of methods where some parameters are
> optional. For example, Seaside has:
>
> WAComponent>>request: aRequestString label: aLabelString
> default: aDefaultString onAnswer: aBlock
>
> ...
>
> This method of 4 arguments has only 1 required argument (aRequestString)
> and 3 optional ones. In the current implementation, this results in 7
> additional methods that only delegate directly or indirectly to the one
> above:
>
> - request:
> - request:default:
> - request:default:onAnswer:
> - request:label:
> - request:label:default:
> - request:label:onAnswer:
> - request:onAnswer:
>
> Before starting to implement anything, I need to know if it makes sense.
> If you want to help me, please send me all the use cases you have by
> giving me:
>
> - the library name (and URL if not in Catalog), or "pharo" if it's in
> Pharo
> - the class where this happens
> - the range of selectors that make sense
>
> For the example above, this would be:
>
> - Seaside
> - WAComponent
> - request:*
>
>
> Thank you very much
>
> --
> Damien Cassou
> http://damiencassou.seasidehosting.st
>
> "Success is the ability to go from one failure to another without
> losing enthusiasm." --Winston Churchill
>
Jan. 21, 2016
Re: [Pharo-dev] [ANN] Pharo bootstrap
by Peter H. Meadows
On 20 January 2016 at 16:36, phil(a)highoctane.be <phil(a)highoctane.be> wrote:
>
>
> On Wed, Jan 20, 2016 at 4:19 PM, Peter H. Meadows via Pharo-dev
> <pharo-dev(a)lists.pharo.org> wrote:
>>
>>
>>
>> ---------- Forwarded message ----------
>> From: "Peter H. Meadows" <peter.h.meadows(a)googlemail.com>
>> To: Pharo Development List <pharo-dev(a)lists.pharo.org>
>> Cc:
>> Date: Wed, 20 Jan 2016 15:17:59 +0000
>> Subject: Re: [Pharo-dev] [ANN] Pharo bootstrap
>> Cool. Any chance someone can explain for beginners to understand
>> what's going on here?
>> Why is cleaning the image not as simple as running it and deleting any
>> object that wasn't used?
>
>
> The point is not to clean but to start with an empty object engine and fill
> it in with the minimum required core.
But why should this not end up with the same end result?
One way is to start with nothing, and only add stuff we need to make
it run/boot, and the other way is to start with what we have, and
remove anything that is not needed to make it run/boot. In both cases
don't you end up with the same thing?
> Currently, the image is the result of an evolutionary process and rebuilding
> it from zero was not possible.
I wonder if they thought about this when they created the first image.
Didn't they think 'hey, we should really have a way for anyone to
create new images from nothing'? Or was it just that they didn't get
around to making this tool?
> This maes it possible to audit the whole build process, create different
> base image for various purposes (very small, headless with no UI objects at
> all, using the object engine in a completely different way that is used
> today).
>
> That makes the image the result of a fully reproducible process, from a file
> of zero bytes, to a file with a working image.
>
> That would make us master the whole chain. Today, there is still black magic
> in the image, due to the history.
>
> That's an exciting development. For example, in C, one compiles all files,
> and links, giving the exe. All that from a file of zero size. We will be
> able to do the same kind of thing at the image level.
>
> Also, this allows to experiment with new low level mechanisms. This is
> currently not possible since it makes us like performing surgery on our own
> brain. Also, the Oz-inspired system will help in exploring other image
> memories (small or large) and manipulate them as entities. At this point,
> this is also not common pratice.
>
> HTH
> Phil, wishing to master the mitosis competency...
>>
>>
>> (Thanks in advance)
>>
>> On 20 January 2016 at 12:52, Guillermo Polito <guillermopolito(a)gmail.com>
>> wrote:
>> > Well, there is no formal specification⦠But I could summarize the
>> > features
>> > as follows (and as Christophe points mostly out)
>> >
>> > OzVM supports having two images in logically separated spaces. This
>> > separation is achieved by using the free bit in the object header. Thus
>> > we
>> > support only two spaces by now.
>> >
>> > - The main addition is actually a new primitive:
>> > #resumeFromSpecialObjectsArray that receives an special objects array as
>> > argument and:
>> > - resumes the execution from the active process of such array
>> > - on context switch, if the VM is running from a second special
>> > objects
>> > array, it will return to the first one instead.
>> >
>> > - fixes to primitives/bytecodes that assume a single special objects
>> > array.
>> > e.g.,
>> > - #someObject and #nextObject should only iterate objects from the
>> > correct âspaceâ
>> > - #isNil comparisons should take the correct nil
>> > - the GC should set the correct nil object on Weak containers
>> >
>> > The extensions I made are about 20 overrides to StackPrimitive and
>> > NewObjectMemory methods.
>> >
>> > The rest is implemented completely on image side. We use mirror
>> > primitives
>> > to manipulate objects from other space (as each image/space has itâs own
>> > selector table).
>> >
>> > I have in my long TODO list see if the "clever hackâ I did can be
>> > supported
>> > in a nice manner on top of Spurâs segmented memory. However, I should
>> > stop
>> > commencing new projects and start finishing them :P.
>> >
>> > On 20 ene 2016, at 9:03 a.m., Christophe Demarey
>> > <Christophe.Demarey(a)inria.fr> wrote:
>> >
>> > Hi Eliot,
>> >
>> > Le 19 janv. 2016 à 19:29, Eliot Miranda a écrit :
>> >
>> > Hi All,
>> >
>> > great news! Where can I read a specification of the Oz VM
>> > facilities?
>> >
>> >
>> > I do not know all the details of the Oz VM but basically, it is a
>> > standard
>> > stack interpreter vm specialized to be able to run 2 images at the same
>> > time
>> > on top of it.
>> > Guillermo made it possible by using one available bit in the object
>> > header
>> > of objects to mark the ownership of an object (e.g. is my object from
>> > image1
>> > or image2?). Then, he mainly had to specialize VM primitives dealing
>> > with
>> > objects retrieval from memory. By example, he had to modify the garbage
>> > collector to set the right nil instance (yes, we have 2 images so 2 nil
>> > instances. we need to take the one of the active image) when an object
>> > is
>> > garbage collected; the primitive someObject has to return an object from
>> > the
>> > active image, etc.
>> > There is also a way to switch execution from an image to the other just
>> > by
>> > switching the special objects array reference.
>> >
>> > You can find some information in:
>> > https://guillep.github.io/files/publications/Poli15Thesis.pdf.
>> > The Oz code is in http://smalltalkhub.com/#!/~Guille/ObjectSpace and in
>> > https://github.com/guillep/OzVM
>> > The current implementation uses Cog 6.6.1and OzVM-GuillermoPolito.22.
>> > I do not know if Guille has a more formal specification of the Oz VM.
>> >
>> > If you have advices on what is the best way to handle two distinct
>> > object
>> > (memory) spaces in Spur, they will be welcomed :)
>> >
>> > Cheers,
>> > Christophe
>> >
>> >
>> > _,,,^..^,,,_ (phone)
>> >
>> > On Jan 19, 2016, at 6:29 AM, Christophe Demarey
>> > <christophe.demarey(a)inria.fr> wrote:
>> >
>> > Hi all,
>> >
>> > In case you do not know, we work on bootstrapping Pharo, i.e. create a
>> > Pharo
>> > image from sources, not based on a previous image (well, we use a pharo
>> > image to produce it but no code / state from it).
>> >
>> > This process will allow to define a minimal Pharo kernel (currently 52
>> > packages but we could have it far smaller) and to modularize the whole
>> > image
>> > (currently packages have too much dependencies on packages already
>> > loaded
>> > into the image).
>> > The bootstrap process also allows to write down the recipe to initialize
>> > a
>> > new image from scratch (some code is missing in the image or is wrong).
>> > In
>> > addition, I think we will clean a lot of historical objects that are not
>> > used anymore.
>> >
>> > With the amazing work done by Guillermo Polito during his Phd (around
>> > Espell, Oz):
>> > https://guillep.github.io/files/publications/Poli15Thesis.pdf,
>> > we succeeded to get a first prototype of a bootstraped Pharo 5 image
>> > (from
>> > 5.392).
>> > This prototype is able to run an eval command line handler and to log
>> > output
>> > / errors. Not all classes are yet initialized and you cannot yet save /
>> > restart this image but it is a big step forward.
>> > It is a 4 mb image (could be half the size without unicode data). You
>> > can
>> > download it at:
>> >
>> > http://chercheurs.lille.inria.fr/~demarey/pmwiki/pub/pharo-bootstrap/pharo-….
>> >
>> > Next steps are to have a bootstrapped image fully working, then to load
>> > packages on top of it (like network, sunit) to produce a minimal image.
>> > Then, we need to implement an Oz VM on top of Spur.
>> > After that, we need to work on a reliable way to build the bootstrap
>> > (not
>> > too sensitive to changes in the image).
>> >
>> > Christophe.
>> >
>> > -------
>> > demarey@193-51-236-143:~/dev/rmod/bootstrap/bootstrap-2016-01-19$
>> > ../pharo
>> > bootstrap.image --no-default-preferences eval "1 + 1"
>> > 2
>> > demarey@193-51-236-143:~/dev/rmod/bootstrap/bootstrap-2016-01-19$
>> > ../pharo
>> > bootstrap.image --no-default-preferences eval "'a' , 'b'"
>> > 'ab'
>> > demarey@193-51-236-143:~/dev/rmod/bootstrap/bootstrap-2016-01-19$
>> > ../pharo
>> > bootstrap.image --no-default-preferences eval "1 / 0"
>> > ZeroDivide
>> > SmallInteger>>/
>> > UndefinedObject>>DoIt
>> > OpalCompiler>>evaluate
>> > OpalCompiler(AbstractCompiler)>>evaluate:
>> > SmalltalkImage>>evaluate:
>> >
>> > EvaluateCommandLineHandler>>no (source is Undeclared)
>> > no source in EvaluateCommandLineHandler>>evaluate: in Block: no source
>> > BlockClosure>>on:do:
>> > EvaluateCommandLineHandler>>evaluate:
>> > EvaluateCommandLineHandler>>evaluateArguments
>> > EvaluateCommandLineHandler>>activate
>> > EvaluateCommandLineHandler class(CommandLineHandler
>> > class)>>activateWith:
>> >
>> > BasicCommandLineHandler>>no (source is Undeclared)
>> > no source in
>> > PharoCommandLineHandler(BasicCommandLineHandler)>>activateSubCommand: in
>> > Block: no source
>> > BlockClosure>>on:do:
>> > PharoCommandLineHandler(BasicCommandLineHandler)>>activateSubCommand:
>> > PharoCommandLineHandler(BasicCommandLineHandler)>>handleSubcommand
>> > PharoCommandLineHandler(BasicCommandLineHandler)>>handleArgument:
>> >
>> > BasicCommandLineHandler>>no (source is Undeclared)
>> > no source in PharoCommandLineHandler(BasicCommandLineHandler)>>activate
>> > in
>> > Block: no source
>> > BlockClosure>>on:do:
>> > PharoCommandLineHandler(BasicCommandLineHandler)>>activate
>> > PharoCommandLineHandler>>activate
>> > PharoCommandLineHandler class(CommandLineHandler class)>>activateWith:
>> >
>> > PharoCommandLineHandler class>>no (source is Undeclared)
>> > no source in PharoCommandLineHandler class>>activateWith: in Block: no
>> > source
>> > NonInteractiveUIManager(UIManager)>>defer:
>> > PharoCommandLineHandler class>>activateWith:
>> > no source in BasicCommandLineHandler>>activateSubCommand: in Block: no
>> > source
>> > BlockClosure>>on:do:
>> > BasicCommandLineHandler>>activateSubCommand:
>> > BasicCommandLineHandler>>handleSubcommand
>> > BasicCommandLineHandler>>handleArgument:
>> > no source in BasicCommandLineHandler>>activate in Block: no source
>> >
>> > SmallInteger>>no (source is Undeclared)
>> >
>> > UndefinedObject>>no (source is Undeclared)
>> >
>> > AbstractCompiler>>no (source is Undeclared)
>> >
>> > SmalltalkImage>>no (source is Undeclared)
>> >
>> > BlockClosure>>no (source is Undeclared)
>> >
>> > EvaluateCommandLineHandler>>no (source is Undeclared)
>> >
>> > EvaluateCommandLineHandler>>no (source is Undeclared)
>> >
>> > CommandLineHandler class>>no (source is Undeclared)
>> >
>> > BasicCommandLineHandler>>no (source is Undeclared)
>> >
>> > BasicCommandLineHandler>>no (source is Undeclared)
>> >
>> > PharoCommandLineHandler>>no (source is Undeclared)
>> >
>> > UIManager>>no (source is Undeclared)
>> >
>> > UndefinedObject>>no (source is Undeclared)
>> >
>> > CommandLineUIManager>>no (source is Undeclared)
>> >
>> > SmalltalkImage>>no (source is Undeclared)
>> >
>> > DelayMicrosecondScheduler>>no (source is Undeclared)
>> >
>> > BlockClosure>>no (source is Undeclared)
>> >
>> > SmalltalkImage>>no (source is Undeclared)
>> >
>> > WeakArray class>>no (source is Undeclared)
>> >
>> >
>> > ps: source cannot be displayed because there is no formatter available
>> > in
>> > the bootstrap
>> >
>> >
>> >
>>
>>
>
Jan. 21, 2016
Re: [Pharo-dev] Rationale for RGClassDefinition>>definition?
by Nicolai Hess
2016-01-21 9:07 GMT+01:00 stepharo <stepharo(a)free.fr>:
> I do not know now I would have love that veronica believed in tests.
> the difference is the following
>
>
> a RG cna either
> - wrap and point to a living entity
> - acts a dead one (representing a class on a disk)
>
Yes, I was about to add a check for isActive/isPassive for
RGClassDefinition, but this isAcitve/isPassive is only
defined for Ringmethods not for Ring class (or behavior) definitions.
>
> This difference is expressed in the RGMethod and probably not well in
> RGBehavior.
> In fact for method I remember that there was another case.
>
> But it has an impact.
> In fact a RGEntity should have a strategy attach to it that defines how to
> get certain information
> for such cases.
>
> Ring should be revisited with such scenarios in mind.
>
> Stef
>
> Le 21/1/16 07:48, Nicolai Hess a écrit :
>
> I don't know why it was defined like that. But for issue 17404 I changed
> that.
> Am 21.01.2016 12:15 vorm. schrieb "Stephan Eggermont" <stephan(a)stack.nl>:
>
>> is defined as
>> ^ self realClass definition
>> instead of
>> ^self definitionSource
>> and not two levels up at RGBehaviorDescription
>> to make it work for MetaClass and Traits.
>> Why is that?
>>
>> Stephan
>>
>>
>>
>
Jan. 21, 2016
Re: [Pharo-dev] Rationale for RGClassDefinition>>definition?
by Nicolai Hess
2016-01-21 9:07 GMT+01:00 stepharo <stepharo(a)free.fr>:
> I do not know now I would have love that veronica believed in tests.
> the difference is the following
>
>
> a RG cna either
> - wrap and point to a living entity
> - acts a dead one (representing a class on a disk)
>
> This difference is expressed in the RGMethod and probably not well in
> RGBehavior.
> In fact for method I remember that there was another case.
>
> But it has an impact.
> In fact a RGEntity should have a strategy attach to it that defines how to
> get certain information
> for such cases.
>
> Ring should be revisited with such scenarios in mind.
>
> Stef
>
> Le 21/1/16 07:48, Nicolai Hess a écrit :
>
> I don't know why it was defined like that. But for issue 17404 I changed
> that.
> Am 21.01.2016 12:15 vorm. schrieb "Stephan Eggermont" <stephan(a)stack.nl>:
>
>> is defined as
>> ^ self realClass definition
>> instead of
>> ^self definitionSource
>> and not two levels up at RGBehaviorDescription
>> to make it work for MetaClass and Traits.
>> Why is that?
>>
>> Stephan
>>
>>
>>
>
Jan. 21, 2016