[racket-dev] Release Announcement for v6.1.1, Second Draft

From: Sam Tobin-Hochstadt (samth at cs.indiana.edu)
Date: Wed Oct 29 17:35:49 EDT 2014

There were two holes.

1. We allowed exception handlers to assume that they received values
of type `exn`, even when that wasn't right.
2. We allowed typed programs to throw arbitrary values, which means
that you could throw a typed function to an untyped handler, which
could then misuse it.

Both of these changes could lead to type errors in programs that won't
fail at runtime, but that's true of just about everything in Typed
Racket, so I don't really understand what you're asking. Here are
examples of programs that will now type-error for each change.

1. (with-handlers ([void exn-message]) #f)
2. (raise (lambda ([x : Integer]) x))

I think the second problem is more what you mean, in that the first
program is "wrong" in some sense, even though it doesn't go wrong, but
the second example is a perfectly fine Racket program (if perhaps poor
style), but not one that can be allowed in the presence of untyped
code.

Does that help explain things?
Sam

On Wed, Oct 29, 2014 at 5:17 PM, Robby Findler
<robby at eecs.northwestern.edu> wrote:
> Sam: can you elaborate on precisely what the hole was? In particular,
> if there are any safe programs that the type system now rejects, I'd
> be in favor of a slightly different wording.
>
> Robby
>
> On Wed, Oct 29, 2014 at 2:35 PM, Sam Tobin-Hochstadt
> <samth at cs.indiana.edu> wrote:
>> On Wed, Oct 29, 2014 at 3:30 PM, Ryan Culpepper <ryanc at ccs.neu.edu> wrote:
>>>
>>> * Exception handling changed to be safe. This may break existing
>>>   programs that rely on unsafe behavior.
>>>
>>> * Casts and predicates are supported in typed regions.
>>
>> I think these two bullets (esp the first one) need to make clear that
>> they're about Typed Racket.
>>
>> How about:
>>
>> * Typed Racket's rules for exception handlers are now more
>> restrictive, as required for safety. This may cause type errors for
>> existing programs that rely on unsafe behavior.
>> * Typed Racket now supports casts and predicates in typed regions.
>>
>> Sam
>> _________________________
>>   Racket Developers list:
>>   http://lists.racket-lang.org/dev

Posted on the dev mailing list.