diff --git a/CuisImage/32BitsImage/Cuis7.1-6664-32.changes b/CuisImage/32BitsImage/Cuis7.1-6665-32.changes similarity index 99% rename from CuisImage/32BitsImage/Cuis7.1-6664-32.changes rename to CuisImage/32BitsImage/Cuis7.1-6665-32.changes index 29459956..e0164001 100644 --- a/CuisImage/32BitsImage/Cuis7.1-6664-32.changes +++ b/CuisImage/32BitsImage/Cuis7.1-6665-32.changes @@ -31816,4 +31816,73 @@ Smalltalk garbageCollect.! ----End fileIn of C:\Users\Juan Vuletich\Cuis-Smalltalk\Cuis-Smalltalk-Dev\CuisImage\32BitsImage\CoreUpdates\6664-ReleaseCanvasStateOnSnapshot-JuanVuletich-2024Aug30-14h26m-jmv.001.cs.st----! -----QUIT----(30 August 2024 15:45:50) Cuis7.1-6664-32.image priorSource: 1429890! \ No newline at end of file +----QUIT----(30 August 2024 15:45:50) Cuis7.1-6664-32.image priorSource: 1429890! + +----STARTUP---- (1 September 2024 16:43:18) as C:\Users\Juan Vuletich\Cuis-Smalltalk\Cuis-Smalltalk-Dev\CuisImage\32BitsImage\Cuis7.1-6664-32.image! + + +'From Cuis7.1 [latest update: #6664] on 1 September 2024 at 4:26:08 pm'! +!Debugger methodsFor: 'private' stamp: 'jmv 9/1/2024 16:11:41' prior: 50376862! + resumeProcess + | mustTerminateActive worldIfMustRedisplay | + worldIfMustRedisplay := self runningWorld. + savedCursor + ifNotNil: [savedCursor activateCursor]. + mustTerminateActive := false. + interruptedProcess isTerminated ifFalse: [ + interruptedProcessUI notNil ifTrue: [ + interruptedProcessUI isConsistentWithTarget + ifTrue: [ + (interruptedProcess name withoutPrefix: 'Formerly: ') ifNotNil: [ :originalName | + interruptedProcess + name: originalName; + priority: interruptedProcess priority + 1 ]. + UISupervisor isUIProcessRunning + ifTrue: [ mustTerminateActive := true] + ifFalse: [ UISupervisor stopUIProcess]. + UISupervisor uiProcess: interruptedProcess. + UISupervisor ui mainCanvas unpinAndFreeMemory ] + ifFalse: [ + "The Display has changed size while running the debugger. + The interupted process would use an invalid canvas, corrupting the Display, + and likely crashing the system. Don't resume the process. Just keep the current UI process running." + interruptedProcess terminate. + interruptedProcess := nil. + interruptedProcessUI unpinAndFreeMemory. + interruptedProcessUI := nil ]]. + interruptedProcess ifNotNil: [ :p | + interruptedProcessUI ifNotNil: [ :canvas | + canvas beMainCanvasOfWorld ]. + p resolvePendingQuickReturns; resume ]]. + interruptedProcess := nil. + interruptedProcessUI := nil. + contextStackIndex := 0. + contextStack := nil. + contextStackTop := nil. + receiverInspector := nil. + contextVariablesInspector := nil. + worldIfMustRedisplay ifNotNil: [ :w | + [UISupervisor whenUIinSafeState: [ w invalidateBounds ]] + forkAt: Processor userSchedulingPriority-1 ]. + "restart low space handler" + Smalltalk installLowSpaceWatcher. + "If this process was the UI process, and we just resumed the old one, + then terminate us and never return to caller." + mustTerminateActive + ifTrue: [ Processor terminateActive ].! ! +!WorldMorph methodsFor: 'canvas' stamp: 'jmv 9/1/2024 16:14:59' prior: 50377189! + mainCanvas: aMorphicCanvas + "Set the main canvas" + + canvas == aMorphicCanvas ifFalse: [ + (Preferences at: #saveReleaseOptionsInWorldMenu) ifFalse: [ + aMorphicCanvas pinArrays ]. + canvas := aMorphicCanvas. + ]. + damageRecorder := DamageRecorder new. + damageRecorder recordInvalidRect: self localBounds for: nil. + waitDelay := Delay forMilliseconds: 50.! ! + +----End fileIn of C:\Users\Juan Vuletich\Cuis-Smalltalk\Cuis-Smalltalk-Dev\CuisImage\32BitsImage\CoreUpdates\6665-Debugger-resume-fixRecentBreackage-JuanVuletich-2024Sep01-16h25m-jmv.001.cs.st----! + +----QUIT----(1 September 2024 16:43:21) Cuis7.1-6665-32.image priorSource: 1467352! \ No newline at end of file diff --git a/CuisImage/32BitsImage/Cuis7.1-6664-32.image b/CuisImage/32BitsImage/Cuis7.1-6665-32.image similarity index 86% rename from CuisImage/32BitsImage/Cuis7.1-6664-32.image rename to CuisImage/32BitsImage/Cuis7.1-6665-32.image index 2f3f8d55..bd20b2c6 100644 Binary files a/CuisImage/32BitsImage/Cuis7.1-6664-32.image and b/CuisImage/32BitsImage/Cuis7.1-6665-32.image differ diff --git a/CuisImage/Cuis7.1-6664.changes b/CuisImage/Cuis7.1-6665.changes similarity index 99% rename from CuisImage/Cuis7.1-6664.changes rename to CuisImage/Cuis7.1-6665.changes index 2a7d6c8d..1f7610e5 100644 --- a/CuisImage/Cuis7.1-6664.changes +++ b/CuisImage/Cuis7.1-6665.changes @@ -31817,4 +31817,73 @@ Smalltalk garbageCollect.! ----End fileIn of C:\Users\Juan Vuletich\Cuis-Smalltalk\Cuis-Smalltalk-Dev\CoreUpdates\6664-ReleaseCanvasStateOnSnapshot-JuanVuletich-2024Aug30-14h26m-jmv.001.cs.st----! -----QUIT----(30 August 2024 15:39:39) Cuis7.1-6664.image priorSource: 1423376! \ No newline at end of file +----QUIT----(30 August 2024 15:39:39) Cuis7.1-6664.image priorSource: 1423376! + +----STARTUP---- (1 September 2024 16:42:32) as C:\Users\Juan Vuletich\Cuis-Smalltalk\Cuis-Smalltalk-Dev\CuisImage\Cuis7.1-6664.image! + + +'From Cuis7.1 [latest update: #6664] on 1 September 2024 at 4:26:08 pm'! +!Debugger methodsFor: 'private' stamp: 'jmv 9/1/2024 16:11:41' prior: 50376657! + resumeProcess + | mustTerminateActive worldIfMustRedisplay | + worldIfMustRedisplay := self runningWorld. + savedCursor + ifNotNil: [savedCursor activateCursor]. + mustTerminateActive := false. + interruptedProcess isTerminated ifFalse: [ + interruptedProcessUI notNil ifTrue: [ + interruptedProcessUI isConsistentWithTarget + ifTrue: [ + (interruptedProcess name withoutPrefix: 'Formerly: ') ifNotNil: [ :originalName | + interruptedProcess + name: originalName; + priority: interruptedProcess priority + 1 ]. + UISupervisor isUIProcessRunning + ifTrue: [ mustTerminateActive := true] + ifFalse: [ UISupervisor stopUIProcess]. + UISupervisor uiProcess: interruptedProcess. + UISupervisor ui mainCanvas unpinAndFreeMemory ] + ifFalse: [ + "The Display has changed size while running the debugger. + The interupted process would use an invalid canvas, corrupting the Display, + and likely crashing the system. Don't resume the process. Just keep the current UI process running." + interruptedProcess terminate. + interruptedProcess := nil. + interruptedProcessUI unpinAndFreeMemory. + interruptedProcessUI := nil ]]. + interruptedProcess ifNotNil: [ :p | + interruptedProcessUI ifNotNil: [ :canvas | + canvas beMainCanvasOfWorld ]. + p resolvePendingQuickReturns; resume ]]. + interruptedProcess := nil. + interruptedProcessUI := nil. + contextStackIndex := 0. + contextStack := nil. + contextStackTop := nil. + receiverInspector := nil. + contextVariablesInspector := nil. + worldIfMustRedisplay ifNotNil: [ :w | + [UISupervisor whenUIinSafeState: [ w invalidateBounds ]] + forkAt: Processor userSchedulingPriority-1 ]. + "restart low space handler" + Smalltalk installLowSpaceWatcher. + "If this process was the UI process, and we just resumed the old one, + then terminate us and never return to caller." + mustTerminateActive + ifTrue: [ Processor terminateActive ].! ! +!WorldMorph methodsFor: 'canvas' stamp: 'jmv 9/1/2024 16:14:59' prior: 50376980! + mainCanvas: aMorphicCanvas + "Set the main canvas" + + canvas == aMorphicCanvas ifFalse: [ + (Preferences at: #saveReleaseOptionsInWorldMenu) ifFalse: [ + aMorphicCanvas pinArrays ]. + canvas := aMorphicCanvas. + ]. + damageRecorder := DamageRecorder new. + damageRecorder recordInvalidRect: self localBounds for: nil. + waitDelay := Delay forMilliseconds: 50.! ! + +----End fileIn of C:\Users\Juan Vuletich\Cuis-Smalltalk\Cuis-Smalltalk-Dev\CoreUpdates\6665-Debugger-resume-fixRecentBreackage-JuanVuletich-2024Sep01-16h25m-jmv.001.cs.st----! + +----QUIT----(1 September 2024 16:42:42) Cuis7.1-6665.image priorSource: 1460610! \ No newline at end of file diff --git a/CuisImage/Cuis7.1-6664.image b/CuisImage/Cuis7.1-6665.image similarity index 82% rename from CuisImage/Cuis7.1-6664.image rename to CuisImage/Cuis7.1-6665.image index 3e01257a..acc20a11 100644 Binary files a/CuisImage/Cuis7.1-6664.image and b/CuisImage/Cuis7.1-6665.image differ diff --git a/Documentation/CodeRecoveryInCuis.md b/Documentation/CodeRecoveryInCuis.md index 7cbdf656..58f4d214 100644 --- a/Documentation/CodeRecoveryInCuis.md +++ b/Documentation/CodeRecoveryInCuis.md @@ -1,7 +1,7 @@ # Code Recovery in Cuis -Smalltalk systems store source code in two files, the Sources file (named, for example 'Cuis7.0.sources') and the Changes file (for example, 'Cuis7.1-6664.changes'). The Sources file is not modified after creation, and new and modified code is appended to the Changes file. Both these files are used (for instance) by the Smalltalk Browser, when exploring the source code for the system. +Smalltalk systems store source code in two files, the Sources file (named, for example 'Cuis7.0.sources') and the Changes file (for example, 'Cuis7.1-6665.changes'). The Sources file is not modified after creation, and new and modified code is appended to the Changes file. Both these files are used (for instance) by the Smalltalk Browser, when exploring the source code for the system. -Cuis saves an additional type of files, UserChanges (named, for example, Cuis7.1-6664.user.002.changes), in the -UserFiles/UserChanges folder. These files are numbered, and they are created anew each time the Cuis system is started. These files are not used by the system to retrive code, they only exist to aid programmers. They will only include our work, and will conveniently use a different file for each programming session. They are not deleted automatically, and the user is free to delete them when desired. +Cuis saves an additional type of files, UserChanges (named, for example, Cuis7.1-6665.user.002.changes), in the -UserFiles/UserChanges folder. These files are numbered, and they are created anew each time the Cuis system is started. These files are not used by the system to retrive code, they only exist to aid programmers. They will only include our work, and will conveniently use a different file for each programming session. They are not deleted automatically, and the user is free to delete them when desired. To recover our code, the [recent changes] button in FileList will open a ChangeList on the selected file. This tool lets you review your work. For this, you can compare the various versions of methods in the file with their in-memory counterpart, filter them according to several criteria, load them as desired, etc. diff --git a/RunCuisOnLinux.sh b/RunCuisOnLinux.sh index 1f23fff6..10c29639 100755 --- a/RunCuisOnLinux.sh +++ b/RunCuisOnLinux.sh @@ -41,7 +41,7 @@ else # all-in-one bundle BINDIR="${ROOT}/CuisVM.app/Contents/Linux-${CPU}/" IMAGEDIR="${ROOT}/CuisImage/" - IMAGE="${IMAGEDIR}Cuis7.1-6664.image" + IMAGE="${IMAGEDIR}Cuis7.1-6665.image" fi VM="${BINDIR}${APP}" diff --git a/RunCuisOnWindows.bat b/RunCuisOnWindows.bat index ee7b5911..b68d066c 100644 --- a/RunCuisOnWindows.bat +++ b/RunCuisOnWindows.bat @@ -1 +1 @@ -START /B .\CuisVM.app\Contents\Windows-x86_64\Squeak.exe "CuisImage\Cuis7.1-6664.image" -u \ No newline at end of file +START /B .\CuisVM.app\Contents\Windows-x86_64\Squeak.exe "CuisImage\Cuis7.1-6665.image" -u \ No newline at end of file