[racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

From: Vincent St-Amour (stamourv at ccs.neu.edu)
Date: Mon Jul 30 15:52:52 EDT 2012

At Mon, 30 Jul 2012 13:10:28 -0600,
Matthew Flatt wrote:
> 
> At Fri, 20 Jul 2012 16:33:54 -0400, Vincent St-Amour wrote:
> > How about having a `compatibility' collect, which would include this and
> > things like `racket/package' (compatibility with Chez) and `racket/mpair'
> > (compatibility with Scheme)? It would be harder to confuse these things
> > with blessed Racket features.
> 
> Sorry that I'm so late to this thread.
> 
> I think a "compatibility" collection is a good idea, and it's a fine
> place for `defmacro'. I don't think `racket/...' libraries should move
> there, though.
> 
> When the next big language shift comes, we should leave out some
> libraries that are now in "racket", and then it may make sense to add
> some left-out ones to "compatibility". As long as they stick around in
> "racket" though (for compatibility!), I think there's little advantage
> in adding them to "compatibility". 

The main advantage (IMO) of having, say, mutable lists in
`compatibility' is that searching the docs points there instead of to
`racket'. This makes it clear that they are not a blessed Racket
feature. This is (IMO) the main point of the `compatibility' collect.

> FWIW, the `package' form wasn't even intended for compatibility. It was
> intended to support namespace management --- possibly as an expansion
> target for macros --- and to work in contexts other than module top
> levels. It hasn't turned out to be useful, though.

Now that we have submodules, are packages still useful? If not, we
should encourage the use of submodules over packages, and putting
packages in `compatibility' makes it clear that they are not the
preferred option.

Vincent

Posted on the dev mailing list.