[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Scheme-reports] Ratification vote for R7RS-small

On Wed, Apr 24, 2013 at 8:24 PM, Sam TH <sam@x> wrote:
On Wed, Apr 24, 2013 at 4:44 AM, Alaric Snell-Pym
<alaric@x> wrote:
> I hear the complaints from
> people that our rejection of R6RS has been a mistake, but that was the
> scope of the requirements laid down by the Steering Committee

Certainly the charter didn't *require* R6RS compatibility, but it
didn't *prohibit* it.  For example, the decisions not to make the
module system or the error system or the struct system compatible were
decisions that the working group took that could have gone the other

Sam, thank you for providing a rationale with your vote and for
including specific points.

I think it's somewhat hypocritical to cite these specific examples
though.  R6RS chose to break compatibility with the widely
implemented and used SRFI-9 and SRFI-23, and provided a
module system incompatible with R5RS and most existing module
systems.  We were thus forced into a decision that was incompatible
with one or the other either way.  You can of course disagree with
our decisions, but you can't take the moral high ground here.

The module system compatibility perhaps needs clarification.  The
primary goal of the WG1 charter - which I strongly agree with -
was to improve Scheme compatibility.  To provide a common
ground for implementations to share code.  To this end, by far the
most important property is that the module system be supported
and that it not be second class.  You should be able to import
native modules from portable modules and vice versa, and there
should be no loss of performance.

As mentioned already, R6RS actually makes it impossible to
use existing R5RS code unmodified, but more than that the
versioning and phasing features make it impossible to integrate
with most existing module systems.  R7RS has neither of these
problems.  Further, since we moved the complex and controversial
versioning and phasing issues to WG2, choosing a superficially
different syntax actually improves R6RS compatibility.  You can
support both library and define-library as in Sagittarius, so it's
misleading to say R7RS modules are incompatible with R6RS.

Again, the decisions are debatable, but the time for debate is
long over.  The charter was finalized over three years ago, the
formal comments period ended over half a year ago, and the
community provided constant feedback in the interim.  You can
disagree now, but keep in mind it was R6RS that broke backwards
compatibility and hampered forwards compatibility long before
any of this.


Scheme-reports mailing list