[racket-dev] [plt] Push #26693: master branch updated

From: Greg Hendershott (greghendershott at gmail.com)
Date: Tue Sep 17 10:53:50 EDT 2013

On Tue, Sep 17, 2013 at 8:29 AM, Matthew Flatt <mflatt at cs.utah.edu> wrote:
> I think the problem is the way that the release and development version
> numbers got out of sync for a while. Version 5.3.6 is derived fairly
> directly from v5.3.4 (and v5.3.5) by adding only a small set of bug-fix
> patches. Version 5.3.6 has almost nothing that was added in the
> v5.3.4.x development series.


My (mis)understanding of the process was: "My change was accepted and
merged to `master` well before 5.3.5 was released, therefore my change
will be in 5.3.5".  (In fact at the time I thought, that's lucky
timing, it will make it into 5.3.5!)

But although that seemed to be how it worked for my few previous PRs
(e.g. adding Markdown output to Scribble), it's not necessarily true.

Is that correct?

For the future: Is there something I could/should have done to ensure
the change made it to release?  (Or, was this just a window where such
a change was unlikely to be accepted?)

> The change should certainly have been in any 5.3.900.x or 5.90.x
> development version, though, so I can't explain how you got an error
> there.

The explanation is I was completely wrong -- it's there. (I got
confused last night while running several different versions of Racket
on a couple different boxes.)

I can see it in the source.  Plus here's a quick/dirty test (one that
doesn't need to mutate any real IMAP account). The error below is
_good_ because it's a contract violation that 0 isn't `imap?`. Whereas
on the old version it would have been an arity error, passing 4 to a
func expecting 3:

Welcome to Racket v5.90.0.9.
-> (require net/imap)
-> (imap-append 0 "foo" "foo" '())
; imap-append: contract violation
;   expected: imap?
;   given: 0
;   in: the 1st argument of
;       (->*
;        (imap? string? (or/c string? bytes?))
;        ((listof
;          (or/c
;           'seen
;           'answered
;           'flagged
;           'deleted
;           'draft
;           'recent)))
;        void?)
;   contract from: <pkgs>/net-lib/net/imap.rkt
;   blaming: top-level
;   at: <pkgs>/net-lib/net/imap.rkt:21.2

tl;dr The change is definitely in HEAD.

Posted on the dev mailing list.