<div dir="ltr">Release Note reminders are already initialized as a side-effect of our normal development process.<div><br></div><div>The way I wrote them for one or two 4.x releases was by literally reading the notes of all MCVersions since the previous production release.  It's not hard to get all this pasted together in our IDE, and then it was just a matter of sitting down and reading and digesting them into which bits were important enough to include, and also re-written in a less-technical way for the Release Notes audience.</div><div><br></div><div>I have since remembered to keep this use-case in mind when writing my MCVersion notes, e.g., I ask myself, "what verbiage will be helpful to future consumers of this note..?" while being as clear and terse as possible, because...</div><div><br></div><div>... going through all of them is a laborious one-time chore per release, but the best way to not miss anything.</div><div><br></div><div> - Chris</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Nov 28, 2022 at 9:21 AM Jakob Reschke <<a href="mailto:jakres%2Bsqueak@gmail.com" target="_blank">jakres+squeak@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hi Christoph,</div><div><br></div>Question to present you: do you have any means to definitively retrieve this note when you or anyone else actually writes the release notes? ;-)<div><br></div><div>If there is a practical means to do so, maybe initialize these release notes right now and already write it down.<br><div><br></div><div>Kind regards,<br>Jakob</div></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Am Mo., 28. Nov. 2022 um 16:10 Uhr schrieb <<a href="mailto:christoph.thiede@student.hpi.uni-potsdam.de" target="_blank">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">Note for future self: This is a breaking change that should be documented in the next release notes. :-)<br>
<br>
Best,<br>
Christoph<br>
<br>
On 2022-09-06T16:03:35+00:00, <a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a> wrote:<br>
<br>
> David T. Lewis uploaded a new version of Chronology-Core to project The Trunk:<br>
> <a href="http://source.squeak.org/trunk/Chronology-Core-dtl.80.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/trunk/Chronology-Core-dtl.80.mcz</a><br>
> <br>
> ==================== Summary ====================<br>
> <br>
> Name: Chronology-Core-dtl.80<br>
> Author: dtl<br>
> Time: 19 May 2022, 12:03:05.720962 pm<br>
> UUID: 1b1b97c4-bc35-408d-b548-f0d0376a0808<br>
> Ancestors: Chronology-Core-dtl.79<br>
> <br>
> Change DateAndTime>>offset: to be compliant with the ANSI draft spec. The offset: method should answer an instance equivalent to the receiver, where equivalent means having the same UTC time.<br>
> <br>
> Let #offset: adopt the prior behavior of #utcOffset: and let #utcOffset: be a compatibility synonym for #offset:. Add #asLocalAt: to the squeak protocol and let it implement the prior behavior of #offset: Change existing code and tests to use #asLocalAt: but otherwise retain existing behavior.<br>
> <br>
> Issue reported at <a href="https://github.com/squeak-smalltalk/squeak-object-memory/issues/23" rel="noreferrer" target="_blank">https://github.com/squeak-smalltalk/squeak-object-memory/issues/23</a><br>
> <br>
> =============== Diff against Chronology-Core-dtl.79 ===============<br>
> <br>
> Item was added:<br>
> + ----- Method: DateAndTime>>asLocalAt: (in category 'squeak protocol') -----<br>
> + asLocalAt: anOffset<br>
> +     "Answer a DateAndTime for a different time zone offset that has the same<br>
> +     year, month, day, hour, minute, and second as this instance, and with<br>
> +     printString that matches except for time zone offset."<br>
> + <br>
> +     | newOffset newMicros |<br>
> +     newOffset := anOffset asDuration asSeconds.<br>
> +     newMicros := localOffsetSeconds - newOffset * 1000000 + utcMicroseconds.<br>
> +     ^ self class utcMicroseconds: newMicros offset: newOffset<br>
> + !<br>
> <br>
> Item was changed:<br>
>   ----- Method: DateAndTime>>offset: (in category 'ansi protocol') -----<br>
>   offset: anOffset<br>
> +     "Answer a <DateAndTime> equivalent to the receiver but with its local time <br>
> +     being offset from UTC by offset.<br>
> -     "Answer a DateAndTime for a different time zone offset that has the same<br>
> -     year, month, day, hour, minute, and second as this instance, and with<br>
> -     printString that matches except for time zone offset."<br>
>   <br>
> +     See asLocalAt: for the earlier behavior of this method."<br>
> + <br>
> +     ^ self class<br>
> +             utcMicroseconds: utcMicroseconds<br>
> +             offset: anOffset asDuration asSeconds!<br>
> -     | newOffset newMicros |<br>
> -     newOffset := anOffset asDuration asSeconds.<br>
> -     newMicros := localOffsetSeconds - newOffset * 1000000 + utcMicroseconds.<br>
> -     ^ self class utcMicroseconds: newMicros offset: newOffset<br>
> - !<br>
> <br>
> Item was changed:<br>
>   ----- Method: DateAndTime>>utcOffset: (in category 'squeak protocol') -----<br>
>   utcOffset: anOffset <br>
> +     "Compatiblity. Answer a DateAndTime equivalent to the receiver but offset from UTC by anOffset."<br>
> + <br>
> +     ^ self offset: anOffset!<br>
> -     "Answer a DateAndTime equivalent to the receiver but offset from UTC by anOffset"<br>
> -     ^ self class<br>
> -             utcMicroseconds: utcMicroseconds<br>
> -             offset: anOffset asDuration asSeconds!<br>
> <br>
> Item was changed:<br>
>   ----- Method: Timespan class>>current (in category 'squeak protocol') -----<br>
>   current<br>
> +     ^ self starting: (DateAndTime now asLocalAt: self defaultOffset)!<br>
> -     ^ self starting: (DateAndTime now offset: self defaultOffset)!<br>
> <br>
> <br>
<br>
</blockquote></div>
<br>
</blockquote></div>