[racket-dev] PLaneT(2): Single vs multi-collection packages

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Tue Jun 18 07:59:30 EDT 2013

At Mon, 17 Jun 2013 16:53:50 -0400, Greg Hendershott wrote:
> I'm still thinking that I'll keep my existing multi-collection
> packages as multi, to preserve compatibility with 5.3.4. Only because,
> although my packages don't have many users, I'll err on the side of
> their convenience.
> 
> But if someone else did want to change from multi to single:
> 
> 1. Philosophical: Wouldn't this be bad to do without renaming the
> package, since the spirit of the package system versioning is, never
> break backward compatibility?  Or, is it acceptable, now, since this
> is technically still in beta?

In principle, you should add a versioned dependency on "racket" to
indicate that the package does not work with version 5.3.4, and so
users of v5.3.4 should get an earlier revision of the package.

We have not yet set up "pkg.racket-lang.org" to pay attention to the
version number that is included in a request or to let authors
configure version-specific mappings for packages, though.

> 2. Practical: Would `raco pkg update' handle such a multi->single
> transform?  Or should packagers instruct users to (a) remove and (b)
> install?

`raco pkg update' can handle a switch from multi-package form to
single-package form or vice versa.


> I'm asking in case it would help to have the answer(s) ready for doc
> or FAQ purposes.
> 
> 
> On Sat, Jun 15, 2013 at 11:19 AM, Matthew Flatt <mflatt at cs.utah.edu> wrote:
> > At Fri, 14 Jun 2013 21:14:58 -0400, Greg Hendershott wrote:
> >> I just want to be clear what I need to do to
> >> keep compatibility with 5.3.4 for existing packages. If that means
> >> adding something to info.rkt to say, "yeah, I'm still multi", I may do
> >> that.
> >
> > Yes, that's exactly what will be required for a package to work with
> > both v5.3.4 and after the change: keep the package multi-collection,
> > and explicitly declare it as such by adding a line to "info.rkt".
> >
> > For the new "info.rkt" field, should it be
> >
> >   (define multi-collection? #t)
> >
> > ?
> >

Posted on the dev mailing list.