A new version of Tools was added to project The Inbox:
http://source.squeak.org/inbox/Tools-dtl.380.mcz
==================== Summary ====================
Name: Tools-dtl.380
Author: dtl
Time: 24 September 2011, 3:52:53.953 pm
UUID: 5d683ba9-a1d2-4bf2-afb1-0a3de6950a96
Ancestors: Tools-eem.379
Provide updating button for "what to show" button on CodeHolder, similar to Squeak 3.8 behavior. This button activates a menu, and displays the resulting menu selection. For the default look, normal buttons are rounded and the menu activation button is square (vice versa if the "Rounded Button Corners" preference is disabled). When menu selection is changed, the button label displays the selected mode ('source', 'decompile', 'bytecodes' etc).
Changes are in three packages.
ToolBuilder-Kernel:
- Add PluggableButtonSpec>>style to provide style hint. Used to suggest that a button should be rendered differently, in this case rounded versus square corners.
- Add changeLableWhen: to connect pluggable button with change notification, in this case to allow update: #contents to result in a label update in the dependent button.
ToolBuilder-Morphic:
- Add #whenChanged:update: as a mechanism for hooking change events to button updates, allowing an individual button to respond to e.g. self changed: #contents in the model.
- Update MorphicToolBuilder>>buildPluggableButton to make use of style and changeLabelWhen in the widget spec.
Tools:
- Update CodeHolder>>buildCodeProvenanceButtonWith: to add style hint for round/ square corners and changeLableWhen: for change notification to the widget spec.
Note: ToolBuilder has PluggableDropDownListSpec which is presumably intended to describe a drop-down list widget. This is currently unused in the image, but in future might provide a better approach than the current action button with menu approach.
=============== Diff against Tools-eem.379 ===============
Item was changed:
----- Method: CodeHolder>>buildCodeProvenanceButtonWith: (in category 'toolbuilder') -----
buildCodeProvenanceButtonWith: builder
| buttonSpec |
buttonSpec := builder pluggableActionButtonSpec new.
buttonSpec model: self.
buttonSpec label: #codePaneProvenanceString.
+ buttonSpec changeLabelWhen: #contents.
+ buttonSpec style: #menuButton.
buttonSpec action: #offerWhatToShowMenu.
buttonSpec help: 'Governs what view is shown in the code pane. Click here to change the view'.
^buttonSpec!
A new version of ToolBuilder-Morphic was added to project The Inbox:
http://source.squeak.org/inbox/ToolBuilder-Morphic-dtl.80.mcz
==================== Summary ====================
Name: ToolBuilder-Morphic-dtl.80
Author: dtl
Time: 24 September 2011, 3:52:18.656 pm
UUID: 77cf5284-48b0-4d47-89c2-3a34a7380e50
Ancestors: ToolBuilder-Morphic-ul.79
Provide updating button for "what to show" button on CodeHolder, similar to Squeak 3.8 behavior. This button activates a menu, and displays the resulting menu selection. For the default look, normal buttons are rounded and the menu activation button is square (vice versa if the "Rounded Button Corners" preference is disabled). When menu selection is changed, the button label displays the selected mode ('source', 'decompile', 'bytecodes' etc).
Changes are in three packages.
ToolBuilder-Kernel:
- Add PluggableButtonSpec>>style to provide style hint. Used to suggest that a button should be rendered differently, in this case rounded versus square corners.
- Add changeLableWhen: to connect pluggable button with change notification, in this case to allow update: #contents to result in a label update in the dependent button.
ToolBuilder-Morphic:
- Add #whenChanged:update: as a mechanism for hooking change events to button updates, allowing an individual button to respond to e.g. self changed: #contents in the model.
- Update MorphicToolBuilder>>buildPluggableButton to make use of style and changeLabelWhen in the widget spec.
Tools:
- Update CodeHolder>>buildCodeProvenanceButtonWith: to add style hint for round/ square corners and changeLableWhen: for change notification to the widget spec.
Note: ToolBuilder has PluggableDropDownListSpec which is presumably intended to describe a drop-down list widget. This is currently unused in the image, but in future might provide a better approach than the current action button with menu approach.
=============== Diff against ToolBuilder-Morphic-ul.79 ===============
Item was changed:
----- Method: MorphicToolBuilder>>buildPluggableButton: (in category 'pluggable widgets') -----
buildPluggableButton: aSpec
| widget label state action enabled |
label := aSpec label.
state := aSpec state.
action := aSpec action.
widget := self buttonClass on: aSpec model
getState: (state isSymbol ifTrue:[state])
action: nil
label: (label isSymbol ifTrue:[label]).
+ widget style: aSpec style.
+ aSpec changeLabelWhen
+ ifNotNilDo: [ :event | widget whenChanged: event update: aSpec label].
self register: widget id: aSpec name.
enabled := aSpec enabled.
enabled isSymbol
ifTrue:[widget getEnabledSelector: enabled]
ifFalse:[widget enabled:enabled].
widget action: action.
widget getColorSelector: aSpec color.
widget offColor: Color white..
self buildHelpFor: widget spec: aSpec.
(label isSymbol or:[label == nil]) ifFalse:[widget label: label].
self setFrame: aSpec frame in: widget.
parent ifNotNil:[self add: widget to: parent].
^widget!
Item was changed:
PluggableButtonMorph subclass: #PluggableButtonMorphPlus
+ instanceVariableNames: 'enabled action getColorSelector getEnabledSelector updateMap'
- instanceVariableNames: 'enabled action getColorSelector getEnabledSelector'
classVariableNames: ''
poolDictionaries: ''
category: 'ToolBuilder-Morphic'!
!PluggableButtonMorphPlus commentStamp: 'ar 2/11/2005 21:53' prior: 0!
An extended version of PluggableButtonMorph supporting enablement, color and block/message actions.!
Item was changed:
----- Method: PluggableButtonMorphPlus>>update: (in category 'updating') -----
update: what
what ifNil:[^self].
what == getLabelSelector ifTrue: [
self label: (model perform: getLabelSelector)].
what == getEnabledSelector ifTrue:[^self enabled: (model perform: getEnabledSelector)].
getColorSelector ifNotNil: [ | cc |
color = (cc := model perform: getColorSelector) ifFalse:[
color := cc.
self onColor: color offColor: color.
self changed.
].
].
self getModelState
ifTrue: [self color: onColor]
ifFalse: [self color: offColor].
getEnabledSelector ifNotNil:[
self enabled: (model perform: getEnabledSelector).
].
+ updateMap ifNotNil:
+ [(updateMap at: what ifAbsent: [])
+ ifNotNilDo: [ :newTarget | ^self update: newTarget]].
!
Item was added:
+ ----- Method: PluggableButtonMorphPlus>>updateMap (in category 'updating') -----
+ updateMap
+ ^ updateMap ifNil: [updateMap := Dictionary new]
+ !
Item was added:
+ ----- Method: PluggableButtonMorphPlus>>whenChanged:update: (in category 'updating') -----
+ whenChanged: notification update: target
+ "On receipt of a notification, such as #contents notification from a CodeHolder,
+ invoke an update as if target had been the original notification."
+
+ self updateMap at: notification put: target!
A new version of ToolBuilder-Kernel was added to project The Inbox:
http://source.squeak.org/inbox/ToolBuilder-Kernel-dtl.50.mcz
==================== Summary ====================
Name: ToolBuilder-Kernel-dtl.50
Author: dtl
Time: 24 September 2011, 3:51:55.97 pm
UUID: 5104256f-7297-4cb1-a751-e23959330813
Ancestors: ToolBuilder-Kernel-cmm.49
Provide updating button for "what to show" button on CodeHolder, similar to Squeak 3.8 behavior. This button activates a menu, and displays the resulting menu selection. For the default look, normal buttons are rounded and the menu activation button is square (vice versa if the "Rounded Button Corners" preference is disabled). When menu selection is changed, the button label displays the selected mode ('source', 'decompile', 'bytecodes' etc).
Changes are in three packages.
ToolBuilder-Kernel:
- Add PluggableButtonSpec>>style to provide style hint. Used to suggest that a button should be rendered differently, in this case rounded versus square corners.
- Add changeLableWhen: to connect pluggable button with change notification, in this case to allow update: #contents to result in a label update in the dependent button.
ToolBuilder-Morphic:
- Add #whenChanged:update: as a mechanism for hooking change events to button updates, allowing an individual button to respond to e.g. self changed: #contents in the model.
- Update MorphicToolBuilder>>buildPluggableButton to make use of style and changeLabelWhen in the widget spec.
Tools:
- Update CodeHolder>>buildCodeProvenanceButtonWith: to add style hint for round/ square corners and changeLableWhen: for change notification to the widget spec.
Note: ToolBuilder has PluggableDropDownListSpec which is presumably intended to describe a drop-down list widget. This is currently unused in the image, but in future might provide a better approach than the current action button with menu approach.
=============== Diff against ToolBuilder-Kernel-cmm.49 ===============
Item was changed:
PluggableButtonSpec subclass: #PluggableActionButtonSpec
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'ToolBuilder-Kernel'!
+ !PluggableActionButtonSpec commentStamp: 'dtl 9/19/2011 07:51' prior: 0!
+ PluggableActionButtonSpec is intended as a HINT for the builder that this widget will be used as push (action) button. Unless explicitly supported it will be automatically substituted by PluggableButton.!
- !PluggableActionButtonSpec commentStamp: 'ar 2/12/2005 23:12' prior: 0!
- PluggableActionButtonSpec is intentded as a HINT for the builder that this widget will be used as push (action) button. Unless explicitly supported it will be automatically substituted by PluggableButton.!
Item was changed:
PluggableWidgetSpec subclass: #PluggableButtonSpec
+ instanceVariableNames: 'action label state enabled style changeLabelWhen'
- instanceVariableNames: 'action label state enabled'
classVariableNames: ''
poolDictionaries: ''
category: 'ToolBuilder-Kernel'!
!PluggableButtonSpec commentStamp: 'ar 2/11/2005 21:57' prior: 0!
A button, both for firing as well as used in radio-button style (e.g., carrying a selection).
Instance variables:
action <Symbol> The action to perform when the button is fired.
label <Symbol|String> The selector for retrieving the button's label or label directly.
state <Symbol> The selector for retrieving the button's selection state.
enabled <Symbo> The selector for retrieving the button's enabled state.
color <Symbo> The selector for retrieving the button color.
help <String> The balloon help for the button.!
Item was added:
+ ----- Method: PluggableButtonSpec>>changeLabelWhen (in category 'accessing') -----
+ changeLabelWhen
+ "When handled in in an update: handler, treat this symbol as notification
+ that the button label should be updated."
+ ^changeLabelWhen!
Item was added:
+ ----- Method: PluggableButtonSpec>>changeLabelWhen: (in category 'accessing') -----
+ changeLabelWhen: aSymbol
+ "When the button handles aSymbol in its update: handler, treat it
+ as notification that the button label should be updated."
+ changeLabelWhen := aSymbol!
Item was added:
+ ----- Method: PluggableButtonSpec>>style (in category 'accessing') -----
+ style
+ "Treat aSymbol as a hint to modify the button appearance."
+ ^style
+
+ !
Item was added:
+ ----- Method: PluggableButtonSpec>>style: (in category 'accessing') -----
+ style: aSymbol
+ "Use aSymbol as a hint to modify the button appearance."
+ style := aSymbol
+ !
...in http://www.mirandabanda.org/files/Cog/VM/VM.r2493/. These VMs are not
much changed from the 2487 VMs, BUT the 2487 VMs introduced a bug while
providing faster doesNotUnderstand: processing. These 2493 VMs contain code
to help identify that bug. If you're already using a 2487 VM or newer
/please/ upgrade to these 2493 VMs asap. I want to see C stack backtraces
from these VMs whenever they crash. Typically the VMs produce a crash.dmp
file somewhere in the file system (may be / on Mac OS, may be in the
directory containing the VM or the current directory on other OSs, but it
will be called crash.dmp, and on Mac OS info will be printed to the console
or to a crash report window). The C backtrace part of things looks like
this on windows:
Stack backtrace:
[004193EA] ??? + 4297706 in CogCode
[00442337] ??? + 4465463 in CogCode
[00442685] ??? + 4466309 in CogCode
[00583018] ??? + 5779480 in CogCode
[0040124B] ??? + 4198987 in CogCode
[00401298] ??? + 4199064 in CogCode
[7C816FE7] RegisterWaitForInputIdle + 73 in kernel32.dll
[7C913BA7] RtlDosApplyFileIsolationRedirection_Ustr + 1824 in ntdll.dll
this on Mac
C stack backtrace:
0 nsvm 0x00038689 reportStackState + 105
1 nsvm 0x0003893e sigsegv + 110
2 libsystem_c.dylib 0x9b2e259b _sigtramp + 43
3 ??? 0xffffffff 0x0 + 4294967295
4 nsvm 0x0008b2a5 sufficientSpaceAfterGC +
69
5 nsvm 0x0008d11d primitiveNewWithArg + 221
6 ??? 0x068b9899 0x0 + 109811865
7 nsvm 0x00098d10
initStackPagesAndInterpret + 512
8 nsvm 0x0002c530 EventLoopEventHandler +
16
Etc. So please feel free to email me the crash.dmp's and/or the C
backtraces of any crashes you have with 2493 VMs. Hopefully I'll track down
this regression quickly.
For the curious, what's the bug? I don't know yet. The symptom is that very
rarely the inline cache linking machinery for MNU PICs relinks the call of
an MNU PIC to the address 0x00000013, which causes a crash when the call is
next executed, long after the bug bit. These VMs contain code that will
raise an error when the relinking attempt is made, which should reveal the
bug.
Here's the 2493 readme:
CogVM binaries as per VMMaker.oscog-eem.125/r2493. Add callsite link/relocate
checks to catch the call 0x00000013 MNU callsite relinking bug.
Reduce the size of the simStack to something proportional to LargeContextSize.
In the Newspeak VM, don't cd to the image's directory on win32. Fix off-by-one
error in Win32OSProcessPlugin>primitiveGetCurrentWorkingDirectory so it doesn't
include an erroneous trailing null.
Fix the 1Gb allocation bug.
--
best,
Eliot
Eliot Miranda uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-eem.454.mcz
==================== Summary ====================
Name: System-eem.454
Author: eem
Time: 23 September 2011, 1:04:36.329 pm
UUID: 218a8aed-e375-4c88-8561-a060819ea29f
Ancestors: System-ul.453
Allow platformSourceVersion to fall back on sys attribute
1009 if primitivePlatformSourceVersion is unimplemented.
=============== Diff against System-ul.453 ===============
Item was changed:
----- Method: SmalltalkImage>>platformSourceVersion (in category 'vm') -----
platformSourceVersion
"Answer a string corresponding to the version of the external platform source
code, typically written in C and managed separately for each platform. This
invokes an optional primitive that may not be available on all virtual machines."
"Smalltalk vm platformSourceVersion"
<primitive: 'primitivePlatformSourceVersion'>
+ (self getSystemAttribute: 1009) ifNotNil:
+ [:platformSourceVersion| ^platformSourceVersion].
+ self notify: 'This virtual machine supports neither the optional primitive #primitivePlatformSourceVersion nor the optional system attribute 1009' translated.
- self notify: 'This virtual machine does not support the optional primitive #primitivePlatformSourceVersion' translated.
^''!
It's too long for a mail, but all explained here:
http://smallissimo.blogspot.com/2011/09/clarifying-and-optimizing.html
Optimizing such kernel message is important - for example when reading
a file of floats...
Which version do you prefer ?
Shall comments be that long ?
Any other opinion ?
Nicolas
http://thiscontext.wordpress.com/2011/08/19/spoon-3-alpha-3-released
Spoon is a project to make Smalltalk systems more understandable,
by removing unnecessary stuff, reorganizing what remains, and making it
easier to share and deploy. If you're interested in teaching, modules,
bootstrapping, minimalism, remote messaging, proxies, metaprogramming,
streams, sockets, or namespaces, you may be interested in this.
Thanks!
-C
--
Craig Latta
www.netjam.org/resume
+31 6 2757 7177
+ 1 415 287 3547
Attending: Chris Muller, Bert Freudenberg, Colin Putney, Randal
Schwartz, Levente Uzonyi, Jecel Assumpacao Jr., Chris Cunnington
* The relationship with the Software Freedom Conservancy is working
as the process of disbursing funds has been shown to work.
* It was agreed that the Software Architecture Group at Potsdam does
great work and we should find a way to draw more attention to it,
perhaps on squeak.org.
* It was acknowledged that these days in open source Smalltalk there
is a great deal of effort going into the VM, which is a great
thing. And it was posited that when this burst of VM creativity
eases, there will likely be a surge of changes in the image
reflecting the new possibilities.
* The release of a 4.3 image of Squeak is beginning to gather its
materials.
* A discussion on the state of the Squeak community was had.