Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
January 2015
- 1046 messages
Re: [Pharo-dev] Any way to avoid the filmification effect in GTInspector?
by Sven Van Caekenberghe
> On 28 Jan 2015, at 08:33, Hernán Morales Durand <hernan.morales(a)gmail.com> wrote:
>
>
>
> 2015-01-27 5:11 GMT-03:00 Tudor Girba <tudor(a)tudorgirba.com>:
> Hi Hernan,
>
> GTInspector was built to be extensible without any subclassing :).
>
> The GTObjectVariablesBrowser shows the raw view and you probably do not want to mess with that. Rather than that you should create a new tab for your own class.
>
> The way you extend it for a specific class is by defining a method like this:
>
> MyClass>>gtInspectorCustomListIn: composite
> <gtInspectorPresentationOrder: 10>
> composite list
> title: 'My list'
> display: [ self list]
>
> If you want to see all inspector extensions available in the image take a look at the following post:
> http://www.humane-assessment.com/blog/managing-gtinspector-extensions
>
> Nice!
> So it would be:
>
> gtInspectorCustomListIn: composite
> <gtInspectorPresentationOrder: 10>
>
> composite list
> title: 'My list';
> display: [ self container ];
> selectionAct: [ self actionForA ] on: $A entitled: 'Menu Item A';
> selectionAct: [ self actionForB ] on: $B entitled: 'Menu Item B'.
>
> It is possible to remove the "Raw" and "Meta" tabs?
Why ? The whole idea is to have multiple views.
If you have a homogeneous list on the left and select one tab on the right, moving up and down the list should keep the same tab selected, even if it is not the highest priority one.
>
> Does it help?
>
> Doru
>
> On Tue, Jan 27, 2015 at 8:52 AM, Hernán Morales Durand <hernan.morales(a)gmail.com> wrote:
>
>
> 2015-01-27 3:41 GMT-03:00 Tudor Girba <tudor(a)tudorgirba.com>:
> Hi,
>
> On Mon, Jan 26, 2015 at 11:58 PM, Hernán Morales Durand <hernan.morales(a)gmail.com> wrote:
>
>
> 2015-01-26 6:25 GMT-03:00 Tudor Girba <tudor(a)tudorgirba.com>:
> Hi,
>
> On Mon, Jan 26, 2015 at 10:18 AM, Hernán Morales Durand <hernan.morales(a)gmail.com> wrote:
>
> 2015-01-26 5:54 GMT-03:00 Tudor Girba <tudor(a)tudorgirba.com>:
> There is no way at the moment.
>
> Just out of curiosity, why do you need to select an item if you do not want to see the details?
>
>
> This is for two reasons
>
> 1) I have items with big strings inside and it takes too long to load in the new inspector sub-window.
>
> Why should it take too long? Is it because printString is too expensive? In that case, perhaps you might want to make printString cheaper and offer a separate presentation for your object that shows the full contents.
>
>
> I don't know, I have this 7.7Mb XML file, opened the Time Profiler with:
>
> 'DLoop_Bovino_31-10-14-Alignment.xml' asFileReference contents inspect.
>
> it took almost 6 minutes to open the inspector.
>
> Here is the link to the file: https://www.dropbox.com/s/pzw88gg3wyfkf8o/DLoop_Bovino_31-10-14-Alignment.z…
> Here is the full report
>
> - 350675 tallies, 359630 msec.
>
> Hmm, Something is strange. I open the inspector on the same file in 1192 ms. It takes so long because the first presentation is a text presentation of the contents of that file. What image do you use? Is it possible that you have extra . Could you make it available?
>
>
> I am using #40463 in Windows 8.1 x64. This is how I download the image
>
> $ wget -O- get.pharo.org/40+vm | bash
>
> image link with test file: https://www.dropbox.com/s/57hprg7cyryd9cs/testGT1.zip?dl=0
>
>
> Could you (or anyone) reproduce the case?
> The dropbox upload is vanilla image.
>
>
>
>
> 2) I select the item to send a message to it, or bring a pop-up menu to remove the item (I have implemented it in the old inspector and I would like to port it to Pharo 4)
>
> This implies that you actually need a custom presentation. For such a custom presentation you can suppress the propagation of selection. If you tell me your use case in more details I can try to guide you.
>
>
> My use case is I want to add or remove items from an Inspector/Explorer.
> The items are classified objects and the user curates false positives.
> Another item I used to have is "Serialize" the inspector contents (or from a specific item) so that one could import the curated data set and review.
>
> Do you mean items from collections in general, or items stored as a collection in a specific object? If you mean the latter, you can create a custom presentation just for that object and add all the actions you want. Do you want to give it a try? If yes, let me know the more specific use case and I can help :)
>
>
> I would be glad to get some help :)
> I tried subclassing GTInspector. I see you implemented menu items in GTObjectVariablesBrowser.
> So question is how could I implement my own "GTObjectVariablesBrowser" and link to GTInspector subclass?
> Thank you Doru.
>
>
> Hernán
>
>
> Doru
>
>
> --
> www.tudorgirba.com
>
> "Every thing has its own flow"
>
>
>
>
> --
> www.tudorgirba.com
>
> "Every thing has its own flow"
Jan. 28, 2015
Re: [Pharo-dev] Any way to avoid the filmification effect in GTInspector?
by Hernán Morales Durand
2015-01-27 5:11 GMT-03:00 Tudor Girba <tudor(a)tudorgirba.com>:
> Hi Hernan,
>
> GTInspector was built to be extensible without any subclassing :).
>
> The GTObjectVariablesBrowser shows the raw view and you probably do not
> want to mess with that. Rather than that you should create a new tab for
> your own class.
>
> The way you extend it for a specific class is by defining a method like
> this:
>
> MyClass>>gtInspectorCustomListIn: composite
> <gtInspectorPresentationOrder: 10>
> composite list
> title: 'My list'
> display: [ self list]
>
> If you want to see all inspector extensions available in the image take a
> look at the following post:
> http://www.humane-assessment.com/blog/managing-gtinspector-extensions
>
Nice!
So it would be:
gtInspectorCustomListIn: composite
<gtInspectorPresentationOrder: 10>
composite list
title: 'My list';
display: [ self container ];
selectionAct: [ self actionForA ] on: $A entitled: 'Menu Item A';
selectionAct: [ self actionForB ] on: $B entitled: 'Menu Item B'.
It is possible to remove the "Raw" and "Meta" tabs?
> Does it help?
>
> Doru
>
> On Tue, Jan 27, 2015 at 8:52 AM, Hernán Morales Durand <
> hernan.morales(a)gmail.com> wrote:
>
>>
>>
>> 2015-01-27 3:41 GMT-03:00 Tudor Girba <tudor(a)tudorgirba.com>:
>>
>>> Hi,
>>>
>>> On Mon, Jan 26, 2015 at 11:58 PM, Hernán Morales Durand <
>>> hernan.morales(a)gmail.com> wrote:
>>>
>>>>
>>>>
>>>> 2015-01-26 6:25 GMT-03:00 Tudor Girba <tudor(a)tudorgirba.com>:
>>>>
>>>>> Hi,
>>>>>
>>>>> On Mon, Jan 26, 2015 at 10:18 AM, Hernán Morales Durand <
>>>>> hernan.morales(a)gmail.com> wrote:
>>>>>
>>>>>>
>>>>>> 2015-01-26 5:54 GMT-03:00 Tudor Girba <tudor(a)tudorgirba.com>:
>>>>>>
>>>>>>> There is no way at the moment.
>>>>>>>
>>>>>>> Just out of curiosity, why do you need to select an item if you do
>>>>>>> not want to see the details?
>>>>>>>
>>>>>>>
>>>>>> This is for two reasons
>>>>>>
>>>>>> 1) I have items with big strings inside and it takes too long to load
>>>>>> in the new inspector sub-window.
>>>>>>
>>>>>
>>>>> Why should it take too long? Is it because printString is too
>>>>> expensive? In that case, perhaps you might want to make printString cheaper
>>>>> and offer a separate presentation for your object that shows the full
>>>>> contents.
>>>>>
>>>>>
>>>> I don't know, I have this 7.7Mb XML file, opened the Time Profiler with:
>>>>
>>>> 'DLoop_Bovino_31-10-14-Alignment.xml' asFileReference contents inspect.
>>>>
>>>> it took almost 6 minutes to open the inspector.
>>>>
>>>> Here is the link to the file:
>>>> https://www.dropbox.com/s/pzw88gg3wyfkf8o/DLoop_Bovino_31-10-14-Alignment.z…
>>>> Here is the full report
>>>>
>>>> - 350675 tallies, 359630 msec.
>>>>
>>>
>>> Hmm, Something is strange. I open the inspector on the same file in 1192
>>> ms. It takes so long because the first presentation is a text presentation
>>> of the contents of that file. What image do you use? Is it possible that
>>> you have extra . Could you make it available?
>>>
>>>
>>
>> I am using #40463 in Windows 8.1 x64. This is how I download the image
>>
>> $ wget -O- get.pharo.org/40+vm | bash
>>
>> image link with test file:
>> https://www.dropbox.com/s/57hprg7cyryd9cs/testGT1.zip?dl=0
>>
>>
>
Could you (or anyone) reproduce the case?
The dropbox upload is vanilla image.
>
>>>
>>>> 2) I select the item to send a message to it, or bring a pop-up menu to
>>>>>> remove the item (I have implemented it in the old inspector and I would
>>>>>> like to port it to Pharo 4)
>>>>>>
>>>>>
>>>>> This implies that you actually need a custom presentation. For such a
>>>>> custom presentation you can suppress the propagation of selection. If you
>>>>> tell me your use case in more details I can try to guide you.
>>>>>
>>>>>
>>>> My use case is I want to add or remove items from an Inspector/Explorer.
>>>> The items are classified objects and the user curates false positives.
>>>> Another item I used to have is "Serialize" the inspector contents (or
>>>> from a specific item) so that one could import the curated data set and
>>>> review.
>>>>
>>>
>>> Do you mean items from collections in general, or items stored as a
>>> collection in a specific object? If you mean the latter, you can create a
>>> custom presentation just for that object and add all the actions you want.
>>> Do you want to give it a try? If yes, let me know the more specific use
>>> case and I can help :)
>>>
>>>
>> I would be glad to get some help :)
>> I tried subclassing GTInspector. I see you implemented menu items in
>> GTObjectVariablesBrowser.
>> So question is how could I implement my own "GTObjectVariablesBrowser"
>> and link to GTInspector subclass?
>> Thank you Doru.
>>
>>
>> Hernán
>>
>>
>>
>>> Doru
>>>
>>>
>>> --
>>> www.tudorgirba.com
>>>
>>> "Every thing has its own flow"
>>>
>>
>>
>
>
> --
> www.tudorgirba.com
>
> "Every thing has its own flow"
>
Jan. 28, 2015
Re: [Pharo-dev] Metacello: Possible to detect updates in a Github repo ?
by Dale Henrichs
On 01/27/2015 10:58 AM, kilon alios wrote:
> I was wondering how possible it is to check a github repo for new
> commits and compare it with the existing code to based on the Baseline
> loading of a Github repo to Pharo. Is it possible ?
Yes, I think there are a couple of different ways to skin that cat. The
logic in MCGitBasedNetworkRepository
class>>projectDirectoryFrom:version: could be picked apart to determine
if a new download is available, but it relies on downloading and
partially unpacking the zip file for the given target, which is pretty
heavy weight ...
For notifications I would be inclined to look at the github/bitbucket
web api and see what can be done. Someday I plan to look into this, but
haven't done the due diligence yet.
>
> I want to make an updater for my project that will pop up a dialog to
> alert the user for new updates in my Github repo.
>
> Does a Baseline have access to git commits and their time/date
> signature ?
The registry records the `repositoryVersionString` of the loaded
baseline which is the SHA of the commit for a filetree/git repo. For the
MCGitBasedNetworkRepository, the `repositoryVersionString` is based on
the unique identifier for the download, which is not always a commit SHA
... for tags, I think that the identifier is the SHA of the tag ...
Timestamp is not always useful since it is the relationship of commits
on a branch that is important for comparison purposes ...
At then end of the day, though, I think that these issues can be
addressed a nice little updater tool can be built ... I will be
interested to see what you've done, if you get there first:)
>
> By the way Dale forgot to reply previously that I am definetly
> checking out git tags as you suggested.
Cool,
Dale
Jan. 27, 2015
Athens BitBlt bug?
by Nicolai Hess
Anyone knows what this BitBlt bug is or was?
12818 <https://pharo.fogbugz.com/default.asp?12818> Last row missing
13236 <https://pharo.fogbugz.com/default.asp?13236> Fix 1 extra height for
Cairo surface
Because with the fix in 13236, it is not (easily) possible to make
a repeating (vertical) pattern paint with 1 pixel height:
14813 <https://pharo.fogbugz.com/default.asp?14813> Wrong size for Athens
surface pattern paint from a Form
nicolai
Jan. 27, 2015
Re: [Pharo-dev] [Ann] a short Bloc demo
by Nicolai Hess
2014-12-24 15:19 GMT+01:00 Alain Plantec <alain.plantec(a)yahoo.com>:
> Hello all,
>
> Iâve just uploaded a small demo of Bloc.
> http://vimeo.com/115336678
>
>
> Cheers
> Alain
>
>
You are interested in more feedback, right? :)
A normal TextMorph in the bloc world, sometimes, shows some artefacts
outside of its bounds.
For example, open a Workspace and type
EllipseMorph new
and wait for NECMenuMorph to appear.
It shows some suggesionts for "new" and hightlights the "new" part in the
text.
For some lines, this highlight is outside of the NECMenuMorph.
And this is strange, because this Morph is actually an ordinary Morph and
not one of the new
BlMorphs
nicolai
Jan. 27, 2015
Re: [Pharo-dev] [Ann] a short Bloc demo
by Nicolai Hess
2015-01-27 8:47 GMT+01:00 Nicolai Hess <nicolaihess(a)web.de>:
> I tried another windows 7 machine and it is working now. Except the
> keyboard input, but bloc world now has the full display screen extent.
>
It works now on both windows machines (?!). The SDL-Window still opens
(only partly on the screen) but the bloc world is fully visible.
And the keyboard input works, as soon as I disabled:
self setupEventLoop
in
OSSDL2Driver>>#initialize.
>
> 2015-01-26 23:52 GMT+01:00 Alain Plantec <alain.plantec(a)yahoo.com>:
>
>> Hello Nicolai,
>> Iâve not tested in w7.
>> Iâve just tried in Windows 8.1.
>> It works outofthebox here.
>> Cheers
>> Alain
>>
>>
>> Le 25 janv. 2015 à 16:40, Nicolai Hess <nicolaihess(a)web.de> a écrit :
>>
>> 2014-12-26 15:39 GMT+01:00 Alain Plantec <alain.plantec(a)yahoo.com>:
>>
>>>
>>>
>>> Why does it open another window? (see screenshot, the left pharo windows
>>> opens after switching
>>> to bloc world. Only the right window acts to mouse and keyboard
>>> (cmd+enter). The left window
>>> looks like a "mirror", just shows what happens in the right window.
>>>
>>>
>>> ah, Iâve never tested it in windows. It should not open another window.
>>> Maybe itâs because of OSWindow
>>> that is used for the vm rendering.
>>> I will have a look. maybe have to not use OSWindow.
>>>
>>
>> I tried it again in windows , (both loadDevelopment and
>> loadBleedingEdget).
>> This time the bloc world only opens in the upper left corner extent ~
>> 100@50.
>> I can open a world menu in this area :) , but I can not make it larger.
>> And after some time, it crashes the vm. And it still opens another
>> (native)window.
>> (on pharo 40459 latest vm (Win32 built on Jan 22 2015 01:03:55 Compiler:
>> 4.6.2))
>>
>>
>>
>>
>>> Thanks
>>> Alain
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>>
>>>> On 25 Dec 2014, at 20:57, Nicolai Hess <nicolaihess(a)web.de> wrote:
>>>>
>>>> I tried both, loadDevelopment and loadBleedingEdget, but
>>>> I can not get it to work like in the video.
>>>> For me, the keyboard input stop working as soon as I start the bloc
>>>> world.
>>>> And for me it opens another window in the background, what is it for?
>>>>
>>>> BTW how many developers working on bloc, just you two ?
>>>>
>>>> nicolai
>>>>
>>>>
>>>>
>>>> 2014-12-25 10:31 GMT+01:00 stepharo <stepharo(a)free.fr>:
>>>>
>>>>>
>>>>> Le 25/12/14 03:04, Ben Coman a écrit :
>>>>>
>>>>>> Really nice to see your progress. Now do you have some sketches that
>>>>>> show how it relates to the components of the existing Morphic? What is
>>>>>> being disposed of, what reimplemented, what ported?
>>>>>>
>>>>>
>>>>> I'm writing class comments and soon a chapter. But it takes time
>>>>> because I have to also do a bit of reverse engineering.
>>>>> Now Bloc does not relate to Morphic :) Everything is rewritten from
>>>>> scratch and we will rewrite everything.
>>>>> We will try to reuse Spec.
>>>>> Now for default Morphic, rewritting all the morphs to use Athens
>>>>> is a huge tasks considered the current logic of certain morphic
>>>>> elements
>>>>> Since Bloc is fully athens-based, it may be better to only work on
>>>>> Bloc.
>>>>> Now the trick is that we can use the morphic elements.
>>>>>
>>>>>> This would really help to understand where contributions might be
>>>>>> useful.
>>>>>>
>>>>>>
>>>>>> btw, with Build 40419, "ConfigurationOfBloc load" warns that
>>>>>> it depends on BlEllipseShape which must be resolved before #drawOn:
>>>>>> and #drawOnAthensCanvas: can be resolved.
>>>>>>
>>>>>
>>>>> Yes this is normal, you should load bleedingEdge.
>>>>>
>>>>>
>>>>>> "ConfigurationOfBlock loadDevelopment" works fine.
>>>>>>
>>>>>> cheer -ben
>>>>>>
>>>>>> Sven Van Caekenberghe wrote:
>>>>>>
>>>>>>> Yes, a nice X-Mas present !
>>>>>>>
>>>>>>> On 24 Dec 2014, at 15:41, Alexandre Bergel <alexandre.bergel(a)me.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Wow! Impressive!!!
>>>>>>>>
>>>>>>>> Alexandre
>>>>>>>>
>>>>>>>>
>>>>>>>> On Dec 24, 2014, at 3:19 PM, Alain Plantec <
>>>>>>>>> alain.plantec(a)yahoo.com> wrote:
>>>>>>>>>
>>>>>>>>> Hello all,
>>>>>>>>>
>>>>>>>>> Iâve just uploaded a small demo of Bloc.
>>>>>>>>> http://vimeo.com/115336678
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Cheers
>>>>>>>>> Alain
>>>>>>>>>
>>>>>>>>> --
>>>>>>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>>>>>>>> Alexandre Bergel http://www.bergel.eu
>>>>>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>> <pharo_bloc.png>
>>>
>>>
>>>
>>
>>
>
Jan. 27, 2015
Metacello: Possible to detect updates in a Github repo ?
by kilon alios
I was wondering how possible it is to check a github repo for new commits
and compare it with the existing code to based on the Baseline loading of a
Github repo to Pharo. Is it possible ?
I want to make an updater for my project that will pop up a dialog to alert
the user for new updates in my Github repo.
Does a Baseline have access to git commits and their time/date signature ?
By the way Dale forgot to reply previously that I am definetly checking out
git tags as you suggested.
Jan. 27, 2015
Re: [Pharo-dev] Issue 12970 - 16 steps to get through #halt - PROPOSED FIX
by Ben Coman
I poked around and found another possible solution uploaded as
SLICE-Issue-12970-16-steps-to-get-through-halt-BenComan.2. However this
based on my microscope view of tracing in from a #halt in the <Step Over>
button. This is the first time I've looked at this and I don't grasp the
the high level architecture. Can someone help polish it?
The essential modification is the added line marked "--->" below, plus
there is a scattering of <debuggerCompleteToSender> pragmas spread through
methods of Halt and Object. I chose to use a pragma since I wanted to
cover a broader range of methods than just #halt (e.g. like
Halt>>signalerContext)
and there seemed no common convention between methods in Halt and Object.
Hopefully the pragma provides flexibility for later expansion - but I'm not
sure about the pragma name I chose.
Process>>complete: aContext
"Run self until aContext is popped or an unhandled error is raised. Return
self's new top context, unless an unhandled error was raised then return
the signaler context (rather than open a debugger)."
| ctxt pair error |
ctxt := suspendedContext.
suspendedContext := nil. "disable this process while running its stack in
active process below"
pair := Processor activeProcess
evaluate: [ctxt runUntilErrorOrReturnFrom: aContext]
onBehalfOf: self.
suspendedContext := pair first.
error := pair second.
"--->" error class = Halt ifTrue: [ aContext methodNode pragmaNamed:
#debuggerCompleteToSender ifPresent: [ ^ self completeTo: aContext sender ]
].
error ifNotNil: [^ error signalerContext].
^ suspendedContext
Here is my test script to compare before and after the slice. Debug it
from Playground then <Step Over> each line.
a := 1.
Halt now.
b := 2.
Halt enableHaltOnce.
Halt once.
c := 3.
self halt.
d := 4.
Halt enableHaltOnce.
self haltOnce.
self inform: (a + b + c + d) printString.
Now if you execute the above script normally, and <Proceed> at each
breakpoint, you will find the the #haltOnce leaves you in the wrong
position, on level too deep. The can be fixed by adding "or: [ (context
method selector = #haltOnce) ]" to Halt>>signalerContext, but then what
about the other breakpoint statements like Object>>haltIf:. I wonder
if Halt>>signalerContext
might leverage the pragmas I added.
The slice is tested to work with nested halts per the following example.
Execute "BenPlay new outer" and it will stop at the first #halt, then the
second #halt can be stepped over, but stepping over #inner breaks at the
#halt inside #inner.
BenPlay>>outer
| a b c | a := 1. self halt. b := 2. self halt. self inner. c := 3.
self inform: (a + b + c ) printString.
BenPlay>>inner
| a b |
a := 10.
self halt.
b := 20.
self inform: (a + b) printString.
cheers -ben
On Tue, Jan 27, 2015 at 11:14 PM, Ben Coman <btc(a)openinworld.com> wrote:
> Just notice, I have another solution under development.
>
> On Tue, Jan 27, 2015 at 9:55 PM, Ben Coman <btc(a)openinworld.com> wrote:
>
>> @Sean, In what way will it make halts more annoying? As far as I can
>> tell, it eliminates FIVE mouse-clicks from #halt, and #haltOnce behaviour
>> is unchanged.
>>
>> Now ideally the debugger should not step into the halt at all when you
>> <Step Over> - but this change eliminates FIVE mouse-clicks from #halt,
>> making #halt behave the same as #haltOnce. I can live with that. Lets
>> do the simple thing first (the ticket has been open 11 months), and leave
>> the potentially harder thing to make it right later on - unless of course
>> this creates other problems.
>>
>> On Mon, Jan 26, 2015 at 5:25 PM, Nicolai Hess <nicolaihess(a)web.de> wrote:
>>
>>>
>>>
>>> 2015-01-25 0:22 GMT+01:00 Sean P. DeNigris <sean(a)clipperadams.com>:
>>>
>>>> Ben Coman wrote
>>>> > Anyone see a problem with removing
>>>> > that last condition?
>>>>
>>>> Off the top of my head... Yes that doesn't seem like a good idea. You
>>>> don't
>>>> want to find yourself inside Halt. You want to be in your code.
>>>
>>>
>>> But isn't it already like that in case of #haltOnce ?
>>>
>>>
>>>
>>>
>>>> Although the
>>>> change makes this weird exceptional-sounding case better, it looks like
>>>> a
>>>> hack that will make halts more annoying in general. The question is why
>>>> you
>>>> end up deeply buried in the internals of Halt and how to prevent that in
>>>> this odd case.
>>>>
>>>>
>>>>
>>>> -----
>>>> Cheers,
>>>> Sean
>>>> --
>>>> View this message in context:
>>>> http://forum.world.st/Issue-12970-16-steps-to-get-through-halt-PROPOSED-FIX…
>>>> Sent from the Pharo Smalltalk Developers mailing list archive at
>>>> Nabble.com.
>>>>
>>>>
>>>
>>
>
Jan. 27, 2015
Re: [Pharo-dev] Why this hangs the VM?
by Eliot Miranda
If one can create a behavior that doesn't inherit anything (superclass nil) and doesn't have a method dictionary then there will be an infinite recursion in the class faulting code (the code that uses image segments to external use methods). Every attempt to interact with the nil behaviour results in more of the same.
Eliot (phone)
On Jan 27, 2015, at 2:13 AM, Craig Latta <craig(a)netjam.org> wrote:
>
>> Fixed in the Spur VM.
>
> What was the problem? (I have no time to look at it.)
>
>
> thanks,
>
> -C
>
> --
> Craig Latta
> netjam.org
> +31 6 2757 7177 (SMS ok)
> + 1 415 287 3547 (no SMS)
>
>
Jan. 27, 2015
[pharo-project/pharo-core] 953f56: 40466
by GitHub
Branch: refs/heads/4.0
Home: https://github.com/pharo-project/pharo-core
Commit: 953f563ba916fd9bb2f2a02fddad33732cad27e4
https://github.com/pharo-project/pharo-core/commit/953f563ba916fd9bb2f2a02f…
Author: Jenkins Build Server <board(a)pharo-project.org>
Date: 2015-01-27 (Tue, 27 Jan 2015)
Changed paths:
A Compiler.package/EncoderForSistaV1.class/class/bytecode decoding/isAlternateBytecodeSet.st
M Compiler.package/EncoderForSistaV1.class/instance/bytecode generation/genPushLiteral_.st
A Compiler.package/EncoderForV3PlusClosures.class/class/bytecode decoding/isAlternateBytecodeSet.st
M Kernel.package/CompiledMethod.class/instance/accessing/numLiterals.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/README.md
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/class/initialize/initialize.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/class/initialize/initializeSpecialSelectors.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/class/initialize/specialSelectorsArray.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/definition.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/accessing/additionalLiterals_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/accessing/forceLongForm_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/accessing/numArgs.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/accessing/numArgs_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/accessing/numTemps.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/accessing/numTemps_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/accessing/properties.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/accessing/properties_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/error handling/encodingError_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/error handling/jumpTooBig_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/error handling/tooManyVars_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/initialization/initialize.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/instructions/goto_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/instructions/if_goto_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/instructions/if_goto_otherwise_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/instructions/label_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/instructions/pushClosureCopyNumCopiedValues_numArgs_to_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/instructions/pushNClosureTemps_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/mapping/mapBytesTo_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/private/addLastLiteral_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/private/addLiteral_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/private/addPragma_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/private/from_goto_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/private/from_if_goto_otherwise_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/private/newDummySeqId.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/private/nextPut_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/private/pragmas_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/private/saveLastJump_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/private/updateJumpOffsets.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/private/updateJump_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/results/addProperties_.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/results/bytecodes.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/results/compiledMethod.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/results/literals.st
R OpalCompiler-Core.package/IRAbstractBytecodeGenerator.class/instance/results/stackFrameSize.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/README.md
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/class/initialize/bytecodeTableFrom_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/class/initialize/initializeBytecodeTable.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/class/initialize/initializeSpecialConstants.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/class/initialize/specialConstants.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/definition.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/blockReturnTop.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/popTop.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/pushConsArray_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/pushDup.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/pushInstVar_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/pushLiteralVariable_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/pushLiteral_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/pushNewArray_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/pushReceiver.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/pushRemoteTemp_inVectorAt_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/pushTemp_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/pushThisContext.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/returnConstant_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/returnInstVar_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/returnReceiver.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/returnTop.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/send_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/send_toSuperOf_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/storeInstVar_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/storeIntoLiteralVariable_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/storePopInstVar_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/storePopIntoLiteralVariable_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/storePopRemoteTemp_inVectorAt_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/storePopTemp_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/storeRemoteTemp_inVectorAt_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/storeTemp_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/private/closureFrom_to_copyNumCopiedValues_numArgs_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/private/jumpBackward_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/private/jumpForward_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/private/jump_if_.st
R OpalCompiler-Core.package/IRAbstractSqueakV3PlusClosuresBytecodeGenerator.class/instance/results/quickMethodPrim.st
M OpalCompiler-Core.package/IRBytecodeGenerator.class/instance/private/quickMethodPrim.st
M OpalCompiler-Core.package/IRBytecodeGenerator.class/instance/results/compiledMethodWith_.st
A OpalCompiler-Core.package/IRBytecodeGenerator.class/instance/results/compiledMethodWith_header_literals_.st
A OpalCompiler-Core.package/IRBytecodeGenerator.class/instance/results/endPrimNumber.st
A OpalCompiler-Core.package/IRBytecodeGenerator.class/instance/results/hasPrimitive.st
A OpalCompiler-Core.package/IRBytecodeGenerator.class/instance/results/spurVMHeader_.st
A OpalCompiler-Core.package/IRBytecodeGenerator.class/instance/results/v3VMHeader_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/README.md
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/class/initialize/bytecodeTableFrom_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/class/initialize/initializeBytecodeTable.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/class/initialize/initializeSpecialConstants.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/class/initialize/specialConstants.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/definition.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/accessing/hasPrimitive.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/extensions/pushExtA_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/extensions/pushExtB_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/extensions/pushExtension_byte_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/initialize/initialize.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/initialize/irPrimitive_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/blockReturnTop.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/popTop.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/pushConsArray_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/pushDup.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/pushInstVar_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/pushLiteralVariable_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/pushLiteral_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/pushNewArray_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/pushReceiver.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/pushRemoteTemp_inVectorAt_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/pushTemp_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/pushThisContext.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/returnInstVar_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/returnReceiver.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/returnTop.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/send_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/send_toSuperOf_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/storeInstVar_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/storeIntoLiteralVariable_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/storePopInstVar_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/storePopIntoLiteralVariable_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/storePopRemoteTemp_inVectorAt_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/storePopTemp_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/storeRemoteTemp_inVectorAt_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/instructions/storeTemp_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/new instructions/pushCharacter_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/new instructions/pushNClosureTemps_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/new instructions/pushSmallFloat_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/new instructions/pushSmallInteger_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/new instructions/pushThisProcess.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/private/closureFrom_to_copyNumCopiedValues_numArgs_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/private/jumpBackward_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/private/jumpForward_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/private/jump_if_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/results/compiledMethodWith_.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/results/quickMethodPrim.st
R OpalCompiler-Core.package/IRSistaV1BytecodeGenerator.class/instance/results/quickPrimIndex.st
R OpalCompiler-Core.package/IRSpurSqueakV3PlusClosuresBytecodeGenerator.class/README.md
R OpalCompiler-Core.package/IRSpurSqueakV3PlusClosuresBytecodeGenerator.class/definition.st
R OpalCompiler-Core.package/IRSpurSqueakV3PlusClosuresBytecodeGenerator.class/instance/accessing/hasPrimitive.st
R OpalCompiler-Core.package/IRSpurSqueakV3PlusClosuresBytecodeGenerator.class/instance/initialize/initialize.st
R OpalCompiler-Core.package/IRSpurSqueakV3PlusClosuresBytecodeGenerator.class/instance/initialize/irPrimitive_.st
R OpalCompiler-Core.package/IRSpurSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/checkTooManyLiterals_.st
R OpalCompiler-Core.package/IRSpurSqueakV3PlusClosuresBytecodeGenerator.class/instance/results/compiledMethodWith_.st
R OpalCompiler-Core.package/IRSqueakV3PlusClosuresBytecodeGenerator.class/README.md
R OpalCompiler-Core.package/IRSqueakV3PlusClosuresBytecodeGenerator.class/definition.st
R OpalCompiler-Core.package/IRSqueakV3PlusClosuresBytecodeGenerator.class/instance/accessing/primNum.st
R OpalCompiler-Core.package/IRSqueakV3PlusClosuresBytecodeGenerator.class/instance/initialization/initialize.st
R OpalCompiler-Core.package/IRSqueakV3PlusClosuresBytecodeGenerator.class/instance/initialization/irPrimitive_.st
R OpalCompiler-Core.package/IRSqueakV3PlusClosuresBytecodeGenerator.class/instance/instructions/checkTooManyLiterals_.st
R OpalCompiler-Core.package/IRSqueakV3PlusClosuresBytecodeGenerator.class/instance/results/compiledMethodWith_.st
A ScriptLoader40.package/ScriptLoader.class/instance/pharo - scripts/script466.st
A ScriptLoader40.package/ScriptLoader.class/instance/pharo - updates/update40466.st
M ScriptLoader40.package/ScriptLoader.class/instance/public/commentForCurrentUpdate.st
Log Message:
-----------
40466
14807 Old bytecode generators are now useless. Remove them
https://pharo.fogbugz.com/f/cases/14807
14804 In Spur VM, the number of literals of compiled method is now encoded in 15 bits (instead of 16)
https://pharo.fogbugz.com/f/cases/14804
14806 Add spur VM compatibility in new bytecodeGenerator
https://pharo.fogbugz.com/f/cases/14806
http://files.pharo.org/image/40/40466.zip
Jan. 27, 2015