Chris Muller uploaded a new version of SMLoader to project The Trunk:
http://source.squeak.org/trunk/SMLoader-cmm.91.mcz
==================== Summary ====================
Name: SMLoader-cmm.91
Author: cmm
Time: 24 April 2018, 10:15:09.411172 pm
UUID: 3404f28c-5e5b-499d-b97c-d14a810c230c
Ancestors: SMLoader-tpr.90
Make the creation of new PackageReleases inherit the script of their ancestor, so it's easier to create new PackageReleases based on existing ones. Use the default template script when creating the first Release or one not based on another.
=============== Diff against SMLoader-tpr.90 ===============
Item was changed:
----- Method: SMPackage>>newUnattachedRelease (in category '*smloader') -----
newUnattachedRelease
"Create a new release that is not part of the packages list of releases. That does not happen until the user clicks Save on the UI."
+ ^ (self newUnattachedReleaseFrom: self lastRelease) downloadUrl: String empty!
- ^ self newUnattachedReleaseFrom: self lastRelease !
Chris Muller uploaded a new version of SMBase to project The Trunk:
http://source.squeak.org/trunk/SMBase-cmm.139.mcz
==================== Summary ====================
Name: SMBase-cmm.139
Author: cmm
Time: 24 April 2018, 8:21:39.517531 pm
UUID: 97c9e4d9-8217-4baa-9d76-a3409c4a93e0
Ancestors: SMBase-nice.138
When creating new package Releases, use the script of the selected ancestor as the template, because usually it's just some package #'s that need updating.
The new informative template script is used when creating the first Release, or by selecting the Package itself, instead of one of its Releases.
=============== Diff against SMBase-nice.138 ===============
Item was changed:
----- Method: SMPackageRelease>>initializeFromRelease:package: (in category 'initialize-release') -----
+ initializeFromRelease: parentRelease package: aPackage
+ "Initialize package release from a given parent. Branch if needed."
+ self
+ map: aPackage map
+ id: UUID new.
- initializeFromRelease: parentRelease package: aPackage
- "Initialize package release from a given parent.
- Branch if needed."
-
- self map: aPackage map id: UUID new.
package := aPackage.
aPackage isCommunitySupported ifTrue: [ self beCommunitySupported ].
+ automaticVersion := parentRelease
+ ifNil: [ VersionNumber first ]
+ ifNotNil: [ parentRelease nextOrBranch ].
+ self downloadUrl: parentRelease downloadUrl.
+ version := note := String empty!
- automaticVersion :=
- parentRelease
- ifNil: [VersionNumber first]
- ifNotNil: [parentRelease nextOrBranch].
- version := note := downloadUrl := ''!
Eliot Miranda uploaded a new version of SystemReporter to project The Trunk:
http://source.squeak.org/trunk/SystemReporter-eem.38.mcz
==================== Summary ====================
Name: SystemReporter-eem.38
Author: eem
Time: 24 April 2018, 11:28:49.06153 am
UUID: 10c79d5b-bd67-4196-981f-1f8eb5291836
Ancestors: SystemReporter-mt.37
Add a better comment for parameter 48.
=============== Diff against SystemReporter-mt.37 ===============
Item was changed:
----- Method: SystemReporter>>reportVMParameters: (in category 'reporting') -----
reportVMParameters: aStream
| vmParameters isStack isCog isSpur |
self header: 'Virtual Machine Parameters' on: aStream.
vmParameters := Smalltalk vm getVMParameters.
isStack := (vmParameters at: 42 ifAbsent: [0]) ~= 0. "42 = number of stack pages available"
isCog := isStack and: [(vmParameters at: 46) ~= 0]. "46 is machine code zone size"
isSpur := isStack and: [(vmParameters at: 41) anyMask: 2r10000]. "41 is imageFormatVersion for the VM; bit 16 is the Spur bit"
(isSpur
ifFalse:
[#( 1 'size of old space'
2 'size of young+old space'
3 'size of memory'
4 'allocationCount'
5 'allocations between GCs'
6 'survivor count tenuring threshold')]
ifTrue:
[#( 1 'size of old space'
2 'used bytes in new space (used eden + used past space)'
3 'size of heap')]),
#( 7 'full GCs since startup'
8 'total milliseconds in full GCs since startup'),
(isSpur
ifFalse: [#( 9 'incremental GCs since startup'
10 'total milliseconds in incremental GCs since startup'
11 'tenures of surving objects since startup'),
{12 to: 19. 'specific to the translating VM'}]
ifTrue: [#( 9 'scavenging GCs since startup'
10 'total milliseconds in scavenging GCs since startup'
11 'tenures of surving objects since startup'),
{12 to: 15. 'reserved for future use'},
#( 16 'total microseconds in idle since startup'
17 'proportion of code zone available for use (Sista VMs only; read-write)'
18 'total milliseconds in full GC compaction since startup (a portion of parameter 8)'
19 'scavenge threshold; the effective size of eden')]),
#( 20 'utc microseconds at startup (if non-zero)'
21 'root/remembered table size (occupancy)'
22 'root/remembered table overflows since startup'
23 'bytes of extra memory to reserve for VM buffers, plugins, etc.'
24 'free memory threshold above which object memory will be shrunk'
25 'memory headroom when growing object memory'),
(isStack
ifFalse:
[#( 26 'interruptChecksEveryNms - force an ioProcessEvents every N milliseconds, in case the image is not calling getNextEvent often')]
ifTrue:
[#( 26 'heartbeat period (ms; see #58)')]),
(isSpur
ifFalse:
[#( 27 'number of times mark loop iterated for current IGC/FGC includes ALL marking'
28 'number of times sweep loop iterated for current IGC/FGC'
29 'number of times make forward loop iterated for current IGC/FGC'
30 'number of times compact move loop iterated for current IGC/FGC')]
ifTrue: [#()]),
#( 31 'number of grow memory requests'
32 'number of shrink memory requests'),
(isSpur
ifFalse:
[#( 33 'number of root table entries used for current IGC/FGC'
34 'number of allocations done before current IGC/FGC'
35 'number of survivor objects after current IGC/FGC'
36 'millisecond clock when current IGC/FGC completed'
37 'number of marked objects for Roots of the world, not including Root Table entries for current IGC/FGC'
38 'milliseconds taken by current IGC'
39 'Number of finalization signals for Weak Objects pending when current IGC/FGC completed')]
ifTrue:
[#( 33 'number of root table entries at last scavenge'
35 'number of survivor objects at last scavenge (if non-zero)'
36 'millisecond clock when current scavenge completed'
38 'milliseconds taken by current scavenge'
39 'Number of finalization signals for Weak Objects pending when current SGC/FGC completed')]),
#( 40 'VM word size - 4 or 8'),
(isStack
ifTrue:
[#(
41 'imageFormatVersion for the VM'
42 'number of stack pages available'
43 'desired number of stack pages (stored in image file header, max 65535)'
44 'size of eden, in bytes'
45 'desired size of eden, in bytes (stored in image file header)'
46 'machine code zone size, in bytes (0 in Stack VM)'
47 'desired machine code zone size (0 => default 1Mb)'
+ 48 'various persistent image header flags. See getCogVMFlags in the VM source.'
- 48 'various header flags. See getCogVMFlags.'
49 'max size the image promises to grow the external semaphore table to'),
(isSpur
ifFalse:
[{ 50 to: 51. 'reserved for VM parameters that persist in the image (such as size of eden above)'.
52 to: 56. 'specific to Spur' }]
ifTrue:
[{ 50 to: 51. 'reserved for VM parameters that persist in the image (such as size of eden above)' },
#( 52 'root/remembered table capacity'
53 'number of old space segments'
54 'total free old space'
55 'ratio of growth and image size at or above which a GC will be performed post scavenge')]),
#( 56 'number of process switches since startup'
57 'number of ioProcessEvents calls since startup'
58 'number of forceInterruptCheck calls since startup'
59 'number of check event calls since startup'
60 'number of stack page overflows since startup'
61 'number of stack page divorces since startup'
62 'compiled code compactions since startup'),
(isCog
ifFalse:
[#()]
ifTrue:
[#( 63 'total milliseconds in compiled code compactions since startup'
64 'the number of methods that currently have jitted machine-code')]),
#( 65 'whether the VM supports MULTIPLE_BYTECODE_SETS or not.'
66 'the byte size of a stack page'),
(isSpur
ifFalse:
[{ 67 to: 69. 'reserved for more Cog-related info' }]
ifTrue:
[#( 67 'the maximum allowed size of old space (if zero there is no limit)'
68 'the average number of live stack pages when scanned by scavenge/gc/become'
69 'the maximum number of live stack pages when scanned by scavenge/gc/become')]),
#( 70 'the vmProxyMajorVersion (the interpreterProxy VM_MAJOR_VERSION)'
71 'the vmProxyMinorVersion (the interpreterProxy VM_MINOR_VERSION)')]
ifFalse:
[#()])
pairsDo: [:idx :desc | | value values |
aStream nextPut: $#.
idx isInteger
ifTrue:
[value := vmParameters at: idx.
aStream print: idx; tab: (idx < 10 ifTrue: [2] ifFalse: [1]); nextPutAll: ((value isInteger and: [idx ~= 41]) ifTrue: [value asStringWithCommas] ifFalse: [value printString])]
ifFalse:
[value := vmParameters at: idx first.
aStream print: idx first; next: 2 put: $.; print: idx last; tab.
values := idx collect: [:i| vmParameters at: i].
values asSet size = 1
ifTrue: [aStream print: value]
ifFalse: [values do: [:v| aStream print: v] separatedBy: [aStream nextPutAll: ', ']]].
aStream tab; nextPutAll: desc; cr]!
Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.1166.mcz
==================== Summary ====================
Name: Kernel-eem.1166
Author: eem
Time: 24 April 2018, 11:25:52.062506 am
UUID: e2549724-d2f2-41f4-9582-6db17efefcf0
Ancestors: Kernel-eem.1165
Revert the previous convenience. It isn't. There is a better way; see MonticelloConfigurations-eem.153.
Implement FullBlockClosure>>size. (Bizarrely BlockClosure>>sized answers the numer of bytes of bytecode in the block; I don't think this is useful :-) )
=============== Diff against Kernel-eem.1165 ===============
Item was removed:
- ----- Method: Deprecation class>>withDeprecationWarningsSuppressed: (in category 'utilities') -----
- withDeprecationWarningsSuppressed: aBlock
- | savedShowDeprecationWarnings |
- savedShowDeprecationWarnings := ShowDeprecationWarnings.
- ShowDeprecationWarnings := false.
- ^aBlock ensure: [ShowDeprecationWarnings := savedShowDeprecationWarnings]!
Item was added:
+ ----- Method: FullBlockClosure>>size (in category 'accessing') -----
+ size
+ "Answer closure's bytecode size (number of bytes) by accessing
+ the closure's method."
+ ^self compiledBlock endPC - self compiledBlock initialPC + 1!
Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.1165.mcz
==================== Summary ====================
Name: Kernel-eem.1165
Author: eem
Time: 24 April 2018, 11:19:16.734066 am
UUID: 281c4af1-ffb9-4616-a9ef-a6369143c7b7
Ancestors: Kernel-eem.1162, Kernel-eem.1164
Add a convenience to turn off showing deprecation warnings for the duration of a block.
=============== Diff against Kernel-eem.1164 ===============
Item was added:
+ ----- Method: Deprecation class>>withDeprecationWarningsSuppressed: (in category 'utilities') -----
+ withDeprecationWarningsSuppressed: aBlock
+ | savedShowDeprecationWarnings |
+ savedShowDeprecationWarnings := ShowDeprecationWarnings.
+ ShowDeprecationWarnings := false.
+ ^aBlock ensure: [ShowDeprecationWarnings := savedShowDeprecationWarnings]!
Patrick Rein uploaded a new version of ToolBuilder-Morphic to project The Trunk:
http://source.squeak.org/trunk/ToolBuilder-Morphic-pre.216.mcz
==================== Summary ====================
Name: ToolBuilder-Morphic-pre.216
Author: pre
Time: 24 April 2018, 2:12:43.175899 pm
UUID: 52c98680-626a-c446-9bca-07fc30d10393
Ancestors: ToolBuilder-Morphic-pre.215
Minor improvement to set selected path based on a hint from mt: Only calculate the selected path when the model is actually interested in it.
=============== Diff against ToolBuilder-Morphic-pre.215 ===============
Item was changed:
----- Method: PluggableTreeMorph>>setSelectedPath: (in category 'selection') -----
setSelectedPath: aMorph
| items wrapperPath |
+ setSelectedPathSelector ifNotNil: [:setSelectedPathSelector |
+ wrapperPath := selectedWrapper
+ ifNil: [#()]
+ ifNotNil: [
+ wrapperPath := {selectedWrapper} asOrderedCollection.
+ [wrapperPath last parent notNil]
+ whileTrue: [wrapperPath addLast: wrapperPath last parent].
+ wrapperPath].
+ items := wrapperPath collect: [:w | w item].
- wrapperPath := selectedWrapper
- ifNil: [#()]
- ifNotNil: [
- wrapperPath := {selectedWrapper} asOrderedCollection.
- [wrapperPath last parent notNil]
- whileTrue: [wrapperPath addLast: wrapperPath last parent].
- wrapperPath].
- items := wrapperPath collect: [:w | w item].
- setSelectedPathSelector ifNotNil: [:symbol |
model
+ perform: setSelectedPathSelector
- perform: symbol
with: items].
!
Patrick Rein uploaded a new version of ToolBuilder-Kernel to project The Trunk:
http://source.squeak.org/trunk/ToolBuilder-Kernel-pre.122.mcz
==================== Summary ====================
Name: ToolBuilder-Kernel-pre.122
Author: pre
Time: 24 April 2018, 10:29:02.215732 am
UUID: 9e1d912d-13fb-7341-9aac-9ac6ebfb76ab
Ancestors: ToolBuilder-Kernel-tpr.121
Adds a callback to pluggable tree specifications to retrieve the currently selected path in the tree.
=============== Diff against ToolBuilder-Kernel-tpr.121 ===============
Item was changed:
PluggableWidgetSpec subclass: #PluggableTreeSpec
+ instanceVariableNames: 'roots getSelectedPath setSelectedPath setSelected getSelected setSelectedParent getChildren hasChildren label icon unusedVar menu keyPress doubleClick dropItem dropAccept autoDeselect dragItem nodeClass columns vScrollBarPolicy hScrollBarPolicy dragStarted'
- instanceVariableNames: 'roots getSelectedPath setSelected getSelected setSelectedParent getChildren hasChildren label icon unusedVar menu keyPress doubleClick dropItem dropAccept autoDeselect dragItem nodeClass columns vScrollBarPolicy hScrollBarPolicy dragStarted'
classVariableNames: ''
poolDictionaries: ''
category: 'ToolBuilder-Kernel'!
+ !PluggableTreeSpec commentStamp: 'pre 4/24/2018 10:20' prior: 0!
- !PluggableTreeSpec commentStamp: 'mvdg 3/21/2008 20:59' prior: 0!
A pluggable tree widget. PluggableTrees are slightly different from lists in such that they ALWAYS store the actual objects and use the label selector to query for the label of the item. PluggableTrees also behave somewhat differently in such that they do not have a "getSelected" message but only a getSelectedPath message. The difference is that getSelectedPath is used to indicate by the model that the tree should select the appropriate path. This allows disambiguation of items. Because of this, implementations of PluggableTrees must always set their internal selection directly, e.g., rather than sending the model a setSelected message and wait for an update of the #getSelected the implementation must set the selection before sending the #setSelected message. If a client doesn't want this, it can always just signal a change of getSelectedPath to revert to whatever is needed.
Instance variables:
roots <Symbol> The message to retrieve the roots of the tree.
getSelectedPath <Symbol> The message to retrieve the selected path in the tree.
+ setSelectedPath <Symbol> The message to set the selected path in the tree.
setSelected <Symbol> The message to set the selected item in the tree.
getChildren <Symbol> The message to retrieve the children of an item
hasChildren <Symbol> The message to query for children of an item
label <Symbol> The message to query for the label of an item.
icon <Symbol> The message to query for the icon of an item.
help <Symbol> The message to query for the help of an item.
menu <Symbol> The message to query for the tree's menu
keyPress <Symbol> The message to process a keystroke.
wantsDrop <Symbol> The message to query whether a drop might be accepted.
dropItem <Symbol> The message to drop an item.
enableDrag <Boolean> Enable dragging from this tree.
autoDeselect <Boolean> Whether the tree should allow automatic deselection or not.
unusedVar (unused) This variable is a placeholder to fix problems with loading packages in 3.10.!
Item was added:
+ ----- Method: PluggableTreeSpec>>setSelectedPath (in category 'accessing - selection') -----
+ setSelectedPath
+
+ ^ setSelectedPath!
Item was added:
+ ----- Method: PluggableTreeSpec>>setSelectedPath: (in category 'accessing - selection') -----
+ setSelectedPath: aSymbol
+
+ setSelectedPath := aSymbol!