Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.1436.mcz
==================== Summary ====================
Name: System-mt.1436
Author: mt
Time: 28 November 2023, 10:33:10.464569 am
UUID: 81edd9b9-3897-434b-840b-a628c005b995
Ancestors: System-dtl.1435
Complements Tools-mt.1241
=============== Diff against System-dtl.1435 ===============
Item was changed:
----- Method: Process>>debug (in category '*System-debugging') -----
debug
+ "See the comment in #debugWithCue:."
- "See the comment in #debugWithTitle:full:contents:."
^ self debugWithTitle: 'Debugger' translated!
Item was added:
+ ----- Method: Process>>debugWithCue: (in category '*System-debugging') -----
+ debugWithCue: invocationCue
+ "BEWARE!! Open a debugger on the receiver, which must neither be running nor be simulated. Examples include workspace do-its, test execution, and helper processes. If you want to begin with a certain context, use #runUntil: before calling to here.
+
+ [ 3 + 4 ] newProcess debug.
+ (Process forBlock: [ 3 + 4 ]) debug.
+
+ Note that for debugging the currently running process, which might currently simulate the receiver, use ProcessorScheduler >> #debugWithTitle:.
+
+ (IMPLEMENTATION NOTE: The debugger interface is capable of debugging the active process correctly. However, unconditionally sending debug messages to the active process, in the past, led to a very tedious number of infinite debugger chains in an edge case when the effectiveProcess differs from the genuineProcess being executed by the VM (see ProcessorScheduler >> #activeProcess). This edge case occurs when a debugger is raised while another process is being simulated (aka process-faithful debugging, see #evaluate:onBehalfOf:), so at the very least Kernel methods should never send this message to the active process. For more information, see http://forum.world.st/I-broke-the-debugger-td5110752.html)"
+
+ self assert: [self suspendedContext notNil "= not running"].
+ self assert: [self isActiveProcess not "= not even simulated"].
+
+ self assert: [invocationCue process isNil].
+ invocationCue process: self.
+ self assert: [invocationCue context isNil].
+ invocationCue context: self suspendedContext.
+
+ ^ ToolSet debugWithCue: invocationCue!
Item was changed:
----- Method: Process>>debugWithTitle: (in category '*System-debugging') -----
debugWithTitle: title
+ "See the comment in #debugWithCue:."
- "See the comment in #debugWithTitle:full:contents:."
^ self debugWithTitle: title full: true!
Item was changed:
----- Method: Process>>debugWithTitle:full: (in category '*System-debugging') -----
debugWithTitle: title full: aBoolean
+ "See the comment in #debugWithCue:."
- "See the comment in #debugWithTitle:full:contents:."
^ self debugWithTitle: title full: aBoolean contents: nil!
Item was changed:
----- Method: Process>>debugWithTitle:full:contents: (in category '*System-debugging') -----
debugWithTitle: title full: bool contents: contents
+ "See the comment in #debugWithCue:."
- "BEWARE!! Open a debugger on the receiver, which must neither be running nor be simulated. Examples include workspace do-its, test execution, and helper processes. If you want to begin with a certain context, use #runUntil: before calling to here.
-
- [ 3 + 4 ] newProcess debug.
- (Process forBlock: [ 3 + 4 ]) debug.
-
- Note that for debugging the currently running process, which might currently simulate the receiver, use ProcessorScheduler >> #debugWithTitle:.
-
- (IMPLEMENTATION NOTE: The debugger interface is capable of debugging the active process correctly. However, unconditionally sending debug messages to the active process, in the past, led to a very tedious number of infinite debugger chains in an edge case when the effectiveProcess differs from the genuineProcess being executed by the VM (see ProcessorScheduler >> #activeProcess). This edge case occurs when a debugger is raised while another process is being simulated (aka process-faithful debugging, see #evaluate:onBehalfOf:), so at the very least Kernel methods should never send this message to the active process. For more information, see http://forum.world.st/I-broke-the-debugger-td5110752.html)"
+ ^ self debugWithCue: (DebuggerInvocationCue new
+ "process: nil;"
+ "context: nil;"
+ label: title;
+ contents: contents;
+ fullView: bool;
+ yourself)!
- self assert: [self suspendedContext notNil "= not running"].
- self assert: [self isActiveProcess not "= not even simulated"].
-
- ^ ToolSet
- debugProcess: self
- context: self suspendedContext
- label: title
- contents: contents
- fullView: bool!
Item was changed:
----- Method: ProcessorScheduler>>debugContext:title:full:contents: (in category '*System-Applications-debugging') -----
debugContext: aContext title: title full: aBoolean contents: contents
- "Open a debugger on the currently running (i.e. genuine) process. Note that that process might actually simulate another process, which ends up here by checking #isActiveProcess. If no code simulation is involved, the genuine process will be suspended along the way -- and hopefully replaced to keep the system responsive. For the simulated case, an existing debugger should take over and leave the genuine process running, that is, simulating. Examples include (a) handling unhandled errors in a tool set and (b) introspecting thisContext to reveal dialog invocation.
+ self flag: #deprecated.
+ ^ self debugWithCue: (DebuggerInvocationCue new
+ "process: nil;"
+ context: aContext;
+ label: title;
+ contents: contents;
+ fullView: aBoolean;
+ yourself)!
- Processor debugWithTitle: 'Debug' full: false contents: 'Carpe Squeak!!'
-
- Note that, outside code simulation, suspended processes can be debugged directly via Process >> #debugWithTitle:. "
-
- self assert: [thisContext hasSender: aContext].
-
- ^ ToolSet
- debugProcess: genuineProcess
- context: aContext
- label: title
- contents: contents
- fullView: aBoolean!
Item was changed:
----- Method: ProcessorScheduler>>debugContextThat:title: (in category '*System-Applications-debugging') -----
debugContextThat: aBlock title: title
+ "See the comment in #debugWithCue:."
- "See the comment in #debugContext:title:full:contents:."
+ ^ self debugWithCue: (DebuggerInvocationCue new
+ "process: nil;"
+ context: (thisContext sender findContextSuchThat: aBlock);
+ label: title;
+ "contents: nil;"
+ fullView: true;
+ yourself)!
- ^ self
- debugContext: (thisContext sender findContextSuchThat: aBlock)
- title: title
- full: true
- contents: nil!
Item was changed:
----- Method: ProcessorScheduler>>debugContextThat:title:full: (in category '*System-Applications-debugging') -----
debugContextThat: aBlock title: title full: aBoolean
+ "See the comment in #debugWithCue:."
- "See the comment in #debugContext:title:full:contents:."
+ ^ self debugWithCue: (DebuggerInvocationCue new
+ "process: nil;"
+ context: (thisContext sender findContextSuchThat: aBlock);
+ label: title;
+ "contents: nil;"
+ fullView: aBoolean;
+ yourself)!
- ^ self
- debugContext: (thisContext sender findContextSuchThat: aBlock)
- title: title
- full: aBoolean
- contents: nil!
Item was changed:
----- Method: ProcessorScheduler>>debugContextThat:title:full:contents: (in category '*System-Applications-debugging') -----
debugContextThat: aBlock title: title full: aBoolean contents: contents
+ "See the comment in #debugWithCue:."
- "See the comment in #debugContext:title:full:contents:."
+ ^ self debugWithCue: (DebuggerInvocationCue new
+ "process: nil;"
+ context: (thisContext sender findContextSuchThat: aBlock);
+ label: title;
+ contents: contents;
+ fullView: aBoolean;
+ yourself)!
- ^ self
- debugContext: (thisContext sender findContextSuchThat: aBlock)
- title: title
- full: aBoolean
- contents: contents!
Item was added:
+ ----- Method: ProcessorScheduler>>debugWithCue: (in category '*System-Applications-debugging') -----
+ debugWithCue: invocationCue
+ "Open a debugger on the currently running (i.e. genuine) process. Note that that process might actually simulate another process, which ends up here by checking #isActiveProcess. If no code simulation is involved, the genuine process will be suspended along the way -- and hopefully replaced to keep the system responsive. For the simulated case, an existing debugger should take over and leave the genuine process running, that is, simulating. Examples include (a) handling unhandled errors in a tool set and (b) introspecting thisContext to reveal dialog invocation.
+
+ Processor debugWithTitle: 'Debug' full: false contents: 'Carpe Squeak!!'
+
+ Note that, outside code simulation, suspended processes can be debugged directly via Process >> #debugWithTitle:. "
+
+ self assert: [invocationCue context notNil].
+ self assert: [thisContext hasSender: invocationCue context].
+
+ self assert: [invocationCue process isNil].
+ invocationCue process: genuineProcess.
+
+ ^ ToolSet debugWithCue: invocationCue!
Item was changed:
----- Method: ProcessorScheduler>>debugWithTitle: (in category '*System-Applications-debugging') -----
debugWithTitle: title
+ "See the comment in #debugWithCue:."
- "See the comment in #debugContext:title:full:contents:."
+ ^ self debugWithCue: (DebuggerInvocationCue new
+ "process: nil;"
+ context: thisContext sender;
+ label: title;
+ "contents: nil;"
+ fullView: true;
+ yourself)!
- ^ self
- debugContext: thisContext sender
- title: title
- full: true
- contents: nil!
Item was changed:
----- Method: ProcessorScheduler>>debugWithTitle:full: (in category '*System-Applications-debugging') -----
debugWithTitle: title full: aBoolean
+ "See the comment in #debugWithCue:."
- "See the comment in #debugContext:title:full:contents:."
+ ^ self debugWithCue: (DebuggerInvocationCue new
+ "process: nil;"
+ context: thisContext sender;
+ label: title;
+ "contents: nil;"
+ fullView: aBoolean;
+ yourself)!
- ^ self
- debugContext: thisContext sender
- title: title
- full: aBoolean
- contents: nil!
Item was changed:
----- Method: ProcessorScheduler>>debugWithTitle:full:contents: (in category '*System-Applications-debugging') -----
debugWithTitle: title full: aBoolean contents: contents
+ "See the comment in #debugWithCue:."
+
+ ^ self debugWithCue: (DebuggerInvocationCue new
+ "process: nil;"
+ context: thisContext sender;
+ label: title;
+ contents: contents;
+ fullView: aBoolean;
+ yourself)!
- "See the comment in #debugContext:title:full:contents:."
-
- ^ self
- debugContext: thisContext sender
- title: title
- full: aBoolean
- contents: contents!
Item was changed:
----- Method: ToolSet class>>debugProcess:context:label:contents:fullView: (in category 'debugging') -----
debugProcess: aProcess context: aContext label: aString contents: contents fullView: aBool
- "Open a debugger on the given process, which might be active, suspended, or terminated. You can also use the convenience protocol for debugging on Process and ProcessorScheduler.
-
- NOTE that you SHOULD NOT pass 'Processor activeProcess' directly to this method to avoid mixing code simulation with genuine code execution. Always use the indirection via ProcessorScheduler >>#debug... See also the comment in Process >> #debugWithTitle:full:contents:."
+ self flag: #deprecated.
- "First, guard this incident to detect and handle recursive errors."
- ^ Project current guardRecursiveError: aString during: [
+ ^ self debugWithCue: (DebuggerInvocationCue new
+ process: aProcess;
+ context: aContext;
+ label: aString;
+ contents: contents;
+ fullView: aBool;
+ yourself)!
- "In any case, log the debugging incident into an external file."
- Smalltalk tryLogSqueakError: aString inContext: aContext.
-
- self default
- ifNotNil: [:toolSet |
- "Let the current tool set decide about the best tool for the job."
- toolSet
- debugProcess: aProcess context: aContext
- label: aString contents: contents
- fullView: aBool]
- ifNil: [
- "There is no tool set!! :-O ... Inform the user in a simple dialog."
- Project current
- debugProcess: aProcess
- inDialog: ('No debugger available for process:\\ Name: {1}\ Hash: {2}\ Context: {3}\ Title: {4}\ Message: {5}' translated withCRs
- format: {aProcess name. aProcess hash. aContext. aString. contents})] ]!
Item was added:
+ ----- Method: ToolSet class>>debugWithCue: (in category 'debugging') -----
+ debugWithCue: invocationCue
+ "Open a debugger on the given process, which might be active, suspended, or terminated. You can also use the convenience protocol for debugging on Process and ProcessorScheduler.
+
+ NOTE that you SHOULD NOT pass 'Processor activeProcess' directly to this method to avoid mixing code simulation with genuine code execution. Always use the indirection via ProcessorScheduler >>#debug... See also the comment in Process >> #debugWithTitle:full:contents:."
+
+ self assert: [invocationCue process notNil].
+ self assert: [invocationCue context notNil].
+
+ "First, guard this incident to detect and handle recursive errors."
+ ^ Project current guardRecursiveError: invocationCue label during: [
+
+ "In any case, log the debugging incident into an external file."
+ Smalltalk tryLogSqueakError: invocationCue label inContext: invocationCue context.
+
+ self default
+ ifNotNil: [:toolSet |
+ "Let the current tool set decide about the best tool for the job."
+ toolSet debugWithCue: invocationCue]
+ ifNil: [
+ "There is no tool set!! :-O ... Inform the user in a simple dialog."
+ Project current
+ debugProcess: invocationCue process
+ inDialog: ('No debugger available for process:\\ Name: {1}\ Hash: {2}\ Context: {3}\ Title: {4}\ Message: {5}' translated withCRs
+ format: {
+ invocationCue process name.
+ invocationCue process hash.
+ invocationCue context.
+ invocationCue label.
+ invocationCue contents})] ]!
Marcel Taeumel uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-mt.1241.mcz
==================== Summary ====================
Name: Tools-mt.1241
Author: mt
Time: 28 November 2023, 10:32:22.826569 am
UUID: 5ecdd41c-8d57-fc45-8b23-d96784261782
Ancestors: Tools-dtl.1240
Adds DebuggerInvocationCue as an extension point to pass on more information from exceptions to the debugger.
See senders of #todoDebugger if you want to make use of this new extension point.
Thanks to Eliot (eem) for the idea and Jaromir (jar) for the use case via BlockCannotReturn.
See discussions here:
- http://lists.squeakfoundation.org/archives/list/squeak-dev@lists.squeakfoun…
- http://lists.squeakfoundation.org/archives/list/squeak-dev@lists.squeakfoun…
=============== Diff against Tools-dtl.1240 ===============
Item was changed:
----- Method: Debugger class>>openOn:context:label:contents:fullView: (in category 'opening') -----
openOn: process context: context label: title contents: contentsStringOrNil fullView: bool
- "PRIVATE!! Open a notifier or a full debugger window for the given process
- at the given context. Clients MUST use a ToolSet that is configured with the
- receiver class (or tool) to then debug a process via
- Process >> #debug(WithTitle:)
- ProcessorScheduler >> #debugWithTitle:
- ToolSet >> #debugProcess:context:...
- and similar messages in Process or ProcessorScheduler.
-
- Example invocations:
- Processor debugWithTitle: 'Example'.
- (Process forBlock: [3+4]) debug.
- 7/0.
-
- Configure a new tool set like this
- ToolSet default: StandardToolSet
- See commentary in
- Process >> #debugWithTitle:full:contents:
- ProcessorScheduler >> #debugContext:title:full:contents:"
+ self flag: #deprecated.
+
+ ^ self openOnCue: (DebuggerInvocationCue new
+ process: process;
+ context: context;
+ label: title;
+ contents: contentsStringOrNil;
- ^ (self onProcess: process context: context)
- openWithLabel: title
- contents: contentsStringOrNil
fullView: bool;
+ yourself)!
- yourself!
Item was added:
+ ----- Method: Debugger class>>openOnCue: (in category 'opening') -----
+ openOnCue: invocationCue
+ "PRIVATE!! Open a notifier or a full debugger window for the given process
+ at the given context. Clients MUST use a ToolSet that is configured with the
+ receiver class (or tool) to then debug a process via
+ Process >> #debug(WithTitle:)
+ ProcessorScheduler >> #debugWithTitle:
+ ToolSet >> #debugProcess:context:...
+ and similar messages in Process or ProcessorScheduler.
+
+ Example invocations:
+ Processor debugWithTitle: 'Example'.
+ (Process forBlock: [3+4]) debug.
+ 7/0.
+
+ Configure a new tool set like this
+ ToolSet default: StandardToolSet
+ See commentary in
+ Process >> #debugWithTitle:full:contents:
+ ProcessorScheduler >> #debugContext:title:full:contents:"
+
+ self flag: #todoDebugger. "mt: Use exception-specific parameters from the invocation cue such as for BlockCannotReturn. See discussions here:
+ - http://lists.squeakfoundation.org/archives/list/squeak-dev@lists.squeakfoun…
+ - http://lists.squeakfoundation.org/archives/list/squeak-dev@lists.squeakfoun…
+ "
+
+ ^ (self onProcess: invocationCue process context: invocationCue context)
+ openWithLabel: invocationCue label
+ contents: invocationCue contents
+ fullView: invocationCue fullView;
+ yourself!
Item was added:
+ Object subclass: #DebuggerInvocationCue
+ instanceVariableNames: 'process context label contents fullView'
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Tools-Debugger'!
Item was added:
+ ----- Method: DebuggerInvocationCue>>contents (in category 'accessing') -----
+ contents
+
+ ^ contents!
Item was added:
+ ----- Method: DebuggerInvocationCue>>contents: (in category 'accessing') -----
+ contents: anObject
+
+ contents := anObject.!
Item was added:
+ ----- Method: DebuggerInvocationCue>>context (in category 'accessing') -----
+ context
+
+ ^ context!
Item was added:
+ ----- Method: DebuggerInvocationCue>>context: (in category 'accessing') -----
+ context: anObject
+
+ context := anObject.!
Item was added:
+ ----- Method: DebuggerInvocationCue>>fullView (in category 'accessing') -----
+ fullView
+
+ ^ fullView ifNil: [false]!
Item was added:
+ ----- Method: DebuggerInvocationCue>>fullView: (in category 'accessing') -----
+ fullView: anObject
+
+ fullView := anObject.!
Item was added:
+ ----- Method: DebuggerInvocationCue>>label (in category 'accessing') -----
+ label
+
+ ^ label!
Item was added:
+ ----- Method: DebuggerInvocationCue>>label: (in category 'accessing') -----
+ label: anObject
+
+ label := anObject.!
Item was added:
+ ----- Method: DebuggerInvocationCue>>process (in category 'accessing') -----
+ process
+
+ ^ process!
Item was added:
+ ----- Method: DebuggerInvocationCue>>process: (in category 'accessing') -----
+ process: anObject
+
+ process := anObject.!
Item was changed:
----- Method: StandardToolSet class>>debugProcess:context:label:contents:fullView: (in category 'debugging') -----
debugProcess: aProcess context: aContext label: aString contents: contents fullView: aBool
+ self flag: #deprecated.
- (aProcess isTerminated and: [aString isNil or: [aString beginsWith: 'Debug it']]) ifTrue: [
- ^ Project uiManager inform: 'Nothing to debug. Process has terminated.\Expression optimized.' translated withCRs].
+ ^ self debugWithCue: (DebuggerInvocationCue new
+ process: aProcess;
+ context: aContext;
+ label: aString;
+ contents: contents;
+ fullView: aBool;
+ yourself)!
- ^ Debugger
- openOn: aProcess
- context: aContext
- label: aString
- contents: contents
- fullView: aBool!
Item was added:
+ ----- Method: StandardToolSet class>>debugWithCue: (in category 'debugging') -----
+ debugWithCue: invocationCue
+
+ (invocationCue process isTerminated and: [invocationCue label isNil or: [invocationCue label beginsWith: 'Debug it']]) ifTrue: [
+ ^ Project uiManager inform: 'Nothing to debug. Process has terminated.\Expression optimized.' translated withCRs].
+
+ ^ Debugger openOnCue: invocationCue!
Item was changed:
----- Method: StandardToolSet class>>handleError: (in category 'debugging - handlers') -----
handleError: anError
"Double dispatch. Let the processor take care of that error, which usually calls back here to #debugProcess:..."
+ self flag: #todoDebugger. "mt: Pass exception-specific parameters to the invocation cue such as for BlockCannotReturn. See discussions here:
+ - http://lists.squeakfoundation.org/archives/list/squeak-dev@lists.squeakfoun…
+ - http://lists.squeakfoundation.org/archives/list/squeak-dev@lists.squeakfoun…
+ "
+
+ ^ Processor debugWithCue: (DebuggerInvocationCue new
+ context: anError signalerContext;
+ label: anError description;
+ fullView: false;
+ "contents: nil;"
+ yourself)!
- ^ Processor
- debugContext: anError signalerContext
- title: anError description
- full: false
- contents: nil!
Item was changed:
----- Method: StandardToolSet class>>handleWarning: (in category 'debugging - handlers') -----
handleWarning: aWarning
"Double dispatch. Let the processor take care of that warning, which usually calls back here to #debugProcess:..."
| message |
message := '{1}\\{2}' withCRs asText format: {
"First, show the actual text of this warning."
aWarning messageText.
"Second, append some helpful information that apply to all kinds of warnings."
('{1} {2}' asText format: {
'Select "Proceed" to continue or close this window to cancel the operation.' translated.
'If you do not want to be interrupted anymore, you can {1} this kind of warning. You can also {2}, which resets such warnings on the next image startup.' translated asText format: {
"Provide clickable text links so that the user can directly suppress warnings."
'always suppress' asText
addAttribute: (PluggableTextAttribute evalBlock: [
aWarning class suppressWarnings.
self inform: ('All ''{1}'' warnings will be suppressed.' translated format: {aWarning class name})]).
'suppress temporarily' asText
addAttribute: (PluggableTextAttribute evalBlock: [
aWarning class suppressAndResetOnStartUp.
self inform: ('All ''{1}'' warnings will be suppressed\and reset on the next image startup.' translated withCRs format: {aWarning class name})])}.
}) addAttribute: (
"Show this helpful information in a smaller font."
TextFontReference toFont: Preferences standardButtonFont)}.
+
+ self flag: #todoDebugger. "mt: Pass exception-specific parameters to the invocation cue such as for BlockCannotReturn. See discussions here:
+ - http://lists.squeakfoundation.org/archives/list/squeak-dev@lists.squeakfoun…
+ - http://lists.squeakfoundation.org/archives/list/squeak-dev@lists.squeakfoun…
+ "
+
+ ^ Processor debugWithCue: (DebuggerInvocationCue new
+ context: aWarning signalerContext;
+ label: 'Warning' translated;
+ fullView: false;
+ contents: message;
+ yourself)!
-
- ^ Processor
- debugContext: aWarning signalerContext
- title: 'Warning' translated
- full: false
- contents: message!
Item was changed:
----- Method: SyntaxError>>debug (in category 'menu') -----
debug
"Show the stack of the process leading to this syntax editor, typically showing the stack of the compiler as called from fileIn."
+ ToolSet debugWithCue: (DebuggerInvocationCue new
+ process: compilerProcess;
+ context: notification signalerContext;
+ label: 'Stack of the Syntax Error' translated;
+ "contents: nil;"
+ fullView: true;
+ yourself).
- ToolSet
- debugProcess: compilerProcess
- context: notification signalerContext
- label: 'Stack of the Syntax Error' translated
- contents: nil
- fullView: true.
"Receiver must give up control over that process now."
compilerProcess := nil.
self changed: #close.!
David T. Lewis uploaded a new version of Graphics to project The Trunk:
http://source.squeak.org/trunk/Graphics-dtl.548.mcz
==================== Summary ====================
Name: Graphics-dtl.548
Author: dtl
Time: 25 November 2023, 2:53:54.464042 pm
UUID: 4b57488c-75bd-4f20-9472-67acb703e6f4
Ancestors: Graphics-ct.547
Move methods to Etoys if they are referenced only by the full Etoys image, based on Marcel's unload-etoys.33.cs Etoys removal script.
Reference squeak-dev 29-Aug-2023 Let's discuss the future of Etoys in Squeak 6.1 (and beyond)
=============== Diff against Graphics-ct.547 ===============
Item was removed:
- ----- Method: Quadrangle class>>exampleInViewer (in category 'instance creation') -----
- exampleInViewer
- "Create a sample Quadrangle and open a Viewer on it"
-
- (self region: (100@100 extent: 100@50) borderWidth: (1 + (6 atRandom)) borderColor: Color black insideColor: (Color perform: #(green red blue yellow) atRandom)) beViewed
-
- "Quadrangle exampleInViewer"!
David T. Lewis uploaded a new version of Help-Squeak-CorePackages to project The Trunk:
http://source.squeak.org/trunk/Help-Squeak-CorePackages-dtl.6.mcz
==================== Summary ====================
Name: Help-Squeak-CorePackages-dtl.6
Author: dtl
Time: 25 November 2023, 2:54:28.774751 pm
UUID: 8aef30fd-c83a-4162-9812-a7cfc0410feb
Ancestors: Help-Squeak-CorePackages-tpr.5
Move methods to Etoys if they are referenced only by the full Etoys image, based on Marcel's unload-etoys.33.cs Etoys removal script.
Reference squeak-dev 29-Aug-2023 Let's discuss the future of Etoys in Squeak 6.1 (and beyond)
=============== Diff against Help-Squeak-CorePackages-tpr.5 ===============
Item was removed:
- ----- Method: SqueakFurtherCorePackagesHelp class>>etoys (in category 'pages') -----
- etoys
- "This method was automatically generated. Edit it using:"
- "SqueakFurtherCorePackagesHelp edit: #etoys"
- ^HelpTopic
- title: 'Etoys'
- contents:
- 'The Etoys package includes all of the Etoys system with extended Morphs, a tile-based scripting language user interface and interpreter, and several applications based upon that.
-
- This package also includes the Kedama project which provides means to create simulations with large numbers of objects based on a columnar storage.!!' readStream nextChunkText!
David T. Lewis uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-dtl.1537.mcz
==================== Summary ====================
Name: Kernel-dtl.1537
Author: dtl
Time: 25 November 2023, 2:55:01.075199 pm
UUID: f749c283-2e40-4db8-978d-c518f827cc37
Ancestors: Kernel-eem.1536
Move methods to Etoys if they are referenced only by the full Etoys image, based on Marcel's unload-etoys.33.cs Etoys removal script.
Reference squeak-dev 29-Aug-2023 Let's discuss the future of Etoys in Squeak 6.1 (and beyond)
=============== Diff against Kernel-eem.1536 ===============
Item was removed:
- ----- Method: Object>>adaptedToWorld: (in category 'scripting') -----
- adaptedToWorld: aWorld
- "If I refer to a world or a hand, return the corresponding items in the new world."
- ^self!
Item was removed:
- ----- Method: Object>>beViewed (in category 'testing') -----
- beViewed
- "Open up a viewer on the receiver. The Presenter is invited to decide just how to present this viewer"
-
- self uniqueNameForReference. "So the viewer will have something nice to refer to"
- self presenter viewObject: self!
Item was removed:
- ----- Method: Object>>belongsToUniClass (in category 'testing') -----
- belongsToUniClass
- "Answer whether the receiver belongs to a uniclass. For the moment (this is not entirely satisfactory) this is precisely equated with the classname ending in a digit"
-
- ^ self class isUniClass!
Item was removed:
- ----- Method: Object>>costumes (in category 'testing') -----
- costumes
- "Answer a list of costumes associated with the receiver. The appearance of this method in class Object serves only as a backstop, probably only transitionally"
-
- ^ nil!
Item was removed:
- ----- Method: Object>>defaultFloatPrecisionFor: (in category 'scripting') -----
- defaultFloatPrecisionFor: aGetSelector
- "Answer a number indicating the default float precision to be used in a numeric readout for which the receiver is the model."
-
- ^ 1!
Item was removed:
- ----- Method: Object>>evaluateUnloggedForSelf: (in category 'scripting') -----
- evaluateUnloggedForSelf: aCodeString
-
- ^Compiler evaluate:
- aCodeString
- for: self!
Item was removed:
- ----- Method: Object>>isPlayer (in category 'testing') -----
- isPlayer
- ^false!
Item was removed:
- ----- Method: Object>>isPrimitiveCostume (in category 'testing') -----
- isPrimitiveCostume
- "True for primitive costumes in Tweak. Added here because a Tweak override in DisplayScanner was merged into trunk for maintainability"
- ^false!
Item was removed:
- ----- Method: Object>>isScriptEditorMorph (in category 'testing') -----
- isScriptEditorMorph
- ^false!
Item was removed:
- ----- Method: Object>>isUniversalTiles (in category 'macpal') -----
- isUniversalTiles
- "Return true if I (my world) uses universal tiles. This message can be called in places where the current World is not known, such as when writing out a project. For more information about the project-writing subtlety addressed by this protocol, kindly contact Ted Kaehler."
-
- ^ Preferences universalTiles!
Item was removed:
- ----- Method: Object>>methodInterfacesForCategory:inVocabulary:limitClass: (in category 'scripting') -----
- methodInterfacesForCategory: aCategorySymbol inVocabulary: aVocabulary limitClass: aLimitClass
- "Return a list of methodInterfaces for the receiver in the given category, given a vocabulary. aCategorySymbol is the inherent category symbol, not necessarily the wording as expressed in the vocabulary."
-
- | categorySymbol |
- categorySymbol := aCategorySymbol asSymbol.
-
- (categorySymbol == ScriptingSystem nameForInstanceVariablesCategory) ifTrue: [
- "user-defined instance variables"
- ^ self methodInterfacesForInstanceVariablesCategoryIn: aVocabulary].
- (categorySymbol == ScriptingSystem nameForScriptsCategory) ifTrue: [
- "user-defined scripts"
- ^ self methodInterfacesForScriptsCategoryIn: aVocabulary].
- "all others"
- ^ self usableMethodInterfacesIn: (aVocabulary methodInterfacesInCategory: categorySymbol
- forInstance: self
- ofClass: self class
- limitClass: aLimitClass)
- !
Item was removed:
- ----- Method: Object>>methodInterfacesForInstanceVariablesCategoryIn: (in category 'scripting') -----
- methodInterfacesForInstanceVariablesCategoryIn: aVocabulary
- "Return a collection of methodInterfaces for the instance-variables category. The vocabulary parameter, at present anyway, is not used. And for non-players, the method is at present vacuous in any case"
-
- ^ OrderedCollection new!
Item was removed:
- ----- Method: Object>>methodInterfacesForScriptsCategoryIn: (in category 'scripting') -----
- methodInterfacesForScriptsCategoryIn: aVocabulary
- "Answer a list of method interfaces for the category #scripts, as seen in a viewer or other tool. The vocabulary argument is not presently used. Also, at present, only Players really do anyting interesting here."
-
- ^ OrderedCollection new!
Item was removed:
- ----- Method: Object>>presenter (in category 'accessing') -----
- presenter
- "Answer the presenter object associated with the receiver. For morphs, there is in effect a clear containment hierarchy of presenters (accessed via their association with PasteUpMorphs); for arbitrary objects the hook is simply via the current world, at least at present."
-
- ^ self currentWorld presenter!
Item was removed:
- ----- Method: Object>>renameInternal: (in category 'testing') -----
- renameInternal: newName
- "Change the internal name (because of a conflict) but leave the external name unchanged. Change Player class name, but do not change the names that appear in tiles. Any object that might be pointed to in the References dictionary might get this message sent to it upon reload"
-
- ^ nil "caller will renameTo:. new name may be different"!
Item was removed:
- ----- Method: Object>>scriptPerformer (in category 'macpal') -----
- scriptPerformer
-
- ^ self
- !
Item was removed:
- ----- Method: Object>>selfWrittenAsIll (in category 'scripting') -----
- selfWrittenAsIll
-
- ^self!
Item was removed:
- ----- Method: Object>>selfWrittenAsIm (in category 'scripting') -----
- selfWrittenAsIm
-
- ^self!
Item was removed:
- ----- Method: Object>>selfWrittenAsMe (in category 'scripting') -----
- selfWrittenAsMe
-
- ^self!
Item was removed:
- ----- Method: Object>>selfWrittenAsMy (in category 'scripting') -----
- selfWrittenAsMy
-
- ^self!
Item was removed:
- ----- Method: Object>>selfWrittenAsThis (in category 'scripting') -----
- selfWrittenAsThis
-
- ^self!
Item was removed:
- ----- Method: Object>>slotInfo (in category 'macpal') -----
- slotInfo
- "Answer a list of slot-information objects. Initally only provides useful info for players"
-
- ^ Dictionary new!
Item was removed:
- ----- Method: Object>>veryDeepCopySibling (in category 'copying') -----
- veryDeepCopySibling
- "Do a complete tree copy using a dictionary. Substitute a clone of oldPlayer for the root. Normally, a Player or non systemDefined object would have a new class. We do not want one this time. An object in the tree twice, is only copied once. All references to the object in the copy of the tree will point to the new copy."
-
- | copier new |
- copier := DeepCopier new: self initialDeepCopierSize.
- copier newUniClasses: false.
- new := self veryDeepCopyWith: copier.
- copier mapUniClasses.
- copier references associationsDo: [:assoc |
- assoc value veryDeepFixupWith: copier].
- copier fixDependents.
- ^ new!