[racket-dev] info.rkt `deps` and new #:version keyword: Backward compatibility?

From: Jay McCarthy (jay.mccarthy at gmail.com)
Date: Thu Oct 3 09:50:34 EDT 2013

On Thu, Oct 3, 2013 at 7:40 AM, Greg Hendershott
<greghendershott at gmail.com> wrote:
> After I gave my Frog talk at RacketCon, in which I said a goal of Frog
> was to make it easy to install, J. Ian Johnson tried to install it...
> but couldn't.
>
> As best I understand, it's because he was using Racket from HEAD, and
> at some point recently the `deps` expression for info.rkt changed for
> the case where you specify a version. A case which I've been using
> (recent versions of Frog need a >= version of Markdown).
>
> For 5.3.6 and (until fairly recently in HEAD) it was:
>
> # frog/info.rkt
> #lang setup/infotab
> (define version "0.7")
> (define collection 'multi)
> (define deps '(("markdown" "0.5")
>                "rackjure"))
>
> But it recently changed to require a #:version keyword, therefore it
> would have to be IIUC this for 5.3.900.???+:
>
> # frog/info.rkt
> #lang setup/infotab
> (define version "0.7")
> (define collection 'multi)
> (define deps '(("markdown" #:version "0.5")
>                "rackjure"))
>
> But that wouldn't be compatible with 5.3.6 IIUC.
>
> As a result I would have to maintain two different packages, one for
> 5.3.5 and 5.3.6, and another for 5.3.900.???+ and greater (yuck).
>
> Until now, even the major change to single-collection defaults was
> done in a way that preserved backward compatibility (well, after
> taking action to add `(define collection 'multi)`, but after taking
> such action the same info.rkt works for old and new).
>
> 1. Am I understanding it correctly?  (Not a rhetorical question; I
> have a lot of "IIUC"s above.)

I do not think so, the old format is supposed to work (see lines 192
to 195 of pkg/lib) and described as a valid, but deprecated use in the
current documentation.

> 2. If so, is it really the intent to break backward compatibility?

The concept of backwards compatibility does not apply to beta software
in my opinion. The next release will be the first release where the
package system is not beta.

> 3. Instead couldn't the #version keyword simply be optional?

See above.

Jay

-- 
Jay McCarthy <jay at cs.byu.edu>
Assistant Professor / Brigham Young University
http://faculty.cs.byu.edu/~jay

"The glory of God is Intelligence" - D&C 93

Posted on the dev mailing list.