[racket-dev] Planet 2 Beta Release

From: Eli Barzilay (eli at barzilay.org)
Date: Sat Dec 1 18:10:52 EST 2012

Yesterday, Matthew Flatt wrote:
> I've been working with Jay on a few more changes:
> 
> Specifying metadata
> -------------------
> 
> "METADATA.rktd" is being replaced with "info.rkt", which is written in
> the `setup/infotab' language as usual.
> 
> Define `deps' for dependencies, like this:
> 
>    #lang setup/infotab
>    (define deps (list _package-source ...))
> 
> For a short transition period (maybe a week?), `raco pkg' will continue
> to recognize "METADATA.rktd".
> 
> 
> Version-specific installation
> -----------------------------
> 
> Package installation is now both user-specific and version-specific
> by default. The options are
> 
>  * installation-specific
> 
>  * user-specific and version-specific (the new default)
> 
>  * user-specific and all-version (the old default)
> 
> Use the `--shared' or `-s' flag to get the old all-version behavior.
> Any previously installed user-specific packages that you have are still
> in `--shared' mode.
> 
> Not to speak too much on Jay's behalf, but I think he isn't convinced
> that the new default is right. If `--shared' is the default, then a
> `raco pkg update' could be enough to get all your installed packages
> working with a new version. If installation is instead
> version-specific, then you have to reinstall every package that you use
> whenever you upgrade.
> 
> I think that if installation is all-version by default, then users
> who are going to end up with bad configurations that they have
> trouble repairing. A better way to deal with upgrades would be
> something like `raco pkg migrate'.

Just to see if I get the trade-offs right: all-version installs have
the advantage of not re-installing things, and the disadvantage of
breaking often (for some value of "often")?

If so, then something that I think is getting popular is keeping a
(global) list of all explicitly installed packages, and then the
version-specific installs get much easier to deal with because it's
easy to crawl over the explicit names and re-install name.  Having
this only for explicit names meams that I don't need to reinstall old
stuff that was installed only for some other package.

(But perhaps this is what you talk about with that `migrate' command.
If so, then this is just a verbose +1.)

-- 
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

Posted on the dev mailing list.