Hi Lauren,
Could we flag #breaking the way we flag #deprecated?
This is an interesting idea, but I think that the concept of change mismatches the static concept of source code here. IMHO we should not start documenting changelogs in every single method again. :-)
I think we should hold off deleting the old implementation for at least one version... Is Squeak's debugger advanced enough to run the old code during the transition period?
So many fancy ideas, but probably too fancy for a "production" system. :D Most likely, this would ultimately lead us to versioning hell, I think. However, some mechanisms that could be used for this would be layered methods (e.g. Context/S) or multiple environments to that one could install different versions of a package.
Best,
Christoph
________________________________ Von: Squeak-dev squeak-dev-bounces@lists.squeakfoundation.org im Auftrag von Lauren P drurowin@gmail.com Gesendet: Montag, 28. November 2022 17:09:40 An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] The Trunk: Chronology-Core-dtl.80.mcz
List,
Could we flag #breaking the way we flag #deprecated?
I think we should hold off deleting the old implementation for at least one version... Is Squeak's debugger advanced enough to run the old code during the transition period?
I was thinking #breaking:legacy: or similar to invoke the old implementation. User flexibility to not need to debug someone else's library, yaknow?
On Mon, Nov 28, 2022, 08:21 Jakob Reschke <jakres+squeak@gmail.commailto:jakres%2Bsqueak@gmail.com> wrote: Hi Christoph,
Question to present you: do you have any means to definitively retrieve this note when you or anyone else actually writes the release notes? ;-)
If there is a practical means to do so, maybe initialize these release notes right now and already write it down.
Kind regards, Jakob
Am Mo., 28. Nov. 2022 um 16:10 Uhr schrieb <christoph.thiede@student.hpi.uni-potsdam.demailto:christoph.thiede@student.hpi.uni-potsdam.de>: Note for future self: This is a breaking change that should be documented in the next release notes. :-)
Best, Christoph
On 2022-09-06T16:03:35+00:00, commits@source.squeak.orgmailto:commits@source.squeak.org wrote:
David T. Lewis uploaded a new version of Chronology-Core to project The Trunk: http://source.squeak.org/trunk/Chronology-Core-dtl.80.mcz
==================== Summary ====================
Name: Chronology-Core-dtl.80 Author: dtl Time: 19 May 2022, 12:03:05.720962 pm UUID: 1b1b97c4-bc35-408d-b548-f0d0376a0808 Ancestors: Chronology-Core-dtl.79
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.
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.
Issue reported at https://github.com/squeak-smalltalk/squeak-object-memory/issues/23
=============== Diff against Chronology-Core-dtl.79 ===============
Item was added:
- ----- Method: DateAndTime>>asLocalAt: (in category 'squeak protocol') -----
- asLocalAt: anOffset
"Answer a DateAndTime for a different time zone offset that has the same
year, month, day, hour, minute, and second as this instance, and with
printString that matches except for time zone offset."
| newOffset newMicros |
newOffset := anOffset asDuration asSeconds.
newMicros := localOffsetSeconds - newOffset * 1000000 + utcMicroseconds.
^ self class utcMicroseconds: newMicros offset: newOffset
- !
Item was changed: ----- Method: DateAndTime>>offset: (in category 'ansi protocol') ----- offset: anOffset
"Answer a <DateAndTime> equivalent to the receiver but with its local time
being offset from UTC by offset.
"Answer a DateAndTime for a different time zone offset that has the same
year, month, day, hour, minute, and second as this instance, and with
printString that matches except for time zone offset."
See asLocalAt: for the earlier behavior of this method."
^ self class
utcMicroseconds: utcMicroseconds
offset: anOffset asDuration asSeconds!
| newOffset newMicros |
newOffset := anOffset asDuration asSeconds.
newMicros := localOffsetSeconds - newOffset * 1000000 + utcMicroseconds.
^ self class utcMicroseconds: newMicros offset: newOffset
- !
Item was changed: ----- Method: DateAndTime>>utcOffset: (in category 'squeak protocol') ----- utcOffset: anOffset
"Compatiblity. Answer a DateAndTime equivalent to the receiver but offset from UTC by anOffset."
^ self offset: anOffset!
"Answer a DateAndTime equivalent to the receiver but offset from UTC by anOffset"
^ self class
utcMicroseconds: utcMicroseconds
offset: anOffset asDuration asSeconds!
Item was changed: ----- Method: Timespan class>>current (in category 'squeak protocol') ----- current
^ self starting: (DateAndTime now asLocalAt: self defaultOffset)!
^ self starting: (DateAndTime now offset: self defaultOffset)!