Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.1524.mcz
==================== Summary ====================
Name: Kernel-eem.1524
Author: eem
Time: 22 August 2023, 6:09:03.223832 pm
UUID: 99f7ba8e-761f-4711-92c2-2818c08e064d
Ancestors: Kernel-eem.1523
eliminagte duplicate line endings in forkNamed:
=============== Diff against Kernel-eem.1523 ===============
Item was changed:
----- Method: BlockClosure>>forkNamed: (in category 'scheduling') -----
forkNamed: aString
-
"Create and schedule a Process running the code in the receiver and
+ having the given name."
- having the given name."
-
-
-
^ self newProcess name: aString; resume!
Eliot Miranda uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-eem.1231.mcz
==================== Summary ====================
Name: Tools-eem.1231
Author: eem
Time: 22 August 2023, 5:38:02.314287 pm
UUID: 517866f8-199a-40d8-87a5-d6d4ed0c7e99
Ancestors: Tools-mt.1230
Robustness on reloading Workspace contents. The file might not exist (e.g. copy an image to another machine but don't copy associated workspace files). An exception should not occur on start up if the backing file is missing.
=============== Diff against Tools-mt.1230 ===============
Item was changed:
----- Method: Model>>loadContentsFromFileNamed:workBlock: (in category '*Tools-file out') -----
loadContentsFromFileNamed: fileName workBlock: workBlock
+ [FileStream
- FileStream
readOnlyFileNamed: fileName
+ do: [:stream | workBlock value: stream]]
+ on: FileDoesNotExistException
+ do: [^false].
- do: [:stream | workBlock value: stream].
^ true!
Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.1523.mcz
==================== Summary ====================
Name: Kernel-eem.1523
Author: eem
Time: 22 August 2023, 12:55:52.155147 pm
UUID: a4d61d2f-cc75-4b8c-9615-cef127a2b3fd
Ancestors: Kernel-ct.1522
Rename Process's threadId inst var to threadAffinity while we still can. This is in response to Leon Matthes correctly pointing out that the variable is an affinity, not an id. Thanks!
=============== Diff against Kernel-ct.1522 ===============
Item was changed:
Link subclass: #Process
+ instanceVariableNames: 'suspendedContext priority myList threadAffinity effectiveProcess name island env'
- instanceVariableNames: 'suspendedContext priority myList threadId effectiveProcess name island env'
classVariableNames: ''
poolDictionaries: ''
category: 'Kernel-Processes'!
+ !Process commentStamp: 'eem 8/22/2023 12:52' prior: 0!
- !Process commentStamp: 'eem 10/9/2021 15:34' prior: 0!
I represent an independent path of control in the system. This path of control may be stopped (by sending the message suspend) in such a way that it can later be restarted (by sending the message resume). When any one of several paths of control can be advanced, the single instance of ProcessorScheduler named Processor determines which one will actually be advanced, partly using the value of priority.
Instance Variables: N.B. The first four are used by the virtual machine. They must be defined, and defined in this order,
suspendedContext: <Context|nil>
priority: <Integer>
myList: <LinkedList|nil>
+ threadAffinity: <Integer|nil>
- threadId: <Integer|nil>
effectiveProcess: <Process|nil>
name: <String|nil>
island: <Island|nil>
env: <Dictionary|nil>
effectiveProcess
- if not nil effectiveProcess is a process I am running on behalf of. Used by the execution simulation machinery (used by the debugger) to ensure that Processor activeProcess et al answer the expected result when simulating execution (e.g. when debugging). See evaluate:onBehalfOf: and senders.
env
- if not nil this is a Dictionary providing process-specific variables. See e.g. environmentAt:*, DynamicVariable and ProcessSpecificVariable.
island
- used by Tweak and Croquet to partition the image into multiple address spaces
myList
- if nil, I am either suspended or the active process. If not nil it is either some condition variable (Semaphore, Mutex) that I am blocked waiting on, or it is the LinkedList in ProcessorScheduler quiescentProcesses that holds the processes for my priority that are not the current active process but still runnable.
name
- if not nil this is my name, used for information, see e.g. the names of processes displayed in the ProcessBrowser
priority
- my scheduling priority, which corresponds to the index in ProcessorScheduler quiescentProcesses that holds the LinkedList of processes at this priority. If I am running but quiescent, changing priority involves changing priority and myList.
suspendedContext
- if nil, then I am either the active process or I have been terminated. If not nil it is the Context at the hot end of my stack
+ threadAffinity
+ - if not nil then it is an integer value set by the VM that controls how I interact with underlying native threads. If positive, the threadAffinity is that of some native thread known to the VM, and the VM will ensure that when I am running, I will be running on that native thread. If negative, the absolute value of threadAffinity is that of some thread known to the VM, and the VM will ensure that when I am running, I will *not* be running on that native thread. Set by the VM. Not to be set manually. Meaningful only on threaded VMs (which do not mean VMs with a threaded heartbeat). It is required to be my fourth instance variable. See SmalltalkImage >> #processHasThreadAffinityInstVar: for further information.!
- threadId
- - if not nil then it is an integer value set by the VM that controls how I interact with underlying native threads. If positive, the threadId is that of some native thread known to the VM, and the VM will ensure that when I am running, I will be running on that native thread. If negative, the absolute value of threadId is that of some thread known to the VM, and the VM will ensure that when I am running, I will *not* be running on that native thread. Set by the VM. Not to be set manually. Meaningful only on threaded VMs (which do not mean VMs with a threaded heartbeat). It is required to be my fourth instance variable. See SmalltalkImage >> #processHasThreadIdInstVar: for further information.!
Item was changed:
+ (PackageInfo named: 'Kernel') postscript: '"Make sure the 4th inst var of Process is threadAffinity, not threadId"
- (PackageInfo named: 'Kernel') postscript: '"Turn on the enableIPv6 preference for trunk."
+ (Process instVarNames at: 4) = ''threadId'' ifTrue:
+ [Process instVarNames at: 4 put: ''threadAffinity'' copy]'!
- NetNameResolver enableIPv6: true.
- '!
Marcel Taeumel uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-mt.1230.mcz
==================== Summary ====================
Name: Tools-mt.1230
Author: mt
Time: 22 August 2023, 10:05:29.672936 am
UUID: e51a04af-92dd-ad4f-858b-7771958ef91a
Ancestors: Tools-mt.1229
Fixes a minor regression in MessageNames that just surfaced since we can now show #Comment #Definition and #Hierarchy of classes in that tool.
The instVar currentCompiledMethod is overloaded and also holds a RemoteString if #Comment of a class is shown. Other tools do already account for that.
Here, we just have to rely on the working implementation of #selectedClassOrMetaClass to implemented the desired feature, which is to select the first method of the current class if possible.
Thanks to Nicolas (nice) for documenting this bug! See https://github.com/squeak-smalltalk/squeak-object-memory/issues/93
=============== Diff against Tools-mt.1229 ===============
Item was changed:
----- Method: MessageNames>>selectorListIndex: (in category 'selector list') -----
selectorListIndex: anInteger
"Set the selectorListIndex as specified, and propagate consequences"
+
+ | currentClass newMessageListIndex |
+ currentClass := self selectedClassOrMetaClass.
+
- | methodClass index |
- methodClass := currentCompiledMethod ifNotNil: [currentCompiledMethod methodClass].
selectorListIndex := anInteger.
self changed: #selectorListIndex.
messageList := self computeMessageList.
self changed: #messageList.
- messageList size > 1 ifTrue:
- [methodClass ifNotNil: [index := messageList findFirst: [:methodRef| methodRef actualClass = methodClass]]].
"If a method of the same class exists, select that, otherwise select the first message if any."
+ newMessageListIndex := (messageList size > 1 and: [currentClass notNil])
+ ifTrue: [1 max: (messageList findFirst: [:methodRef | methodRef actualClass = currentClass])]
+ ifFalse: [1 min: messageList size].
+
+ self messageListIndex: newMessageListIndex.!
- self messageListIndex: (index ifNil: [1 min: messageList size])!
Christoph Thiede uploaded a new version of Help-Squeak-TerseGuide to project The Trunk:
http://source.squeak.org/trunk/Help-Squeak-TerseGuide-ct.17.mcz
==================== Summary ====================
Name: Help-Squeak-TerseGuide-ct.17
Author: ct
Time: 18 August 2023, 12:34:12.962041 am
UUID: 8b1fdaa1-4030-984d-949e-c3c96efa3103
Ancestors: Help-Squeak-TerseGuide-ct.16
Updates terse guide on dialogs. FillInTheBlank should not be used directly and UIManager should be accessed through Project.
=============== Diff against Help-Squeak-TerseGuide-ct.16 ===============
Item was changed:
----- Method: TerseGuideHelp class>>misc (in category 'pages') -----
misc
"This method was automatically generated. Edit it using:"
"TerseGuideHelp edit: #misc"
+ <generated>
+ ^(HelpTopic
- ^HelpTopic
title: 'Miscellaneous'
contents:
'| x |
Smalltalk condenseChanges. "compress the change file"
+ x := Project uiManager request: ''Prompt Me''. "prompt user for input using a flexible UI dispatcher"
- x := FillInTheBlank request: ''Prompt Me''. "prompt user for input"
- x := UIManager default request: ''Prompt Me''. "prompt user for input using a flexible UI dispatcher"
Utilities openCommandKeyHelp
+ !!' readStream nextChunkText)
+ key: #misc;
+ shouldStyle: true;
+ yourself!
- !!' readStream nextChunkText!