[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [MIT-Scheme-devel] Stop breaking stuff!
From: |
Taylor R Campbell |
Subject: |
Re: [MIT-Scheme-devel] Stop breaking stuff! |
Date: |
Tue, 23 Feb 2016 07:06:54 +0000 |
User-agent: |
IMAIL/1.21; Edwin/3.116; MIT-Scheme/9.1.99 |
Date: Mon, 22 Feb 2016 22:17:35 -0800
From: Chris Hanson <address@hidden>
At a minimum, to make a significant change, the old behavior should be
maintained at least one release after being formally deprecated, with a
public statement that the next release will cause the breakage. The
intermediate release should support both the old and the new way, so that
people can make the transition in a system that will run both. Then the
next release can break the old way.
It's really pretty silly to break any straightforward API like
removing reduce-left, even after an announcement -- that's the reason
for the unfortunate fact that SICP no longer works in MIT Scheme.
Maybe someone should design a scheme for versioning packages so that
(a) the API you're using is identified, and
(b) if we really want to remove stuff, it is sufficient in >=9.3
releases to load a compat-9.2 library and have it work like it did in
9.3.
It probably isn't necessary to redesign a nice semantics for a serious
multilingual module system like Racket to do this -- it can probably
be realized as just a pattern of using cref packages as is.
(But maybe I should clam up since I'm probably not going to do either
one myself at this point...)