[racket] setup sandbox eval with submodule

From: Alexander D. Knauth (alexander at knauth.org)
Date: Fri May 16 19:42:29 EDT 2014

Well, I think you have to use module, not module+, and for some reason the quoted module name doesn’t work, and the (submod “.” some-lang) doesn’t work, but (submod “Untitled.rkt” some-lang) does:

#lang racket
(require racket/sandbox
         scribble/eval)

(require rackunit)

(module some-lang racket
 (provide (all-defined-out))
 (define (#%top-interaction f x y) (f x y))
 (define #%module-begin '...))

(define ev
 (call-with-trusted-sandbox-configuration
  (lambda ()
    (parameterize ([sandbox-output 'string]
                   [sandbox-error-output 'string])
      (let ([the-eval (make-base-eval)])
        (the-eval `(require (submod "Untitled.rkt" some-lang)))
        the-eval)))))

(check-equal? (ev '(+ 1 2)) 3)

On May 14, 2014, at 9:41 AM, David Van Horn <dvanhorn at cs.umd.edu> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> I'd like to create a sandbox evaluator that uses a language created in
> a submodule.  So something like this:
> 
> #lang racket
> (require racket/sandbox
>         scribble/eval)
> 
> (module+ some-lang
>  (provide (all-defined-out))
>  (define #%top-interaction '...)
>  (define #%module-begin '...))
> 
> (define ev
>  (call-with-trusted-sandbox-configuration
>   (lambda ()
>     (parameterize ([sandbox-output 'string]
>                    [sandbox-error-output 'string])
>       (let ([the-eval (make-base-eval)])
>         (the-eval `(require ???????))
>         the-eval)))))
> 
> But I'm lost figuring out what to put for ??????? to make this work
> out.  Is there a way to make this work?
> 
> Thanks,
> David
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
> 
> iQIcBAEBAgAGBQJTc3KaAAoJEIVEqZR2RxA8MDQP/jSDd+PXgvXVp4PgH7ZGpOFy
> sUijCZXk8CmqNfTB7gLRn/1B66yKCib3w5l/3gwGnfMixKN0Zk7IstJAWYAM8IeA
> Hc57VD80mef/H+pwJvFI6Eac9q39TiD+JjT0EblM0b3M9LvrxVBnmBr7s+uO0RyB
> g+wOLFXwFVAJkTJjFmyHL3YI7y5nMFeKSa95XapiMK4oS/6mVfV7n6RIgLkpwTFF
> ylxxMRgWRyHe41HmgzObfjD0NXBvqKOxgkC4vRq+eR6EYWndN1Re56wePGl7Dx8N
> QcQDlGMWtWW4Eed9RmjoUMtrmjln0JtxyX5yZK9X9snKVrRfQ0MwXNKNvoC90b0w
> uzQzS7Ow1gT8adwYl0bmElZTL3AaIRrPl086NV3xH5xyA9WVWHlrMZORsqb+ZDCc
> FQMEV+bNUwBLcSv4hpfVfPk/VOlfQM9Q61RGFcSYAWNg7aXzEgz37pYb5wAZ7uYg
> KdUMbAqLnUcZySowIYv5iKTNjG7dy/XmboPlBXrp0bZwxdV3Rz1UDMAJPO/b1GIO
> 7zKVUTVL6U2S9qJ0a8rpCGpN1hcqZYlqQjf6Dpp9mvjljp+Mr3Bvnncco/wrgk4B
> p7fXE5KlcGO4A4IAtjpZTL4Uj/YqFh0PfMNRhLP472RoH2nGWI6SKqp/ODAAh71V
> 9t47ns+G/SJi1e7XtIne
> =Ndma
> -----END PGP SIGNATURE-----
> ____________________
>  Racket Users list:
>  http://lists.racket-lang.org/users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20140516/01df4d7d/attachment.html>

Posted on the users mailing list.