<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";
        color:black;}
p.md-end-block, li.md-end-block, div.md-end-block
        {mso-style-name:md-end-block;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:black;}
span.md-plain
        {mso-style-name:md-plain;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi Juan,</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> <span style="color:black">Just pushed all your code and suggestions.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">Thanks very much!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">> I also removed ProceedBlockCanNotReturn.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">Yes, ProceedBlockCanNotReturn is no longer required with the new terminate.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">> WRT `Processor activeProcess suspend` what I did is: if the UI process is suspended, then terminate it. The reason is that starting a new UI process, and later resuming the old one, would break everything. By
 terminating it, I ensure it won't be resumed later.<br>
<br>
</span>That makes perfect sense, thanks for your explanation.</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> <span style="color:black">BTW, I love the timestamp for #terminate :)<br>
<br>
</span></p>
<p class="MsoNormal">Couldn’t resist :D</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks again,</p>
<p class="MsoNormal">Jaromir</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="border:none;padding:0in"><b>From: </b><a href="mailto:JuanVuletich@zoho.com">Juan Vuletich</a><br>
<b>Sent: </b>Wednesday, February 23, 2022 18:22<br>
<b>To: </b><a href="mailto:cuis-dev@lists.cuis.st">Discussion of Cuis Smalltalk</a><br>
<b>Cc: </b><a href="mailto:JuanVuletich@zoho.com">Juan Vuletich</a>; <a href="mailto:mail@jaromir.net">
Jaromir Matas</a><br>
<b>Subject: </b>Re: [Cuis-dev] Improved version of #terminate</p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:black">Hi Jaromir,<br>
<br>
Just pushed all your code and suggestions. I also removed ProceedBlockCanNotReturn. Thanks!<br>
<br>
WRT `Processor activeProcess suspend` what I did is: if the UI process is suspended, then terminate it. The reason is that starting a new UI process, and later resuming the old one, would break everything. By terminating it, I ensure it won't be resumed later.<br>
<br>
BTW, I love the timestamp for #terminate :)<br>
<br>
Cheers,<br>
<br>
On 2/22/2022 7:34 PM, Jaromir Matas via Cuis-dev wrote: <o:p></o:p></span></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal"><span style="color:black">Hi Juan,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">I’m enclosing an updated #terminate – the reason for the change is Eliot has implemented a new #suspend primitive with revised semantics (when suspending a process waiting on a semaphore/mutex the new suspend will
 back the pc counter one instruction to the send: wait) – what’s important here is the return value of #suspend will change which would break #terminate because currently you do ```oldList := self suspend``` inside #terminate. To avoid any dependency on the
 #suspend behavior I suggest to do ```oldList := myList``` first and then suspend the process – see the changeset.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">You can verify the behavior on the new VMs:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Version 3133 backs up and returns nil<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Version 3148 backs up and returns a Semaphore<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Version 3154 doesn’t back up and returns a Semaphore<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">The enclosed #terminate should work correctly for all VM versions; you may find some tests failing for some VMs – we’ll fix this after Eliot releases a final version :)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">So the point of this updated #terminate is to remove a dependency on a VM version.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Also, I’ve recently “discovered” the original #terminate in Squeak versions 1 thru 3.5 – very elegant and simple – and very similar to our latest version :) Check this #teminate from 1999:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">terminate <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                "Stop the process that the receiver represents forever."<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                | context |<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                Processor activeProcess == self<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                                ifTrue:
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                                                [thisContext unwindTo: nil.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                                                thisContext sender == nil ifFalse:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                                                                [thisContext sender release].<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                                                thisContext removeSelf suspend]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                                ifFalse:
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                                                [myList == nil<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                                                                ifFalse:
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                                                                                [myList remove: self ifAbsent: [].<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                                                                                myList _ nil].<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                                                context _ suspendedContext.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                                                suspendedContext _ nil.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                                                context == nil ifFalse: [context unwindTo: nil].<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                                                (context ~~ nil and: [context sender ~~ nil])<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                                                                ifTrue: [context sender release]]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Thanks,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Jaromir <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<div style="border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0in 0in 0in;border-color:rgb(225,
          225, 225) -moz-use-text-color -moz-use-text-color">
<p class="MsoNormal"><b><span style="color:black">From: </span></b><span style="color:black"><a href="mailto:cuis-dev@lists.cuis.st">Jaromir Matas via Cuis-dev</a><br>
<b>Sent: </b>Thursday, February 3, 2022 13:00<br>
<b>To: </b><a href="mailto:cuis-dev@lists.cuis.st">Discussion of Cuis Smalltalk</a>;
<a href="mailto:JuanVuletich@zoho.com">Juan Vuletich</a><br>
<b>Cc: </b><a href="mailto:mail@jaromir.net">Jaromir Matas</a><br>
<b>Subject: </b>Re: [Cuis-dev] Improved version of #terminate<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Hi Juan,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">I guess this situation should be recoverable via Alt + . as well:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">```<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Processor activeProcess suspend<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">```<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">I’ve updated all the examples and enclosing a fileout. Replacing strings with symbols (to print results) has an advantage that you can evaluate the examples directly inside the Process >> terminateExamples method
 while keeping the cool option to export them to a Workspace.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">I’ve tested the examples in Part 5 with Eliot’s fix of the MNU recursion. The notes mention the fix explicitly to avoid confusion. Also, I used the original #cannotReturn (see the previous email). It’s safer to
 assume the image may crash after proceeding the #cannotReturn anyway.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">I was considering to put each of the examples to a separate method but I think having them all in a Workspace is more convenient - to compare the examples etc.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Have a nice day,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Jaromir<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<div style="border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0in 0in 0in;border-color:rgb(225,
          225, 225) -moz-use-text-color -moz-use-text-color">
<p class="MsoNormal"><b><span style="color:black">From: </span></b><span style="color:black"><a href="mailto:cuis-dev@lists.cuis.st">Jaromir Matas via Cuis-dev</a><br>
<b>Sent: </b>Thursday, February 3, 2022 1:17<br>
<b>To: </b><a href="mailto:cuis-dev@lists.cuis.st">Discussion of Cuis Smalltalk</a>;
<a href="mailto:JuanVuletich@zoho.com">Juan Vuletich</a><br>
<b>Cc: </b><a href="mailto:mail@jaromir.net">Jaromir Matas</a><br>
<b>Subject: </b>Re: [Cuis-dev] Improved version of #terminate<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Hi Juan,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">apologies, forgot to enclose a helper method to Eliot’s MNU fix for your review.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Best,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Jaromir<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<div style="border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0in 0in 0in;border-color:rgb(225,
          225, 225) -moz-use-text-color -moz-use-text-color">
<p class="MsoNormal"><b><span style="color:black">From: </span></b><span style="color:black"><a href="mailto:cuis-dev@lists.cuis.st">Jaromir Matas via Cuis-dev</a><br>
<b>Sent: </b>Thursday, February 3, 2022 0:49<br>
<b>To: </b><a href="mailto:JuanVuletich@zoho.com">Juan Vuletich</a>; <a href="mailto:cuis-dev@lists.cuis.st">
Discussion of Cuis Smalltalk</a><br>
<b>Cc: </b><a href="mailto:mail@jaromir.net">Jaromir Matas</a><br>
<b>Subject: </b>Re: [Cuis-dev] Improved version of #terminate<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Hi Juan,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Works perfectly, thanks! I’m reviewing all examples and updating the expected results. I’ve also replaced strings with symbols so we won’t have to struggle with the quotes :)
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">I’d like to ask you to make two additional changes:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">1. revert MethodContext >> cannotReturn: back to your original version (enclosed fileout fyi). The latest #terminate doesn’t need the newer modified version any longer and works better with the original one and,
 what’s more important, the newer one breaks one of the examples (interestingly doesn’t break any test). Generally it’s better if #terminate’s good behavior is not dependent on #cannotReturn (the new terminate detects and avoids executing it).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">2. please review the enclosed Eliot’s modification of Object >> doesNotUnderstand dealing with infinite recursion of the MNU error if you keep proceeding the error without doing any modification to the message
 not understood. The current doesNotUnderstand recursive behavior impacts some terminate examples with the MNU error involved and Eliot’s modification fixes it – what it does it checks whether the next MNU error has identical conditions and prevents the loop.
 If you agree to merge it I’ll update the examples accordingly. The loop only occurs when the MNU error happens inside an unwind block, which is rare but I’d prefer to have it clean :)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Thanks very much,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Jaromir<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<div style="border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0in 0in 0in;border-color:rgb(225,
          225, 225) -moz-use-text-color -moz-use-text-color">
<p class="MsoNormal"><b><span style="color:black">From: </span></b><span style="color:black"><a href="mailto:JuanVuletich@zoho.com">Juan Vuletich</a><br>
<b>Sent: </b>Wednesday, February 2, 2022 23:32<br>
<b>To: </b><a href="mailto:cuis-dev@lists.cuis.st">Discussion of Cuis Smalltalk</a><br>
<b>Cc: </b><a href="mailto:JuanVuletich@zoho.com">Juan Vuletich</a>; <a href="mailto:mail@jaromir.net">
Jaromir Matas</a><br>
<b>Subject: </b>Re: [Cuis-dev] Improved version of #terminate<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Thanks Jaromir.<br>
<br>
The test is integrated. I also fixed the format in #terminateExamples.<br>
<br>
WRT User Interrupt, in Cuis I recently changed to usually interrupt whatever process was running the moment Alt + . was pressed. I think this makes sense. If the process happens to be the background process, it refuses to do it, as the VM requires a runnable
 background process at all times.<br>
<br>
What it seems I left out, and the old code somehow did, is to create a new UI process if the previous one was terminated by any reason. Just pushed a change to do that. With the new updates, Alt + . again recovers control.<br>
<br>
Thanks for reporting the problem!<br>
<br>
Cheers,<br>
On 2/2/2022 2:36 PM, Jaromir Matas via Cuis-dev wrote: <o:p></o:p></span></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal"><span style="color:black">Hi Juan,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">I’m reviewing the set of terminate examples and this one behaves suspiciously – it suspends the UI as expected but then the system refuses to recover via Alt + .<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">In Squeak the Alt + . recovery works fine. Could you please take look? Thanks!
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Jaromir<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">[ ] ensure: [<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                [Processor activeProcess terminate] ensure: [<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                                Transcript show: #x1].
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                Transcript show: #x2<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">                ]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">"prints x1 x2 and suspends the UI; in Cuis NOT recoverable via Alt+. and prints Can not interrupt backgroundProcess (!)"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<div style="border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0in 0in 0in;border-color:-moz-use-text-color -moz-use-text-color">
<p class="MsoNormal"><b><span style="color:black">From: </span></b><span style="color:black"><a href="mailto:cuis-dev@lists.cuis.st">Jaromir Matas via Cuis-dev</a><br>
<b>Sent: </b>Tuesday, February 1, 2022 20:59<br>
<b>To: </b><a href="mailto:JuanVuletich@zoho.com">Juan Vuletich</a>; <a href="mailto:cuis-dev@lists.cuis.st">
Discussion of Cuis Smalltalk</a><br>
<b>Cc: </b><a href="mailto:mail@jaromir.net">Jaromir Matas</a><br>
<b>Subject: </b>Re: [Cuis-dev] Improved version of #terminate<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Hi Juan,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Thank you!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">I'm sending the test I owe you - #testProcessFaithfulTermination - this is a new feature of the latest terminate; the test shows the same process that created the unwind blocks also executes them during termination.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">I’ll be reviewing the terminate examples and get back later.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Thanks again.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Best,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Jaromir<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<div style="border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0in 0in 0in;border-color:-moz-use-text-color -moz-use-text-color">
<p class="MsoNormal"><b><span style="color:black">From: </span></b><span style="color:black"><a href="mailto:JuanVuletich@zoho.com">Juan Vuletich</a><br>
<b>Sent: </b>Thursday, January 27, 2022 19:21<br>
<b>To: </b><a href="mailto:cuis-dev@lists.cuis.st">Discussion of Cuis Smalltalk</a><br>
<b>Cc: </b><a href="mailto:mail@jaromir.net">Jaromir Matas</a><br>
<b>Subject: </b>Re: [Cuis-dev] Improved version of #terminate<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Hi Jaromir, Folks,<br>
<br>
This is integrated and pushed to GitHub now.<br>
<br>
Thanks,<br>
<br>
On 1/24/2022 3:51 PM, Jaromir Matas via Cuis-dev wrote: <o:p></o:p></span></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="md-end-block"><span class="md-plain"><span style="font-size:12.0pt;font-family:"Arial",sans-serif">Hi Juan, all,</span></span></p>
<p class="md-end-block"><span class="md-plain"><span style="font-size:12.0pt;font-family:"Arial",sans-serif">Happy to hear from you :)</span></span></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="md-end-block"><br>
<span class="md-plain"><span style="font-size:12.0pt;font-family:"Arial",sans-serif">Hello Jaromir, Folks,</span></span></p>
<p class="md-end-block"><br>
<span class="md-plain"><span style="font-size:12.0pt;font-family:"Arial",sans-serif">I took a look at the code, and it looks correct to me, although I don't understand this well enough to be sure. All the tests you wrote last year pass, and that is great.</span></span></p>
<p class="md-end-block"><br>
<span class="md-plain"><span style="font-size:12.0pt;font-family:"Arial",sans-serif">I think we'd integrate this. Still, I think it could be good to keep the current #terminate as a separate method, maybe #terminateFromForkedProcess, just in case it proves<br>
useful in the future.</span></span></p>
</blockquote>
<p class="md-end-block"><br>
<span class="md-plain"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#808E95">Thanks very much for reviewing the code; I think this is a good idea to keep the older version, at least for a while. I'm really happy it's been stable and nobody<br>
complained :)</span></span></p>
<p class="md-end-block"><br>
<span class="md-plain"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#808E95">This new approach of one process using two stacks simplifies the code substantially but let's keep an eye on it, for sure. Later, if this terminate proves as<br>
stable as the current one, the exact same approach could be used for exception unwinds too (ContextPart>>resume: etc).</span></span></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="md-end-block" style="margin:0in"><br>
<span class="md-plain"><span style="font-size:12.0pt;font-family:"Arial",sans-serif">I'd be very thankful if others could take a look, and better yet, try it and see if it brings any trouble.</span></span></p>
</blockquote>
<p class="md-end-block"><br>
<span class="md-plain"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#808E95">That would be great, thanks again; any concerns or suspicions, please tell me.</span></span></p>
<p class="md-end-block"><br>
<span class="md-plain"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#808E95">Best regards,</span></span></p>
<p class="md-end-block"><br>
<span class="md-plain"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#808E95">Jaromir</span></span></p>
<p class="md-end-block"><br>
<span class="md-plain"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#808E95">--</span></span></p>
<p class="md-end-block"><br>
<span class="md-plain"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#808E95">Jaromir Matas</span></span></p>
</div>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<div style="border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0in 0in 0in;border-color:-moz-use-text-color">
<p class="MsoNormal"><b><span style="color:black">From: </span></b><span style="color:black"><a href="mailto:cuis-dev@lists.cuis.st">Juan Vuletich via Cuis-dev</a><br>
<b>Sent: </b>Monday, January 24, 2022 18:15<br>
<b>To: </b><a href="mailto:cuis-dev@lists.cuis.st">Discussion of Cuis Smalltalk</a><br>
<b>Cc: </b><a href="mailto:JuanVuletich@zoho.com">Juan Vuletich</a>; <a href="mailto:ten@smallinteger.com">
Andres Valloud</a>; <a href="mailto:mail@jaromir.net">Jaromir Matas</a>; <a href="mailto:hernan.wilkinson@10pines.com">
Hernan Wilkinson</a><br>
<b>Subject: </b>Re: [Cuis-dev] Improved version of #terminate<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">On 1/18/2022 4:07 PM, Jaromir Matas via Cuis-dev wrote:
<o:p></o:p></span></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal"><span style="color:black">Hi Juan, all,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">I'm enclosing a new version of #terminate; I thought you might be interested to take a look and indeed, I'd be very much interested in your opinion. The termination functionality and semantics remains intact but
 the code is simplified and addresses Eliot's concerns regarding active process termination being done via another process. The enclosed code executes both active and suspended process’s termination directly by the process being terminated thus maintaining
 the invariant that the unwind blocks are executed by the same process that created them (this is the only real disadvantage of the current terminate; it’s not process faithful). The technique used is to create a parallel stack for the process being terminated
 and run the unwinds conveniently from there :) (thorough comments included). <o:p>
</o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">I'm also enclosing some updated tests to reflect the new approach to the active process termination. If you were interested, I'd be happy to also provide updated examples and add some more tests later.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Best regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Jaromir<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="color:black"><br>
Hello Jaromir, Folks,<br>
<br>
I took a look at the code, and it looks correct to me, although I don't understand this well enough to be sure. All the tests you wrote last year pass, and that is great.<br>
<br>
I think we'd integrate this. Still, I think it could be good to keep the current #terminate as a separate method, maybe #terminateFromForkedProcess, just in case it proves useful in the future.<br>
<br>
I'd be very thankful if others could take a look, and better yet, try it and see if it brings any trouble.<br>
<br>
Thanks!<o:p></o:p></span></p>
<pre>-- </pre>
<pre>Juan Vuletich</pre>
<pre><a href="http://www.cuis-smalltalk.org">www.cuis-smalltalk.org</a></pre>
<pre><a href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a></pre>
<pre><a href="https://github.com/jvuletich">https://github.com/jvuletich</a></pre>
<pre><a href="https://www.linkedin.com/in/juan-vuletich-75611b3">https://www.linkedin.com/in/juan-vuletich-75611b3</a></pre>
<pre><a href="https://independent.academia.edu/JuanVuletich">https://independent.academia.edu/JuanVuletich</a></pre>
<pre><a href="https://www.researchgate.net/profile/Juan-Vuletich">https://www.researchgate.net/profile/Juan-Vuletich</a></pre>
<pre><a href="https://patents.justia.com/inventor/juan-manuel-vuletich">https://patents.justia.com/inventor/juan-manuel-vuletich</a></pre>
<pre>@JuanVuletich</pre>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> </span><span style="color:black"><o:p></o:p></span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="color:black"> <o:p></o:p></span></p>
<pre>-- </pre>
<pre>Juan Vuletich</pre>
<pre><a href="http://www.cuis-smalltalk.org">www.cuis-smalltalk.org</a></pre>
<pre><a href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a></pre>
<pre><a href="https://github.com/jvuletich">https://github.com/jvuletich</a></pre>
<pre><a href="https://www.linkedin.com/in/juan-vuletich-75611b3">https://www.linkedin.com/in/juan-vuletich-75611b3</a></pre>
<pre><a href="https://independent.academia.edu/JuanVuletich">https://independent.academia.edu/JuanVuletich</a></pre>
<pre><a href="https://www.researchgate.net/profile/Juan-Vuletich">https://www.researchgate.net/profile/Juan-Vuletich</a></pre>
<pre><a href="https://patents.justia.com/inventor/juan-manuel-vuletich">https://patents.justia.com/inventor/juan-manuel-vuletich</a></pre>
<pre>@JuanVuletich</pre>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> </span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
</blockquote>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="color:black"> <o:p></o:p></span></p>
<pre>-- </pre>
<pre>Juan Vuletich</pre>
<pre><a href="http://www.cuis-smalltalk.org">www.cuis-smalltalk.org</a></pre>
<pre><a href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a></pre>
<pre><a href="https://github.com/jvuletich">https://github.com/jvuletich</a></pre>
<pre><a href="https://www.linkedin.com/in/juan-vuletich-75611b3">https://www.linkedin.com/in/juan-vuletich-75611b3</a></pre>
<pre><a href="https://independent.academia.edu/JuanVuletich">https://independent.academia.edu/JuanVuletich</a></pre>
<pre><a href="https://www.researchgate.net/profile/Juan-Vuletich">https://www.researchgate.net/profile/Juan-Vuletich</a></pre>
<pre><a href="https://patents.justia.com/inventor/juan-manuel-vuletich">https://patents.justia.com/inventor/juan-manuel-vuletich</a></pre>
<pre>@JuanVuletich</pre>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> </span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
</blockquote>
<p class="MsoNormal"><span style="color:black"><br>
<br>
<br>
<o:p></o:p></span></p>
<pre>-- </pre>
<pre>Juan Vuletich</pre>
<pre><a href="http://www.cuis-smalltalk.org">www.cuis-smalltalk.org</a></pre>
<pre><a href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a></pre>
<pre><a href="https://github.com/jvuletich">https://github.com/jvuletich</a></pre>
<pre><a href="https://www.linkedin.com/in/juan-vuletich-75611b3">https://www.linkedin.com/in/juan-vuletich-75611b3</a></pre>
<pre><a href="https://independent.academia.edu/JuanVuletich">https://independent.academia.edu/JuanVuletich</a></pre>
<pre><a href="https://www.researchgate.net/profile/Juan-Vuletich">https://www.researchgate.net/profile/Juan-Vuletich</a></pre>
<pre><a href="https://patents.justia.com/inventor/juan-manuel-vuletich">https://patents.justia.com/inventor/juan-manuel-vuletich</a></pre>
<pre>@JuanVuletich</pre>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:black"><o:p> </o:p></span></p>
</div>
</body>
</html>