Re: The Inbox: System-ct.1514.mcz
"Marcel Taeumel (H) via Squeak-dev" <[email protected]> Tue, 4 Aug 2026 09:41:52 +0200
| Newsgroups | gmane.comp.lang.smalltalk.squeak.general |
|---|---|
| Message-ID | <[email protected]> |
Hi Christoph -- Seems okay. I would add commentary to explain the circumstances in VMMaker. Even in the EE, there will be process scheduling involved. At some point, I would like to not use TrueType fonts there if those fail rendering to make it a little bit more robust. Hmm... Best Marcel Am 29.05.2026 um 19:29 schrieb [email protected]: > Christoph Thiede uploaded a new version of System to project The Inbox: > http://source.squeak.org/inbox/System-ct.1514.mcz > > ==================== Summary ==================== > > Name: System-ct.1514 > Author: ct > Time: 29 May 2026, 7:29:12.838713 pm > UUID: d6c58fa7-b8ca-4d8a-8988-4d8ce9ca92df > Ancestors: System-mt.1513 > > For discussion: Avoid busy waiting/battery drain in emergency evaluator by introducing an inter-cycle pause. > Unless you would consider the revving CPU fan an auditory feedback for a recursive error. :-) > > Or should we customize this with a preference? In the VMMaker simulator, 10 milliSeconds can be a long time ... but we should keep this code as simple as possible ... Or would it be outright wrong to involve any scheduling code in the emergency evaluator? > > =============== Diff against System-mt.1513 =============== > > Item was changed: > ----- Method: Project class>>tryEmergencyEvaluatorForRecovery: (in category 'error recovery') ----- > tryEmergencyEvaluatorForRecovery: errorMessage > > | hasTranscripter transcripter | > > "Make sure to display something." > Display deferUpdates: false. > > hasTranscripter := (Smalltalk classNamed: #Transcripter) > ifNotNil: [ :t | transcripter := t. true] > ifNil: [false]. > (String > streamContents: > [:s | > | context | > s nextPutAll: '***System error handling failed***'. > s cr; nextPutAll: errorMessage. > context := thisContext sender sender. > 20 timesRepeat: [context == nil ifFalse: [s cr; print: (context := context sender)]]. > s cr; nextPutAll: '-------------------------------'. > hasTranscripter > ifTrue: [ > s cr; nextPutAll: 'Type CR to enter an emergency evaluator.'. > s cr; nextPutAll: 'Type any other character to restart.'] > ifFalse: [ > s cr; nextPutAll: 'Type any character to restart.']]) > displayAt: 0 @ 0. > > + [Sensor keyboardPressed] whileFalse: [10 milliSeconds wait]. > - [Sensor keyboardPressed] whileFalse. > > Sensor keyboard = Character cr ifTrue: [ > hasTranscripter ifTrue: [transcripter emergencyEvaluator]].! > > Item was changed: > ----- Method: Transcripter>>request: (in category 'command line') ----- > request: prompt > | startPos char contents | > self cr; show: prompt. > startPos := position. > + [[Sensor keyboardPressed] whileFalse: [10 milliSeconds wait]. > - [[Sensor keyboardPressed] whileFalse. > (char := Sensor keyboard) = Character cr] > whileFalse: > [char = Character backspace > ifTrue: [readLimit := position := (position - 1 max: startPos)] > ifFalse: [self nextPut: char]. > self endEntry]. > contents := self contents. > ^ contents copyFrom: startPos + 1 to: contents size! > > Squeak-dev mailing list -- [email protected] > To unsubscribe send an email to [email protected] Squeak-dev mailing list -- [email protected] To unsubscribe send an email to [email protected]