[racket] instantiating multiple sandboxes with gui's

From: Sam Tobin-Hochstadt (samth at cs.indiana.edu)
Date: Sat Apr 5 15:22:20 EDT 2014

On Sat, Apr 5, 2014 at 3:20 PM, Spencer Florence <spencer at florence.io> wrote:
> In xrepl that program catches breaks as well, so that behavior is probably
> fine and unavoidable.
>
> Although somehow drracket's repl managed to break out of that program. I
> wonder how it does that...

Robby's answers in this thread are about exactly that -- DrRacket is
very robust against bad behavior by user programs. The "Programming
Languages as Operating Systems" paper is about exactly these
questions.

Sam

>
> On Sat, Apr 5, 2014 at 3:00 PM, Sam Tobin-Hochstadt <samth at cs.indiana.edu>
> wrote:
>>
>> What if you do this:
>>
>>     (let l () (with-handlers ([void (l)]) (l)))
>>
>> This catches `exn:break` (and everything else) and calls `l`.
>>
>> Sam
>>
>> On Sat, Apr 5, 2014 at 2:54 PM, Greg Hendershott
>> <greghendershott at gmail.com> wrote:
>> >> thread cells are subject to GC and that's fine. The real issue is that
>> >> I
>> >> might write a program that does (effectively) this:
>> >>
>> >>  > (let l()(l))
>> >>
>> >> and then I'm stuck.
>> >
>> > Good point, but that's not a problem. A break returns to
>> > read-eval-print-loop.
>> >
>> > Example transcript:
>> >
>> >> (let l () (l))
>> > C-cC-c
>> > ; user break
>> >> (displayln "broken but alive")
>> > broken but alive
>> >>
>> >
>> > (The double Control-C just being necessary as usual in an Emacs
>> > comint-buffer.)
>> > ____________________
>> >   Racket Users list:
>> >   http://lists.racket-lang.org/users
>> ____________________
>>   Racket Users list:
>>   http://lists.racket-lang.org/users
>
>

Posted on the users mailing list.