I think it's some mismatch in the way that scheme_eval() uses its namespace argument versus using `(current-namespace)', while `eval' sets `current-namespace'.
In other words, scheme_eval() is probably broken in some way when the namespace you give it is not the same as `(current-namespace)'. At Thu, 29 Nov 2012 01:20:46 -0500, Anthony Carrico wrote: > I have a test case that works at the command line: > > $ racket > Welcome to Racket v5.3.1. > > (require "simple.rkt") > > (scheme_eval '(+ 2 2) (make-base-namespace)) > 4 > > > > But fails with raco test: > > $ raco test "simple.rkt" > link: module mismatch; > possibly, bytecode file needs re-compile because dependencies changed > exporting module: "/usr/share/racket/collects/racket/private/kw.rkt" > exporting phase level: 0 > internal explanation: variable not provided (directly or indirectly) > at: #%app > in: new-app > > Here is my version: > > $ racket --version > Welcome to Racket v5.3.1. > > And here is the test: > > $ cat "simple.rkt" > #lang racket > (module+ test (require rackunit)) > (require ffi/unsafe) > (define scheme_eval > (get-ffi-obj "scheme_eval" (ffi-lib #f) (_fun _scheme _scheme -> > _scheme))) > (provide scheme_eval) > (module+ test > (check = 4 (scheme_eval '(+ 2 2) (make-base-namespace)))) > > If I change scheme_eval to eval in "check =" there is no failure. > > I know, strange example. I just came across the issue while hacking. > > -- > Anthony Carrico > > > ------------------------------------------------------------------------------ > [application/pgp-signature "signature.asc"] [~/Desktop & open] [~/Temp & open] > ____________________ > Racket Users list: > http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users