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
Re: [Pharo-dev] How do you normally merge Git branches with Metadata-less GitFileTree?
by Mariano Martinez Peck
No, something wrong is happening. GitFileTree should have NOT generated
neither "version" nor "methodProperties" files.
:(
On Wed, Jan 20, 2016 at 4:37 PM, Damien Pollet <damien.pollet(a)gmail.com>
wrote:
> So ? I put *.methodProperties in .gitignore ?
> What about .gitattributes for the merge driver ?
>
> On 20 January 2016 at 20:19, Mariano Martinez Peck <marianopeck(a)gmail.com>
> wrote:
>
>> Damien, I think the "metadata-less" name is a bit wrong. I think you did
>> it correct.
>> The metadataless is that only SOME of the metadata is ignored, such as
>> "version" and I don't remember what else.
>> I am comparing the HEAD of your clone with mine and we seem to have the
>> same .filetree and .json so I think we are fine.
>>
>>
>>
>> On Wed, Jan 20, 2016 at 4:09 PM, Damien Pollet <damien.pollet(a)gmail.com>
>> wrote:
>>
>>> Hm. I saved code in a clone of Mariano's project, and a bunch of
>>> metadata files were created. Did I miss a step on configuring the repo so
>>> it's metadataless ?
>>>
>>> On 16 January 2016 at 15:18, Mariano Martinez Peck <
>>> marianopeck(a)gmail.com> wrote:
>>>
>>>> OK, thanks Thierry.
>>>>
>>>> BTW, thanks for all the help you have been giving me in the last weeks
>>>> and for your great GitFileTree :)
>>>>
>>>> On Sat, Jan 16, 2016 at 11:14 AM, Thierry Goubier <
>>>> thierry.goubier(a)gmail.com> wrote:
>>>>
>>>>> Le 16/01/2016 15:06, Mariano Martinez Peck a écrit :
>>>>>
>>>>>>
>>>>>>
>>>>>> On Sat, Jan 16, 2016 at 5:15 AM, Thierry Goubier
>>>>>> <thierry.goubier(a)gmail.com <mailto:thierry.goubier@gmail.com>> wrote:
>>>>>>
>>>>>> Le 16/01/2016 03:23, Mariano Martinez Peck a écrit :
>>>>>>
>>>>>> Hi guys,
>>>>>>
>>>>>> First, let me say that I found very cool that I can do a "git
>>>>>> checkout
>>>>>> X" from command line, and from Pharo, opening the MC browser
>>>>>> detects I
>>>>>> am in another branch and everything seems to work. So I guess
>>>>>> that's the
>>>>>> way I manage branches? Simply "git checkout X" and then go to
>>>>>> MC
>>>>>> , and
>>>>>> do a "load" of the last version of the repo? (or another
>>>>>> image,
>>>>>> whatever).
>>>>>>
>>>>>>
>>>>>> Yes, exactly.
>>>>>>
>>>>>>
>>>>>> OK.
>>>>>>
>>>>>>
>>>>>>
>>>>>> The problem is now with merging. Not necessary about the
>>>>>> metadata ( I
>>>>>> guess we have less metadata conflicts with Metadata-less
>>>>>> GitFileTree
>>>>>> right???) , but real code changes conflicts between branches.
>>>>>> How do you
>>>>>> manage this? You manage everything at Git level using git and
>>>>>> text editors?
>>>>>>
>>>>>>
>>>>>> yes, or with git gui tools, or with the github interface (if there
>>>>>> is no conflict). The only thing a bit problematic are the eventual
>>>>>> conflicts, but, in that metadata-less format, they are less
>>>>>> frequent
>>>>>> and easier to solve.
>>>>>>
>>>>>>
>>>>>> OK... but let me confirm... with metadata-less gitfiletree, would I
>>>>>> still benefit from
>>>>>> https://github.com/ThierryGoubier/GitFileTree-MergeDriver
>>>>>> to minimize conflicts?
>>>>>> Or that was when you were having filetree with metadata?
>>>>>>
>>>>>
>>>>> The merge driver does three things:
>>>>> - merge metadata version files
>>>>> - merge method properties json files
>>>>> - merge class definition json files (merge instances variables from
>>>>> both branches)
>>>>>
>>>>> Items one and two do not exist anymore in metadata-less format. Third
>>>>> one is not allways seen as a good thing.
>>>>>
>>>>> So the merge driver is rarely usefull in metadata-less mode.
>>>>>
>>>>> I cannot think how to do that from MC browser "Merge" because
>>>>>> MC
>>>>>> sees
>>>>>> only one repo associated to one current branch.
>>>>>>
>>>>>>
>>>>>> It is possible to do the merge in MC (think of merging your
>>>>>> current
>>>>>> working copy and the top of the branch) but they won't be recorded
>>>>>> in the git log as a merge.
>>>>>>
>>>>>>
>>>>>> OK. I prefer git to see it as a merge. But thanks anyway.
>>>>>>
>>>>>
>>>>> I understand and do the same. Moreover, git is better than MC in my
>>>>> opinion to do the merge properly.
>>>>>
>>>>> Thierry
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Mariano
>>>> http://marianopeck.wordpress.com
>>>>
>>>
>>>
>>>
>>> --
>>> Damien Pollet
>>> type less, do more [ | ] http://people.untyped.org/damien.pollet
>>>
>>
>>
>>
>> --
>> Mariano
>> http://marianopeck.wordpress.com
>>
>
>
>
> --
> Damien Pollet
> type less, do more [ | ] http://people.untyped.org/damien.pollet
>
--
Mariano
http://marianopeck.wordpress.com
Jan. 20, 2016
Re: [Pharo-dev] How do you normally merge Git branches with Metadata-less GitFileTree?
by Damien Pollet
So ? I put *.methodProperties in .gitignore ?
What about .gitattributes for the merge driver ?
On 20 January 2016 at 20:19, Mariano Martinez Peck <marianopeck(a)gmail.com>
wrote:
> Damien, I think the "metadata-less" name is a bit wrong. I think you did
> it correct.
> The metadataless is that only SOME of the metadata is ignored, such as
> "version" and I don't remember what else.
> I am comparing the HEAD of your clone with mine and we seem to have the
> same .filetree and .json so I think we are fine.
>
>
>
> On Wed, Jan 20, 2016 at 4:09 PM, Damien Pollet <damien.pollet(a)gmail.com>
> wrote:
>
>> Hm. I saved code in a clone of Mariano's project, and a bunch of metadata
>> files were created. Did I miss a step on configuring the repo so it's
>> metadataless ?
>>
>> On 16 January 2016 at 15:18, Mariano Martinez Peck <marianopeck(a)gmail.com
>> > wrote:
>>
>>> OK, thanks Thierry.
>>>
>>> BTW, thanks for all the help you have been giving me in the last weeks
>>> and for your great GitFileTree :)
>>>
>>> On Sat, Jan 16, 2016 at 11:14 AM, Thierry Goubier <
>>> thierry.goubier(a)gmail.com> wrote:
>>>
>>>> Le 16/01/2016 15:06, Mariano Martinez Peck a écrit :
>>>>
>>>>>
>>>>>
>>>>> On Sat, Jan 16, 2016 at 5:15 AM, Thierry Goubier
>>>>> <thierry.goubier(a)gmail.com <mailto:thierry.goubier@gmail.com>> wrote:
>>>>>
>>>>> Le 16/01/2016 03:23, Mariano Martinez Peck a écrit :
>>>>>
>>>>> Hi guys,
>>>>>
>>>>> First, let me say that I found very cool that I can do a "git
>>>>> checkout
>>>>> X" from command line, and from Pharo, opening the MC browser
>>>>> detects I
>>>>> am in another branch and everything seems to work. So I guess
>>>>> that's the
>>>>> way I manage branches? Simply "git checkout X" and then go to
>>>>> MC
>>>>> , and
>>>>> do a "load" of the last version of the repo? (or another
>>>>> image,
>>>>> whatever).
>>>>>
>>>>>
>>>>> Yes, exactly.
>>>>>
>>>>>
>>>>> OK.
>>>>>
>>>>>
>>>>>
>>>>> The problem is now with merging. Not necessary about the
>>>>> metadata ( I
>>>>> guess we have less metadata conflicts with Metadata-less
>>>>> GitFileTree
>>>>> right???) , but real code changes conflicts between branches.
>>>>> How do you
>>>>> manage this? You manage everything at Git level using git and
>>>>> text editors?
>>>>>
>>>>>
>>>>> yes, or with git gui tools, or with the github interface (if there
>>>>> is no conflict). The only thing a bit problematic are the eventual
>>>>> conflicts, but, in that metadata-less format, they are less
>>>>> frequent
>>>>> and easier to solve.
>>>>>
>>>>>
>>>>> OK... but let me confirm... with metadata-less gitfiletree, would I
>>>>> still benefit from
>>>>> https://github.com/ThierryGoubier/GitFileTree-MergeDriver
>>>>> to minimize conflicts?
>>>>> Or that was when you were having filetree with metadata?
>>>>>
>>>>
>>>> The merge driver does three things:
>>>> - merge metadata version files
>>>> - merge method properties json files
>>>> - merge class definition json files (merge instances variables from
>>>> both branches)
>>>>
>>>> Items one and two do not exist anymore in metadata-less format. Third
>>>> one is not allways seen as a good thing.
>>>>
>>>> So the merge driver is rarely usefull in metadata-less mode.
>>>>
>>>> I cannot think how to do that from MC browser "Merge" because MC
>>>>> sees
>>>>> only one repo associated to one current branch.
>>>>>
>>>>>
>>>>> It is possible to do the merge in MC (think of merging your current
>>>>> working copy and the top of the branch) but they won't be recorded
>>>>> in the git log as a merge.
>>>>>
>>>>>
>>>>> OK. I prefer git to see it as a merge. But thanks anyway.
>>>>>
>>>>
>>>> I understand and do the same. Moreover, git is better than MC in my
>>>> opinion to do the merge properly.
>>>>
>>>> Thierry
>>>>
>>>>
>>>
>>>
>>> --
>>> Mariano
>>> http://marianopeck.wordpress.com
>>>
>>
>>
>>
>> --
>> Damien Pollet
>> type less, do more [ | ] http://people.untyped.org/damien.pollet
>>
>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
--
Damien Pollet
type less, do more [ | ] http://people.untyped.org/damien.pollet
Jan. 20, 2016
Re: [Pharo-dev] How do you normally merge Git branches with Metadata-less GitFileTree?
by Mariano Martinez Peck
Damien, I think the "metadata-less" name is a bit wrong. I think you did it
correct.
The metadataless is that only SOME of the metadata is ignored, such as
"version" and I don't remember what else.
I am comparing the HEAD of your clone with mine and we seem to have the
same .filetree and .json so I think we are fine.
On Wed, Jan 20, 2016 at 4:09 PM, Damien Pollet <damien.pollet(a)gmail.com>
wrote:
> Hm. I saved code in a clone of Mariano's project, and a bunch of metadata
> files were created. Did I miss a step on configuring the repo so it's
> metadataless ?
>
> On 16 January 2016 at 15:18, Mariano Martinez Peck <marianopeck(a)gmail.com>
> wrote:
>
>> OK, thanks Thierry.
>>
>> BTW, thanks for all the help you have been giving me in the last weeks
>> and for your great GitFileTree :)
>>
>> On Sat, Jan 16, 2016 at 11:14 AM, Thierry Goubier <
>> thierry.goubier(a)gmail.com> wrote:
>>
>>> Le 16/01/2016 15:06, Mariano Martinez Peck a écrit :
>>>
>>>>
>>>>
>>>> On Sat, Jan 16, 2016 at 5:15 AM, Thierry Goubier
>>>> <thierry.goubier(a)gmail.com <mailto:thierry.goubier@gmail.com>> wrote:
>>>>
>>>> Le 16/01/2016 03:23, Mariano Martinez Peck a écrit :
>>>>
>>>> Hi guys,
>>>>
>>>> First, let me say that I found very cool that I can do a "git
>>>> checkout
>>>> X" from command line, and from Pharo, opening the MC browser
>>>> detects I
>>>> am in another branch and everything seems to work. So I guess
>>>> that's the
>>>> way I manage branches? Simply "git checkout X" and then go to MC
>>>> , and
>>>> do a "load" of the last version of the repo? (or another image,
>>>> whatever).
>>>>
>>>>
>>>> Yes, exactly.
>>>>
>>>>
>>>> OK.
>>>>
>>>>
>>>>
>>>> The problem is now with merging. Not necessary about the
>>>> metadata ( I
>>>> guess we have less metadata conflicts with Metadata-less
>>>> GitFileTree
>>>> right???) , but real code changes conflicts between branches.
>>>> How do you
>>>> manage this? You manage everything at Git level using git and
>>>> text editors?
>>>>
>>>>
>>>> yes, or with git gui tools, or with the github interface (if there
>>>> is no conflict). The only thing a bit problematic are the eventual
>>>> conflicts, but, in that metadata-less format, they are less frequent
>>>> and easier to solve.
>>>>
>>>>
>>>> OK... but let me confirm... with metadata-less gitfiletree, would I
>>>> still benefit from
>>>> https://github.com/ThierryGoubier/GitFileTree-MergeDriver
>>>> to minimize conflicts?
>>>> Or that was when you were having filetree with metadata?
>>>>
>>>
>>> The merge driver does three things:
>>> - merge metadata version files
>>> - merge method properties json files
>>> - merge class definition json files (merge instances variables from both
>>> branches)
>>>
>>> Items one and two do not exist anymore in metadata-less format. Third
>>> one is not allways seen as a good thing.
>>>
>>> So the merge driver is rarely usefull in metadata-less mode.
>>>
>>> I cannot think how to do that from MC browser "Merge" because MC
>>>> sees
>>>> only one repo associated to one current branch.
>>>>
>>>>
>>>> It is possible to do the merge in MC (think of merging your current
>>>> working copy and the top of the branch) but they won't be recorded
>>>> in the git log as a merge.
>>>>
>>>>
>>>> OK. I prefer git to see it as a merge. But thanks anyway.
>>>>
>>>
>>> I understand and do the same. Moreover, git is better than MC in my
>>> opinion to do the merge properly.
>>>
>>> Thierry
>>>
>>>
>>
>>
>> --
>> Mariano
>> http://marianopeck.wordpress.com
>>
>
>
>
> --
> Damien Pollet
> type less, do more [ | ] http://people.untyped.org/damien.pollet
>
--
Mariano
http://marianopeck.wordpress.com
Jan. 20, 2016
Re: [Pharo-dev] Pharo bootstrap
by Brad Selfridge
Has anyone looked at the VASmalltalk Envy Packager. It let's one decide
whether you want to package a headless or UI image. It then allows one to
define packaging instructions, that are saved with the new application),
that get fed into the packager. The instructions define prerequisite apps,
un-referenced methods, etc. When one defines a new application (package),
one can define prerequisite applications that have to be installed before
the current application is installed. This prerequisite chain is used in
loading the application from Envy and in packaging. Seems to work fairly
well. Doesn't take too long to package an app and give the developer pretty
fine control over the packaging and loading process.
-----
Brad Selfridge
--
View this message in context: http://forum.world.st/ANN-Pharo-bootstrap-tp4872633p4872989.html
Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
Jan. 20, 2016
Re: [Pharo-dev] How do you normally merge Git branches with Metadata-less GitFileTree?
by Damien Pollet
Hm. I saved code in a clone of Mariano's project, and a bunch of metadata
files were created. Did I miss a step on configuring the repo so it's
metadataless ?
On 16 January 2016 at 15:18, Mariano Martinez Peck <marianopeck(a)gmail.com>
wrote:
> OK, thanks Thierry.
>
> BTW, thanks for all the help you have been giving me in the last weeks and
> for your great GitFileTree :)
>
> On Sat, Jan 16, 2016 at 11:14 AM, Thierry Goubier <
> thierry.goubier(a)gmail.com> wrote:
>
>> Le 16/01/2016 15:06, Mariano Martinez Peck a écrit :
>>
>>>
>>>
>>> On Sat, Jan 16, 2016 at 5:15 AM, Thierry Goubier
>>> <thierry.goubier(a)gmail.com <mailto:thierry.goubier@gmail.com>> wrote:
>>>
>>> Le 16/01/2016 03:23, Mariano Martinez Peck a écrit :
>>>
>>> Hi guys,
>>>
>>> First, let me say that I found very cool that I can do a "git
>>> checkout
>>> X" from command line, and from Pharo, opening the MC browser
>>> detects I
>>> am in another branch and everything seems to work. So I guess
>>> that's the
>>> way I manage branches? Simply "git checkout X" and then go to MC
>>> , and
>>> do a "load" of the last version of the repo? (or another image,
>>> whatever).
>>>
>>>
>>> Yes, exactly.
>>>
>>>
>>> OK.
>>>
>>>
>>>
>>> The problem is now with merging. Not necessary about the
>>> metadata ( I
>>> guess we have less metadata conflicts with Metadata-less
>>> GitFileTree
>>> right???) , but real code changes conflicts between branches.
>>> How do you
>>> manage this? You manage everything at Git level using git and
>>> text editors?
>>>
>>>
>>> yes, or with git gui tools, or with the github interface (if there
>>> is no conflict). The only thing a bit problematic are the eventual
>>> conflicts, but, in that metadata-less format, they are less frequent
>>> and easier to solve.
>>>
>>>
>>> OK... but let me confirm... with metadata-less gitfiletree, would I
>>> still benefit from
>>> https://github.com/ThierryGoubier/GitFileTree-MergeDriver
>>> to minimize conflicts?
>>> Or that was when you were having filetree with metadata?
>>>
>>
>> The merge driver does three things:
>> - merge metadata version files
>> - merge method properties json files
>> - merge class definition json files (merge instances variables from both
>> branches)
>>
>> Items one and two do not exist anymore in metadata-less format. Third one
>> is not allways seen as a good thing.
>>
>> So the merge driver is rarely usefull in metadata-less mode.
>>
>> I cannot think how to do that from MC browser "Merge" because MC
>>> sees
>>> only one repo associated to one current branch.
>>>
>>>
>>> It is possible to do the merge in MC (think of merging your current
>>> working copy and the top of the branch) but they won't be recorded
>>> in the git log as a merge.
>>>
>>>
>>> OK. I prefer git to see it as a merge. But thanks anyway.
>>>
>>
>> I understand and do the same. Moreover, git is better than MC in my
>> opinion to do the merge properly.
>>
>> Thierry
>>
>>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
--
Damien Pollet
type less, do more [ | ] http://people.untyped.org/damien.pollet
Jan. 20, 2016
Re: [Pharo-dev] Pharo bootstrap
by Craig Latta
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.
> 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. 20, 2016
Re: [Pharo-dev] Rubric: spotter with preview leaks some memory
by Nicolai Hess
2016-01-20 14:47 GMT+01:00 Andrei Chis <chisvasileandrei(a)gmail.com>:
> Tried it in the last latest image and if I execute before #garbageCollect
> I just get 4 instances.
>
> Smalltalk garbageCollect.
> RubTextLine allInstances size "4"
>
> Now indeed if I browse the same class in nautilus I get a much smaller
> number of RubTextLine instances
>
I opened a bugreport
17437
<https://pharo.fogbugz.com/f/cases/17437/Rubric-spotter-with-preview-leaks-s…>
Rubric: spotter with preview leaks some memory
>
> On Wed, Jan 20, 2016 at 2:32 PM, Nicolai Hess <nicolaihess(a)gmail.com>
> wrote:
>
>> Open fresh image 50536
>> Open Spotter,
>> enable preview (cmd+p)
>> search for EllipseMorph
>> dive in instance-methods
>> scroll through the list one item after another.
>>
>> open playground
>> evaluate
>> RubTextLine allInstances size. "553896"
>>
>>
>> case 17421 is related to this, but does not fully solves this.
>> please review and comment on that fix,
>> so we can integrate this soon.
>>
>> The problem sometimes remains even with this fix. The memory
>> (instance count of RubTextLine) just grows in the background
>>
>
>
Jan. 20, 2016
Re: [Pharo-dev] [ANN] Pharo bootstrap
by phil@highoctane.be
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.
Currently, the image is the result of an evolutionary process and
rebuilding it from zero was not possible.
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. 20, 2016
Re: [Pharo-dev] [ANN][Invite] Pharo Sprint 29 Jan
by Marcus Denker
> On 20 Jan 2016, at 16:37, marcus.denker(a)inria.fr wrote:
>
>
> We will organize a Pharo sprint / Moose dojo Friday, 11th September, starting at
This is Friday, 29 Jan (next week).
> 10:00am. (Local Time Lille).
>
> It will be at the Inria Lille, Building B, third floor (RMoD offices) and
> at the University of Chile, Santiago de Chile.
>
> Remotely, you can join us on Slack or the IRC channel #pharo on
> irc.freenode.net server. During the sprint, we will try to synchronize
> local and remote Pharo sprinters.
>
> As the building is not open to the public, please contact us before if
> you plan to come.
Jan. 20, 2016
[ANN][Invite] Pharo Sprint 29 Jan
by marcus.denker@inria.fr
We will organize a Pharo sprint / Moose dojo Friday, 11th September, starting at
10:00am. (Local Time Lille).
It will be at the Inria Lille, Building B, third floor (RMoD offices) and
at the University of Chile, Santiago de Chile.
Remotely, you can join us on Slack or the IRC channel #pharo on
irc.freenode.net server. During the sprint, we will try to synchronize
local and remote Pharo sprinters.
As the building is not open to the public, please contact us before if
you plan to come.
Jan. 20, 2016