<div dir="ltr">Hi Nicolai,<br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Sep 7, 2015 at 1:21 PM, Nicolai Hess <span dir="ltr">&lt;<a href="mailto:nicolaihess@web.de" target="_blank">nicolaihess@web.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">2015-09-07 20:10 GMT+02:00 Eliot Miranda <span dir="ltr">&lt;<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span>On Sun, Sep 6, 2015 at 12:56 PM, Nicolai Hess <span dir="ltr">&lt;<a href="mailto:nicolaihess@web.de" target="_blank">nicolaihess@web.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div>Do we have a documentation about the format of<br></div>- class definitions<br></div>- methods<br></div>- class comments<br></div>for the changes file ?<br></div></div></div></div></div></div></div></div></blockquote><div><br></div><div><br></div></span><div>Google &quot;specification of smalltalk chunk format&quot; and you will see:</div><div><br></div><div><a href="https://www.google.com/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;cad=rja&amp;uact=8&amp;ved=0CB8QFjAAahUKEwi25caEwuXHAhXNo4gKHTchAls&amp;url=http%3A%2F%2Fwww.mimuw.edu.pl%2F~sl%2Fteaching%2F00_01%2FDelfin_EC%2FOverviews%2FChunkFileFormat.htm&amp;usg=AFQjCNHOEmXwKdKmSJyT8fbhIuZbySOMUg&amp;sig2=vV8q_t-VuMCJVzfl5UB7Bw" target="_blank">Overviews: Chunk File Format</a></div><div><a href="https://www.google.com/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=2&amp;cad=rja&amp;uact=8&amp;ved=0CCUQFjABahUKEwi25caEwuXHAhXNo4gKHTchAls&amp;url=http%3A%2F%2Fwww.math.rsu.ru%2Fsmalltalk%2Fstandard%2Fchapter4.html.en&amp;usg=AFQjCNErBLKk5ii5-z0Y78vglNmR6EfptQ&amp;sig2=Gs4qAQeeVblVgXaKJLW1uQ" target="_blank">Smalltalk Interchange Format - Draft Smalltalk Standard v1.9</a></div><div><a href="https://www.google.com/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=3&amp;cad=rja&amp;uact=8&amp;ved=0CCsQFjACahUKEwi25caEwuXHAhXNo4gKHTchAls&amp;url=http%3A%2F%2Flive.exept.de%2Fdoc%2Fonline%2Fenglish%2Fprogramming%2FfileoutFormat.html&amp;usg=AFQjCNEhzg6OFoLkIwmVAvuSuNU_u9L87w&amp;sig2=_UzQF2Ns_Rwj-5RcXcvFFA" target="_blank">The Smalltalk fileOut format - 1</a></div><div><br></div><div>and more.</div></div></div></div></blockquote><div><br><br></div></span><div>Thank you eliot <br>(should have google that myself !)<br> <br></div><span class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div><br></div>I am asking because some entries are using two separator<br>&quot;! !&quot;<br></div>and some only one<br>&quot;!&quot;<br></div></div></div></div></div></div></blockquote><div><br></div></span><div>Indeed.  It&#39;s in the spec.  ! ! ends a run of methods in the same protocol.  ! ends a method or a doit, etc.  Read the spec.</div></div></div></div></blockquote><div><br></div></span><div>ah! grouping multiple methods for one protocol.<br></div></div></div></div></blockquote><div><br></div><div>Forgive me, I don&#39;t mean to complain, but...  It&#39;s rather sad now I look at it that the specification misses a very cool thing about the format.  Glenn Krasner invented it and he&#39;s no dummy.  What the specs miss out is that the syntax for a protocol is actually a general escape mechanism.  For example in</div><div><br></div><div>!Object methodsFor: &#39;testing&#39;!</div><div>isUnderstood</div><div>    ^false! !</div><div><br></div><div>the fileIn parser evaluates</div><div><br></div><div>    Object methodsFor: &#39;testing&#39;</div><div><br></div><div>and then asks that object to scanFrom: the stream.  And the above answers a ClassCategoryReader that reads chunks, compiling them and adding them to the relevant category, until it finds an empty chunk (hence ! ! is not special syntax, but actually a chunk followed by an empty chunk).</div><div><br></div><div>So one /could/, if one wanted, add another kind of reader, for example</div><div><br></div><div>!Preferences loadSavedPreferences!</div><div>beCool true!</div><div>beKnowledgeable true!</div><div>rememberOnersHistorytLestOneWishesToRepeatIt true! !</div><div><br></div><div>and have this not file in, but store preferences. I think that&#39;s neat, and it&#39;s very sad that the ANSI standard did;t define this but reduced the mechanism to support only protocols, and thence cause people to wonder why the syntax was so weird, when in fact it was very simple and wonderfully extensible.</div><div><br></div><div>Now I&#39;m not blaming the standards process; the real problem here is that the scheme wasn&#39;t documented other than by its implementation and so the flexibility was never made apparent to the standardizers, and anyway they wanted an interchange format, which is not what Squeak and Pharo chunk readers provide; they provide an extensible format.  The ANSI standard /could/ however have specified that the syntax is indeed extensible as described, but that conforming implementations are only expected to provide ClassCategoryReaders, and are expected to raise an error if given expressions they don&#39;t recognize, or some such.</div><div><br></div><div>Also, given this history you can see why a single ! following a method definition isn&#39;t seen anymore; we&#39;ve put the stamp information in the ClassCategoryreader so it can only parse a single method.  If we&#39;d done something like this (and I&#39;m not suggesting that&#39;s a good idea)</div><div><br></div><div>!Object methodsFor: &#39;testing&#39;!</div><div>[stamp: &#39;mad 01/04/2015 12:00&#39;]</div><div>isUnderstood</div><div>    ^#barely!</div><div><br></div><div><div>[stamp: &#39;mad 01/04/2015 12:01&#39;]</div><div>isMisunderstood</div><div>    ^#almostCertainly! !</div></div><div><br></div><div>we&#39;d still see the single !&#39;s after methods.</div><div><br></div><div>Two key points for me are</div><div>- specify carefully and visibly</div><div>- extensible standards are better than fixed standards</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div></div>And we have a problem with the &quot;Recover lost changes&quot; browser<br></div>(<a href="https://pharo.fogbugz.com/f/cases/16498/unrecoverable-changes" target="_blank">https://pharo.fogbugz.com/f/cases/16498/unrecoverable-changes</a>)<br></div>and I am not sure if this is a bug on the code importer<br></div>or if it is a bug on how we write changes to the changes file.<span><font color="#888888"><br></font></span></div></div></blockquote></span></div></div></div></blockquote></span></div></div></div></blockquote></div><br><div class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div>