<div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">
                                        Hi Jabob, hi Christoph,<div><br></div><div>thanks for sharing your thoughts.</div><div><br></div><div>As mentioned in the commit message, the primary example would be restarting the McmUpdater if it updated itself at some point. This is not possible at the moment, which renders it impossible to reliably change code in there for all images out there.</div><div><br></div><div>If approved and polished, such a mechanism belongs into Kernel because it extends process/context management below the tool level. Or at least where Process, Context, and Exceptions are. :-D ... I think. If that would be too advanced for Kernel, then, I suppose Exceptions are, too. ;-)</div><div><br></div><div>(Another perspective on this is a scriptable version of what the debugger can do with its buttons already.)</div><div><br></div><div>Best,</div><div>Marcel</div><div class="mb_sig"></div>
                                        <blockquote class="history_container" type="cite" style="border-left-style: solid;border-width: 1px;margin-top: 20px;margin-left: 0px;padding-left: 10px;min-width: 500px">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 25.04.2021 21:15:11 schrieb Jakob Reschke <jakres+squeak@gmail.com>:</p><div style="font-family:Arial,Helvetica,sans-serif">
<div dir="ltr">Real world example use cases if we had the Common Lisp experience:<div><br></div><div>Try to install something via Metacello.</div><div>Metacello would register "retry" restarts before downloading a package.</div><div>The download of the last of dozens of packages fails three times, so Metacello errs out, you get a debugger notifier.</div><div>You would click on "retry" to restart the package download instead of seeking out the correct context for that (requires Metacello knowledge), or instead of restarting the whole installation, which would needlessly repeat the dependency resolution up to the failed package.</div><div><br></div><div>Similar: when hitting the "Connection closed" error after pushing to GitHub from the Git Browser, retry the upload without computing the set of commits and compiling the pack file again...</div><div><br></div><div>I guess with extra (domain-specific) message box programming, this would already be feasible now:</div><div>1. Register upload error handler that prompts for retrying (GUI layer).</div><div>2. Compute the file to be uploaded.</div><div>(3. Register restart context for upload retry.)</div><div>4. Register handler for Connection closed error; the handler will signal upload error.</div><div>5. Attempt upload, which hits Connection closed.</div><div>6. Gets handled, signals upload error for the GUI.</div><div>7. Gets handled, GUI prompts whether to retry.</div><div>8. User chooses "Yes", GUI lets resume from upload error with that choice.</div><div>9. Connection closed handler receives this choice, restarts from the retry context.</div><div><br></div><div>With the extra mile UI stuff in the debugger/notifier, one would not need to write domain code for the steps 1, 4, 6, 7, 8, 9. So the only additional code would be registering the restart context (with a nice description text).</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Am So., 25. Apr. 2021 um 20:05 Uhr schrieb Thiede, Christoph <<a href="mailto:Christoph.Thiede@student.hpi.uni-potsdam.de">Christoph.Thiede@student.hpi.uni-potsdam.de</a>>:<br></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex;border-left: 1px solid rgb(204,204,204);padding-left: 1ex;min-width: 500px">



<div>

<div id="gmail-m_7467593718954467849divtagdefaultwrapper" style="font-size: 12pt;color: rgb(0,0,0);font-family: Calibri,Helvetica,sans-serif" dir="ltr">
<p></p>
<p style="font-family: Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols;font-size: 16px">
Hi Marcel,</p>
<p style="font-family: Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols;font-size: 16px">
<br>
</p>
<p style="font-family: Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols;font-size: 16px">
these are interesting concepts though hard to evaluate without real-world examples, I guess. But it does seem to be a crucial core concept to me. Maybe this would better fit into the System package? I'd like to keep the Kernel package as small as possible and
 this one is rather advanced stuff ... <span>😊</span></p>
<div><br>
</div>
<div id="gmail-m_7467593718954467849Signature" style="font-family: Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols;font-size: 16px">
<div id="gmail-m_7467593718954467849divtagdefaultwrapper" dir="ltr" style="font-size: 12pt">
<div name="divtagdefaultwrapper" style="font-family:Calibri,Arial,Helvetica,sans-serif;margin:0px">
<div></div>
</div>
</div>
</div>
<div id="gmail-m_7467593718954467849Signature">
<div id="gmail-m_7467593718954467849divtagdefaultwrapper" dir="ltr" style="font-size: 12pt;color: rgb(0,0,0);font-family: Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<div name="divtagdefaultwrapper">
<div>
<div id="gmail-m_7467593718954467849Item.MessagePartBody">Best,
<div id="gmail-m_7467593718954467849Item.MessageUniqueBody" style="font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif,serif,EmojiFont">
<div dir="ltr">
<div id="gmail-m_7467593718954467849divtagdefaultwrapper"><span style="font-family: Calibri,Helvetica,sans-serif,EmojiFont,Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols">
<div id="gmail-m_7467593718954467849Signature">
<div style="margin:0px"><span style="">
<div><font size="3" color="black"><span style="font-size: 12pt"><a href="http://www.hpi.de/" rel="noopener noreferrer" id="gmail-m_7467593718954467849LPNoLP" target="_blank"><font size="2"><span id="gmail-m_7467593718954467849LPlnk909538"><font color="#757B80"></font></span></font></a></span></font></div>
</span></div>
</div>
</span></div>
</div>
</div>
</div>
<div id="gmail-m_7467593718954467849Item.MessagePartBody">Christoph</div>
</div>
<div><span style="font-size: 10pt;color: #808080"></span></div>
</div>
</div>
</div>
</div>
<hr style="display:inline-block;width:98%">
<div id="gmail-m_7467593718954467849divRplyFwdMsg" dir="ltr"><span style="font-family: Calibri, sans-serif;color: #000000"><b>Von:</b> Squeak-dev <<a href="mailto:squeak-dev-bounces@lists.squeakfoundation.org" target="_blank">squeak-dev-bounces@lists.squeakfoundation.org</a>> im Auftrag von Taeumel, Marcel<br>
<b>Gesendet:</b> Montag, 19. April 2021 17:50:02<br>
<b>An:</b> squeak-dev<br>
<b>Betreff:</b> Re: [squeak-dev] The Inbox: Kernel-mt.1390.mcz</span>
<div> </div>
</div>
<div>
<div id="gmail-m_7467593718954467849__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: rgb(0,0,0);text-align: left" dir="ltr">
Here are the two options in an exapmle:
<div><br>
</div>
<div><img id="gmail-m_74675937189544678499489427d-726d-412f-9850-6c2ec62bc9c8" width="706" height="451" src="cid:1790a5b6615cb971f161"></img><br>
</div>
<div></div>
<blockquote type="cite" style="border-left-style: solid;border-width: 1px;margin-top: 20px;margin-left: 0px;padding-left: 10px;min-width: 500px">
<p style="color:rgb(170,170,170);margin-top:10px">Am 19.04.2021 17:48:03 schrieb <a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a> <<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>>:</p>
<div style="font-family:Arial,Helvetica,sans-serif">A new version of Kernel was added to project The Inbox:<br>
<a href="http://source.squeak.org/inbox/Kernel-mt.1390.mcz" target="_blank">http://source.squeak.org/inbox/Kernel-mt.1390.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Kernel-mt.1390<br>
Author: mt<br>
Time: 19 April 2021, 5:47:51.865053 pm<br>
UUID: c36ac126-16de-3d41-be90-6b7fd46bc0c7<br>
Ancestors: Kernel-nice.1389<br>
<br>
Proposal. Better support for hot code updates by restarting from a denoted (i.e. domain-specific) context (or active method). For example, this could be used to better update the McmUpdater as soon as a code change in itself is detected. Two options: either
 mark the restart context with an on:do: handler or process a query to look up that context such as by package name.<br>
<br>
=============== Diff against Kernel-nice.1389 ===============<br>
<br>
Item was added:<br>
+ Notification subclass: #RestartContextRequest<br>
+ instanceVariableNames: ''<br>
+ classVariableNames: ''<br>
+ poolDictionaries: ''<br>
+ category: 'Kernel-Exceptions'!<br>
<br>
Item was added:<br>
+ ----- Method: RestartContextRequest class>>fromContextSuchThat: (in category 'as yet unclassified') -----<br>
+ fromContextSuchThat: block<br>
+ "Use this to restart from an arbitrary context on the stack."<br>
+ <br>
+ | context |<br>
+ context := thisContext sender.<br>
+ [context notNil] whileTrue: [<br>
+ (block value: context) ifTrue: [<br>
+ ^ self new restartFrom: context].<br>
+ context := context sender].<br>
+ self error: 'No context found!!'.!<br>
<br>
Item was added:<br>
+ ----- Method: RestartContextRequest>>restartFrom: (in category 'as yet unclassified') -----<br>
+ restartFrom: aContext<br>
+ <br>
+ | process actualContext unwindError |<br>
+ aContext ifNil: [^ self error: 'No context to restart!!'].<br>
+ <br>
+ process := Processor activeProcess.<br>
+ <br>
+ [actualContext := process popTo: aContext.<br>
+ unwindError := actualContext ~= aContext.<br>
+ unwindError<br>
+ ifTrue: [process resume]<br>
+ ifFalse: [process restartTop; stepToSendOrReturn; resume]<br>
+ ] fork.<br>
+ <br>
+ process suspend.!<br>
<br>
Item was added:<br>
+ ----- Method: RestartContextRequest>>restartFromHere (in category 'as yet unclassified') -----<br>
+ restartFromHere<br>
+ "Use this to restart from an exception handler."<br>
+ self restartFrom: handlerContext.!<br>
<br>
<br>
</div>
</blockquote>
</div>
</div>
</div>

<br>
</blockquote></div>
</div></blockquote></div>