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 2012
- 118 participants
- 1442 messages
Re: [Pharo-project] End of startup script behavior
by Sven Van Caekenberghe
On 31 Jan 2012, at 11:50, Stéphane Ducasse wrote:
> Are you sure that you do not have an error because it would kill it.
> I do not see what we change to get the behavior you mentioned.
Yes, I am sure.
With 1.3 the startup script could be:
ZnServer startDefaultOn: 8080
and the server would keep on running.
With 1.4 the following script:
NonInteractiveTranscript stout install.
(ZnServer defaultOn: 8080)
logToTranscript;
start.
Clearly shows the image quiting without errors:
2012-01-31 12:24:05 706209 I Starting ZnMultiThreadedServer HTTP port 8080
2012-01-31 12:24:05 835258 D Initializing server socket
----QUIT/NOSAVE----an Array(31 January 2012 12:24:05 pm) pharo-ws-server.image priorSource: 35443879
2012-01-31 12:24:05 706209 D Releasing server socket
2012-01-31 12:24:05 706209 I Stopped ZnMultiThreadedServer HTTP port 8080
Sven
Jan. 31, 2012
Re: [Pharo-project] [Pharo-users] Pharo Morphic View Application Framework
by S Krish
Sure I will review this pdf.. and come back on this..how well should
integrate the specs part..
The framework though is based on the spec and extensibly on direct
composition and does a little more towards building a scalable/
flexible framework that incorporates in one simpler hierarchy all that
goes into a standard large application creation..
How is the Presenty work supposed to work along with this..?
On 1/31/12, Stéphane Ducasse <stephane.ducasse(a)inria.fr> wrote:
> did you see what benjamin is doing with Spec.
> Because you should join effort
>
>
Jan. 31, 2012
Re: [Pharo-project] Command Line Interface using FFI
by Damien Pollet
On 29 January 2012 21:11, Guillermo Polito <guillermopolito(a)gmail.com> wrote:
> I've spent a few hours playing with Alien+FFI and I did want to have a
> Command line interface to play and use as a quick browser.
This is something I'd like to have as a part of Coral.
What's your opinion on the FFI-libc approach compared to OSProcess? I
was actually thinking of doing something like that using NativeBoost
:)
> Gofer it
> Â Â Â squeaksource: 'CLInterface';
> Â Â Â package: 'ConfigurationOfCLInterface';
> Â Â Â load.
>
> ConfigurationOfCLInterface load.
>
>
> To play with it write a script, for example startCLI.st, with the following:
>
> CLInterface start
>
>
>
> And then, from the command line
>
> CogVM -vm-display-null <image> startCLI.st
>
>
> What it does support?
> - executes smalltalk expressions
> - handles the errors and shows them into the stdout (so it does not explode
> :P)
> - stores variables as a workspace
> Since I used standard C functions (fgets and printf only) this should work
> on every platform from scratch (having a VM with FFI working, of course)...
>
> The problems I've ran so far:
> - blocking FFI blocks the vm. I've not tried yet to use threads through FFI
> (and I don't know if it works. Does it?). But It should be great to start
> a headless seaside server with a command line :/.
>
> Ok, it's a very simple thing, but it allows to execute a expression from a
> remote server via ssh without doing much :).
>
> Guille
--
Damien Pollet
type less, do more [ | ] http://people.untyped.org/damien.pollet
Jan. 31, 2012
Re: [Pharo-project] [Pharo-users] Pharo Morphic View Application Framework
by Benjamin
This chapter is a little out to date, I will correct it this afternoon and resume my work on Spec :)
It's really interesting to have some feedback :)
Ben
On Jan 31, 2012, at 9:09 AM, Stéphane Ducasse wrote:
> did you see what benjamin is doing with Spec.
> Because you should join effort
>
> <Spec.pdf>
>
> the idea is that we can define object with spec and compose them and their logic using value holder.
>
> Stef
>
> On Jan 31, 2012, at 5:58 AM, S Krish wrote:
>
>> http://skrishnamachari.wordpress.com/2012/01/31/pharo-application-framework…
>>
>> Obliged for feedback ...
>>
>> For details and links..
>> Sharing this little framework that should go some way to ease creating large applications ( currently morphic oriented).
>>
>> AbstractMorphicView subclass: #MyNewView â¦
>>
>> #createMorphsSpecs
>>
>> ^{
>>
>> âpanel1â² -> #SomeOtherView.
>> âlabel1â² -> #LabelMorph.
>> âtext1â² -> #PluggableTextMorph.
>> âbutton1â² -> #PluggableButtonMorph.
>> }
>>
>> layoutSpecsArray
>>
>> ^{
>> âwidgetNameInMorphsDictionaryâ -> {
>> #fractions -> (0 @ 0 corner: 1 @ 0.5). â fractional value 0 to 1 range â
>> #offsets -> (10 @ 10 corner: 0 @ 0). â offsets relative to the fractional position â
>> }.
>>
>> â⦠add other widgetspecsâ¦â
>> }
>>
>> Thats it.. you should have a prototype UI neatly laid out.. and then specify: #morphsPrimaryPropertiesSpecs and #morphsSecondaryPropertiesSpecs for full functionality that composes views inside views and scales well.
>>
>> AbstractSimpleMorphicView can make it simpler for TableLayout stuff without requiring #layoutSpecsArray.
>>
>> ..... the main post has other details and links to package...
>>
>
Jan. 31, 2012
Re: [Pharo-project] Morpheas , bringing Morphic to Opengl (3d GUIs)
by Hilaire Fernandes
Le 30/01/2012 16:29, Igor Stasenko a écrit :
> someone please lend me the day-stretcher , to have 48 hours/day :)
Ask to French politicians, they can work up to 72 hours a day,
commulating different political positions. They are supermen!
Sorry can't resist.
Hilaire
--
Dr. Geo -- http://www.drgeo.eu
Jan. 31, 2012
Re: [Pharo-project] End of startup script behavior
by Stéphane Ducasse
Are you sure that you do not have an error because it would kill it.
I do not see what we change to get the behavior you mentioned.
On Jan 31, 2012, at 10:57 AM, Sven Van Caekenberghe wrote:
> Guys,
>
> Maybe I missed this, but did something change with the behavior at the end of a startup script between 1.3 and 1.4 ?
>
> It used to be that the image kept on running unless you asked it to quit explicitly, now it seems that the image automatically quits unless you keep it busy. Can someone confirm this ? Was this intentional ?
>
> What would be the recommended way to keep the image open ?
>
> Somehow something like
>
> [ (Delay forDuration: 1 hour) wait ] repeat.
>
> seems so silly, but it works.
>
> Thx,
>
> Sven
Jan. 31, 2012
Re: [Pharo-project] Morpheas , bringing Morphic to Opengl (3d GUIs)
by Stéphane Ducasse
On Jan 31, 2012, at 10:29 AM, dimitris chloupis wrote:
> I wanted to ask if NB and COG will support windows as well, I see no windows build.
yes
this is just that we got instability on jenkins windows slave
>
> and here we go with first problem. I am in linux mint 12 32 bit with a graphic card NVIDIA GEFORCE 6200 .
>
> I got Cog VM with the Nativeboost plugin + Pharo 1.4 image + Nativeboost + NBOpenGL
>
> This is my workspace
>
> ----
> Gofer it
> squeaksource: 'NativeBoost';
> package: 'NativeBoost-Installer';
> load.
>
>
> NBInstaller install.
>
> Gofer it
> squeaksource: 'NBOpenGL';
> package: 'ConfigurationOfNBOpenGL';
> load.
>
> ConfigurationOfNBOpenGL project lastVersion load.
>
> test := (GLTTRenderingDemo new) openInWorld; yourself.
> ---
>
> the problem appears in the last line with an error "No suitable implementation found for initlising OpenGL context" . Should I assume it can find OpenGL libraries or is it a problem with the graphic card drivers. CC has been given me problem, but Blender works okish considering it completely reliant on OpenGL
>
> Here is all debug info
>
> ----
> 31 January 2012 11:27:51 am
>
> VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-IgorStasenko.8 uuid: f47ef546-de3d-4415-850e-6437d67bfb5c Aug 9 2011, StackToRegisterMappingCogit VMMaker-oscog-IgorStasenko.108 uuid: 384f4108-f1f4-4954-8357-0b3005cb81e2 Aug 9 2011, https://git.gitorious.org/cogvm/blessed.git Commit: f6deabba4432fa22b767dc17718a0fb84c9f3e88 Date: Tue Aug 9 14:47:19 2011 +0200 By: Igor Stasenko <siguctua(a)gmail.com>
> Image: Pharo1.4a [Latest update: #14284]
>
> NBGLContextDriver class(Object)>>error:
> Receiver: NBGLContextDriver
> Arguments and temporary variables:
> aString: 'No suitable implementation found for initializing OpenGL context for ...etc...
> Receiver's instance variables:
> superclass: Object
> methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc...
> format: 132
> instanceVariables: #('gl')
> organization: ('viewport' changeViewportSize:)
> ('initialize-release' createCont...etc...
> subclasses: {NBMacGLContextDriver}
> name:
>
>
> #NBGLContextDriver
> classPool: nil
> sharedPools: an OrderedCollection(NBGLConstants)
> environment: a SystemDictionary(lots of globals)
> category: #'NBOpenGL-Display'
> traitComposition: {}
> localSelectors: nil
>
> [self error: 'No suitable implementation found for initializing OpenGL context for your platform'] in NBGLContextDriver class>>forCurrentPlatform
> Receiver: NBGLContextDriver
> Arguments and temporary variables:
>
> Receiver's instance variables:
> superclass: Object
> methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc...
> format: 132
> instanceVariables: #('gl')
> organization: ('viewport' changeViewportSize:)
> ('initialize-release' createCont...etc...
> subclasses: {NBMacGLContextDriver}
> name: #NBGLContextDriver
> classPool: nil
> sharedPools: an OrderedCollection(NBGLConstants)
> environment: a SystemDictionary(lots of globals)
> category: #'NBOpenGL-Display'
> traitComposition: {}
> localSelectors:
>
>
> nil
>
> OrderedCollection(Collection)>>detect:ifNone:
> Receiver: an OrderedCollection(NBMacGLContextDriver)
> Arguments and temporary variables:
> aBlock: [:cls | cls supportsCurrentPlatform]
> exceptionBlock: [self error: 'No suitable implementation found for initializing...etc...
> Receiver's instance variables:
> array:
>
>
> {NBMacGLContextDriver}
> firstIndex: 1
> lastIndex: 1
>
> NBGLContextDriver class>>forCurrentPlatform
> Receiver: NBGLContextDriver
> Arguments and temporary variables:
> driver: nil
> Receiver's instance variables:
> superclass: Object
> methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc...
> format: 132
> instanceVariables: #('gl')
> organization: ('viewport' changeViewportSize:)
> ('initialize-release' createCont...etc...
> subclasses:
>
>
> {NBMacGLContextDriver}
> name: #NBGLContextDriver
> classPool: nil
> sharedPools: an OrderedCollection(NBGLConstants)
> environment: a SystemDictionary(lots of globals)
> category: #'NBOpenGL-Display'
> traitComposition: {}
> localSelectors: nil
>
> NBGLContextDriver class>>createContext:
> Receiver: NBGLContextDriver
> Arguments and temporary variables:
> initialExtent: (50@40)
> Receiver's instance variables:
> superclass: Object
> methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc...
> format: 132
> instanceVariables: #('gl')
> organization: ('viewport' changeViewportSize:)
> ('initialize-release' createCont...etc...
> subclasses: {NBMacGLContextDriver}
>
>
> name: #NBGLContextDriver
> classPool: nil
> sharedPools: an OrderedCollection(NBGLConstants)
> environment: a SystemDictionary(lots of globals)
> category: #'NBOpenGL-Display'
> traitComposition: {}
> localSelectors: nil
>
> NBGLDisplay class>>extent:
> Receiver: NBGLDisplay
> Arguments and temporary variables:
> anInitialExtent: (50@40)
> driver: nil
> extensions: nil
> disp:
>
>
> nil
> ext: (50@40)
> Receiver's instance variables:
> superclass: Object
> methodDict: a MethodDictionary(#canUseForm:->(NBGLDisplay>>#canUseForm: "a Comp...etc...
> format: 136
> instanceVariables: #('session' 'extent' 'driver')
> organization: ('reading pixels' canUseForm: updateForm:bounds:)
> ('viewport' cha...etc...
> subclasses: {NBMSAAOffscreenDisplay. NBOffscreenDisplay}
> name: #NBGLDisplay
> classPool: nil
> sharedPools: an OrderedCollection(NBGLConstants)
> environment: a SystemDictionary(lots of globals)
> category: #'NBOpenGL-Display'
> traitComposition: {}
> localSelectors: nil
>
> GLTTRenderingDemo(GLViewportMorph)>>initializeForNewSession
> Receiver: a GLTTRenderingDemo(979369984)
> Arguments and temporary variables:
>
> Receiver's instance variables:
> bounds: (0@0) corner: (50@40)
> owner: nil
> submorphs: #()
> fullBounds: (0@0) corner: (50@40)
> color: Color blue
> extension: a MorphExtension (987496448)
> session: nil
> form: nil
> useOwnForm: nil
> display: nil
> d: nil
> glyphCache:
>
>
> nil
> font: nil
> curveRenderer: nil
>
> GLTTRenderingDemo>>initializeForNewSession
> Receiver: a GLTTRenderingDemo(979369984)
> Arguments and temporary variables:
>
> Receiver's instance variables:
> bounds: (0@0) corner: (50@40)
>
>
> owner: nil
> submorphs: #()
> fullBounds: (0@0) corner: (50@40)
> color: Color blue
> extension: a MorphExtension (987496448)
> session: nil
> form: nil
> useOwnForm: nil
> display: nil
> d: nil
> glyphCache: nil
> font: nil
> curveRenderer:
>
>
> nil
>
> GLTTRenderingDemo(GLViewportMorph)>>initialize
> Receiver: a GLTTRenderingDemo(979369984)
> Arguments and temporary variables:
>
> Receiver's instance variables:
> bounds: (0@0) corner: (50@40)
> owner: nil
> submorphs: #()
>
>
> fullBounds: (0@0) corner: (50@40)
> color: Color blue
> extension: a MorphExtension (987496448)
> session: nil
> form: nil
> useOwnForm: nil
> display: nil
> d: nil
> glyphCache: nil
> font: nil
> curveRenderer: nil
>
> GLTTRenderingDemo>>initialize
> Receiver: a GLTTRenderingDemo(979369984)
> Arguments and temporary variables:
> fontPath: nil
> Receiver's instance variables:
> bounds: (0@0) corner: (50@40)
> owner: nil
> submorphs: #()
> fullBounds: (0@0) corner: (50@40)
> color: Color blue
> extension: a MorphExtension (987496448)
> session: nil
> form: nil
> useOwnForm: nil
> display: nil
> d: nil
> glyphCache: nil
> font: nil
> curveRenderer: nil
>
> GLTTRenderingDemo class(Behavior)>>new
> Receiver: GLTTRenderingDemo
> Arguments and temporary variables:
>
> Receiver's instance variables:
> superclass: GLViewportMorph
> methodDict: a MethodDictionary(#initialize->(GLTTRenderingDemo>>#initialize "a ...etc...
> format: 158
> instanceVariables: #('d' 'glyphCache' 'font' 'curveRenderer')
> organization: ('as yet unclassified' initialize initializeForNewSession openInW...etc...
> subclasses: nil
> name: #GLTTRenderingDemo
> classPool: nil
> sharedPools: nil
> environment: a SystemDictionary(lots of globals)
> category: #'NBOpenGL-Morphic-Demo'
> traitComposition: {}
> localSelectors: nil
>
> UndefinedObject>>DoIt
> Receiver: nil
> Arguments and temporary variables:
>
> Receiver's instance variables:
> nil
>
> Compiler>>evaluate:in:to:notifying:ifFail:logged:
> Receiver: a Compiler
> Arguments and temporary variables:
> textOrStream: a ReadWriteStream
> aContext: nil
> receiver: nil
> aRequestor: a TextMorphForEditView(50593792)
> failBlock: [self morph flash.
> ^ nil]
> logFlag: true
> methodNode: DoIt
> ^ test := GLTTRenderingDemo new openInWorld; yourself
> method: (UndefinedObject>>#DoIt "a CompiledMethod(970457088)")
> value: nil
> toLog: nil
> itsSelection: nil
>
>
> itsSelectionString: nil
> Receiver's instance variables:
> sourceStream: a ReadWriteStream
> requestor: a TextMorphForEditView(50593792)
> class: UndefinedObject
> category: nil
> context: nil
> parser: a Parser
>
> [rcvr class evaluatorClass new
> evaluate: self selectionForDoitAsStream
> in: ctxt
> to: rcvr
> notifying: self morph
> ifFail: [self morph flash.
> ^ nil]
> logged: true] in SmalltalkEditor>>evaluateSelectionAndDo:
> Receiver: a SmalltalkEditor
> Arguments and temporary variables:
> rcvr: nil
> ctxt: nil
> Receiver's instance variables:
> morph: a TextMorphForEditView(50593792)
> selectionShowing: true
>
>
> model: a Workspace
> editingState: a SmalltalkEditingState
>
> BlockClosure>>on:do:
> Receiver: [rcvr class evaluatorClass new
> evaluate: self selectionForDoitAsStream
> in: ctxt
> to: ...etc...
> Arguments and temporary variables:
> exception:
>
>
> OutOfScopeNotification
> handlerAction: [:ex | ex resume: true]
> handlerActive: true
> Receiver's instance variables:
> outerContext: SmalltalkEditor>>evaluateSelectionAndDo:
> startpc: 110
> numArgs:
>
>
> 0
>
> SmalltalkEditor>>evaluateSelectionAndDo:
> Receiver: a SmalltalkEditor
> Arguments and temporary variables:
> aBlock: [:result | result]
> result: nil
> rcvr: nil
> ctxt: nil
> Receiver's instance variables:
> morph: a TextMorphForEditView(50593792)
> selectionShowing: true
> model: a Workspace
> editingState: a SmalltalkEditingState
>
> SmalltalkEditor>>evaluateSelection
> Receiver: a SmalltalkEditor
> Arguments and temporary variables:
>
> Receiver's instance variables:
> morph: a TextMorphForEditView(50593792)
> selectionShowing: true
> model: a Workspace
> editingState: a SmalltalkEditingState
>
> [textMorph editor evaluateSelection] in PluggableTextMorph>>doIt
>
>
> Receiver: a PluggableTextMorph(268173312)
> Arguments and temporary variables:
>
> Receiver's instance variables:
> bounds: (509.0(a)25.0) corner: (951.0(a)388.0)
> owner: a SystemWindow(672137216)
> submorphs: an Array(a TransformMorph(428343296))
> fullBounds: (509@25) corner: (951@388)
> color: (Color r: 0.804 g: 0.864 b: 0.857)
> extension: a MorphExtension (45350912) [locked]
> borderWidth: 1
> borderColor: #inset
> model: a Workspace
> open:
>
>
> false
> accessor: nil
> scrollBar: a ScrollBar(274989056)
> scroller: a TransformMorph(428343296)
> retractableScrollBar: false
> scrollBarOnLeft: false
> getMenuSelector:
>
>
> #codePaneMenu:shifted:
> getMenuTitleSelector: nil
> hasFocus: false
> hScrollBar: a ScrollBar(668205056)
> textMorph: a TextMorphForEditView(50593792)
> getTextSelector: #contents
> setTextSelector: #acceptContents:
> getSelectionSelector: nil
> hasUnacceptedEdits: true
> askBeforeDiscardingEdits: true
> selectionInterval: (1 to: 333)
> hasEditingConflicts: false
> acceptAction: nil
> getColorSelector: nil
> unstyledAcceptText: nil
> styler: a SHTextStylerST80
> autoAccept: nil
> enabled: true
> getEnabledSelector: nil
> highlights: an OrderedCollection()
> acceptOnFocusChange: nil
> selectionColor: nil
> alwaysAccept: nil
> changedAction: nil
>
> [result := editBlock value] in PluggableTextMorph>>handleEdit:
> Receiver: a PluggableTextMorph(268173312)
> Arguments and temporary variables:
> editBlock: [textMorph editor evaluateSelection]
> result: #(nil)
> Receiver's instance variables:
> bounds: (509.0(a)25.0) corner: (951.0(a)388.0)
> owner: a SystemWindow(672137216)
> submorphs: an Array(a TransformMorph(428343296))
> fullBounds: (509@25) corner: (951@388)
> color: (Color r: 0.804 g: 0.864 b: 0.857)
> extension: a MorphExtension (45350912) [locked]
> borderWidth: 1
>
>
> borderColor: #inset
> model: a Workspace
> open: false
> accessor: nil
> scrollBar: a ScrollBar(274989056)
> scroller: a TransformMorph(428343296)
> retractableScrollBar: false
> scrollBarOnLeft: false
> getMenuSelector: #codePaneMenu:shifted:
> getMenuTitleSelector: nil
> hasFocus: false
> hScrollBar: a ScrollBar(668205056)
> textMorph: a TextMorphForEditView(50593792)
> getTextSelector: #contents
> setTextSelector: #acceptContents:
> getSelectionSelector: nil
> hasUnacceptedEdits: true
> askBeforeDiscardingEdits: true
>
>
> selectionInterval: (1 to: 333)
> hasEditingConflicts: false
> acceptAction: nil
> getColorSelector: nil
> unstyledAcceptText: nil
> styler: a SHTextStylerST80
> autoAccept: nil
> enabled: true
> getEnabledSelector: nil
> highlights: an OrderedCollection()
> acceptOnFocusChange: nil
> selectionColor: nil
> alwaysAccept: nil
> changedAction: nil
>
> TextMorphForEditView(TextMorph)>>handleEdit:
> Receiver: a TextMorphForEditView(50593792)
> Arguments and temporary variables:
> editBlock: [result := editBlock value]
> Receiver's instance variables:
> bounds: (0@0) corner: (434@274)
> owner: a TransformMorph(428343296)
> submorphs: #()
> fullBounds: (0@0) corner: (434@274)
> color: Color black
> extension: a MorphExtension (70778880) [other: (blinkStart -> 2690020) (myDepe...etc...
> borderWidth: 0
> borderColor: Color black
> textStyle: a TextStyle Bitmap DejaVu Sans 9
> text: a Text for 'Gofer it
> squeaksource: ''NativeBoost'';
> packa...etc...
> wrapFlag: true
> paragraph: a Paragraph
> editor: a SmalltalkEditor
> container: nil
> predecessor: nil
> successor: nil
> backgroundColor: nil
> margins: nil
> editView: a PluggableTextMorph(268173312)
> acceptOnCR: false
> autoAccept: false
> acceptOnFocusChange: false
> selectionColor: nil
>
> PluggableTextMorph>>handleEdit:
> Receiver: a PluggableTextMorph(268173312)
> Arguments and temporary variables:
> editBlock: [textMorph editor evaluateSelection]
> result: #(nil)
> Receiver's instance variables:
> bounds: (509.0(a)25.0) corner: (951.0(a)388.0)
> owner: a SystemWindow(672137216)
> submorphs: an Array(a TransformMorph(428343296))
> fullBounds: (509@25) corner: (951@388)
> color: (Color r: 0.804 g: 0.864 b: 0.857)
> extension: a MorphExtension (45350912) [locked]
> borderWidth: 1
> borderColor: #inset
> model: a Workspace
> open: false
> accessor: nil
> scrollBar: a ScrollBar(274989056)
> scroller: a TransformMorph(428343296)
> retractableScrollBar: false
>
>
> scrollBarOnLeft: false
> getMenuSelector: #codePaneMenu:shifted:
> getMenuTitleSelector: nil
> hasFocus: false
> hScrollBar: a ScrollBar(668205056)
> textMorph: a TextMorphForEditView(50593792)
> getTextSelector: #contents
> setTextSelector: #acceptContents:
> getSelectionSelector: nil
> hasUnacceptedEdits: true
> askBeforeDiscardingEdits: true
> selectionInterval: (1 to: 333)
> hasEditingConflicts: false
> acceptAction: nil
> getColorSelector: nil
> unstyledAcceptText: nil
> styler: a SHTextStylerST80
> autoAccept: nil
> enabled: true
> getEnabledSelector: nil
> highlights: an OrderedCollection()
> acceptOnFocusChange: nil
> selectionColor: nil
> alwaysAccept: nil
>
>
> changedAction: nil
>
> PluggableTextMorph>>doIt
> Receiver: a PluggableTextMorph(268173312)
> Arguments and temporary variables:
>
> Receiver's instance variables:
> bounds: (509.0(a)25.0) corner: (951.0(a)388.0)
> owner: a SystemWindow(672137216)
> submorphs: an Array(a TransformMorph(428343296))
> fullBounds: (509@25) corner: (951@388)
> color: (Color r: 0.804 g: 0.864 b: 0.857)
> extension: a MorphExtension (45350912) [locked]
> borderWidth: 1
> borderColor: #inset
> model: a Workspace
> open: false
> accessor: nil
> scrollBar: a ScrollBar(274989056)
> scroller: a TransformMorph(428343296)
> retractableScrollBar: false
>
>
> scrollBarOnLeft: false
> getMenuSelector: #codePaneMenu:shifted:
> getMenuTitleSelector: nil
> hasFocus: false
> hScrollBar: a ScrollBar(668205056)
> textMorph: a TextMorphForEditView(50593792)
> getTextSelector: #contents
> setTextSelector: #acceptContents:
> getSelectionSelector: nil
> hasUnacceptedEdits: true
> askBeforeDiscardingEdits: true
> selectionInterval: (1 to: 333)
> hasEditingConflicts: false
> acceptAction: nil
> getColorSelector: nil
> unstyledAcceptText: nil
> styler: a SHTextStylerST80
> autoAccept: nil
> enabled: true
> getEnabledSelector: nil
> highlights: an OrderedCollection()
> acceptOnFocusChange: nil
> selectionColor: nil
> alwaysAccept: nil
>
>
> changedAction: nil
>
> Workspace(StringHolder)>>perform:orSendTo:
> Receiver: a Workspace
> Arguments and temporary variables:
> selector: #doIt
> otherTarget: a PluggableTextMorph(268173312)
> Receiver's instance variables:
> dependents: a DependentsArray(a SystemWindow(672137216) a PluggableTextMorph(26...etc...
> contents: ''
> bindings: a Dictionary('test'->nil )
> acceptDroppedMorphs: false
> acceptAction: nil
> mustDeclareVariables: false
> fileName: nil
> lineEnding: #lf
> encoding: 'utf-8'
> stylingActive: true
>
> [| selArgCount |
> (selArgCount := selector numArgs) = 0
> ifTrue: [target perform: selector]
> ifFalse: [selArgCount = arguments size
> ifTrue: [target perform: selector withArguments: arguments]
> ifFalse: [target
> perform: selector
> withArguments: (arguments copyWith: evt)]].
> self changed] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
> Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)'
> Arguments and temporary variables:
> evt: [(560@321) mouseUp 828114 nil]
> selArgCount: 2
> Receiver's instance variables:
> bounds: (541.0(a)310.0) corner: (678.0(a)328.0)
> owner: a MenuMorph(954466304)
> submorphs: #()
> fullBounds: (541.0(a)310.0) corner: (678.0(a)328.0)
> color: Color black
> extension: a MorphExtension (289931264)
> font: a StrikeFont(Bitmap DejaVu Sans 9 14)
> emphasis: 0
> contents: 'Do it (d)'
> hasFocus: false
> isEnabled:
>
>
> true
> subMenu: nil
> isSelected: false
> target: a Workspace
> selector: #perform:orSendTo:
> arguments: an Array(#doIt a PluggableTextMorph(268173312))
> icon:
>
>
> Form(16x16x32)
> getStateSelector: nil
> enablementSelector: nil
> keyText: nil
>
> BlockClosure>>ensure:
> Receiver: [| selArgCount |
> (selArgCount := selector numArgs) = 0
> ifTrue: [target perform: selector...etc...
> Arguments and temporary variables:
> aBlock: [oldcursor show]
> complete: nil
> returnValue: nil
> Receiver's instance variables:
> outerContext: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
> startpc: 160
> numArgs: 0
>
> CursorWithMask(Cursor)>>showWhile:
> Receiver: ((CursorWithMask
> extent: (16@16)
> depth: 1
> fromArray: #(
> 2r0
> 2r100000000000000000000...etc...
> Arguments and temporary variables:
> aBlock: [| selArgCount |
> (selArgCount := selector numArgs) = 0
> ifTrue: [targe...etc...
> oldcursor: ((CursorWithMask
> extent: (16@16)
> depth: 1
> fromArray: #(
> 2r0
> 2...etc...
> Receiver's instance variables:
> bits: a Bitmap of length 16
> width: 16
> height: 16
> depth: 1
> offset: (-1@ -1)
> maskForm: Form(16x16x1)
>
> ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
> Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)'
> Arguments and temporary variables:
> evt: [(560@321) mouseUp 828114 nil]
> w: a PasteUpMorph(425197568) [world]
> Receiver's instance variables:
> bounds: (541.0(a)310.0) corner: (678.0(a)328.0)
> owner: a MenuMorph(954466304)
> submorphs: #()
> fullBounds: (541.0(a)310.0) corner: (678.0(a)328.0)
> color: Color black
> extension: a MorphExtension (289931264)
> font: a StrikeFont(Bitmap DejaVu Sans 9 14)
> emphasis: 0
>
>
> contents: 'Do it (d)'
> hasFocus: false
> isEnabled: true
> subMenu: nil
> isSelected: false
> target: a Workspace
> selector: #perform:orSendTo:
> arguments: an Array(#doIt a PluggableTextMorph(268173312))
> icon: Form(16x16x32)
> getStateSelector: nil
> enablementSelector: nil
> keyText: nil
>
> ToggleMenuItemMorph(MenuItemMorph)>>mouseUp:
> Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)'
> Arguments and temporary variables:
> evt: [(560@321) mouseUp 828114 nil]
> Receiver's instance variables:
> bounds: (541.0(a)310.0) corner: (678.0(a)328.0)
> owner: a MenuMorph(954466304)
> submorphs: #()
> fullBounds: (541.0(a)310.0) corner: (678.0(a)328.0)
> color: Color black
> extension: a MorphExtension (289931264)
> font: a StrikeFont(Bitmap DejaVu Sans 9 14)
> emphasis: 0
> contents: 'Do it (d)'
> hasFocus: false
> isEnabled: true
> subMenu: nil
> isSelected: false
> target: a Workspace
> selector:
>
>
> #perform:orSendTo:
> arguments: an Array(#doIt a PluggableTextMorph(268173312))
> icon: Form(16x16x32)
> getStateSelector: nil
> enablementSelector: nil
> keyText: nil
>
> ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp:
> Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)'
> Arguments and temporary variables:
> anEvent: [(560@321) mouseUp 828114 nil]
> Receiver's instance variables:
> bounds: (541.0(a)310.0) corner: (678.0(a)328.0)
> owner: a MenuMorph(954466304)
> submorphs:
>
>
> #()
> fullBounds: (541.0(a)310.0) corner: (678.0(a)328.0)
> color: Color black
> extension: a MorphExtension (289931264)
> font: a StrikeFont(Bitmap DejaVu Sans 9 14)
> emphasis: 0
> contents: 'Do it (d)'
> hasFocus: false
> isEnabled: true
> subMenu: nil
> isSelected: false
> target: a Workspace
> selector:
>
>
> #perform:orSendTo:
> arguments: an Array(#doIt a PluggableTextMorph(268173312))
> icon: Form(16x16x32)
> getStateSelector: nil
> enablementSelector: nil
> keyText: nil
>
> MouseButtonEvent>>sentTo:
> Receiver: [(560@321) mouseUp 828114 nil]
> Arguments and temporary variables:
> anObject: a ToggleMenuItemMorph(287309824)'Do it (d)'
> Receiver's instance variables:
> timeStamp: 828114
> source: a HandMorph(843055104)
> windowIndex: nil
>
>
> type: #mouseUp
> buttons: 0
> position: (560@321)
> handler: nil
> wasHandled: true
> whichButton: 4
>
> ToggleMenuItemMorph(Morph)>>handleEvent:
>
>
> Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)'
> Arguments and temporary variables:
> anEvent: [(560@321) mouseUp 828114 nil]
> Receiver's instance variables:
> bounds: (541.0(a)310.0) corner: (678.0(a)328.0)
> owner: a MenuMorph(954466304)
> submorphs: #()
> fullBounds: (541.0(a)310.0) corner: (678.0(a)328.0)
> color: Color black
> extension: a MorphExtension (289931264)
> font: a StrikeFont(Bitmap DejaVu Sans 9 14)
> emphasis: 0
> contents: 'Do it (d)'
> hasFocus: false
> isEnabled: true
> subMenu: nil
> isSelected: false
> target: a Workspace
> selector: #perform:orSendTo:
> arguments: an Array(#doIt a PluggableTextMorph(268173312))
> icon: Form(16x16x32)
> getStateSelector: nil
> enablementSelector: nil
> keyText: nil
>
> MorphicEventDispatcher>>dispatchDefault:with:
> Receiver: a MorphicEventDispatcher
> Arguments and temporary variables:
> anEvent: [(560@321) mouseUp 828114 nil]
> aMorph: a ToggleMenuItemMorph(287309824)'Do it (d)'
> localEvt: nil
> index: 1
> child: nil
> morphs: #()
> inside: true
> Receiver's instance variables:
> lastType: #mouseUp
> lastDispatch: #dispatchDefault:with:
>
> MorphicEventDispatcher>>dispatchEvent:with:
> Receiver: a MorphicEventDispatcher
> Arguments and temporary variables:
> anEvent: [(560@321) mouseUp 828114 nil]
> aMorph: a ToggleMenuItemMorph(287309824)'Do it (d)'
> Receiver's instance variables:
> lastType: #mouseUp
> lastDispatch: #dispatchDefault:with:
>
> ToggleMenuItemMorph(Morph)>>processEvent:using:
> Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)'
> Arguments and temporary variables:
> anEvent: [(560@321) mouseUp 828114 nil]
> defaultDispatcher: a MorphicEventDispatcher
> Receiver's instance variables:
> bounds: (541.0(a)310.0) corner: (678.0(a)328.0)
> owner: a MenuMorph(954466304)
> submorphs: #()
> fullBounds: (541.0(a)310.0) corner: (678.0(a)328.0)
> color: Color black
> extension: a MorphExtension (289931264)
> font: a StrikeFont(Bitmap DejaVu Sans 9 14)
> emphasis: 0
> contents: 'Do it (d)'
> hasFocus: false
> isEnabled: true
> subMenu: nil
> isSelected: false
> target: a Workspace
>
>
> selector: #perform:orSendTo:
> arguments: an Array(#doIt a PluggableTextMorph(268173312))
> icon: Form(16x16x32)
> getStateSelector: nil
> enablementSelector: nil
> keyText:
>
>
> nil
>
> MorphicEventDispatcher>>dispatchDefault:with:
> Receiver: a MorphicEventDispatcher
> Arguments and temporary variables:
> anEvent: [(560@321) mouseUp 828114 nil]
> aMorph: a MenuMorph(954466304)
> localEvt: [(560@321) mouseUp 828114 nil]
> index:
>
>
> 1
> child: a ToggleMenuItemMorph(287309824)'Do it (d)'
> morphs: an Array(a ToggleMenuItemMorph(287309824)'Do it (d)' a ToggleMenuItemMo...etc...
> inside: false
> Receiver's instance variables:
> lastType: #mouseUp
> lastDispatch:
>
>
> #dispatchDefault:with:
>
> MorphicEventDispatcher>>dispatchEvent:with:
> Receiver: a MorphicEventDispatcher
> Arguments and temporary variables:
> anEvent: [(560@321) mouseUp 828114 nil]
> aMorph: a MenuMorph(954466304)
> Receiver's instance variables:
> lastType: #mouseUp
> lastDispatch: #dispatchDefault:with:
>
> MenuMorph(Morph)>>processEvent:using:
> Receiver: a MenuMorph(954466304)
> Arguments and temporary variables:
> anEvent: [(560@321) mouseUp 828114 nil]
> defaultDispatcher: a MorphicEventDispatcher
> Receiver's instance variables:
> bounds: (537.0(a)306.0) corner: (682.0(a)644.0)
> owner: nil
> submorphs: an Array(a ToggleMenuItemMorph(287309824)'Do it (d)' a ToggleMenuIte...etc...
> fullBounds: (537.0(a)306.0) corner: (683.0(a)645.0)
> color: (Color r: 0.775 g: 0.775 b: 0.775)
> extension: a MorphExtension (958136320) [other: (basicColor -> Color lightGray...etc...
> borderWidth: 1
> borderColor: Color gray
> defaultTarget: a Workspace
> selectedItem: a ToggleMenuItemMorph(287309824)'Do it (d)'
> stayUp: false
>
>
> popUpOwner: nil
> activeSubMenu: nil
> activatorDockingBar: nil
> embeddable: nil
> menuItems: an OrderedCollection(a ToggleMenuItemMorph(287309824)'Do it (d)' a T...etc...
>
> MenuMorph(Morph)>>processEvent:
> Receiver: a MenuMorph(954466304)
> Arguments and temporary variables:
> anEvent: [(560@321) mouseUp 828114 nil]
> Receiver's instance variables:
> bounds: (537.0(a)306.0) corner: (682.0(a)644.0)
> owner: nil
> submorphs: an Array(a ToggleMenuItemMorph(287309824)'Do it (d)' a ToggleMenuIte...etc...
> fullBounds: (537.0(a)306.0) corner: (683.0(a)645.0)
> color: (Color r: 0.775 g: 0.775 b: 0.775)
> extension: a MorphExtension (958136320) [other: (basicColor -> Color lightGray...etc...
> borderWidth: 1
> borderColor: Color gray
> defaultTarget: a Workspace
> selectedItem: a ToggleMenuItemMorph(287309824)'Do it (d)'
> stayUp: false
> popUpOwner: nil
> activeSubMenu: nil
> activatorDockingBar: nil
> embeddable: nil
> menuItems: an OrderedCollection(a ToggleMenuItemMorph(287309824)'Do it (d)' a T...etc...
>
> MenuMorph>>handleFocusEvent:
> Receiver: a MenuMorph(954466304)
> Arguments and temporary variables:
> evt: [(560@321) mouseUp 828114 nil]
> Receiver's instance variables:
> bounds: (537.0(a)306.0) corner: (682.0(a)644.0)
> owner: nil
> submorphs: an Array(a ToggleMenuItemMorph(287309824)'Do it (d)' a ToggleMenuIte...etc...
> fullBounds: (537.0(a)306.0) corner: (683.0(a)645.0)
> color: (Color r: 0.775 g: 0.775 b: 0.775)
> extension: a MorphExtension (958136320) [other: (basicColor -> Color lightGray...etc...
> borderWidth: 1
> borderColor: Color gray
> defaultTarget: a Workspace
> selectedItem: a ToggleMenuItemMorph(287309824)'Do it (d)'
> stayUp: false
> popUpOwner:
>
>
> nil
> activeSubMenu: nil
> activatorDockingBar: nil
> embeddable: nil
> menuItems: an OrderedCollection(a ToggleMenuItemMorph(287309824)'Do it (d)' a T...etc...
>
>
> --- The full stack ---
> NBGLContextDriver class(Object)>>error:
> [self error: 'No suitable implementation found for initializing OpenGL context for your platform'] in NBGLContextDriver class>>forCurrentPlatform
> OrderedCollection(Collection)>>detect:ifNone:
> NBGLContextDriver class>>forCurrentPlatform
> NBGLContextDriver class>>createContext:
> NBGLDisplay class>>extent:
> GLTTRenderingDemo(GLViewportMorph)>>initializeForNewSession
> GLTTRenderingDemo>>initializeForNewSession
> GLTTRenderingDemo(GLViewportMorph)>>initialize
> GLTTRenderingDemo>>initialize
> GLTTRenderingDemo class(Behavior)>>new
> UndefinedObject>>DoIt
> Compiler>>evaluate:in:to:notifying:ifFail:logged:
> [rcvr class evaluatorClass new
> evaluate: self selectionForDoitAsStream
> in: ctxt
> to: rcvr
> notifying: self morph
> ifFail: [self morph flash.
> ^ nil]
> logged: true] in SmalltalkEditor>>evaluateSelectionAndDo:
> BlockClosure>>on:do:
> SmalltalkEditor>>evaluateSelectionAndDo:
> SmalltalkEditor>>evaluateSelection
> [textMorph editor evaluateSelection] in PluggableTextMorph>>doIt
> [result := editBlock value] in PluggableTextMorph>>handleEdit:
> TextMorphForEditView(TextMorph)>>handleEdit:
> PluggableTextMorph>>handleEdit:
> PluggableTextMorph>>doIt
> Workspace(StringHolder)>>perform:orSendTo:
> [| selArgCount |
> (selArgCount := selector numArgs) = 0
> ifTrue: [target perform: selector]
> ifFalse: [selArgCount = arguments size
> ifTrue: [target perform: selector withArguments: arguments]
> ifFalse: [target
> perform: selector
> withArguments: (arguments copyWith: evt)]].
> self changed] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
> BlockClosure>>ensure:
> CursorWithMask(Cursor)>>showWhile:
> ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
> ToggleMenuItemMorph(MenuItemMorph)>>mouseUp:
> ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp:
> MouseButtonEvent>>sentTo:
> ToggleMenuItemMorph(Morph)>>handleEvent:
> MorphicEventDispatcher>>dispatchDefault:with:
> MorphicEventDispatcher>>dispatchEvent:with:
> ToggleMenuItemMorph(Morph)>>processEvent:using:
> MorphicEventDispatcher>>dispatchDefault:with:
> MorphicEventDispatcher>>dispatchEvent:with:
> MenuMorph(Morph)>>processEvent:using:
> MenuMorph(Morph)>>processEvent:
> MenuMorph>>handleFocusEvent:
> - - - - - - - - - - - - - - -
> - - - - - - - - - - - - - - - - - -
> [ActiveHand := self.
> ActiveEvent := anEvent.
> result := focusHolder
> handleFocusEvent: (anEvent
> transformedBy: (focusHolder transformedFrom: self))] in HandMorph>>sendFocusEvent:to:clear:
> [aBlock value] in PasteUpMorph>>becomeActiveDuring:
> BlockClosure>>on:do:
> PasteUpMorph>>becomeActiveDuring:
> HandMorph>>sendFocusEvent:to:clear:
> HandMorph>>sendEvent:focus:clear:
> HandMorph>>sendMouseEvent:
> HandMorph>>handleEvent:
> HandMorph>>processEvents
> [:h |
> ActiveHand := h.
> h processEvents.
> ActiveHand := nil] in WorldState>>doOneCycleNowFor:
> Array(SequenceableCollection)>>do:
> WorldState>>handsDo:
> WorldState>>doOneCycleNowFor:
> WorldState>>doOneCycleFor:
> WorldState>>doOneSubCycleFor:
> PasteUpMorph>>doOneSubCycle
> MenuMorph>>invokeModalAt:in:allowKeyboard:
> MenuMorph>>invokeModal:
> MenuMorph>>invokeModal
> PluggableTextMorph>>yellowButtonActivity:
> TextMorphForEditView>>mouseDown:
> TextMorphForEditView(Morph)>>handleMouseDown:
> MouseButtonEvent>>sentTo:
> TextMorphForEditView(Morph)>>handleEvent:
> MorphicEventDispatcher>>dispatchMouseDown:with:
> MorphicEventDispatcher>>dispatchEvent:with:
> TextMorphForEditView(Morph)>>processEvent:using:
> MorphicEventDispatcher>>dispatchMouseDown:with:
> MorphicEventDispatcher>>dispatchEvent:with:
> TransformMorph(Morph)>>processEvent:using:
> MorphicEventDispatcher>>dispatchMouseDown:with:
> MorphicEventDispatcher>>dispatchEvent:with:
> PluggableTextMorph(Morph)>>processEvent:using:
> MorphicEventDispatcher>>dispatchMouseDown:with:
> MorphicEventDispatcher>>dispatchEvent:with:
> SystemWindow(Morph)>>processEvent:using:
> MorphicEventDispatcher>>dispatchMouseDown:with:
> MorphicEventDispatcher>>dispatchEvent:with:
> PasteUpMorph(Morph)>>processEvent:using:
> PasteUpMorph>>processEvent:using:
> PasteUpMorph(Morph)>>processEvent:
> HandMorph>>sendEvent:focus:clear:
> HandMorph>>sendMouseEvent:
> HandMorph>>handleEvent:
> HandMorph>>processEvents
> [:h |
> ActiveHand := h.
> h processEvents.
> ActiveHand := nil] in WorldState>>doOneCycleNowFor:
> Array(SequenceableCollection)>>do:
> WorldState>>handsDo:
> WorldState>>doOneCycleNowFor:
> WorldState>>doOneCycleFor:
> PasteUpMorph>>doOneCycle
> [[World doOneCycle.
> Processor yield.
> false] whileFalse.
> nil] in MorphicUIManager>>spawnNewProcess
> [self value.
> Processor terminateActive] in BlockClosure>>newProcess
>
Jan. 31, 2012
Re: [Pharo-project] pharo vision
by Norbert Hartl
Serge,
Am 30.01.2012 um 17:24 schrieb Serge Stinckwich:
> On Mon, Jan 30, 2012 at 3:24 PM, Stéphane Ducasse
> <stephane.ducasse(a)inria.fr> wrote:
>>
>
> Thank you for this nice vision.
>
Indeed, thanks, Steph et al.
> I think "Language and Remote IDEs for small devices" and "robotics"
> could be merge in the same section about "embedded system", because
> they share more or less the same concerns: small kernel, C/C++
> integration, headless system, reliable networking support, remote
> debugging, customizable real-time gc, ... Having the possibility of
> mixing several domain-specific languages is also quite interesting in
> robotics, see for the example the recent series of workshop i organize
> recently: http://www.doesnotunderstand.org/wikka.php?wakka=DSLRob11
> I try to push Smalltalk use in robotics in several projects:
> 1) SqueakBot (http://wiki.laptop.org/go/Projects/SqueakBot) 2)
> PlayerST to control Player/Stage robotic simulation
> (http://www1.ifi.auf.org/mediawiki/index.php/Smalltalk_Player_Client)
> 3) ROSTalk to connect Smalltalk and ROS
> (https://github.com/SergeStinckwich/rostalk)
> but this is still difficult because most of the robotic stuff are
> written in C/C++ and also the lack of manpower ...
> It's easier at the moment to use Python or Lua for robots than
> Smalltalk. Look here: https://github.com/timn/roslua
>
Basically I think you are right that embedded systems are comparable. But there are still two different sizes of computers addressed. The plug computer mentioned is a full capable server computer just without a display. You can use VNC and such easily there because they have enough power and memory (of course a remote ide is way cooler and more powerful). For this size I find it more important to have FFI and JIT for ARM in place to utilize the machine.
There is still a kind of machines that have real limited resources and for this it would be necessary to have a tiny core and a remote IDE connection to actively modify the system. If this kind of computers is targetted then it will be a big challenge for the pharo core. If the core is not capable of operating with less resources then I think it'll be hard to achieve much on this platform.
Norbert
Jan. 31, 2012
Re: [Pharo-project] End of startup script behavior
by Schwab,Wilhelm K
Sven,
Reminds me of one of early Dolphin hacks. OA being who they are, eventually fixed the snag. The problem was that event loop needed to be running for some late startup tasks to run properly. In this case, the image would do nothing vs. quit, but I suspect it's the same lesion under a different name.
My fix was to queue a deferred action and then fork a thread to wait until after OA's startup, and then did the offending work. It worked, and they added more or less the same thing to Dolphin. Interestingly, I never had to remove my hack<g>,
Please note (nobody wants to hear this) that Dolphin has thread synchronization objects, weak collections, and other nice things that make us look bad by comparison, even ignoring the calendar differences.
Good luck!
Bill
________________________________________
From: pharo-project-bounces(a)lists.gforge.inria.fr [pharo-project-bounces(a)lists.gforge.inria.fr] on behalf of Sven Van Caekenberghe [sven(a)beta9.be]
Sent: Tuesday, January 31, 2012 4:57 AM
To: Pharo-project(a)lists.gforge.inria.fr Development
Subject: [Pharo-project] End of startup script behavior
Guys,
Maybe I missed this, but did something change with the behavior at the end of a startup script between 1.3 and 1.4 ?
It used to be that the image kept on running unless you asked it to quit explicitly, now it seems that the image automatically quits unless you keep it busy. Can someone confirm this ? Was this intentional ?
What would be the recommended way to keep the image open ?
Somehow something like
[ (Delay forDuration: 1 hour) wait ] repeat.
seems so silly, but it works.
Thx,
Sven
Jan. 31, 2012
Re: [Pharo-project] CogVM driver vs executable
by Schwab,Wilhelm K
Sven,
I'm not sure what to tell you. The "can't infer" message you are experiencing ***might*** be the one time the vm is actually telling what's wrong. If so, it's PROGRESS. Doesn't feel like that in your shoes, I know....
The bane of my existence is a silent failure (I dread those two word in that sequence...) of the vm to look in the right place. What did Nick suggest to me? strace, I think (it's in the archives). You might run under it to see if you can gain some insight; the tool in question does not pt
DON'T LET THIS HAPPEN TO YOU<g>: the tool in question[*] logs its output to sterr(?), not stdout as one might expect. If you try it, use the -o option (I think) to direct to a file, then cat and grep are your friends. I remember "streaming" this into the archives, but I can't see them to check the facts.
I solved my problem by noting where the vm was actually looking and making sym links to trick it (should not have to...) into working (very good). Let's all send kind thoughts to Sig - maybe he'll pull the search policy into the image, where it belongs. We will still want vm level logging (syslog etc.) in case the image can't run.
SECURITY: Ubuntu gets it right (took me a while to realize same) by "forcing" us to use dlconfig to map names to libraries. I don't really understand it all, but I might be able to fake some useful answers if that is confusing. You might need to use dlconfig to "fix" Ubuntu, and then links to fool the vm into looking where it should.
HTH,
Bill
[*] short term memory disorder<g>, which is precisely why we want informative errors reaching the Smalltalk code (and?)/OR(ideal) being logged (OutputDebugString or syslog) where one can readily find it. Errors rare enough that we get time to forget between them. Pharo needs to help us a bit more - afteall, it works for us, right?
________________________________________
From: pharo-project-bounces(a)lists.gforge.inria.fr [pharo-project-bounces(a)lists.gforge.inria.fr] on behalf of Sven Van Caekenberghe [sven(a)beta9.be]
Sent: Tuesday, January 31, 2012 3:30 AM
To: Pharo-project(a)lists.gforge.inria.fr Development
Subject: [Pharo-project] CogVM driver vs executable
In response to my posting
http://lists.gforge.inria.fr/pipermail/pharo-project/2012-January/058790.ht…
I got feedback from people trying to use SSL with Eliot's CogVM
http://www.mirandabanda.org/files/Cog/VM/VM.r2522/coglinux.tgz
instead of the Pharo one that I normally use
http://gforge.inria.fr/frs/download.php/29042/CogVM-Unix-13307.zip
They reported that it did not work for them.
So I tried this myself on my Ubuntu 11.10 (GNU/Linux 3.0.0-14-virtual i686) server and yes it fails with 'can't infer base LD_LIBRARY_PATH. Aborting.' which was discussed in this list before. I am not qualified to really understand those discussions.
But when I used the executable 'inside' coglinux/lib/squeak/4.0-2522/squeak everything worked as expected.
So the question is what does the driver (I don't know if that is the right word) coglinux/squeak or coglinux/bin/squeak do ?
Since the pharo variant seems to operate fine without it, do we need the driver ?
Sven
Jan. 31, 2012