fix mac sdk support; change initial namespace to not have 'module'; set up mzc --c-mods (still need docs)

svn: r8997
This commit is contained in:
Matthew Flatt 2008-03-16 23:08:53 +00:00
parent 6bade7160f
commit b64d03d932
44 changed files with 890 additions and 595 deletions

View File

@ -433,7 +433,7 @@
(if (path? module-path) (if (path? module-path)
(path->complete-path module-path) (path->complete-path module-path)
module-path)]) module-path)])
(syntax-case (expand `(module m mzscheme (syntax-case (expand `(,#'module m mzscheme
(require (only ,module-path) (require (only ,module-path)
mzlib/runtime-path) mzlib/runtime-path)
(runtime-paths ,module-path))) (quote) (runtime-paths ,module-path))) (quote)
@ -493,6 +493,15 @@
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (compile-using-kernel e)
(let ([ns (make-empty-namespace)])
(namespace-attach-module (current-namespace) ''#%kernel ns)
(parameterize ([current-namespace ns])
(namespace-require ''#%kernel)
(compile e))))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (lib-path->string path) (define (lib-path->string path)
(cond (cond
[(null? (cddr path)) [(null? (cddr path))
@ -516,89 +525,90 @@
(define (make-module-name-resolver code-l) (define (make-module-name-resolver code-l)
(let ([extensions (filter (lambda (m) (extension? (mod-code m))) code-l)]) (let ([extensions (filter (lambda (m) (extension? (mod-code m))) code-l)])
`(let-values ([(orig) (current-module-name-resolver)] `(module #%resolver '#%kernel
[(reg) (namespace-module-registry (current-namespace))] (let-values ([(orig) (current-module-name-resolver)]
[(mapping-table) (quote [(reg) (namespace-module-registry (current-namespace))]
,(map [(mapping-table) (quote
(lambda (m) ,(map
`(,(mod-full-name m) (lambda (m)
,(mod-mappings m))) `(,(mod-full-name m)
code-l))] ,(mod-mappings m)))
[(library-table) (quote code-l))]
,(filter values [(library-table) (quote
(map (lambda (m) ,(filter values
(let ([path (mod-mod-path m)]) (map (lambda (m)
(if (and (pair? path) (let ([path (mod-mod-path m)])
(eq? 'lib (car path))) (if (and (pair? path)
(cons (lib-path->string path) (eq? 'lib (car path)))
(mod-full-name m)) (cons (lib-path->string path)
#f))) (mod-full-name m))
code-l)))]) #f)))
(letrec-values ([(embedded-resolver) code-l)))])
(case-lambda (letrec-values ([(embedded-resolver)
[(name) (case-lambda
;; a notification [(name)
(orig name)] ;; a notification
[(name rel-to stx) (orig name)]
(embedded-resolver name rel-to stx #t)] [(name rel-to stx)
[(name rel-to stx load?) (embedded-resolver name rel-to stx #t)]
(if (not (module-path? name)) [(name rel-to stx load?)
;; Bad input (if (not (module-path? name))
(orig name rel-to stx load?) ;; Bad input
(if (not (eq? reg (namespace-module-registry (current-namespace)))) (orig name rel-to stx load?)
;; Wrong registry (if (not (eq? reg (namespace-module-registry (current-namespace))))
(orig name rel-to stx load?) ;; Wrong registry
;; Have a relative mapping? (orig name rel-to stx load?)
(let-values ([(a) (if rel-to ;; Have a relative mapping?
(assq (resolved-module-path-name rel-to) mapping-table) (let-values ([(a) (if rel-to
#f)]) (assq (resolved-module-path-name rel-to) mapping-table)
(if a #f)])
(let-values ([(a2) (assoc name (cadr a))]) (if a
(if a2 (let-values ([(a2) (assoc name (cadr a))])
(make-resolved-module-path (cdr a2)) (if a2
;; No relative mapping found (presumably a lib) (make-resolved-module-path (cdr a2))
(orig name rel-to stx load?))) ;; No relative mapping found (presumably a lib)
(let-values ([(lname) (orig name rel-to stx load?)))
;; normalize `lib' to single string (same as lib-path->string): (let-values ([(lname)
(let-values ([(name) ;; normalize `lib' to single string (same as lib-path->string):
(if (symbol? name) (let-values ([(name)
(list 'lib (symbol->string name)) (if (symbol? name)
name)]) (list 'lib (symbol->string name))
(if (pair? name) name)])
(if (eq? 'lib (car name)) (if (pair? name)
(if (null? (cddr name)) (if (eq? 'lib (car name))
(if (regexp-match #rx"^[^/]*[.]" (cadr name)) (if (null? (cddr name))
;; mzlib (if (regexp-match #rx"^[^/]*[.]" (cadr name))
(string-append "mzlib/" (cadr name)) ;; mzlib
;; new-style (string-append "mzlib/" (cadr name))
(if (regexp-match #rx"^[^/.]*$" (cadr name)) ;; new-style
(string-append (cadr name) "/main.ss") (if (regexp-match #rx"^[^/.]*$" (cadr name))
(if (regexp-match #rx"^[^.]*$" (cadr name)) (string-append (cadr name) "/main.ss")
;; need a suffix: (if (regexp-match #rx"^[^.]*$" (cadr name))
(string-append (cadr name) ".ss") ;; need a suffix:
(cadr name)))) (string-append (cadr name) ".ss")
;; old-style multi-string (cadr name))))
(string-append (apply string-append ;; old-style multi-string
(map (lambda (s) (string-append (apply string-append
(string-append s "/")) (map (lambda (s)
(cddr name))) (string-append s "/"))
(cadr name))) (cddr name)))
#f) (cadr name)))
#f))]) #f)
;; A library mapping that we have? #f))])
(let-values ([(a3) (assoc lname library-table)]) ;; A library mapping that we have?
(if a3 (let-values ([(a3) (assoc lname library-table)])
;; Have it: (if a3
(make-resolved-module-path (cdr a3)) ;; Have it:
;; Let default handler try: (make-resolved-module-path (cdr a3))
(orig name rel-to stx load?))))))))])]) ;; Let default handler try:
(current-module-name-resolver embedded-resolver))))) (orig name rel-to stx load?))))))))])])
(current-module-name-resolver embedded-resolver))))))
;; Write a module bundle that can be loaded with 'load' (do not embed it ;; Write a module bundle that can be loaded with 'load' (do not embed it
;; into an executable). The bundle is written to the current output port. ;; into an executable). The bundle is written to the current output port.
(define (write-module-bundle verbose? modules literal-files literal-expression collects-dest (define (do-write-module-bundle verbose? modules literal-files literal-expressions collects-dest
on-extension program-name compiler expand-namespace on-extension program-name compiler expand-namespace
src-filter get-extra-imports) src-filter get-extra-imports)
(let* ([module-paths (map cadr modules)] (let* ([module-paths (map cadr modules)]
[files (map [files (map
(lambda (mp) (lambda (mp)
@ -633,9 +643,12 @@
collapsed-mps) collapsed-mps)
;; Drop elements of `codes' that just record copied libs: ;; Drop elements of `codes' that just record copied libs:
(set-box! codes (filter mod-code (unbox codes))) (set-box! codes (filter mod-code (unbox codes)))
;; Bind `module' to get started:
(write (compile-using-kernel '(namespace-require '(only '#%kernel module))))
;; Install a module name resolver that redirects ;; Install a module name resolver that redirects
;; to the embedded modules ;; to the embedded modules
(write (make-module-name-resolver (filter mod-code (unbox codes)))) (write (make-module-name-resolver (filter mod-code (unbox codes))))
(write (compile-using-kernel '(namespace-require ''#%resolver)))
;; Write the extension table and copy module code: ;; Write the extension table and copy module code:
(let* ([l (reverse (unbox codes))] (let* ([l (reverse (unbox codes))]
[extensions (filter (lambda (m) (extension? (mod-code m))) l)] [extensions (filter (lambda (m) (extension? (mod-code m))) l)]
@ -649,41 +662,44 @@
[table-path (resolved-module-path-name table-sym)]) [table-path (resolved-module-path-name table-sym)])
(assoc (normalize table-path) l)))]) (assoc (normalize table-path) l)))])
(unless (null? extensions) (unless (null? extensions)
;; The extension table: ;; The extension table:`
(write '(#%require '#%utils))
(write (write
`(let-values ([(eXtEnSiOn-modules) ;; this name is magic for the exe->distribution process `(module #%extension-table '#%kernel
(quote ,(map (lambda (m) (#%require '#%utils)
(let ([p (extension-path (mod-code m))]) (let-values ([(eXtEnSiOn-modules) ;; this name is magic for the exe->distribution process
(when verbose? (quote ,(map (lambda (m)
(fprintf (current-error-port) "Recording extension at ~s~n" p)) (let ([p (extension-path (mod-code m))])
(list (path->bytes p) (when verbose?
(mod-full-name m) (fprintf (current-error-port) "Recording extension at ~s~n" p))
;; The program name isn't used. It just helps ensures that (list (path->bytes p)
;; there's plenty of room in the executable for patching (mod-full-name m)
;; the path later when making a distribution. ;; The program name isn't used. It just helps ensures that
(path->bytes program-name)))) ;; there's plenty of room in the executable for patching
extensions))]) ;; the path later when making a distribution.
(for-each (lambda (pr) (path->bytes program-name))))
(current-module-declare-name (make-resolved-module-path (cadr pr))) extensions))])
(let-values ([(p) (bytes->path (car pr))]) (for-each (lambda (pr)
(load-extension (if (relative-path? p) (current-module-declare-name (make-resolved-module-path (cadr pr)))
(let-values ([(d) (current-directory)]) (let-values ([(p) (bytes->path (car pr))])
(current-directory (find-system-path 'orig-dir)) (load-extension (if (relative-path? p)
(begin0 (let-values ([(d) (current-directory)])
(let-values ([(p2) (find-executable-path (find-system-path 'exec-file) p #t)]) (current-directory (find-system-path 'orig-dir))
(if p2 (begin0
p2 (let-values ([(p2) (find-executable-path (find-system-path 'exec-file) p #t)])
(path->complete-path p (current-directory)))) (if p2
(current-directory d))) p2
p)))) (path->complete-path p (current-directory))))
eXtEnSiOn-modules)))) (current-directory d)))
p))))
eXtEnSiOn-modules))))
(write (compile-using-kernel '(namespace-require ''#%extension-table))))
;; Runtime-path table: ;; Runtime-path table:
(unless (null? runtimes) (unless (null? runtimes)
(unless table-mod (unless table-mod
(error 'create-embedding-executable "cannot find module for runtime-path table")) (error 'create-embedding-executable "cannot find module for runtime-path table"))
(write `(current-module-declare-name (make-resolved-module-path (write (compile-using-kernel
',(mod-full-name table-mod)))) `(current-module-declare-name (make-resolved-module-path
',(mod-full-name table-mod)))))
(write `(module runtime-path-table '#%kernel (write `(module runtime-path-table '#%kernel
(#%provide table) (#%provide table)
(define-values (table) (define-values (table)
@ -734,27 +750,48 @@
(eq? nc table-mod)) (eq? nc table-mod))
(when verbose? (when verbose?
(fprintf (current-error-port) "Writing module from ~s~n" (mod-file nc))) (fprintf (current-error-port) "Writing module from ~s~n" (mod-file nc)))
(write `(current-module-declare-name (write (compile-using-kernel
(make-resolved-module-path `(current-module-declare-name
',(mod-full-name nc)))) (make-resolved-module-path
',(mod-full-name nc)))))
(if (src-filter (mod-file nc)) (if (src-filter (mod-file nc))
(with-input-from-file (mod-file nc) (with-input-from-file (mod-file nc)
(lambda () (lambda ()
(copy-port (current-input-port) (current-output-port)))) (copy-port (current-input-port) (current-output-port))))
(write (mod-code nc))))) (write (mod-code nc)))))
l)) l))
(write '(current-module-declare-name #f)) (write (compile-using-kernel '(current-module-declare-name #f)))
;; Remove `module' binding before we start running user code:
(write (compile-using-kernel '(namespace-set-variable-value! 'module #f #t)))
(write (compile-using-kernel '(namespace-undefine-variable! 'module)))
(newline) (newline)
(for-each (lambda (f) (for-each (lambda (f)
(when verbose? (when verbose?
(fprintf (current-error-port) "Copying from ~s~n" f)) (fprintf (current-error-port) "Copying from ~s~n" f))
(call-with-input-file* (call-with-input-file* f
f
(lambda (i) (lambda (i)
(copy-port i (current-output-port))))) (copy-port i (current-output-port)))))
literal-files) literal-files)
(when literal-expression (for-each write literal-expressions)))
(write literal-expression))))
(define (write-module-bundle #:verbose? [verbose? #f]
#:modules [modules null]
#:literal-files [literal-files null]
#:literal-expressions [literal-expressions null]
#:on-extension [on-extension #f]
#:expand-namespace [expand-namespace (current-namespace)]
#:compiler [compiler (lambda (expr)
(parameterize ([current-namespace expand-namespace])
(compile expr)))]
#:src-filter [src-filter (lambda (filename) #f)]
#:get-extra-imports [get-extra-imports (lambda (filename code) null)])
(do-write-module-bundle verbose? modules literal-files literal-expressions
#f ; collects-dest
on-extension
"?" ; program-name
compiler expand-namespace
src-filter get-extra-imports))
;; The old interface: ;; The old interface:
(define make-embedding-executable (define make-embedding-executable
@ -783,6 +820,10 @@
#:modules [modules null] #:modules [modules null]
#:literal-files [literal-files null] #:literal-files [literal-files null]
#:literal-expression [literal-expression #f] #:literal-expression [literal-expression #f]
#:literal-expressions [literal-expressions
(if literal-expression
(list literal-expression)
null)]
#:cmdline [cmdline null] #:cmdline [cmdline null]
#:aux [aux null] #:aux [aux null]
#:launcher? [launcher? #f] #:launcher? [launcher? #f]
@ -890,13 +931,13 @@
(update-dll-dir dest (build-path orig-dir dir)))))))) (update-dll-dir dest (build-path orig-dir dir))))))))
(let ([write-module (let ([write-module
(lambda () (lambda ()
(write-module-bundle verbose? modules literal-files literal-expression collects-dest (do-write-module-bundle verbose? modules literal-files literal-expressions collects-dest
on-extension on-extension
(file-name-from-path dest) (file-name-from-path dest)
compiler compiler
expand-namespace expand-namespace
src-filter src-filter
get-extra-imports))]) get-extra-imports))])
(let-values ([(start end) (let-values ([(start end)
(if (and (eq? (system-type) 'macosx) (if (and (eq? (system-type) 'macosx)
(not unix-starter?)) (not unix-starter?))

View File

@ -49,6 +49,8 @@
(define exe-dir-output (make-parameter #f)) (define exe-dir-output (make-parameter #f))
(define mods-output (make-parameter #f))
(define module-mode (make-parameter #f)) (define module-mode (make-parameter #f))
(define default-plt-name "archive") (define default-plt-name "archive")
@ -112,6 +114,10 @@
,(lambda (f name) (exe-dir-output name) 'exe-dir) ,(lambda (f name) (exe-dir-output name) 'exe-dir)
((,(format "Combine executables with support files in <dir>") "") ((,(format "Combine executables with support files in <dir>") "")
"dir")] "dir")]
[("--c-mods")
,(lambda (f name) (mods-output name) 'c-mods)
((,(format "Write C-embeddable module bytecode to <file>") "")
"file")]
[("--collection-plt") [("--collection-plt")
,(lambda (f name) (plt-output name) 'plt-collect) ,(lambda (f name) (plt-output name) 'plt-collect)
(,(format "Create .plt <archive> containing collections") (,(format "Create .plt <archive> containing collections")
@ -287,7 +293,7 @@
,(lambda (f l) (exe-embedded-libraries ,(lambda (f l) (exe-embedded-libraries
(append (exe-embedded-libraries) (append (exe-embedded-libraries)
(list l)))) (list l))))
("Embed <lib> from <collect> in --[gui-]exe executable" "lib")] ("Embed <lib> in --[gui-]exe executable" "lib")]
[("++collects-copy") [("++collects-copy")
,(lambda (f d) (exe-dir-add-collects-dirs ,(lambda (f d) (exe-dir-add-collects-dirs
(append (exe-dir-add-collects-dirs) (append (exe-dir-add-collects-dirs)
@ -384,14 +390,14 @@
[("--debug") [("--debug")
,(lambda (f) (compiler:option:debug #t)) ,(lambda (f) (compiler:option:debug #t))
("Write debugging output to dump.txt")]]) ("Write debugging output to dump.txt")]])
(lambda (accum file . files) (lambda (accum . files)
(let ([mode (let ([l (filter symbol? accum)]) (let ([mode (let ([l (filter symbol? accum)])
(if (null? l) (if (null? l)
'make-zo 'make-zo
(car l)))]) (car l)))])
(values (values
mode mode
(cons file files) files
(let ([prefixes (filter string? accum)]) (let ([prefixes (filter string? accum)])
(unless (memq mode '(compile compile-c zo)) (unless (memq mode '(compile compile-c zo))
(unless (null? prefixes) (unless (null? prefixes)
@ -411,7 +417,7 @@
(require compiler/cffi) (require compiler/cffi)
,@(map (lambda (s) `(load ,s)) prefixes) ,@(map (lambda (s) `(load ,s)) prefixes)
(void))))))) (void)))))))
(list "file/directory/collection" "file/directory/sub-collection"))) (list "file/directory/collection")))
(printf "mzc v~a [~a], Copyright (c) 2004-2008 PLT Scheme Inc.~n" (printf "mzc v~a [~a], Copyright (c) 2004-2008 PLT Scheme Inc.~n"
(version) (version)
@ -544,16 +550,68 @@
(map (lambda (l) (map (lambda (l)
`(#t (lib ,l))) `(#t (lib ,l)))
(exe-embedded-libraries))) (exe-embedded-libraries)))
#:literal-expression `(#%require ',(string->symbol #:literal-expression (parameterize ([current-namespace (make-base-namespace)])
(format (compile
"#%mzc:~a" `(namespace-require
(let-values ([(base name dir?) (split-path (car source-files))]) '',(string->symbol
(path->bytes (path-replace-suffix name #"")))))) (format
"#%mzc:~a"
(let-values ([(base name dir?) (split-path (car source-files))])
(path->bytes (path-replace-suffix name #""))))))))
#:cmdline (exe-embedded-flags) #:cmdline (exe-embedded-flags)
#:collects-path (exe-embedded-collects-path) #:collects-path (exe-embedded-collects-path)
#:collects-dest (exe-embedded-collects-dest) #:collects-dest (exe-embedded-collects-dest)
#:aux (exe-aux)) #:aux (exe-aux))
(printf " [output to \"~a\"]~n" dest))] (printf " [output to \"~a\"]~n" dest))]
[(c-mods)
(let ([dest (mods-output)])
(let-values ([(in out) (make-pipe)])
(parameterize ([current-output-port out])
((dynamic-require '(lib "embed.ss" "compiler")
'write-module-bundle)
#:modules
(append
(map (lambda (l)
`(#f (file ,l)))
source-files)
(map (lambda (l)
`(#t (lib ,l)))
(exe-embedded-libraries)))))
(close-output-port out)
(let ([out (open-output-file
dest
#:exists 'truncate/replace)])
(fprintf out "#ifdef MZ_XFORM\n")
(fprintf out "XFORM_START_SKIP;\n")
(fprintf out "#endif\n")
(fprintf out "static void declare_modules(Scheme_Env *env) {\n")
(fprintf out " static unsigned char data[] = {")
(let loop ([pos 0])
(let ([b (read-byte in)])
(when (zero? (modulo pos 20))
(fprintf out "\n "))
(unless (eof-object? b)
(fprintf out "~a," b)
(loop (add1 pos)))))
(fprintf out "0\n };\n")
(fprintf out " Scheme_Object *eload = NULL, *a[3] = {NULL, NULL, NULL};\n")
(fprintf out " MZ_GC_DECL_REG(4);\n")
(fprintf out " MZ_GC_VAR_IN_REG(0, eload);\n")
(fprintf out " MZ_GC_ARRAY_VAR_IN_REG(1, a, 3);\n")
(fprintf out " MZ_GC_REG();\n")
(fprintf out " eload = scheme_builtin_value(\"embedded-load\");\n")
(fprintf out " a[0] = scheme_false;\n")
(fprintf out " a[1] = scheme_false;\n")
(fprintf out " a[2] = scheme_make_sized_byte_string((char *)data, ~a, 0);\n"
(file-position in))
(fprintf out " scheme_apply(eload, 3, a);\n")
(fprintf out " MZ_GC_UNREG();\n")
(fprintf out "}\n")
(fprintf out "#ifdef MZ_XFORM\n")
(fprintf out "XFORM_END_SKIP;\n")
(fprintf out "#endif\n")
(close-output-port out)))
(printf " [output to \"~a\"]~n" dest))]
[(exe-dir) [(exe-dir)
((dynamic-require 'compiler/distribute ((dynamic-require 'compiler/distribute
'assemble-distribution) 'assemble-distribution)

View File

@ -213,9 +213,11 @@
#f ;; verbose? #f ;; verbose?
(list (list #f program-filename)) (list (list #f program-filename))
null null
null (parameterize ([current-namespace (make-namespace 'empty)])
(list "-nqe-" (namespace-require 'mzscheme)
(format "~s" `(#%require ',(string->symbol (path->string short-program-name))))))))) (compile
`(namespace-require '',(string->symbol (path->string short-program-name)))))
null))))
(let ([make-launcher (if gui? make-mred-launcher make-mzscheme-launcher)]) (let ([make-launcher (if gui? make-mred-launcher make-mzscheme-launcher)])
(make-launcher (list "-qt-" (path->string program-filename)) (make-launcher (list "-qt-" (path->string program-filename))
executable-filename)))))))) executable-filename))))))))

View File

@ -889,7 +889,7 @@
;; any structure defined in the user's namespace ;; any structure defined in the user's namespace
(define drscheme-inspector (current-inspector)) (define drscheme-inspector (current-inspector))
(eval `(module drscheme-secrets mzscheme (eval `(,#'module drscheme-secrets mzscheme
(provide drscheme-inspector) (provide drscheme-inspector)
(define drscheme-inspector ,drscheme-inspector))) (define drscheme-inspector ,drscheme-inspector)))
(namespace-require ''drscheme-secrets) (namespace-require ''drscheme-secrets)

View File

@ -73,6 +73,10 @@
(else (else
(compile-java-internal port loc type-recs #f level))))) (compile-java-internal port loc type-recs #f level)))))
(define (compile-module expr)
(parameterize ([current-namespace (make-namespace)])
(compile expr)))
;compile-to-file: port location level -> void ;compile-to-file: port location level -> void
;Should have side-effect of writing to file all files needed for compilation ;Should have side-effect of writing to file all files needed for compilation
(define (compile-to-file port location level) (define (compile-to-file port location level)
@ -98,7 +102,7 @@
(build-path (send type-recs get-compilation-location) (build-path (send type-recs get-compilation-location)
(file-name-from-path (file-name-from-path
(send type-recs get-composite-location (car names)))) (send type-recs get-composite-location (car names))))
(lambda (port) (write (compile (car syntaxes)) port)) 'truncate/replace) (lambda (port) (write (compile-module (car syntaxes)) port)) 'truncate/replace)
(set! syntaxes (cdr syntaxes))) (set! syntaxes (cdr syntaxes)))
(unless (= (length names) (length syntaxes) (length locations)) (unless (= (length names) (length syntaxes) (length locations))
(error 'compile-to-file "Internal error: compilation unit not represented as expected")) (error 'compile-to-file "Internal error: compilation unit not represented as expected"))
@ -109,7 +113,7 @@
(unless (directory-exists? directory) (make-directory directory)) (unless (directory-exists? directory) (make-directory directory))
(call-with-output-zo-file* location (call-with-output-zo-file* location
(build-path directory (string-append name "_ss.zo")) (build-path directory (string-append name "_ss.zo"))
(lambda (port) (write (compile code) port)) (lambda (port) (write (compile-module code) port))
'truncate/replace) 'truncate/replace)
(call-with-output-file* (build-path directory (string-append name ".jinfo")) (call-with-output-file* (build-path directory (string-append name ".jinfo"))
(lambda (port) (write-record (send type-recs get-class-record (lambda (port) (write-record (send type-recs get-class-record

View File

@ -49,3 +49,18 @@ embedded:
calls @cppi{scheme_console_output}.} calls @cppi{scheme_console_output}.}
} }
@function[(void scheme_set_collects_path
[Scheme_Object* path])]{
Sets the path to be returned by @scheme[(find-system-path
'collects-dir)].}
@function[(void scheme_init_collection_paths
[Scheme_Env* env]
[Scheme_Object* extra_paths])]{
Initializes the @scheme[current-library-collection-paths] parameter
using @scheme[find-library-collection-paths]. The @var{extra_paths}
argument is propagated to @scheme[find-library-collection-paths].}

View File

@ -85,12 +85,11 @@ times).
With conservative collection, no registration is needed for the global With conservative collection, no registration is needed for the global
or static variables of an embedding program, unless it calls or static variables of an embedding program, unless it calls
@cppi{scheme_set_stack_base} with a non-zero second argument. (Under @cpp{scheme_setup} or @cppi{scheme_set_stack_base} with a non-zero
Mac OS X or with 3m, @cpp{scheme_set_stack_base} must be called first or second (respectively) argument. In that case, global and
always.) In that case, global and static variables containing static variables containing collectable pointers must be registered
collectable pointers must be registered with with @cppi{scheme_register_static}. The @cppi{MZ_REGISTER_STATIC}
@cppi{scheme_register_static}. The @cppi{MZ_REGISTER_STATIC} macro macro takes any variable name and registers it with
takes any variable name and registers it with
@cppi{scheme_register_static}. The @cppi{scheme_register_static} @cppi{scheme_register_static}. The @cppi{scheme_register_static}
function can be safely called even when it's not needed, but it must function can be safely called even when it's not needed, but it must
not be called multiple times for a single memory address. not be called multiple times for a single memory address.
@ -141,7 +140,7 @@ Pointers are registered in three different ways:
A pointer must never refer to the interior of an allocated object A pointer must never refer to the interior of an allocated object
(when a garbage collection is possible), unless the object was (when a garbage collection is possible), unless the object was
allocated with {@cppi{scheme_malloc_allow_interior}}. For this reason, allocated with @cppi{scheme_malloc_allow_interior}. For this reason,
pointer arithmetic must usually be avoided, unless the variable pointer arithmetic must usually be avoided, unless the variable
holding the generated pointer is @cpp{NULL}ed before a collection. holding the generated pointer is @cpp{NULL}ed before a collection.
@ -313,7 +312,8 @@ can be supplied as well:
In general, the only constraint on the second argument to In general, the only constraint on the second argument to
@cppi{MZ_GC_VAR_IN_REG} or @cppi{MZ_GC_ARRAY_VAR_IN_REG} is that @cppi{MZ_GC_VAR_IN_REG} or @cppi{MZ_GC_ARRAY_VAR_IN_REG} is that
@cpp{&} must produce the relevant address. @cpp{&} must produce the relevant address, and that address must be on
the stack.
Pointer information is not actually registered with the collector Pointer information is not actually registered with the collector
until the @cppi{MZ_GC_REG} macro is used. The @cppi{MZ_GC_UNREG} macro until the @cppi{MZ_GC_REG} macro is used. The @cppi{MZ_GC_UNREG} macro
@ -685,6 +685,32 @@ Registers an extension's global variable that can contain Scheme
collector would otherwise treat as atomic. A garbage collection can collector would otherwise treat as atomic. A garbage collection can
occur during the registration.} occur during the registration.}
@function[(int scheme_setup
[int no_auto_statics]
[Scheme_Main main]
[int argc]
[char** argv])]{
Initializes the GC stack base, creates the initial namespace by
calling @cpp{scheme_basic_env}, and then calls @var{main} with the
namespace, @var{argc}, and @var{argv}. (The @var{argc} and @var{argv}
are just passed on to @var{main}, and are not inspected in any way.)
The @cpp{Scheme_Main} type is defined as follows:
@verbatim[#:indent 4]{
typedef int (*Scheme_Main)(Scheme_Env *env,
int argc, char **argv);
}
The result of @var{main} is the result of @cpp{scheme_setup}.
If @var{no_auto_statics} is non-zero, then static variables must be
explicitly registered with the garbage collector; see
@secref["im:memoryalloc"] for more information.}
@function[(void scheme_set_stack_base @function[(void scheme_set_stack_base
[void* stack_addr] [void* stack_addr]
[int no_auto_statics])]{ [int no_auto_statics])]{
@ -697,7 +723,8 @@ Overrides the GC's auto-determined stack base, and/or disables the
should be called only once, and before any other @cpp{scheme_} should be called only once, and before any other @cpp{scheme_}
function is called. It never triggers a garbage collection. function is called. It never triggers a garbage collection.
The following example shows a typical use for setting the stack base: The following example shows a typical use for setting the stack base
for CGC:
@verbatim[#:indent 4]{ @verbatim[#:indent 4]{
int main(int argc, char **argv) { int main(int argc, char **argv) {
@ -705,7 +732,14 @@ The following example shows a typical use for setting the stack base:
scheme_set_stack_base(&dummy, 0); scheme_set_stack_base(&dummy, 0);
real_main(argc, argv); /* calls scheme_basic_env(), etc. */ real_main(argc, argv); /* calls scheme_basic_env(), etc. */
} }
}} }
Under 3m, the above code does not quite work, because @var{stack_addr}
must be the beginning or end of a local-frame registration. Worse, in
CGC or 3m, if @cpp{real_main} is declared @cpp{static}, the compiler
may inline it and place variables containing collectable values deeper
in the stack than @cpp{dummy}. To avoid these problems, use
@cpp{scheme_setup}, instead.}
@function[(void scheme_set_stack_bounds @function[(void scheme_set_stack_bounds
[void* stack_addr] [void* stack_addr]

View File

@ -134,6 +134,19 @@ Returns the contents of the given box.}
Sets the contents of the given box.} Sets the contents of the given box.}
@function[(Scheme_Object* scheme_dynamic_require
[int argc]
[Scheme_Object** argv])]{
The same as @scheme[dynamic-require]. The @var{argc} argument must be
@scheme[2], and @var{argv} contains the arguments.}
@function[(Scheme_Object* scheme_namespace_require
[Scheme_Object* prim_req_spec])]{
The same as @scheme[namespace-require].}
@function[(Scheme_Object* scheme_load @function[(Scheme_Object* scheme_load
[char* file])]{ [char* file])]{

View File

@ -11,9 +11,10 @@ and syntax.
The @cpp{scheme_basic_env} function must be called once by an The @cpp{scheme_basic_env} function must be called once by an
embedding program, before any other PLT Scheme function is called embedding program, before any other PLT Scheme function is called
(except @cpp{scheme_make_param}). The returned namespace is the (except @cpp{scheme_make_param}), but @cpp{scheme_setup} automatically
initial current namespace for the main Scheme thread. Scheme calls @cpp{scheme_basic_env}. The returned namespace is the initial
extensions cannot call @cpp{scheme_basic_env}. current namespace for the main Scheme thread. Scheme extensions cannot
call @cpp{scheme_basic_env}.
The current thread's current namespace is available from The current thread's current namespace is available from
@cppi{scheme_get_env}, given the current parameterization (see @cppi{scheme_get_env}, given the current parameterization (see

View File

@ -296,13 +296,33 @@ To embed PLT Scheme CGC in a program, follow these steps:
installing from source also places this file in the installation's installing from source also places this file in the installation's
@filepath{include} directory.} @filepath{include} directory.}
@item{In your main program, obtain a global MzScheme environment @item{Start your main program through the @cpp{scheme_setup}
@cpp{Scheme_Env*} by calling @cppi{scheme_basic_env}. This function trampoline, and put all uses of MzScheme functions inside the
must be called before any other function in the MzScheme library function passed to @cpp{scheme_setup}. The @cpp{scheme_setup}
(except @cpp{scheme_make_param}).} function registers the current C stack location with the memory
manager. It also creates the initial namespace @cpp{Scheme_Env*} by
calling @cppi{scheme_basic_env} and passing the result to the
function provided to @cpp{scheme_setup}.}
@item{Access MzScheme through @cppi{scheme_load}, @item{Configure the namespace by adding module declarations. The
@cppi{scheme_eval}, and/or other top-level MzScheme functions initial namespace contains declarations only for a few primitive
modules, such as @scheme['#%kernel], and no bindings are imported
into the top-level environment.
To embed a module like @schememodname[scheme/base] (along with all
its dependencies), use @exec{mzc --c-mods}, which generates a C file
that contains modules in bytecode form as encapsulated in a static
array. The generated C file defines a @cppi{declare_modules}
function that takes a @cpp{Scheme_Env*}, installs the modules into
the environment, and adjusts the module name resolver to access the
embedded declarations.
Alternately, use @cpp{scheme_set_collects_path} and
@cpp{scheme_init_collection_paths} to configure and install a path
for finding modules at run time.}
@item{Access Scheme through @cppi{scheme_dynamic_require},
@cppi{scheme_load}, @cppi{scheme_eval}, and/or other functions
described in this manual.} described in this manual.}
@item{Compile the program and link it with the MzScheme libraries.} @item{Compile the program and link it with the MzScheme libraries.}
@ -320,21 +340,29 @@ specific to Mac OS X and Windows).
For example, the following is a simple embedding program which For example, the following is a simple embedding program which
evaluates all expressions provided on the command line and displays evaluates all expressions provided on the command line and displays
the results, then runs a @scheme[read]-@scheme[eval]-@scheme[print] the results, then runs a @scheme[read]-@scheme[eval]-@scheme[print]
loop: loop. Run
@verbatim{ @commandline{mzc --c-mods base.c ++lib scheme/base}
to generate @filepath{base.c}, which encapsulates @scheme[scheme/base]
and all of its transitive imports (so that they need not be found
separately a run time).
@verbatim[#:indent 2]{
#include "scheme.h" #include "scheme.h"
int main(int argc, char *argv[]) #include "base.c"
static int run(Scheme_Env *e, int argc, char *argv[])
{ {
Scheme_Env *e;
Scheme_Object *curout; Scheme_Object *curout;
int i; int i;
mz_jmp_buf * volatile save, fresh; mz_jmp_buf * volatile save, fresh;
scheme_set_stack_base(NULL, 1); /* required for OS X, only */ /* Declare embedded modules in "base.c": */
declare_modules(e);
e = scheme_basic_env(); scheme_namespace_require(scheme_intern_symbol("scheme/base"));
curout = scheme_get_param(scheme_current_config(), curout = scheme_get_param(scheme_current_config(),
MZCONFIG_OUTPUT_PORT); MZCONFIG_OUTPUT_PORT);
@ -346,44 +374,49 @@ int main(int argc, char *argv[])
scheme_current_thread->error_buf = save; scheme_current_thread->error_buf = save;
return -1; /* There was an error */ return -1; /* There was an error */
} else { } else {
Scheme_Object *v = scheme_eval_string(argv[i], e); Scheme_Object *v, *a[2];
v = scheme_eval_string(argv[i], e);
scheme_display(v, curout); scheme_display(v, curout);
scheme_display(scheme_make_character('\n'), curout); scheme_display(scheme_make_char('\n'), curout);
/* read-eval-print loop, uses initial Scheme_Env: */ /* read-eval-print loop, uses initial Scheme_Env: */
scheme_apply(scheme_builtin_value("read-eval-print-loop"), a[0] = scheme_intern_symbol("scheme/base");
0, NULL); a[1] = scheme_intern_symbol("read-eval-print-loop");
scheme_apply(scheme_dynamic_require(2, a), 0, NULL);
scheme_current_thread->error_buf = save; scheme_current_thread->error_buf = save;
} }
} }
return 0; return 0;
} }
int main(int argc, char *argv[])
{
return scheme_setup(1, run, argc, argv);
}
} }
Under Mac OS X, or under Windows when MzScheme is compiled to a DLL Under Mac OS X, or under Windows when MzScheme is compiled to a DLL
using Cygwin, the garbage collector cannot find static variables using Cygwin, the garbage collector cannot find static variables
automatically. In that case, @cppi{scheme_set_stack_base} must be automatically. In that case, @cppi{scheme_setup} must be called with a
called with a non-zero second argument before calling any non-zero first argument.
@cpp{scheme_} function.
Under Windows (for any other build mode), the garbage collector finds Under Windows (for any other build mode), the garbage collector finds
static variables in an embedding program by examining all memory static variables in an embedding program by examining all memory
pages. This strategy fails if a program contains multiple Windows pages. This strategy fails if a program contains multiple Windows
threads; a page may get unmapped by a thread while the collector is threads; a page may get unmapped by a thread while the collector is
examining the page, causing the collector to crash. To avoid this examining the page, causing the collector to crash. To avoid this
problem, call @cpp{scheme_set_stack_base} with a non-zero second problem, call @cpp{scheme_setup} with a non-zero first argument.
argument before calling any @cpp{scheme_} function.
When an embedding application calls @cpp{scheme_set_stack_base} with a When an embedding application calls @cpp{scheme_setup} with a non-zero
non-zero second argument, it must register each of its static first argument, it must register each of its static variables with
variables with @cppi{MZ_REGISTER_STATIC} if the variable can contain a @cppi{MZ_REGISTER_STATIC} if the variable can contain a GCable
GCable pointer. For example, if @cpp{e} above is made @cpp{static}, pointer. For example, if @cpp{curout} above is made @cpp{static}, then
then @cpp{MZ_REGISTER_STATIC(e)} should be inserted before the call to @cpp{MZ_REGISTER_STATIC(curout)} should be inserted before the call to
@cpp{scheme_basic_env}. @cpp{scheme_get_param}.
When building an embedded MzSchemeCGC to use SenoraGC (SGC) instead of When building an embedded MzSchemeCGC to use SenoraGC (SGC) instead of
the default collector, @cpp{scheme_set_stack_base} must be called both the default collector, @cpp{scheme_setup} must be called with a
with a non-zero second argument and with a stack-base pointer in the non-zero first argument. See @secref["im:memoryalloc"] for more
first argument. See @secref["im:memoryalloc"] for more information. information.
@subsection{3m Embedding} @subsection{3m Embedding}
@ -421,44 +454,41 @@ In addition, some library details are different:
} }
For MzScheme3m, an embedding application must call For MzScheme3m, an embedding application must call @cpp{scheme_setup}
@cpp{scheme_set_stack_base} with non-zero arguments. Furthermore, the with a non-zero first argument.
first argument must be @cpp{&__gc_var_stack__}, where
@cpp{__gc_var_stack__} is bound by a @cpp{MZ_GC_DECL_REG}.
The simple embedding program from the previous section can be The simple embedding program from the previous section can be
extended to work with either CGC or 3m, dependong on whether processed by @exec{mzc --xform}, then compiled and linked with
@cpp{MZ_PRECISE_GC} is specified on the compiler's command line: MzScheme3m. Alternately, the source code can be extended to work with
either CGC or 3m depending on whether @cpp{MZ_PRECISE_GC} is defined
on the compiler's command line:
@verbatim{ @verbatim[#:indent 2]{
#include "scheme.h" #include "scheme.h"
int main(int argc, char *argv[]) #include "base.c"
static int run(Scheme_Env *e, int argc, char *argv[])
{ {
Scheme_Env *e = NULL; Scheme_Object *curout = NULL, *v = NULL, *a[2] = {NULL, NULL};
Scheme_Object *curout = NULL, *v = NULL;
Scheme_Config *config = NULL; Scheme_Config *config = NULL;
int i; int i;
mz_jmp_buf * volatile save = NULL, fresh; mz_jmp_buf * volatile save = NULL, fresh;
MZ_GC_DECL_REG(5); MZ_GC_DECL_REG(8);
MZ_GC_VAR_IN_REG(0, e); MZ_GC_VAR_IN_REG(0, e);
MZ_GC_VAR_IN_REG(1, curout); MZ_GC_VAR_IN_REG(1, curout);
MZ_GC_VAR_IN_REG(2, save); MZ_GC_VAR_IN_REG(2, save);
MZ_GC_VAR_IN_REG(3, config); MZ_GC_VAR_IN_REG(3, config);
MZ_GC_VAR_IN_REG(4, v); MZ_GC_VAR_IN_REG(4, v);
MZ_GC_ARRAY_VAR_IN_REG(5, a, 2);
# ifdef MZ_PRECISE_GC
# define STACK_BASE &__gc_var_stack__
# else
# define STACK_BASE NULL
# endif
scheme_set_stack_base(STACK_BASE, 1);
MZ_GC_REG(); MZ_GC_REG();
e = scheme_basic_env(); declare_modules(e);
v = scheme_intern_symbol("scheme/base");
scheme_namespace_require(v);
config = scheme_current_config(); config = scheme_current_config();
curout = scheme_get_param(config, MZCONFIG_OUTPUT_PORT); curout = scheme_get_param(config, MZCONFIG_OUTPUT_PORT);
@ -472,10 +502,12 @@ int main(int argc, char *argv[])
} else { } else {
v = scheme_eval_string(argv[i], e); v = scheme_eval_string(argv[i], e);
scheme_display(v, curout); scheme_display(v, curout);
v = scheme_make_character('\n'); v = scheme_make_char('\n');
scheme_display(v, curout); scheme_display(v, curout);
/* read-eval-print loop, uses initial Scheme_Env: */ /* read-eval-print loop, uses initial Scheme_Env: */
v = scheme_builtin_value("read-eval-print-loop"); a[0] = scheme_intern_symbol("scheme/base");
a[1] = scheme_intern_symbol("read-eval-print-loop");
v = scheme_dynamic_require(2, a);
scheme_apply(v, 0, NULL); scheme_apply(v, 0, NULL);
scheme_current_thread->error_buf = save; scheme_current_thread->error_buf = save;
} }
@ -485,15 +517,18 @@ int main(int argc, char *argv[])
return 0; return 0;
} }
int main(int argc, char *argv[])
{
return scheme_setup(1, run, argc, argv);
}
} }
Strictly speaking, the @cpp{config} and @cpp{v} variables above need not be Strictly speaking, the @cpp{config} and @cpp{v} variables above need
registered with the garbage collector, since their values are not needed not be registered with the garbage collector, since their values are
across function calls that allocate. That is, the original example could have not needed across function calls that allocate. The code is much
been left alone starting with the @cpp{scheme_base_env} call, except for the easier to maintain, however, when all local variables are registered
addition of @cpp{MZ_GC_UNREG}. The code is much easier to maintain, however, and when all temporary values are put into variables.
when all local variables are regsistered and when all temporary values are
put into variables.
@; ---------------------------------------------------------------------- @; ----------------------------------------------------------------------

View File

@ -51,7 +51,12 @@ parameter is true.
null] null]
[#:literal-expression literal-sexp [#:literal-expression literal-sexp
any/c any/c
null] #f]
[#:literal-expressions literal-sexps
list?
(if literal-sexp
(list literal-sexp)
null)]
[#:cmdline cmdline (listof string?) [#:cmdline cmdline (listof string?)
null] null]
[#:mred? mred? any/c #f] [#:mred? mred? any/c #f]
@ -99,17 +104,20 @@ namespace except as specified in @scheme[mod-list], other modules
generated prefix, so that they are not directly accessible. generated prefix, so that they are not directly accessible.
The @scheme[#:modules] argument @scheme[mod-list] designates modules The @scheme[#:modules] argument @scheme[mod-list] designates modules
to be embedded, as described below. The @scheme[literal-files] and to be embedded, as described below. The @scheme[#:literal-files] and
@scheme[literal-sexp] arguments specify literal code to be copied into @scheme[#:literal-expressions] arguments specify literal code to be
the executable: the content of each file in @scheme[literal-files] copied into the executable: the content of each file in
is copied in order (with no intervening space), followed by @scheme[literal-files] is copied in order (with no intervening space),
@scheme[literal-sexp]. The @scheme[literal-files] files or followed by each element of @scheme[literal-sexps]. The
@scheme[literal-sexp] can contain compiled bytecode, and it's possible @scheme[literal-files] files or @scheme[literal-sexps] list can
that the content of the @scheme[literal-files] files only parse contain compiled bytecode, and it's possible that the content of the
when concatenated; the files and expression are not compiled or @scheme[literal-files] files only parse when concatenated; the files
inspected in any way during the embedding process. If and expression are not compiled or inspected in any way during the
embedding process. Beware that the initial namespace contains no
bindings; use compiled expressions to bootstrap the namespace. If
@scheme[literal-sexp] is @scheme[#f], no literal expression is @scheme[literal-sexp] is @scheme[#f], no literal expression is
included in the executable. included in the executable. The @scheme[#:literal-expression]
(singular) argument is for backward compatibility.
The @scheme[#:cmdline] argument @scheme[cmdline] contains command-line The @scheme[#:cmdline] argument @scheme[cmdline] contains command-line
strings that are prefixed onto any actual command-line arguments that strings that are prefixed onto any actual command-line arguments that
@ -130,14 +138,14 @@ embeds the module @scheme[m] from the file @filepath{m.ss}, without
prefixing the name of the module; the @scheme[literal-sexpr] argument prefixing the name of the module; the @scheme[literal-sexpr] argument
to go with the above might be @scheme['(require m)]. to go with the above might be @scheme['(require m)].
All modules are compiled before they are embedded into the target Modules are normally compiled before they are embedded into the target
executable; see also @scheme[compile-proc] below. When a module executable; see also @scheme[#:compiler] and @scheme[#:src-filter]
declares run-time paths via @scheme[define-runtime-path], the below. When a module declares run-time paths via
generated executable records the path (for use both by immediate @scheme[define-runtime-path], the generated executable records the
execution and for creating a distribution that contains the path (for use both by immediate execution and for creating a
executable). distribution that contains the executable).
The optional @scheme[aux] argument is an association list for The optional @scheme[#:aux] argument is an association list for
platform-specific options (i.e., it is a list of pairs where the first platform-specific options (i.e., it is a list of pairs where the first
element of the pair is a key symbol and the second element is the element of the pair is a key symbol and the second element is the
value for that key). The currently supported keys are as follows: value for that key). The currently supported keys are as follows:

View File

@ -3,7 +3,7 @@
"common.ss" "common.ss"
(for-label scheme/runtime-path)) (for-label scheme/runtime-path))
@title{Stand-Alone Executables from Scheme Code} @title[#:tag "exe"]{Stand-Alone Executables from Scheme Code}
The command-line flag @DFlag{exe} directs @|mzc| to embed a The command-line flag @DFlag{exe} directs @|mzc| to embed a
module, from source or byte code, into a copy of the MzScheme module, from source or byte code, into a copy of the MzScheme

View File

@ -2,7 +2,7 @@
@(require scribble/manual @(require scribble/manual
"common.ss") "common.ss")
@title[#:tag "exe" #:style 'toc]{Creating and Distributing Stand-Alone Executables} @title[#:tag "sa" #:style 'toc]{Creating and Distributing Stand-Alone Executables}
Whether bytecode or native code, the compiled code produced by @|mzc| Whether bytecode or native code, the compiled code produced by @|mzc|
relies on MzScheme (or MrEd) to provide run-time support to the relies on MzScheme (or MrEd) to provide run-time support to the

View File

@ -40,7 +40,12 @@ The core PLT Scheme run-time system is available in two main variants:
@section[#:tag "init-actions"]{Initialization} @section[#:tag "init-actions"]{Initialization}
On startup, the top-level environment contains no bindings---not even On startup, the top-level environment contains no bindings---not even
for function application. for function application. Primitive modules with names that start with
@schemeidfont{#%} are defined, but they are not meant for direct use,
and the set of such modules can change. For example, the
@indexed-scheme['#%kernel] module is eventually used to bootstrap the
implemetation of @schememodname[scheme/base], and
@scheme['#%mred-kernel] is used for @schememodname[scheme/gui/base].
The first action of MzScheme or MrEd is to initialize The first action of MzScheme or MrEd is to initialize
@scheme[current-library-collection-paths] to the result of @scheme[current-library-collection-paths] to the result of
@ -97,7 +102,7 @@ the exit status is @scheme[0] or determined by a call to
@; ---------------------------------------------------------------------- @; ----------------------------------------------------------------------
@section{Command Line} @section["mz-cmdline"]{Command Line}
The MzScheme and MrEd executables recognize the following command-line The MzScheme and MrEd executables recognize the following command-line
flags: flags:
@ -142,8 +147,8 @@ flags:
@item{@FlagFirst{k} @nonterm{n} @nonterm{m} : Loads code embedded in @item{@FlagFirst{k} @nonterm{n} @nonterm{m} : Loads code embedded in
the executable from file position @nonterm{n} to the executable from file position @nonterm{n} to
@nonterm{m}. This option normally embedded in a stand-alone @nonterm{m}. This option is normally embedded in a stand-alone
binary that embeds Scheme code.} binary that also embeds Scheme code.}
@item{@FlagFirst{m} or @DFlagFirst{main} : Evaluates a call to @item{@FlagFirst{m} or @DFlagFirst{main} : Evaluates a call to
@scheme[main] in the top-level environment. All of the @scheme[main] in the top-level environment. All of the

View File

@ -86,6 +86,14 @@
expect mred?) expect mred?)
(delete-directory/files dist-dir)])) (delete-directory/files dist-dir)]))
(define (base-compile e)
(parameterize ([current-namespace (make-base-namespace)])
(compile e)))
(define (kernel-compile e)
(parameterize ([current-namespace (make-base-empty-namespace)])
(namespace-require ''#%kernel)
(compile e)))
(define (mz-tests mred?) (define (mz-tests mred?)
(define dest (if mred? mr-dest mz-dest)) (define dest (if mred? mr-dest mz-dest))
(define (flags s) (define (flags s)
@ -97,7 +105,7 @@
dest mred? #f dest mred? #f
`((#t (lib ,filename "tests" "mzscheme"))) `((#t (lib ,filename "tests" "mzscheme")))
null null
null #f
`(,(flags "l") ,(string-append "tests/mzscheme/" filename))) `(,(flags "l") ,(string-append "tests/mzscheme/" filename)))
(try-exe dest expect mred?) (try-exe dest expect mred?)
@ -111,9 +119,10 @@
`((,pfx (lib ,filename "tests" "mzscheme")) `((,pfx (lib ,filename "tests" "mzscheme"))
(#t (lib "scheme/init"))) (#t (lib "scheme/init")))
null null
null #f
`(,(flags "ne") `(,(flags "lne")
,(format "(#%require '~a~a)" "scheme/base"
,(format "(require '~a~a)"
(or pfx "") (or pfx "")
(regexp-replace #rx"[.].*$" filename "")))) (regexp-replace #rx"[.].*$" filename ""))))
(try-exe dest expect mred?))]) (try-exe dest expect mred?))])
@ -128,7 +137,8 @@
dest mred? #f dest mred? #f
`((#t ,path)) `((#t ,path))
null null
`(#%require (file ,(path->string path))) (base-compile
`(namespace-require '(file ,(path->string path))))
`(,(flags "")))) `(,(flags ""))))
(try-exe dest expect mred?) (try-exe dest expect mred?)
@ -140,7 +150,8 @@
dest mred? #f dest mred? #f
`((#t (file ,(path->string path)))) `((#t (file ,(path->string path))))
null null
`(#%require (file ,(path->string path))) (base-compile
`(namespace-require '(file ,(path->string path))))
`(,(flags "")))) `(,(flags ""))))
(try-exe dest expect mred?) (try-exe dest expect mred?)
@ -152,7 +163,8 @@
dest mred? #f dest mred? #f
`((#f ,filename)) `((#f ,filename))
null null
`(#%require ',(string->symbol (regexp-replace #rx"[.].*$" filename ""))) (base-compile
`(namespace-require '',(string->symbol (regexp-replace #rx"[.].*$" filename ""))))
`(,(flags "")))) `(,(flags ""))))
(try-exe dest expect mred?) (try-exe dest expect mred?)
@ -164,23 +176,33 @@
`((#t (lib ,filename "tests" "mzscheme")) `((#t (lib ,filename "tests" "mzscheme"))
(#t (lib "embed-me3.ss" "tests" "mzscheme"))) (#t (lib "embed-me3.ss" "tests" "mzscheme")))
null null
`(begin (base-compile
(#%require (lib "embed-me3.ss" "tests" "mzscheme")) `(begin
(#%require (lib ,filename "tests" "mzscheme"))) (namespace-require '(lib "embed-me3.ss" "tests" "mzscheme"))
(namespace-require '(lib ,filename "tests" "mzscheme"))))
`(,(flags ""))) `(,(flags "")))
(try-exe dest (string-append "3 is here, too? #t\n" expect) mred?) (try-exe dest (string-append "3 is here, too? #t\n" expect) mred?)
;; Try a literal file ;; Try a literal file
(printf ">>>literal\n") (printf ">>>literal\n")
(prepare dest filename) (prepare dest filename)
(make-embedding-executable (let ([tmp (make-temporary-file)])
dest mred? #f (with-output-to-file tmp
`((#t (lib ,filename "tests" "mzscheme"))) #:exists 'truncate
(list (build-path (collection-path "tests" "mzscheme") "embed-me4.ss")) (lambda ()
`(with-output-to-file "stdout" (write (kernel-compile
(lambda () (display "... and more!\n")) '(namespace-require ''#%kernel)))))
'append) (make-embedding-executable
`(,(flags "l") ,(string-append "tests/mzscheme/" filename))) dest mred? #f
`((#t (lib ,filename "tests" "mzscheme")))
(list
tmp
(build-path (collection-path "tests" "mzscheme") "embed-me4.ss"))
`(with-output-to-file "stdout"
(lambda () (display "... and more!\n"))
'append)
`(,(flags "l") ,(string-append "tests/mzscheme/" filename)))
(delete-file tmp))
(try-exe dest (string-append (try-exe dest (string-append
"This is the literal expression 4.\n" "This is the literal expression 4.\n"
"... and more!\n" "... and more!\n"
@ -196,13 +218,14 @@
dest mred? #f dest mred? #f
'((#t scheme/base)) '((#t scheme/base))
null null
`(begin (base-compile
(#%require scheme/base) '(begin
(define (out s) (require scheme/base)
(with-output-to-file "stdout" (eval '(define (out s)
(lambda () (printf s)) (with-output-to-file "stdout"
#:exists 'append)) (lambda () (printf s))
(out "\uA9, \u7238, and \U1D670\n")) #:exists 'append)))
(out "\uA9, \u7238, and \U1D670\n")))
`(,(flags "ne") "(out \"\u7237...\U1D671\n\")")) `(,(flags "ne") "(out \"\u7237...\U1D671\n\")"))
(try-exe dest "\uA9, \u7238, and \U1D670\n\u7237...\U1D671\n" mred?)) (try-exe dest "\uA9, \u7238, and \U1D670\n\u7237...\U1D671\n" mred?))
@ -215,7 +238,7 @@
mr-dest #t #f mr-dest #t #f
`((#t (lib "embed-me5.ss" "tests" "mzscheme"))) `((#t (lib "embed-me5.ss" "tests" "mzscheme")))
null null
null #f
`("-l" "tests/mzscheme/embed-me5.ss")) `("-l" "tests/mzscheme/embed-me5.ss"))
(try-exe mr-dest "This is 5: #<class:button%>\n" #t)) (try-exe mr-dest "This is 5: #<class:button%>\n" #t))
@ -278,10 +301,8 @@
(void))) (void)))
#| REMOVEME
(mzc-tests #f) (mzc-tests #f)
(mzc-tests #t) (mzc-tests #t)
|#
(require dynext/file) (require dynext/file)
(define (extension-test mred?) (define (extension-test mred?)

View File

@ -88,11 +88,17 @@
(define (capture-output thunk) (define (capture-output thunk)
(if (file-exists? "tmp-catch-out") (if (file-exists? "tmp-catch-out")
(delete-file "tmp-catch-out")) (delete-file "tmp-catch-out"))
(with-output-to-file "tmp-catch-out" (dynamic-wind
thunk) (lambda () 'nothing)
(call-with-input-file "tmp-catch-out" (lambda ()
(lambda (p) (with-output-to-file "tmp-catch-out"
(get-string-n p 1024)))) thunk)
(call-with-input-file "tmp-catch-out"
(lambda (p)
(get-string-n p 1024))))
(lambda ()
(if (file-exists? "tmp-catch-out")
(delete-file "tmp-catch-out")))))
(define (check-test expr got expected) (define (check-test expr got expected)
(set! checked (+ 1 checked)) (set! checked (+ 1 checked))

8
src/configure vendored
View File

@ -1360,7 +1360,7 @@ Optional Features:
--enable-gprof compile for profiling with gprof (gcc only) --enable-gprof compile for profiling with gprof (gcc only)
--enable-gcov compile to gather gcov statistics (gcc3 only) --enable-gcov compile to gather gcov statistics (gcc3 only)
--enable-noopt drop -O C flags --enable-noopt drop -O C flags
--enable-sdk=<path> use Mac OS X SDK directory --enable-sdk=<path> use Mac OS X 10.4 SDK directory
--enable-xonx compile X11 (not Quartz) MrEd for Mac OS X --enable-xonx compile X11 (not Quartz) MrEd for Mac OS X
--enable-libfw install Mac OS X frameworks to /Library/Frameworks --enable-libfw install Mac OS X frameworks to /Library/Frameworks
--enable-userfw install Mac OS X frameworks to ~/Library/Frameworks --enable-userfw install Mac OS X frameworks to ~/Library/Frameworks
@ -5849,10 +5849,8 @@ case $OS in
Darwin) Darwin)
if test "${enable_sdk}" != "" ; then if test "${enable_sdk}" != "" ; then
PREFLAGS="$PREFLAGS -I${enable_sdk}/usr/include" PREFLAGS="$PREFLAGS -isysroot ${enable_sdk} -mmacosx-version-min=10.4 -DEXTRA_EXCEPTION_STUBS"
PREFLAGS="$PREFLAGS -F${enable_sdk}/System/Library/Frameworks/" LDFLAGS="$LDFLAGS -isysroot ${enable_sdk} -mmacosx-version-min=10.4"
LDFLAGS="$LDFLAGS -L${enable_sdk}/usr/lib"
LDFLAGS="$LDFLAGS -F${enable_sdk}/System/Library/Frameworks/"
fi fi
PREFLAGS="$PREFLAGS -DOS_X -D_DARWIN_UNLIMITED_SELECT" PREFLAGS="$PREFLAGS -DOS_X -D_DARWIN_UNLIMITED_SELECT"

View File

@ -134,7 +134,7 @@ $(MRFW) : $(MZSCHEMEDEPS) $(MREDOBJECTS) $(@WXLIBS@) $(MRSTATIC_STUB) $(MRFWRES)
$(MREDLINKER) $(MREDLDFLAGS) -dynamiclib -o $(MRFW) -Wl,-headerpad_max_install_names ../mzscheme/libmzscheme.@LIBSFX@ ../mzscheme/libmzgc.@LIBSFX@ $(@WXLIBS@) $(GUILIBS_@WXVARIANT@) @X_EXTRA_LIBS@ $(MREDLINKER) $(MREDLDFLAGS) -dynamiclib -o $(MRFW) -Wl,-headerpad_max_install_names ../mzscheme/libmzscheme.@LIBSFX@ ../mzscheme/libmzgc.@LIBSFX@ $(@WXLIBS@) $(GUILIBS_@WXVARIANT@) @X_EXTRA_LIBS@
MrEd@CGC@.app/Contents/MacOS/MrEd@CGC@: $(MRFWRES) $(MRFW) mrmain.@LTO@ MrEd@CGC@.app/Contents/MacOS/MrEd@CGC@: $(MRFWRES) $(MRFW) mrmain.@LTO@
$(MREDLINKER) -o MrEd@CGC@.app/Contents/MacOS/MrEd@CGC@ mrmain.@LTO@ -Wl,-headerpad_max_install_names -F. -framework PLT_MrEd -framework Carbon -framework Cocoa @PROFFLAGS@ $(MREDLINKER) $(MREDLDFLAGS) -o MrEd@CGC@.app/Contents/MacOS/MrEd@CGC@ mrmain.@LTO@ -Wl,-headerpad_max_install_names -F. -framework PLT_MrEd -framework Carbon -framework Cocoa @PROFFLAGS@
/usr/bin/install_name_tool -change "PLT_MrEd.framework/Versions/$(FWVERSION)/PLT_MrEd" "@executable_path/../../../PLT_MrEd.framework/Versions/$(FWVERSION)/PLT_MrEd" MrEd@CGC@.app/Contents/MacOS/MrEd@CGC@ /usr/bin/install_name_tool -change "PLT_MrEd.framework/Versions/$(FWVERSION)/PLT_MrEd" "@executable_path/../../../PLT_MrEd.framework/Versions/$(FWVERSION)/PLT_MrEd" MrEd@CGC@.app/Contents/MacOS/MrEd@CGC@
$(MRFWRES): $(srcdir)/../mac/osx_appl.ss $(srcdir)/../mac/cw/MrEd.r $(MRFWRES): $(srcdir)/../mac/osx_appl.ss $(srcdir)/../mac/cw/MrEd.r

View File

@ -1372,7 +1372,7 @@ MRFW = PLT_MrEd.framework/Versions/$(FWVERSION)_3m/PLT_MrEd
MRFWRES = PLT_MrEd.framework/Versions/$(FWVERSION)_3m/Resources/PLT_MrEd.rsrc MRFWRES = PLT_MrEd.framework/Versions/$(FWVERSION)_3m/Resources/PLT_MrEd.rsrc
../MrEd@MMM@.app/Contents/MacOS/MrEd@MMM@: $(MRFWRES) $(MRFW) mrmain.@LTO@ ../MrEd@MMM@.app/Contents/MacOS/MrEd@MMM@: $(MRFWRES) $(MRFW) mrmain.@LTO@
$(MREDLINKER) -o ../MrEd@MMM@.app/Contents/MacOS/MrEd@MMM@ mrmain.@LTO@ -Wl,-headerpad_max_install_names -F. -framework PLT_MrEd -framework Carbon -framework Cocoa $(MREDLINKER) $(LDFLAGS) -o ../MrEd@MMM@.app/Contents/MacOS/MrEd@MMM@ mrmain.@LTO@ -Wl,-headerpad_max_install_names -F. -framework PLT_MrEd -framework Carbon -framework Cocoa
mkdir -p "../PLT_MrEd.framework/Versions/$(FWVERSION)_3m" mkdir -p "../PLT_MrEd.framework/Versions/$(FWVERSION)_3m"
cp "$(MRFW)" "../$(MRFW)" cp "$(MRFW)" "../$(MRFW)"
rm -rf "../PLT_MrEd.framework/Versions/$(FWVERSION)_3m/Resources" rm -rf "../PLT_MrEd.framework/Versions/$(FWVERSION)_3m/Resources"
@ -1380,7 +1380,7 @@ MRFWRES = PLT_MrEd.framework/Versions/$(FWVERSION)_3m/Resources/PLT_MrEd.rsrc
/usr/bin/install_name_tool -change "PLT_MrEd.framework/Versions/$(FWVERSION)_3m/PLT_MrEd" "@executable_path/../../../PLT_MrEd.framework/Versions/$(FWVERSION)_3m/PLT_MrEd" "../MrEd@MMM@.app/Contents/MacOS/MrEd@MMM@" /usr/bin/install_name_tool -change "PLT_MrEd.framework/Versions/$(FWVERSION)_3m/PLT_MrEd" "@executable_path/../../../PLT_MrEd.framework/Versions/$(FWVERSION)_3m/PLT_MrEd" "../MrEd@MMM@.app/Contents/MacOS/MrEd@MMM@"
$(MRFW) : $(XOBJS) $(@WXVARIANT@_PLAIN_OBJS) ../../mzscheme/libmzscheme3m.@LIBSFX@ wx_font.o $(MRFWRES) $(MRFW) : $(XOBJS) $(@WXVARIANT@_PLAIN_OBJS) ../../mzscheme/libmzscheme3m.@LIBSFX@ wx_font.o $(MRFWRES)
$(MREDLINKER) -dynamiclib -o $(MRFW) -Wl,-headerpad_max_install_names $(XOBJS) $(@WXVARIANT@_PLAIN_OBJS) ../../mzscheme/libmzscheme3m.@LIBSFX@ $(@WXVARIANT@_LIBS) @X_EXTRA_LIBS@ wx_font.o $(MREDLINKER) $(LDFLAGS) -dynamiclib -o $(MRFW) -Wl,-headerpad_max_install_names $(XOBJS) $(@WXVARIANT@_PLAIN_OBJS) ../../mzscheme/libmzscheme3m.@LIBSFX@ $(@WXVARIANT@_LIBS) @X_EXTRA_LIBS@ wx_font.o
$(MRFWRES): $(srcdir)/../../mac/osx_appl.ss $(srcdir)/../../mac/cw/MrEd.r $(MRFWRES): $(srcdir)/../../mac/osx_appl.ss $(srcdir)/../../mac/cw/MrEd.r
rm -rf PLT_MrEd.framework/Resources PLT_MrEd.framework/PLT_MrEd rm -rf PLT_MrEd.framework/Resources PLT_MrEd.framework/PLT_MrEd

View File

@ -139,12 +139,12 @@ MZFW = PLT_MzScheme.framework/Versions/$(FWVERSION)/PLT_MzScheme
$(MZFW): libmzscheme.@LIBSFX@ libmzgc.@LIBSFX@ $(SPECIALIZINGOBJECTS) $(MZFW): libmzscheme.@LIBSFX@ libmzgc.@LIBSFX@ $(SPECIALIZINGOBJECTS)
mkdir -p PLT_MzScheme.framework/Versions/$(FWVERSION) mkdir -p PLT_MzScheme.framework/Versions/$(FWVERSION)
@MZLINKER@ -o $(MZFW) -framework CoreFoundation -dynamiclib -all_load $(SPECIALIZINGOBJECTS) libmzscheme.@LIBSFX@ libmzgc.@LIBSFX@ @LDFLAGS@ @LIBS@ @MZLINKER@ -o $(MZFW) @LDFLAGS@ -framework CoreFoundation -dynamiclib -all_load $(SPECIALIZINGOBJECTS) libmzscheme.@LIBSFX@ libmzgc.@LIBSFX@ @LIBS@
rm -f PLT_MzScheme.framework/PLT_MzScheme rm -f PLT_MzScheme.framework/PLT_MzScheme
ln -s Versions/$(FWVERSION)/PLT_MzScheme PLT_MzScheme.framework/PLT_MzScheme ln -s Versions/$(FWVERSION)/PLT_MzScheme PLT_MzScheme.framework/PLT_MzScheme
mzscheme@CGC@@OSX@: $(MZFW) main.@LTO@ mzscheme@CGC@@OSX@: $(MZFW) main.@LTO@
@MZLINKER@ -o mzscheme@CGC@ @PROFFLAGS@ main.@LTO@ -Wl,-headerpad_max_install_names -F. -framework PLT_MzScheme @MZLINKER@ -o mzscheme@CGC@ @PROFFLAGS@ @LDFLAGS@ main.@LTO@ -Wl,-headerpad_max_install_names -F. -framework PLT_MzScheme @LIBS@
/usr/bin/install_name_tool -change "PLT_MzScheme.framework/Versions/$(FWVERSION)/PLT_MzScheme" "@executable_path/PLT_MzScheme.framework/Versions/$(FWVERSION)/PLT_MzScheme" "mzscheme@CGC@" /usr/bin/install_name_tool -change "PLT_MzScheme.framework/Versions/$(FWVERSION)/PLT_MzScheme" "@executable_path/PLT_MzScheme.framework/Versions/$(FWVERSION)/PLT_MzScheme" "mzscheme@CGC@"
# OSKit ---------------------------------------- # OSKit ----------------------------------------

View File

@ -262,13 +262,14 @@ static int finish_cmd_line_run(FinishArgs *fa, Repl_Proc repl)
if (fa->eval_kind[i] == mzcmd_EVAL) { if (fa->eval_kind[i] == mzcmd_EVAL) {
scheme_eval_string_all_with_prompt(fa->evals_and_loads[i], fa->global_env, 2); scheme_eval_string_all_with_prompt(fa->evals_and_loads[i], fa->global_env, 2);
} else if (fa->eval_kind[i] == mzcmd_EMBEDDED) { } else if (fa->eval_kind[i] == mzcmd_EMBEDDED) {
Scheme_Object *s, *e, *a[2], *eload; Scheme_Object *s, *e, *a[3], *eload;
eload = scheme_builtin_value("embedded-load"); eload = scheme_builtin_value("embedded-load");
s = scheme_make_utf8_string(fa->evals_and_loads[i]); s = scheme_make_utf8_string(fa->evals_and_loads[i]);
e = scheme_make_utf8_string(fa->evals_and_loads[i] + strlen(fa->evals_and_loads[i]) + 1); e = scheme_make_utf8_string(fa->evals_and_loads[i] + strlen(fa->evals_and_loads[i]) + 1);
a[0] = s; a[0] = s;
a[1] = e; a[1] = e;
scheme_apply(eload, 2, a); a[2] = scheme_make_false();
scheme_apply(eload, 3, a);
} else { } else {
Scheme_Object *a[1], *nsreq; Scheme_Object *a[1], *nsreq;
nsreq = scheme_builtin_value("namespace-require"); nsreq = scheme_builtin_value("namespace-require");
@ -428,30 +429,6 @@ static int finish_cmd_line_run(FinishArgs *fa, Repl_Proc repl)
return exit_val; return exit_val;
} }
#ifndef NO_FILE_SYSTEM_UTILS
static void init_collection_paths(Scheme_Env *global_env, Scheme_Object *extra_dirs)
{
mz_jmp_buf * volatile save, newbuf;
Scheme_Thread * volatile p;
p = scheme_get_current_thread();
save = p->error_buf;
p->error_buf = &newbuf;
if (!scheme_setjmp(newbuf)) {
Scheme_Object *clcp, *flcp, *a[1];
clcp = scheme_builtin_value("current-library-collection-paths");
flcp = scheme_builtin_value("find-library-collection-paths");
if (clcp && flcp) {
a[0] = extra_dirs;
a[0] = _scheme_apply(flcp, 1, a);
_scheme_apply(clcp, 1, a);
}
}
p->error_buf = save;
}
#endif
#ifdef USE_OSKIT_CONSOLE #ifdef USE_OSKIT_CONSOLE
/* Hack to disable normal input mode: */ /* Hack to disable normal input mode: */
int osk_not_console = 0; int osk_not_console = 0;
@ -1058,7 +1035,7 @@ static int run_from_cmd_line(int argc, char *_argv[],
l = SCHEME_CDR(l); l = SCHEME_CDR(l);
} }
init_collection_paths(global_env, r); scheme_init_collection_paths(global_env, r);
} }
#endif /* NO_FILE_SYSTEM_UTILS */ #endif /* NO_FILE_SYSTEM_UTILS */

View File

@ -66,7 +66,7 @@ AC_ARG_ENABLE(gcov, [ --enable-gcov compile to gather gcov statist
AC_ARG_ENABLE(noopt, [ --enable-noopt drop -O C flags]) AC_ARG_ENABLE(noopt, [ --enable-noopt drop -O C flags])
AC_ARG_ENABLE(noopt, [ --enable-sdk=<path> use Mac OS X SDK directory]) AC_ARG_ENABLE(noopt, [ --enable-sdk=<path> use Mac OS X 10.4 SDK directory])
AC_ARG_ENABLE(xonx, [ --enable-xonx compile X11 (not Quartz) MrEd for Mac OS X]) AC_ARG_ENABLE(xonx, [ --enable-xonx compile X11 (not Quartz) MrEd for Mac OS X])
AC_ARG_ENABLE(libfw, [ --enable-libfw install Mac OS X frameworks to /Library/Frameworks]) AC_ARG_ENABLE(libfw, [ --enable-libfw install Mac OS X frameworks to /Library/Frameworks])
@ -591,10 +591,8 @@ case $OS in
Darwin) Darwin)
if test "${enable_sdk}" != "" ; then if test "${enable_sdk}" != "" ; then
PREFLAGS="$PREFLAGS -I${enable_sdk}/usr/include" PREFLAGS="$PREFLAGS -isysroot ${enable_sdk} -mmacosx-version-min=10.4 -DEXTRA_EXCEPTION_STUBS"
PREFLAGS="$PREFLAGS -F${enable_sdk}/System/Library/Frameworks/" LDFLAGS="$LDFLAGS -isysroot ${enable_sdk} -mmacosx-version-min=10.4"
LDFLAGS="$LDFLAGS -L${enable_sdk}/usr/lib"
LDFLAGS="$LDFLAGS -F${enable_sdk}/System/Library/Frameworks/"
fi fi
PREFLAGS="$PREFLAGS -DOS_X -D_DARWIN_UNLIMITED_SELECT" PREFLAGS="$PREFLAGS -DOS_X -D_DARWIN_UNLIMITED_SELECT"

View File

@ -340,7 +340,7 @@ $(MZFWMMM): ../libmzscheme3m.@LIBSFX@
ln -s Versions/$(FWVERSION)_3m/PLT_MzScheme PLT_MzScheme.framework/PLT_MzScheme ln -s Versions/$(FWVERSION)_3m/PLT_MzScheme PLT_MzScheme.framework/PLT_MzScheme
../mzscheme@MMM@@OSX@: $(MZFWMMM) main.@LTO@ ../mzscheme@MMM@@OSX@: $(MZFWMMM) main.@LTO@
@MZLINKER@ -o ../mzscheme@MMM@ @PROFFLAGS@ main.@LTO@ -Wl,-headerpad_max_install_names -F. -framework PLT_MzScheme @MZLINKER@ -o ../mzscheme@MMM@ @PROFFLAGS@ @LDFLAGS@ main.@LTO@ -Wl,-headerpad_max_install_names -F. -framework PLT_MzScheme
mkdir -p "../PLT_MzScheme.framework/Versions/$(FWVERSION)_3m" mkdir -p "../PLT_MzScheme.framework/Versions/$(FWVERSION)_3m"
cp "PLT_MzScheme.framework/Versions/$(FWVERSION)_3m/PLT_MzScheme" "../PLT_MzScheme.framework/Versions/$(FWVERSION)_3m/PLT_MzScheme" cp "PLT_MzScheme.framework/Versions/$(FWVERSION)_3m/PLT_MzScheme" "../PLT_MzScheme.framework/Versions/$(FWVERSION)_3m/PLT_MzScheme"
/usr/bin/install_name_tool -change "PLT_MzScheme.framework/Versions/$(FWVERSION)_3m/PLT_MzScheme" "@executable_path/PLT_MzScheme.framework/Versions/$(FWVERSION)_3m/PLT_MzScheme" "../mzscheme@MMM@" /usr/bin/install_name_tool -change "PLT_MzScheme.framework/Versions/$(FWVERSION)_3m/PLT_MzScheme" "@executable_path/PLT_MzScheme.framework/Versions/$(FWVERSION)_3m/PLT_MzScheme" "../mzscheme@MMM@"

View File

@ -128,6 +128,7 @@ scheme_eval_string_all
scheme_eval_string_with_prompt scheme_eval_string_with_prompt
scheme_eval_string_multi_with_prompt scheme_eval_string_multi_with_prompt
scheme_eval_string_all_with_prompt scheme_eval_string_all_with_prompt
scheme_eval_module_string
_scheme_apply_known_prim_closure _scheme_apply_known_prim_closure
_scheme_apply_known_prim_closure_multi _scheme_apply_known_prim_closure_multi
_scheme_apply_prim_closure _scheme_apply_prim_closure

View File

@ -128,6 +128,7 @@ scheme_eval_string_all
scheme_eval_string_with_prompt scheme_eval_string_with_prompt
scheme_eval_string_multi_with_prompt scheme_eval_string_multi_with_prompt
scheme_eval_string_all_with_prompt scheme_eval_string_all_with_prompt
scheme_eval_module_string
_scheme_apply_known_prim_closure _scheme_apply_known_prim_closure
_scheme_apply_known_prim_closure_multi _scheme_apply_known_prim_closure_multi
_scheme_apply_prim_closure _scheme_apply_prim_closure

View File

@ -126,6 +126,7 @@ EXPORTS
scheme_eval_string_with_prompt scheme_eval_string_with_prompt
scheme_eval_string_multi_with_prompt scheme_eval_string_multi_with_prompt
scheme_eval_string_all_with_prompt scheme_eval_string_all_with_prompt
scheme_eval_module_string
scheme_call_with_prompt scheme_call_with_prompt
scheme_call_with_prompt_multi scheme_call_with_prompt_multi
scheme_values scheme_values

View File

@ -126,6 +126,7 @@ EXPORTS
scheme_eval_string_with_prompt scheme_eval_string_with_prompt
scheme_eval_string_multi_with_prompt scheme_eval_string_multi_with_prompt
scheme_eval_string_all_with_prompt scheme_eval_string_all_with_prompt
scheme_eval_module_string
scheme_call_with_prompt scheme_call_with_prompt
scheme_call_with_prompt_multi scheme_call_with_prompt_multi
scheme_values scheme_values

View File

@ -1665,6 +1665,8 @@ MZ_EXTERN Scheme_Object *scheme_set_run_cmd(char *s);
MZ_EXTERN void scheme_set_collects_path(Scheme_Object *p); MZ_EXTERN void scheme_set_collects_path(Scheme_Object *p);
MZ_EXTERN void scheme_set_original_dir(Scheme_Object *d); MZ_EXTERN void scheme_set_original_dir(Scheme_Object *d);
MZ_EXTERN void scheme_init_collection_paths(Scheme_Env *global_env, Scheme_Object *extra_dirs);
/* Initialization */ /* Initialization */
MZ_EXTERN Scheme_Env *scheme_basic_env(void); MZ_EXTERN Scheme_Env *scheme_basic_env(void);
MZ_EXTERN void scheme_reset_overflow(void); MZ_EXTERN void scheme_reset_overflow(void);
@ -1686,6 +1688,11 @@ MZ_EXTERN void scheme_set_actual_main(int (*m)(int argc, char **argv));
MZ_EXTERN void scheme_set_stack_base(void *base, int no_auto_statics); MZ_EXTERN void scheme_set_stack_base(void *base, int no_auto_statics);
MZ_EXTERN void scheme_set_stack_bounds(void *base, void *deepest, int no_auto_statics); MZ_EXTERN void scheme_set_stack_bounds(void *base, void *deepest, int no_auto_statics);
/* More automatic start-up: */
typedef int (*Scheme_Main)(Scheme_Env *env, int argc, char **argv);
MZ_EXTERN int scheme_setup(int no_auto_statics, Scheme_Main _main, int argc, char **argv);
MZ_EXTERN void scheme_register_static(void *ptr, long size); MZ_EXTERN void scheme_register_static(void *ptr, long size);
#if defined(MUST_REGISTER_GLOBALS) || defined(GC_MIGHT_USE_REGISTERED_STATICS) #if defined(MUST_REGISTER_GLOBALS) || defined(GC_MIGHT_USE_REGISTERED_STATICS)
# define MZ_REGISTER_STATIC(x) scheme_register_static((void *)&x, sizeof(x)) # define MZ_REGISTER_STATIC(x) scheme_register_static((void *)&x, sizeof(x))

View File

@ -323,8 +323,12 @@ static void do_scheme_rep(Scheme_Env *env)
{ {
/* enter read-eval-print loop */ /* enter read-eval-print loop */
{ {
Scheme_Object *rep; Scheme_Object *rep, *a[2];
rep = scheme_builtin_value("read-eval-print-loop");
a[0] = scheme_intern_symbol("scheme/base");
a[1] = scheme_intern_symbol("read-eval-print-loop");
rep = scheme_dynamic_require(2, a);
if (rep) { if (rep) {
scheme_apply(rep, 0, NULL); scheme_apply(rep, 0, NULL);
printf("\n"); printf("\n");

View File

@ -64,7 +64,7 @@ Scheme_Object *scheme_eval_compiled_sized_string(const char *str, int len, Schem
void scheme_add_embedded_builtins(Scheme_Env *env) void scheme_add_embedded_builtins(Scheme_Env *env)
{ {
#define EVAL_ONE_STR(str) scheme_eval_string(str, env) #define EVAL_ONE_STR(str) scheme_eval_module_string(str, env)
#define EVAL_ONE_SIZED_STR(str, len) scheme_eval_compiled_sized_string(str, len, env) #define EVAL_ONE_SIZED_STR(str, len) scheme_eval_compiled_sized_string(str, len, env)
#if USE_COMPILED_STARTUP #if USE_COMPILED_STARTUP

View File

@ -14,11 +14,11 @@
117,101,115,61,120,73,108,101,116,114,101,99,45,118,97,108,117,101,115,66,108, 117,101,115,61,120,73,108,101,116,114,101,99,45,118,97,108,117,101,115,66,108,
97,109,98,100,97,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105, 97,109,98,100,97,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,
111,110,45,107,101,121,61,118,73,100,101,102,105,110,101,45,118,97,108,117,101, 111,110,45,107,101,121,61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,
115,98,10,34,11,8,167,184,94,159,2,16,34,34,159,2,15,34,34,16,20, 115,98,10,34,11,8,191,184,94,159,2,16,34,34,159,2,15,34,34,16,20,
2,3,2,2,2,5,2,2,2,6,2,2,2,7,2,2,2,8,2,2,2, 2,3,2,2,2,5,2,2,2,6,2,2,2,7,2,2,2,8,2,2,2,
9,2,2,2,4,2,2,2,10,2,2,2,11,2,2,2,12,2,2,97,35, 9,2,2,2,4,2,2,2,10,2,2,2,11,2,2,2,12,2,2,97,35,
11,8,167,184,93,159,2,15,34,35,16,2,2,13,161,2,2,35,2,13,2, 11,8,191,184,93,159,2,15,34,35,16,2,2,13,161,2,2,35,2,13,2,
2,2,13,97,10,11,11,8,167,184,16,0,97,10,36,11,8,167,184,16,0, 2,2,13,97,10,11,11,8,191,184,16,0,97,10,36,11,8,191,184,16,0,
13,16,4,34,29,11,11,2,2,11,18,98,64,104,101,114,101,8,31,8,30, 13,16,4,34,29,11,11,2,2,11,18,98,64,104,101,114,101,8,31,8,30,
8,29,8,28,8,27,27,248,22,180,3,23,196,1,249,22,173,3,80,158,37, 8,29,8,28,8,27,27,248,22,180,3,23,196,1,249,22,173,3,80,158,37,
34,251,22,73,2,17,248,22,88,23,200,2,12,249,22,63,2,1,248,22,90, 34,251,22,73,2,17,248,22,88,23,200,2,12,249,22,63,2,1,248,22,90,
@ -28,14 +28,14 @@
35,34,35,28,248,22,71,248,22,65,23,195,2,248,22,64,193,249,22,173,3, 35,34,35,28,248,22,71,248,22,65,23,195,2,248,22,64,193,249,22,173,3,
80,158,37,34,251,22,73,2,17,248,22,64,23,200,2,249,22,63,2,12,248, 80,158,37,34,251,22,73,2,17,248,22,64,23,200,2,249,22,63,2,12,248,
22,65,23,202,1,11,18,100,10,8,31,8,30,8,29,8,28,8,27,16,4, 22,65,23,202,1,11,18,100,10,8,31,8,30,8,29,8,28,8,27,16,4,
11,11,2,18,3,1,7,101,110,118,55,50,57,52,16,4,11,11,2,19,3, 11,11,2,18,3,1,7,101,110,118,55,51,48,52,16,4,11,11,2,19,3,
1,7,101,110,118,55,50,57,53,27,248,22,65,248,22,180,3,23,197,1,28, 1,7,101,110,118,55,51,48,53,27,248,22,65,248,22,180,3,23,197,1,28,
248,22,71,23,194,2,20,15,159,35,34,35,28,248,22,71,248,22,65,23,195, 248,22,71,23,194,2,20,15,159,35,34,35,28,248,22,71,248,22,65,23,195,
2,248,22,64,193,249,22,173,3,80,158,37,34,250,22,73,2,20,248,22,73, 2,248,22,64,193,249,22,173,3,80,158,37,34,250,22,73,2,20,248,22,73,
249,22,73,248,22,73,2,21,248,22,64,23,202,2,251,22,73,2,17,2,21, 249,22,73,248,22,73,2,21,248,22,64,23,202,2,251,22,73,2,17,2,21,
2,21,249,22,63,2,4,248,22,65,23,205,1,18,100,11,8,31,8,30,8, 2,21,249,22,63,2,4,248,22,65,23,205,1,18,100,11,8,31,8,30,8,
29,8,28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,55,50,57,55, 29,8,28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,55,51,48,55,
16,4,11,11,2,19,3,1,7,101,110,118,55,50,57,56,248,22,180,3,193, 16,4,11,11,2,19,3,1,7,101,110,118,55,51,48,56,248,22,180,3,193,
27,248,22,180,3,194,249,22,63,248,22,73,248,22,64,196,248,22,65,195,27, 27,248,22,180,3,194,249,22,63,248,22,73,248,22,64,196,248,22,65,195,27,
248,22,65,248,22,180,3,23,197,1,249,22,173,3,80,158,37,34,28,248,22, 248,22,65,248,22,180,3,23,197,1,249,22,173,3,80,158,37,34,28,248,22,
51,248,22,174,3,248,22,64,23,198,2,27,249,22,2,32,0,89,162,8,44, 51,248,22,174,3,248,22,64,23,198,2,27,249,22,2,32,0,89,162,8,44,
@ -65,8 +65,8 @@
65,202,251,22,73,2,17,28,249,22,140,8,248,22,174,3,248,22,64,23,201, 65,202,251,22,73,2,17,28,249,22,140,8,248,22,174,3,248,22,64,23,201,
2,64,101,108,115,101,10,248,22,64,23,198,2,250,22,74,2,20,9,248,22, 2,64,101,108,115,101,10,248,22,64,23,198,2,250,22,74,2,20,9,248,22,
65,23,201,1,249,22,63,2,3,248,22,65,23,203,1,99,8,31,8,30,8, 65,23,201,1,249,22,63,2,3,248,22,65,23,203,1,99,8,31,8,30,8,
29,8,28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,55,51,50,48, 29,8,28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,55,51,51,48,
16,4,11,11,2,19,3,1,7,101,110,118,55,51,50,49,18,158,94,10,64, 16,4,11,11,2,19,3,1,7,101,110,118,55,51,51,49,18,158,94,10,64,
118,111,105,100,8,47,27,248,22,65,248,22,180,3,196,249,22,173,3,80,158, 118,111,105,100,8,47,27,248,22,65,248,22,180,3,196,249,22,173,3,80,158,
37,34,28,248,22,51,248,22,174,3,248,22,64,197,250,22,73,2,26,248,22, 37,34,28,248,22,51,248,22,174,3,248,22,64,197,250,22,73,2,26,248,22,
73,248,22,64,199,248,22,88,198,27,248,22,174,3,248,22,64,197,250,22,73, 73,248,22,64,199,248,22,88,198,27,248,22,174,3,248,22,64,197,250,22,73,
@ -100,246 +100,246 @@
EVAL_ONE_SIZED_STR((char *)expr, 2046); EVAL_ONE_SIZED_STR((char *)expr, 2046);
} }
{ {
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,56,61,0,0,0,1,0,0,3,0, static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,56,60,0,0,0,1,0,0,3,0,
16,0,21,0,38,0,53,0,71,0,87,0,97,0,115,0,135,0,151,0,169, 16,0,21,0,38,0,53,0,71,0,87,0,97,0,115,0,135,0,151,0,169,
0,200,0,229,0,251,0,9,1,15,1,29,1,34,1,44,1,52,1,80,1, 0,200,0,229,0,251,0,9,1,15,1,29,1,34,1,44,1,52,1,80,1,
112,1,157,1,202,1,226,1,9,2,11,2,20,2,77,2,167,3,176,3,217, 112,1,157,1,202,1,226,1,9,2,11,2,68,2,158,3,167,3,208,3,42,
3,51,5,155,5,3,6,119,6,133,6,176,6,192,6,42,8,56,8,219,8, 5,146,5,250,5,110,6,124,6,167,6,183,6,33,8,47,8,210,8,217,9,
226,9,232,10,239,10,245,10,117,11,130,11,243,11,89,12,102,12,124,12,76, 223,10,230,10,236,10,108,11,121,11,234,11,80,12,93,12,115,12,67,13,227,
13,236,13,51,15,59,15,67,15,93,15,195,15,0,0,0,19,0,0,29,11, 13,42,15,50,15,58,15,84,15,194,15,0,0,6,19,0,0,29,11,11,72,
11,72,112,97,116,104,45,115,116,114,105,110,103,63,64,98,115,98,115,76,110, 112,97,116,104,45,115,116,114,105,110,103,63,64,98,115,98,115,76,110,111,114,
111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,74,45,99,104,101,99, 109,97,108,45,99,97,115,101,45,112,97,116,104,74,45,99,104,101,99,107,45,
107,45,114,101,108,112,97,116,104,77,45,99,104,101,99,107,45,99,111,108,108, 114,101,108,112,97,116,104,77,45,99,104,101,99,107,45,99,111,108,108,101,99,
101,99,116,105,111,110,75,99,111,108,108,101,99,116,105,111,110,45,112,97,116, 116,105,111,110,75,99,111,108,108,101,99,116,105,111,110,45,112,97,116,104,69,
104,69,45,102,105,110,100,45,99,111,108,77,99,104,101,99,107,45,115,117,102, 45,102,105,110,100,45,99,111,108,77,99,104,101,99,107,45,115,117,102,102,105,
102,105,120,45,99,97,108,108,79,112,97,116,104,45,114,101,112,108,97,99,101, 120,45,99,97,108,108,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,
45,115,117,102,102,105,120,75,112,97,116,104,45,97,100,100,45,115,117,102,102, 117,102,102,105,120,75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,
105,120,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,1, 77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,1,29,102,
29,102,105,110,100,45,108,105,98,114,97,114,121,45,99,111,108,108,101,99,116, 105,110,100,45,108,105,98,114,97,114,121,45,99,111,108,108,101,99,116,105,111,
105,111,110,45,112,97,116,104,115,1,27,112,97,116,104,45,108,105,115,116,45, 110,45,112,97,116,104,115,1,27,112,97,116,104,45,108,105,115,116,45,115,116,
115,116,114,105,110,103,45,62,112,97,116,104,45,108,105,115,116,1,20,102,105, 114,105,110,103,45,62,112,97,116,104,45,108,105,115,116,1,20,102,105,110,100,
110,100,45,101,120,101,99,117,116,97,98,108,101,45,112,97,116,104,73,101,109, 45,101,120,101,99,117,116,97,98,108,101,45,112,97,116,104,73,101,109,98,101,
98,101,100,100,101,100,45,108,111,97,100,65,113,117,111,116,101,29,94,2,17, 100,100,101,100,45,108,111,97,100,65,113,117,111,116,101,29,94,2,17,68,35,
68,35,37,112,97,114,97,109,122,11,64,108,111,111,112,69,101,120,101,99,45, 37,112,97,114,97,109,122,11,64,108,111,111,112,69,101,120,101,99,45,102,105,
102,105,108,101,67,119,105,110,100,111,119,115,6,25,25,112,97,116,104,32,111, 108,101,67,119,105,110,100,111,119,115,6,25,25,112,97,116,104,32,111,114,32,
114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,103,6,29, 118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,103,6,29,29,126,
29,126,97,58,32,105,110,118,97,108,105,100,32,114,101,108,97,116,105,118,101, 97,58,32,105,110,118,97,108,105,100,32,114,101,108,97,116,105,118,101,32,112,
32,112,97,116,104,58,32,126,115,6,42,42,126,97,58,32,99,111,108,108,101, 97,116,104,58,32,126,115,6,42,42,126,97,58,32,99,111,108,108,101,99,116,
99,116,105,111,110,32,110,111,116,32,102,111,117,110,100,58,32,126,115,32,105, 105,111,110,32,110,111,116,32,102,111,117,110,100,58,32,126,115,32,105,110,32,
110,32,97,110,121,32,111,102,58,32,126,115,6,42,42,112,97,116,104,32,40, 97,110,121,32,111,102,58,32,126,115,6,42,42,112,97,116,104,32,40,102,111,
102,111,114,32,97,110,121,32,115,121,115,116,101,109,41,32,111,114,32,118,97, 114,32,97,110,121,32,115,121,115,116,101,109,41,32,111,114,32,118,97,108,105,
108,105,100,45,112,97,116,104,32,115,116,114,105,110,103,6,21,21,115,116,114, 100,45,112,97,116,104,32,115,116,114,105,110,103,6,21,21,115,116,114,105,110,
105,110,103,32,111,114,32,98,121,116,101,32,115,116,114,105,110,103,6,36,36, 103,32,111,114,32,98,121,116,101,32,115,116,114,105,110,103,6,36,36,99,97,
99,97,110,110,111,116,32,97,100,100,32,97,32,115,117,102,102,105,120,32,116, 110,110,111,116,32,97,100,100,32,97,32,115,117,102,102,105,120,32,116,111,32,
111,32,97,32,114,111,111,116,32,112,97,116,104,58,32,5,0,68,35,37,107, 97,32,114,111,111,116,32,112,97,116,104,58,32,5,0,27,20,14,159,80,158,
101,114,110,101,108,27,20,14,159,80,158,35,49,250,80,158,38,50,249,22,27, 35,49,250,80,158,38,50,249,22,27,11,80,158,40,49,22,142,12,10,248,22,
11,80,158,40,49,22,142,12,10,248,22,188,4,23,196,2,28,248,22,166,5, 188,4,23,196,2,28,248,22,166,5,23,194,2,12,87,94,248,22,143,8,23,
23,194,2,12,87,94,248,22,143,8,23,194,1,248,80,159,36,53,35,195,28, 194,1,248,80,159,36,53,35,195,28,248,22,71,23,195,2,9,27,248,22,64,
248,22,71,23,195,2,9,27,248,22,64,23,196,2,27,28,248,22,187,12,23, 23,196,2,27,28,248,22,187,12,23,195,2,23,194,1,28,248,22,186,12,23,
195,2,23,194,1,28,248,22,186,12,23,195,2,249,22,188,12,23,196,1,250, 195,2,249,22,188,12,23,196,1,250,80,158,41,47,248,22,138,13,2,20,11,
80,158,41,47,248,22,138,13,2,20,11,10,250,80,158,39,47,248,22,138,13, 10,250,80,158,39,47,248,22,138,13,2,20,23,197,1,10,28,23,193,2,249,
2,20,23,197,1,10,28,23,193,2,249,22,63,248,22,190,12,249,22,188,12, 22,63,248,22,190,12,249,22,188,12,23,198,1,247,22,139,13,27,248,22,65,
23,198,1,247,22,139,13,27,248,22,65,23,200,1,28,248,22,71,23,194,2, 23,200,1,28,248,22,71,23,194,2,9,27,248,22,64,23,195,2,27,28,248,
9,27,248,22,64,23,195,2,27,28,248,22,187,12,23,195,2,23,194,1,28, 22,187,12,23,195,2,23,194,1,28,248,22,186,12,23,195,2,249,22,188,12,
248,22,186,12,23,195,2,249,22,188,12,23,196,1,250,80,158,46,47,248,22, 23,196,1,250,80,158,46,47,248,22,138,13,2,20,11,10,250,80,158,44,47,
138,13,2,20,11,10,250,80,158,44,47,248,22,138,13,2,20,23,197,1,10, 248,22,138,13,2,20,23,197,1,10,28,23,193,2,249,22,63,248,22,190,12,
28,23,193,2,249,22,63,248,22,190,12,249,22,188,12,23,198,1,247,22,139, 249,22,188,12,23,198,1,247,22,139,13,248,80,159,44,52,35,248,22,65,23,
13,248,80,159,44,52,35,248,22,65,23,199,1,87,94,23,193,1,248,80,159, 199,1,87,94,23,193,1,248,80,159,42,52,35,248,22,65,23,197,1,87,94,
42,52,35,248,22,65,23,197,1,87,94,23,193,1,27,248,22,65,23,198,1, 23,193,1,27,248,22,65,23,198,1,28,248,22,71,23,194,2,9,27,248,22,
28,248,22,71,23,194,2,9,27,248,22,64,23,195,2,27,28,248,22,187,12, 64,23,195,2,27,28,248,22,187,12,23,195,2,23,194,1,28,248,22,186,12,
23,195,2,23,194,1,28,248,22,186,12,23,195,2,249,22,188,12,23,196,1, 23,195,2,249,22,188,12,23,196,1,250,80,158,44,47,248,22,138,13,2,20,
250,80,158,44,47,248,22,138,13,2,20,11,10,250,80,158,42,47,248,22,138, 11,10,250,80,158,42,47,248,22,138,13,2,20,23,197,1,10,28,23,193,2,
13,2,20,23,197,1,10,28,23,193,2,249,22,63,248,22,190,12,249,22,188, 249,22,63,248,22,190,12,249,22,188,12,23,198,1,247,22,139,13,248,80,159,
12,23,198,1,247,22,139,13,248,80,159,42,52,35,248,22,65,23,199,1,248, 42,52,35,248,22,65,23,199,1,248,80,159,40,52,35,248,22,65,196,249,80,
80,159,40,52,35,248,22,65,196,249,80,159,36,37,35,2,7,195,27,248,22, 159,36,37,35,2,7,195,27,248,22,163,12,23,195,2,28,23,193,2,192,87,
163,12,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23, 94,23,193,1,28,248,22,135,6,23,195,2,27,248,22,185,12,195,28,192,192,
195,2,27,248,22,185,12,195,28,192,192,248,22,186,12,195,11,87,94,28,28, 248,22,186,12,195,11,87,94,28,28,248,22,164,12,23,195,2,10,27,248,22,
248,22,164,12,23,195,2,10,27,248,22,163,12,23,196,2,28,23,193,2,192, 163,12,23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23,
87,94,23,193,1,28,248,22,135,6,23,196,2,27,248,22,185,12,23,197,2, 196,2,27,248,22,185,12,23,197,2,28,23,193,2,192,87,94,23,193,1,248,
28,23,193,2,192,87,94,23,193,1,248,22,186,12,23,197,2,11,12,250,22, 22,186,12,23,197,2,11,12,250,22,170,8,76,110,111,114,109,97,108,45,112,
170,8,76,110,111,114,109,97,108,45,112,97,116,104,45,99,97,115,101,6,42, 97,116,104,45,99,97,115,101,6,42,42,112,97,116,104,32,40,102,111,114,32,
42,112,97,116,104,32,40,102,111,114,32,97,110,121,32,115,121,115,116,101,109, 97,110,121,32,115,121,115,116,101,109,41,32,111,114,32,118,97,108,105,100,45,
41,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110, 112,97,116,104,32,115,116,114,105,110,103,23,197,2,28,28,248,22,164,12,23,
103,23,197,2,28,28,248,22,164,12,23,195,2,249,22,140,8,248,22,165,12, 195,2,249,22,140,8,248,22,165,12,23,197,2,2,21,249,22,140,8,247,22,
23,197,2,2,21,249,22,140,8,247,22,154,7,2,21,27,28,248,22,135,6, 154,7,2,21,27,28,248,22,135,6,23,196,2,23,195,2,248,22,144,7,248,
23,196,2,23,195,2,248,22,144,7,248,22,168,12,23,197,2,28,249,22,151, 22,168,12,23,197,2,28,249,22,151,13,0,21,35,114,120,34,94,91,92,92,
13,0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,91,92, 93,91,92,92,93,91,63,93,91,92,92,93,34,23,195,2,28,248,22,135,6,
92,93,34,23,195,2,28,248,22,135,6,195,248,22,171,12,195,194,27,248,22, 195,248,22,171,12,195,194,27,248,22,174,6,23,195,1,249,22,172,12,248,22,
174,6,23,195,1,249,22,172,12,248,22,147,7,250,22,157,13,0,6,35,114, 147,7,250,22,157,13,0,6,35,114,120,34,47,34,28,249,22,151,13,0,22,
120,34,47,34,28,249,22,151,13,0,22,35,114,120,34,91,47,92,92,93,91, 35,114,120,34,91,47,92,92,93,91,46,32,93,43,91,47,92,92,93,42,36,
46,32,93,43,91,47,92,92,93,42,36,34,23,201,2,23,199,1,250,22,157, 34,23,201,2,23,199,1,250,22,157,13,0,19,35,114,120,34,91,32,46,93,
13,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,42,41,36, 43,40,91,47,92,92,93,42,41,36,34,23,202,1,6,2,2,92,49,80,158,
34,23,202,1,6,2,2,92,49,80,158,42,35,2,21,28,248,22,135,6,194, 42,35,2,21,28,248,22,135,6,194,248,22,171,12,194,193,87,94,28,27,248,
248,22,171,12,194,193,87,94,28,27,248,22,163,12,23,196,2,28,23,193,2, 22,163,12,23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,
192,87,94,23,193,1,28,248,22,135,6,23,196,2,27,248,22,185,12,23,197, 23,196,2,27,248,22,185,12,23,197,2,28,23,193,2,192,87,94,23,193,1,
2,28,23,193,2,192,87,94,23,193,1,248,22,186,12,23,197,2,11,12,250, 248,22,186,12,23,197,2,11,12,250,22,170,8,23,196,2,2,22,23,197,2,
22,170,8,23,196,2,2,22,23,197,2,28,248,22,185,12,23,195,2,12,248, 28,248,22,185,12,23,195,2,12,248,22,187,10,249,22,132,10,248,22,164,6,
22,187,10,249,22,132,10,248,22,164,6,250,22,183,6,2,23,23,200,1,23, 250,22,183,6,2,23,23,200,1,23,201,1,247,22,23,87,94,28,27,248,22,
201,1,247,22,23,87,94,28,27,248,22,163,12,23,196,2,28,23,193,2,192, 163,12,23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23,
87,94,23,193,1,28,248,22,135,6,23,196,2,27,248,22,185,12,23,197,2, 196,2,27,248,22,185,12,23,197,2,28,23,193,2,192,87,94,23,193,1,248,
28,23,193,2,192,87,94,23,193,1,248,22,186,12,23,197,2,11,12,250,22, 22,186,12,23,197,2,11,12,250,22,170,8,23,196,2,2,22,23,197,2,28,
170,8,23,196,2,2,22,23,197,2,28,248,22,185,12,23,195,2,12,248,22, 248,22,185,12,23,195,2,12,248,22,187,10,249,22,132,10,248,22,164,6,250,
187,10,249,22,132,10,248,22,164,6,250,22,183,6,2,23,23,200,1,23,201, 22,183,6,2,23,23,200,1,23,201,1,247,22,23,87,94,87,94,28,27,248,
1,247,22,23,87,94,87,94,28,27,248,22,163,12,23,196,2,28,23,193,2, 22,163,12,23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,
192,87,94,23,193,1,28,248,22,135,6,23,196,2,27,248,22,185,12,23,197, 23,196,2,27,248,22,185,12,23,197,2,28,23,193,2,192,87,94,23,193,1,
2,28,23,193,2,192,87,94,23,193,1,248,22,186,12,23,197,2,11,12,250, 248,22,186,12,23,197,2,11,12,250,22,170,8,195,2,22,23,197,2,28,248,
22,170,8,195,2,22,23,197,2,28,248,22,185,12,23,195,2,12,248,22,187, 22,185,12,23,195,2,12,248,22,187,10,249,22,132,10,248,22,164,6,250,22,
10,249,22,132,10,248,22,164,6,250,22,183,6,2,23,199,23,201,1,247,22, 183,6,2,23,199,23,201,1,247,22,23,249,22,3,89,162,42,35,48,9,223,
23,249,22,3,89,162,42,35,48,9,223,2,33,36,196,248,22,187,10,249,22, 2,33,35,196,248,22,187,10,249,22,162,10,23,196,1,247,22,23,87,94,87,
162,10,23,196,1,247,22,23,87,94,87,94,249,80,159,36,37,35,2,7,195, 94,249,80,159,36,37,35,2,7,195,249,22,3,80,159,36,51,35,196,251,80,
249,22,3,80,159,36,51,35,196,251,80,159,38,40,35,2,7,32,0,89,162, 159,38,40,35,2,7,32,0,89,162,42,35,43,9,222,33,37,197,198,32,39,
42,35,43,9,222,33,38,197,198,32,40,89,162,42,40,57,65,99,108,111,111, 89,162,42,40,57,65,99,108,111,111,112,222,33,40,28,248,22,71,23,199,2,
112,222,33,41,28,248,22,71,23,199,2,87,94,23,198,1,248,23,196,1,251, 87,94,23,198,1,248,23,196,1,251,22,183,6,2,24,23,199,1,28,248,22,
22,183,6,2,24,23,199,1,28,248,22,71,23,203,2,87,94,23,202,1,23, 71,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,181,12,23,204,1,
201,1,250,22,1,22,181,12,23,204,1,23,205,1,23,198,1,27,249,22,181, 23,205,1,23,198,1,27,249,22,181,12,248,22,64,23,202,2,23,199,2,28,
12,248,22,64,23,202,2,23,199,2,28,248,22,176,12,23,194,2,27,250,22, 248,22,176,12,23,194,2,27,250,22,1,22,181,12,23,197,1,23,202,2,28,
1,22,181,12,23,197,1,23,202,2,28,248,22,176,12,23,194,2,192,87,94, 248,22,176,12,23,194,2,192,87,94,23,193,1,27,248,22,65,23,202,1,28,
23,193,1,27,248,22,65,23,202,1,28,248,22,71,23,194,2,87,94,23,193, 248,22,71,23,194,2,87,94,23,193,1,248,23,199,1,251,22,183,6,2,24,
1,248,23,199,1,251,22,183,6,2,24,23,202,1,28,248,22,71,23,206,2, 23,202,1,28,248,22,71,23,206,2,87,94,23,205,1,23,204,1,250,22,1,
87,94,23,205,1,23,204,1,250,22,1,22,181,12,23,207,1,23,208,1,23, 22,181,12,23,207,1,23,208,1,23,201,1,27,249,22,181,12,248,22,64,23,
201,1,27,249,22,181,12,248,22,64,23,197,2,23,202,2,28,248,22,176,12, 197,2,23,202,2,28,248,22,176,12,23,194,2,27,250,22,1,22,181,12,23,
23,194,2,27,250,22,1,22,181,12,23,197,1,204,28,248,22,176,12,193,192, 197,1,204,28,248,22,176,12,193,192,253,2,39,203,204,205,206,23,15,248,22,
253,2,40,203,204,205,206,23,15,248,22,65,201,253,2,40,202,203,204,205,206, 65,201,253,2,39,202,203,204,205,206,248,22,65,200,87,94,23,193,1,27,248,
248,22,65,200,87,94,23,193,1,27,248,22,65,23,201,1,28,248,22,71,23, 22,65,23,201,1,28,248,22,71,23,194,2,87,94,23,193,1,248,23,198,1,
194,2,87,94,23,193,1,248,23,198,1,251,22,183,6,2,24,23,201,1,28, 251,22,183,6,2,24,23,201,1,28,248,22,71,23,205,2,87,94,23,204,1,
248,22,71,23,205,2,87,94,23,204,1,23,203,1,250,22,1,22,181,12,23, 23,203,1,250,22,1,22,181,12,23,206,1,23,207,1,23,200,1,27,249,22,
206,1,23,207,1,23,200,1,27,249,22,181,12,248,22,64,23,197,2,23,201, 181,12,248,22,64,23,197,2,23,201,2,28,248,22,176,12,23,194,2,27,250,
2,28,248,22,176,12,23,194,2,27,250,22,1,22,181,12,23,197,1,203,28, 22,1,22,181,12,23,197,1,203,28,248,22,176,12,193,192,253,2,39,202,203,
248,22,176,12,193,192,253,2,40,202,203,204,205,206,248,22,65,201,253,2,40, 204,205,206,248,22,65,201,253,2,39,201,202,203,204,205,248,22,65,200,27,247,
201,202,203,204,205,248,22,65,200,27,247,22,140,13,253,2,40,198,199,200,201, 22,140,13,253,2,39,198,199,200,201,202,198,87,95,28,28,248,22,164,12,23,
202,198,87,95,28,28,248,22,164,12,23,194,2,10,27,248,22,163,12,23,195, 194,2,10,27,248,22,163,12,23,195,2,28,23,193,2,192,87,94,23,193,1,
2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23,195,2,27,248, 28,248,22,135,6,23,195,2,27,248,22,185,12,23,196,2,28,23,193,2,192,
22,185,12,23,196,2,28,23,193,2,192,87,94,23,193,1,248,22,186,12,23, 87,94,23,193,1,248,22,186,12,23,196,2,11,12,252,22,170,8,23,200,2,
196,2,11,12,252,22,170,8,23,200,2,2,25,34,23,198,2,23,199,2,28, 2,25,34,23,198,2,23,199,2,28,28,248,22,135,6,23,195,2,10,248,22,
28,248,22,135,6,23,195,2,10,248,22,187,6,23,195,2,87,94,23,194,1, 187,6,23,195,2,87,94,23,194,1,12,252,22,170,8,23,200,2,2,26,35,
12,252,22,170,8,23,200,2,2,26,35,23,198,2,23,199,1,91,159,37,11, 23,198,2,23,199,1,91,159,37,11,90,161,37,34,11,248,22,184,12,23,197,
90,161,37,34,11,248,22,184,12,23,197,2,87,94,23,195,1,87,94,28,192, 2,87,94,23,195,1,87,94,28,192,12,250,22,171,8,23,201,1,2,27,23,
12,250,22,171,8,23,201,1,2,27,23,199,1,249,22,7,194,195,91,159,36, 199,1,249,22,7,194,195,91,159,36,11,90,161,36,34,11,87,95,28,28,248,
22,164,12,23,196,2,10,27,248,22,163,12,23,197,2,28,23,193,2,192,87,
94,23,193,1,28,248,22,135,6,23,197,2,27,248,22,185,12,23,198,2,28,
23,193,2,192,87,94,23,193,1,248,22,186,12,23,198,2,11,12,252,22,170,
8,2,10,2,25,34,23,200,2,23,201,2,28,28,248,22,135,6,23,197,2,
10,248,22,187,6,23,197,2,12,252,22,170,8,2,10,2,26,35,23,200,2,
23,201,2,91,159,37,11,90,161,37,34,11,248,22,184,12,23,199,2,87,94,
23,195,1,87,94,28,23,193,2,12,250,22,171,8,2,10,2,27,23,201,2,
249,22,7,23,195,1,23,196,1,27,249,22,173,12,250,22,156,13,0,18,35,
114,120,35,34,40,91,46,93,91,94,46,93,42,124,41,36,34,248,22,169,12,
23,201,1,28,248,22,135,6,23,203,2,249,22,147,7,23,204,1,8,63,23,
202,1,28,248,22,164,12,23,199,2,248,22,165,12,23,199,1,87,94,23,198,
1,247,22,166,12,28,248,22,163,12,194,249,22,181,12,195,194,192,91,159,36,
11,90,161,36,34,11,87,95,28,28,248,22,164,12,23,196,2,10,27,248,22, 11,90,161,36,34,11,87,95,28,28,248,22,164,12,23,196,2,10,27,248,22,
163,12,23,197,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23, 163,12,23,197,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23,
197,2,27,248,22,185,12,23,198,2,28,23,193,2,192,87,94,23,193,1,248, 197,2,27,248,22,185,12,23,198,2,28,23,193,2,192,87,94,23,193,1,248,
22,186,12,23,198,2,11,12,252,22,170,8,2,10,2,25,34,23,200,2,23, 22,186,12,23,198,2,11,12,252,22,170,8,2,11,2,25,34,23,200,2,23,
201,2,28,28,248,22,135,6,23,197,2,10,248,22,187,6,23,197,2,12,252, 201,2,28,28,248,22,135,6,23,197,2,10,248,22,187,6,23,197,2,12,252,
22,170,8,2,10,2,26,35,23,200,2,23,201,2,91,159,37,11,90,161,37, 22,170,8,2,11,2,26,35,23,200,2,23,201,2,91,159,37,11,90,161,37,
34,11,248,22,184,12,23,199,2,87,94,23,195,1,87,94,28,23,193,2,12, 34,11,248,22,184,12,23,199,2,87,94,23,195,1,87,94,28,23,193,2,12,
250,22,171,8,2,10,2,27,23,201,2,249,22,7,23,195,1,23,196,1,27, 250,22,171,8,2,11,2,27,23,201,2,249,22,7,23,195,1,23,196,1,27,
249,22,173,12,250,22,156,13,0,18,35,114,120,35,34,40,91,46,93,91,94, 249,22,173,12,249,22,133,7,250,22,157,13,0,9,35,114,120,35,34,91,46,
46,93,42,124,41,36,34,248,22,169,12,23,201,1,28,248,22,135,6,23,203, 93,34,248,22,169,12,23,203,1,6,1,1,95,28,248,22,135,6,23,202,2,
2,249,22,147,7,23,204,1,8,63,23,202,1,28,248,22,164,12,23,199,2, 249,22,147,7,23,203,1,8,63,23,201,1,28,248,22,164,12,23,199,2,248,
248,22,165,12,23,199,1,87,94,23,198,1,247,22,166,12,28,248,22,163,12, 22,165,12,23,199,1,87,94,23,198,1,247,22,166,12,28,248,22,163,12,194,
194,249,22,181,12,195,194,192,91,159,36,11,90,161,36,34,11,87,95,28,28, 249,22,181,12,195,194,192,249,247,22,186,5,194,11,248,80,158,35,45,9,27,
248,22,164,12,23,196,2,10,27,248,22,163,12,23,197,2,28,23,193,2,192, 247,22,142,13,249,80,158,37,46,28,23,195,2,27,248,22,152,7,6,11,11,
87,94,23,193,1,28,248,22,135,6,23,197,2,27,248,22,185,12,23,198,2, 80,76,84,67,79,76,76,69,67,84,83,28,192,192,6,0,0,6,0,0,27,
28,23,193,2,192,87,94,23,193,1,248,22,186,12,23,198,2,11,12,252,22, 28,23,196,1,250,22,181,12,248,22,138,13,69,97,100,100,111,110,45,100,105,
170,8,2,11,2,25,34,23,200,2,23,201,2,28,28,248,22,135,6,23,197, 114,247,22,150,7,6,8,8,99,111,108,108,101,99,116,115,11,27,248,80,159,
2,10,248,22,187,6,23,197,2,12,252,22,170,8,2,11,2,26,35,23,200, 40,52,35,249,22,77,23,202,1,248,22,73,248,22,138,13,72,99,111,108,108,
2,23,201,2,91,159,37,11,90,161,37,34,11,248,22,184,12,23,199,2,87, 101,99,116,115,45,100,105,114,28,23,194,2,249,22,63,23,196,1,23,195,1,
94,23,195,1,87,94,28,23,193,2,12,250,22,171,8,2,11,2,27,23,201, 192,32,48,89,162,8,44,37,49,2,19,222,33,49,27,249,22,149,13,23,197,
2,249,22,7,23,195,1,23,196,1,27,249,22,173,12,249,22,133,7,250,22, 2,23,198,2,28,23,193,2,87,94,23,196,1,27,248,22,88,23,195,2,27,
157,13,0,9,35,114,120,35,34,91,46,93,34,248,22,169,12,23,203,1,6, 250,2,48,23,199,2,23,200,1,248,22,97,23,199,1,28,249,22,129,7,23,
1,1,95,28,248,22,135,6,23,202,2,249,22,147,7,23,203,1,8,63,23, 196,2,2,28,249,22,77,197,194,87,94,23,196,1,249,22,63,248,22,172,12,
201,1,28,248,22,164,12,23,199,2,248,22,165,12,23,199,1,87,94,23,198, 23,197,1,194,87,95,23,195,1,23,193,1,28,249,22,129,7,23,198,2,2,
1,247,22,166,12,28,248,22,163,12,194,249,22,181,12,195,194,192,249,247,22, 28,249,22,77,195,9,87,94,23,194,1,249,22,63,248,22,172,12,23,199,1,
186,5,194,11,248,80,158,35,45,9,27,247,22,142,13,249,80,158,37,46,28, 9,87,95,28,28,248,22,187,6,194,10,248,22,135,6,194,12,250,22,170,8,
23,195,2,27,248,22,152,7,6,11,11,80,76,84,67,79,76,76,69,67,84, 2,14,6,21,21,98,121,116,101,32,115,116,114,105,110,103,32,111,114,32,115,
83,28,192,192,6,0,0,6,0,0,27,28,23,196,1,250,22,181,12,248,22, 116,114,105,110,103,196,28,28,248,22,72,195,249,22,4,22,163,12,196,11,12,
138,13,69,97,100,100,111,110,45,100,105,114,247,22,150,7,6,8,8,99,111, 250,22,170,8,2,14,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,
108,108,101,99,116,115,11,27,248,80,159,40,52,35,249,22,77,23,202,1,248, 115,197,250,2,48,197,195,28,248,22,135,6,197,248,22,146,7,197,196,32,51,
22,73,248,22,138,13,72,99,111,108,108,101,99,116,115,45,100,105,114,28,23, 89,162,8,44,38,56,2,19,222,33,54,32,52,89,162,8,44,37,53,70,102,
194,2,249,22,63,23,196,1,23,195,1,192,32,49,89,162,8,44,37,49,2, 111,117,110,100,45,101,120,101,99,222,33,53,28,23,193,2,91,159,37,11,90,
19,222,33,50,27,249,22,149,13,23,197,2,23,198,2,28,23,193,2,87,94, 161,37,34,11,248,22,184,12,23,199,2,87,95,23,195,1,23,194,1,27,28,
23,196,1,27,248,22,88,23,195,2,27,250,2,49,23,199,2,23,200,1,248, 23,198,2,27,248,22,189,12,23,201,2,28,249,22,142,8,23,195,2,23,202,
22,97,23,199,1,28,249,22,129,7,23,196,2,2,28,249,22,77,197,194,87, 2,11,28,248,22,185,12,23,194,2,250,2,52,23,201,2,23,202,2,249,22,
94,23,196,1,249,22,63,248,22,172,12,23,197,1,194,87,95,23,195,1,23, 181,12,23,200,2,23,198,1,250,2,52,23,201,2,23,202,2,23,196,1,11,
193,1,28,249,22,129,7,23,198,2,2,28,249,22,77,195,9,87,94,23,194, 28,23,193,2,192,87,94,23,193,1,27,28,248,22,163,12,23,196,2,27,249,
1,249,22,63,248,22,172,12,23,199,1,9,87,95,28,28,248,22,187,6,194, 22,181,12,23,198,2,23,201,2,28,28,248,22,176,12,193,10,248,22,175,12,
10,248,22,135,6,194,12,250,22,170,8,2,14,6,21,21,98,121,116,101,32, 193,192,11,11,28,23,193,2,192,87,94,23,193,1,28,23,199,2,11,27,248,
115,116,114,105,110,103,32,111,114,32,115,116,114,105,110,103,196,28,28,248,22, 22,189,12,23,202,2,28,249,22,142,8,23,195,2,23,203,1,11,28,248,22,
72,195,249,22,4,22,163,12,196,11,12,250,22,170,8,2,14,6,13,13,108, 185,12,23,194,2,250,2,52,23,202,1,23,203,1,249,22,181,12,23,201,1,
105,115,116,32,111,102,32,112,97,116,104,115,197,250,2,49,197,195,28,248,22, 23,198,1,250,2,52,201,202,195,194,28,248,22,71,23,197,2,11,27,248,22,
135,6,197,248,22,146,7,197,196,32,52,89,162,8,44,38,56,2,19,222,33, 188,12,248,22,64,23,199,2,27,249,22,181,12,23,196,1,23,197,2,28,248,
55,32,53,89,162,8,44,37,53,70,102,111,117,110,100,45,101,120,101,99,222, 22,175,12,23,194,2,250,2,52,198,199,195,87,94,23,193,1,27,248,22,65,
33,54,28,23,193,2,91,159,37,11,90,161,37,34,11,248,22,184,12,23,199, 23,200,1,28,248,22,71,23,194,2,11,27,248,22,188,12,248,22,64,23,196,
2,87,95,23,195,1,23,194,1,27,28,23,198,2,27,248,22,189,12,23,201, 2,27,249,22,181,12,23,196,1,23,200,2,28,248,22,175,12,23,194,2,250,
2,28,249,22,142,8,23,195,2,23,202,2,11,28,248,22,185,12,23,194,2, 2,52,201,202,195,87,94,23,193,1,27,248,22,65,23,197,1,28,248,22,71,
250,2,53,23,201,2,23,202,2,249,22,181,12,23,200,2,23,198,1,250,2, 23,194,2,11,27,248,22,188,12,248,22,64,195,27,249,22,181,12,23,196,1,
53,23,201,2,23,202,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1, 202,28,248,22,175,12,193,250,2,52,204,205,195,251,2,51,204,205,206,248,22,
27,28,248,22,163,12,23,196,2,27,249,22,181,12,23,198,2,23,201,2,28, 65,199,87,95,28,27,248,22,163,12,23,196,2,28,23,193,2,192,87,94,23,
28,248,22,176,12,193,10,248,22,175,12,193,192,11,11,28,23,193,2,192,87, 193,1,28,248,22,135,6,23,196,2,27,248,22,185,12,23,197,2,28,23,193,
94,23,193,1,28,23,199,2,11,27,248,22,189,12,23,202,2,28,249,22,142, 2,192,87,94,23,193,1,248,22,186,12,23,197,2,11,12,250,22,170,8,2,
8,23,195,2,23,203,1,11,28,248,22,185,12,23,194,2,250,2,53,23,202, 15,6,25,25,112,97,116,104,32,111,114,32,115,116,114,105,110,103,32,40,115,
1,23,203,1,249,22,181,12,23,201,1,23,198,1,250,2,53,201,202,195,194, 97,110,115,32,110,117,108,41,23,197,2,28,28,23,195,2,28,27,248,22,163,
28,248,22,71,23,197,2,11,27,248,22,188,12,248,22,64,23,199,2,27,249, 12,23,197,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23,197,
22,181,12,23,196,1,23,197,2,28,248,22,175,12,23,194,2,250,2,53,198, 2,27,248,22,185,12,23,198,2,28,23,193,2,192,87,94,23,193,1,248,22,
199,195,87,94,23,193,1,27,248,22,65,23,200,1,28,248,22,71,23,194,2, 186,12,23,198,2,11,248,22,185,12,23,196,2,11,10,12,250,22,170,8,2,
11,27,248,22,188,12,248,22,64,23,196,2,27,249,22,181,12,23,196,1,23, 15,6,29,29,35,102,32,111,114,32,114,101,108,97,116,105,118,101,32,112,97,
200,2,28,248,22,175,12,23,194,2,250,2,53,201,202,195,87,94,23,193,1, 116,104,32,111,114,32,115,116,114,105,110,103,23,198,2,28,28,248,22,185,12,
27,248,22,65,23,197,1,28,248,22,71,23,194,2,11,27,248,22,188,12,248, 23,195,2,91,159,37,11,90,161,37,34,11,248,22,184,12,23,198,2,249,22,
22,64,195,27,249,22,181,12,23,196,1,202,28,248,22,175,12,193,250,2,53, 140,8,194,68,114,101,108,97,116,105,118,101,11,27,248,22,152,7,6,4,4,
204,205,195,251,2,52,204,205,206,248,22,65,199,87,95,28,27,248,22,163,12, 80,65,84,72,251,2,51,23,199,1,23,200,1,23,201,1,28,23,197,2,27,
23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23,196,2, 249,80,158,42,46,23,200,1,9,28,249,22,140,8,247,22,154,7,2,21,249,
27,248,22,185,12,23,197,2,28,23,193,2,192,87,94,23,193,1,248,22,186, 22,63,248,22,172,12,5,1,46,23,195,1,192,9,27,248,22,188,12,23,196,
12,23,197,2,11,12,250,22,170,8,2,15,6,25,25,112,97,116,104,32,111, 1,28,248,22,175,12,193,250,2,52,198,199,195,11,250,80,158,37,47,196,197,
114,32,115,116,114,105,110,103,32,40,115,97,110,115,32,110,117,108,41,23,197, 11,250,80,158,37,47,196,11,11,87,94,249,22,191,5,247,22,168,4,195,248,
2,28,28,23,195,2,28,27,248,22,163,12,23,197,2,28,23,193,2,192,87, 22,142,5,249,22,153,3,34,249,22,137,3,197,198,27,28,23,197,2,87,95,
94,23,193,1,28,248,22,135,6,23,197,2,27,248,22,185,12,23,198,2,28, 23,196,1,23,195,1,23,197,1,87,94,23,197,1,27,248,22,138,13,2,20,
23,193,2,192,87,94,23,193,1,248,22,186,12,23,198,2,11,248,22,185,12, 27,249,80,158,39,47,23,196,1,11,27,27,248,22,156,3,23,200,1,28,192,
23,196,2,11,10,12,250,22,170,8,2,15,6,29,29,35,102,32,111,114,32, 192,34,27,27,248,22,156,3,23,202,1,28,192,192,34,249,22,185,4,23,197,
114,101,108,97,116,105,118,101,32,112,97,116,104,32,111,114,32,115,116,114,105, 1,83,158,38,20,96,95,89,162,8,44,34,46,9,224,3,2,33,58,23,195,
110,103,23,198,2,28,28,248,22,185,12,23,195,2,91,159,37,11,90,161,37, 1,23,196,1,27,248,22,172,4,23,195,1,248,80,159,37,53,35,193,159,34,
34,11,248,22,184,12,23,198,2,249,22,140,8,194,68,114,101,108,97,116,105, 20,102,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,99,
118,101,11,27,248,22,152,7,6,4,4,80,65,84,72,251,2,52,23,199,1, 137,67,35,37,117,116,105,108,115,2,1,11,10,10,41,80,158,34,34,20,102,
23,200,1,23,201,1,28,23,197,2,27,249,80,158,42,46,23,200,1,9,28, 159,37,16,17,30,2,1,2,2,193,30,2,1,2,3,193,30,2,1,2,4,
249,22,140,8,247,22,154,7,2,21,249,22,63,248,22,172,12,5,1,46,23, 193,30,2,1,2,5,193,30,2,1,2,6,193,30,2,1,2,7,193,30,2,
195,1,192,9,27,248,22,188,12,23,196,1,28,248,22,175,12,193,250,2,53, 1,2,8,193,30,2,1,2,9,193,30,2,1,2,10,193,30,2,1,2,11,
198,199,195,11,250,80,158,37,47,196,197,11,250,80,158,37,47,196,11,11,87, 193,30,2,1,2,12,193,30,2,1,2,13,193,30,2,1,2,14,193,30,2,
94,249,22,191,5,247,22,168,4,195,248,22,142,5,249,22,153,3,34,249,22, 1,2,15,193,30,2,1,2,16,193,30,2,18,1,20,112,97,114,97,109,101,
137,3,197,198,27,248,22,138,13,2,20,27,249,80,158,38,47,23,196,1,11, 116,101,114,105,122,97,116,105,111,110,45,107,101,121,4,30,2,18,1,23,101,
27,27,248,22,156,3,23,199,1,28,192,192,34,27,27,248,22,156,3,23,201, 120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,
1,28,192,192,34,27,249,22,185,4,23,198,1,83,158,38,20,96,95,89,162, 110,3,16,0,11,11,16,4,2,6,2,5,2,3,2,9,38,11,37,34,11,
8,44,34,46,9,224,4,3,33,59,23,196,1,23,197,1,27,248,22,172,4, 16,11,9,9,9,9,9,9,9,9,9,9,9,16,11,2,8,2,7,2,16,
23,195,1,87,94,248,22,136,4,21,94,2,17,2,29,248,80,159,41,53,35, 2,15,2,13,2,12,2,4,2,11,2,14,2,10,2,2,16,11,11,11,11,
193,159,34,20,102,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158, 11,11,11,11,11,11,11,11,16,11,2,8,2,7,2,16,2,15,2,13,2,
40,20,99,137,67,35,37,117,116,105,108,115,2,1,11,10,10,41,80,158,34, 12,2,4,2,11,2,14,2,10,2,2,45,45,35,11,11,16,0,16,0,16,
34,20,102,159,37,16,17,30,2,1,2,2,193,30,2,1,2,3,193,30,2, 0,34,34,11,11,11,16,0,16,0,16,0,34,34,16,0,16,18,83,158,34,
1,2,4,193,30,2,1,2,5,193,30,2,1,2,6,193,30,2,1,2,7, 16,2,89,162,42,35,47,2,19,223,0,33,29,80,159,34,53,35,83,158,34,
193,30,2,1,2,8,193,30,2,1,2,9,193,30,2,1,2,10,193,30,2, 16,2,89,162,8,44,35,54,2,19,223,0,33,30,80,159,34,52,35,83,158,
1,2,11,193,30,2,1,2,12,193,30,2,1,2,13,193,30,2,1,2,14, 34,16,2,89,162,8,44,35,43,9,223,0,33,31,80,159,34,51,35,83,158,
193,30,2,1,2,15,193,30,2,1,2,16,193,30,2,18,1,20,112,97,114, 34,16,2,32,0,89,162,42,35,43,2,2,222,33,32,80,159,34,34,35,83,
97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,4,30,2,18, 158,34,16,2,249,22,137,6,7,92,7,92,80,159,34,35,35,83,158,34,16,
1,23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97, 2,89,162,42,35,52,2,4,223,0,33,33,80,159,34,36,35,83,158,34,16,
116,105,111,110,3,16,0,11,11,16,4,2,6,2,5,2,3,2,9,38,11, 2,32,0,89,162,42,36,48,2,5,222,33,34,80,159,34,37,35,83,158,34,
37,34,11,16,11,9,9,9,9,9,9,9,9,9,9,9,16,11,2,8,2, 16,2,32,0,89,162,8,44,37,49,2,6,222,33,36,80,159,34,38,35,83,
7,2,16,2,15,2,13,2,12,2,4,2,11,2,14,2,10,2,2,16,11, 158,34,16,2,89,162,8,45,36,46,2,7,223,0,33,38,80,159,34,39,35,
11,11,11,11,11,11,11,11,11,11,11,16,11,2,8,2,7,2,16,2,15, 83,158,34,16,2,32,0,89,162,42,38,50,2,8,222,33,41,80,159,34,40,
2,13,2,12,2,4,2,11,2,14,2,10,2,2,45,45,35,11,11,16,0, 35,83,158,34,16,2,32,0,89,162,42,37,48,2,9,222,33,42,80,159,34,
16,0,16,0,34,34,11,11,11,16,0,16,0,16,0,34,34,16,0,16,18, 41,35,83,158,34,16,2,32,0,89,162,42,36,51,2,10,222,33,43,80,159,
83,158,34,16,2,89,162,42,35,47,2,19,223,0,33,30,80,159,34,53,35, 34,42,35,83,158,34,16,2,32,0,89,162,42,36,52,2,11,222,33,44,80,
83,158,34,16,2,89,162,8,44,35,54,2,19,223,0,33,31,80,159,34,52, 159,34,43,35,83,158,34,16,2,32,0,89,162,42,35,42,2,12,222,33,45,
35,83,158,34,16,2,89,162,8,44,35,43,9,223,0,33,32,80,159,34,51, 80,159,34,44,35,83,158,34,16,2,83,158,37,20,95,95,2,13,89,162,42,
35,83,158,34,16,2,32,0,89,162,42,35,43,2,2,222,33,33,80,159,34, 34,41,9,223,0,33,46,89,162,42,35,51,9,223,0,33,47,80,159,34,45,
34,35,83,158,34,16,2,249,22,137,6,7,92,7,92,80,159,34,35,35,83, 35,83,158,34,16,2,27,248,22,145,13,248,22,146,7,27,28,249,22,140,8,
158,34,16,2,89,162,42,35,52,2,4,223,0,33,34,80,159,34,36,35,83, 247,22,154,7,2,21,6,1,1,59,6,1,1,58,250,22,183,6,6,14,14,
158,34,16,2,32,0,89,162,42,36,48,2,5,222,33,35,80,159,34,37,35, 40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1,89,
83,158,34,16,2,32,0,89,162,8,44,37,49,2,6,222,33,37,80,159,34, 162,8,44,36,46,2,14,223,0,33,50,80,159,34,46,35,83,158,34,16,2,
38,35,83,158,34,16,2,89,162,8,45,36,46,2,7,223,0,33,39,80,159, 83,158,37,20,95,96,2,15,89,162,8,44,37,52,9,223,0,33,55,89,162,
34,39,35,83,158,34,16,2,32,0,89,162,42,38,50,2,8,222,33,42,80, 42,36,45,9,223,0,33,56,89,162,42,35,44,9,223,0,33,57,80,159,34,
159,34,40,35,83,158,34,16,2,32,0,89,162,42,37,48,2,9,222,33,43, 47,35,83,158,34,16,2,89,162,42,37,50,2,16,223,0,33,59,80,159,34,
80,159,34,41,35,83,158,34,16,2,32,0,89,162,42,36,51,2,10,222,33, 48,35,94,29,94,2,17,68,35,37,107,101,114,110,101,108,11,29,94,2,17,
44,80,159,34,42,35,83,158,34,16,2,32,0,89,162,42,36,52,2,11,222, 69,35,37,109,105,110,45,115,116,120,11,9,9,9,34,0};
33,45,80,159,34,43,35,83,158,34,16,2,32,0,89,162,42,35,42,2,12, EVAL_ONE_SIZED_STR((char *)expr, 5013);
222,33,46,80,159,34,44,35,83,158,34,16,2,83,158,37,20,95,95,2,13,
89,162,42,34,41,9,223,0,33,47,89,162,42,35,51,9,223,0,33,48,80,
159,34,45,35,83,158,34,16,2,27,248,22,145,13,248,22,146,7,27,28,249,
22,140,8,247,22,154,7,2,21,6,1,1,59,6,1,1,58,250,22,183,6,
6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,
196,1,89,162,8,44,36,46,2,14,223,0,33,51,80,159,34,46,35,83,158,
34,16,2,83,158,37,20,95,96,2,15,89,162,8,44,37,52,9,223,0,33,
56,89,162,42,36,45,9,223,0,33,57,89,162,42,35,44,9,223,0,33,58,
80,159,34,47,35,83,158,34,16,2,89,162,42,36,49,2,16,223,0,33,60,
80,159,34,48,35,94,29,94,2,17,2,29,11,29,94,2,17,69,35,37,109,
105,110,45,115,116,120,11,9,9,9,34,0};
EVAL_ONE_SIZED_STR((char *)expr, 5009);
} }
{ {
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,56,8,0,0,0,1,0,0,6,0, static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,56,8,0,0,0,1,0,0,6,0,
@ -347,7 +347,7 @@
111,116,101,29,94,2,1,67,35,37,117,116,105,108,115,11,29,94,2,1,69, 111,116,101,29,94,2,1,67,35,37,117,116,105,108,115,11,29,94,2,1,69,
35,37,110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97, 35,37,110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97,
109,122,11,29,94,2,1,68,35,37,101,120,112,111,98,115,11,29,94,2,1, 109,122,11,29,94,2,1,68,35,37,101,120,112,111,98,115,11,29,94,2,1,
68,35,37,107,101,114,110,101,108,11,98,10,34,11,8,168,186,97,159,2,2, 68,35,37,107,101,114,110,101,108,11,98,10,34,11,8,129,187,97,159,2,2,
34,34,159,2,3,34,34,159,2,4,34,34,159,2,5,34,34,159,2,6,34, 34,34,159,2,3,34,34,159,2,4,34,34,159,2,5,34,34,159,2,6,34,
34,16,0,159,34,20,102,159,34,16,1,20,24,65,98,101,103,105,110,16,0, 34,16,0,159,34,20,102,159,34,16,1,20,24,65,98,101,103,105,110,16,0,
83,158,40,20,99,137,69,35,37,98,117,105,108,116,105,110,29,11,11,10,10, 83,158,40,20,99,137,69,35,37,98,117,105,108,116,105,110,29,11,11,10,10,

View File

@ -369,7 +369,6 @@ Scheme_Env *scheme_basic_env()
make_init_env(); make_init_env();
env = scheme_make_empty_env(); env = scheme_make_empty_env();
scheme_require_from_original_env(env, 1); /* Need kernel syntax... */
scheme_set_param(scheme_current_config(), MZCONFIG_ENV, scheme_set_param(scheme_current_config(), MZCONFIG_ENV,
(Scheme_Object *)env); (Scheme_Object *)env);

View File

@ -9093,7 +9093,8 @@ expand_stx_to_top_form(int argc, Scheme_Object **argv)
} }
static Scheme_Object *do_eval_string_all(const char *str, Scheme_Env *env, int cont, int w_prompt) static Scheme_Object *do_eval_string_all(const char *str, Scheme_Env *env, int cont, int w_prompt)
/* cont == -1 => single result /* cont == -2 => module (no result)
cont == -1 => single result
cont == 1 -> multiple result ok cont == 1 -> multiple result ok
cont == 2 -> multiple result ok, use current_print to show results */ cont == 2 -> multiple result ok, use current_print to show results */
{ {
@ -9102,6 +9103,22 @@ static Scheme_Object *do_eval_string_all(const char *str, Scheme_Env *env, int c
port = scheme_make_byte_string_input_port(str); port = scheme_make_byte_string_input_port(str);
do { do {
expr = scheme_read_syntax(port, scheme_false); expr = scheme_read_syntax(port, scheme_false);
if (cont == -2) {
if (SCHEME_STXP(expr)) {
Scheme_Object *m;
m = SCHEME_STX_VAL(expr);
if (SCHEME_PAIRP(m)) {
m = scheme_make_pair(scheme_datum_to_syntax(module_symbol,
SCHEME_CAR(m),
scheme_sys_wraps(NULL),
0, 0),
SCHEME_CDR(m));
expr = scheme_datum_to_syntax(m, expr, expr, 0, 0);
}
}
}
if (SAME_OBJ(expr, scheme_eof)) if (SAME_OBJ(expr, scheme_eof))
cont = 0; cont = 0;
else if (cont < 0) { else if (cont < 0) {
@ -9153,6 +9170,11 @@ Scheme_Object *scheme_eval_string(const char *str, Scheme_Env *env)
return do_eval_string_all(str, env, -1, 0); return do_eval_string_all(str, env, -1, 0);
} }
Scheme_Object *scheme_eval_module_string(const char *str, Scheme_Env *env)
{
return do_eval_string_all(str, env, -2, 0);
}
Scheme_Object *scheme_eval_string_multi(const char *str, Scheme_Env *env) Scheme_Object *scheme_eval_string_multi(const char *str, Scheme_Env *env)
{ {
return do_eval_string_all(str, env, 0, 0); return do_eval_string_all(str, env, 0, 0);
@ -9173,6 +9195,28 @@ Scheme_Object *scheme_eval_string_multi_with_prompt(const char *str, Scheme_Env
return do_eval_string_all(str, env, 0, 1); return do_eval_string_all(str, env, 0, 1);
} }
void scheme_init_collection_paths(Scheme_Env *global_env, Scheme_Object *extra_dirs)
{
mz_jmp_buf * volatile save, newbuf;
Scheme_Thread * volatile p;
p = scheme_get_current_thread();
save = p->error_buf;
p->error_buf = &newbuf;
if (!scheme_setjmp(newbuf)) {
Scheme_Object *clcp, *flcp, *a[1];
clcp = scheme_builtin_value("current-library-collection-paths");
flcp = scheme_builtin_value("find-library-collection-paths");
if (clcp && flcp) {
a[0] = extra_dirs;
a[0] = _scheme_apply(flcp, 1, a);
_scheme_apply(clcp, 1, a);
}
}
p->error_buf = save;
}
static Scheme_Object *allow_set_undefined(int argc, Scheme_Object **argv) static Scheme_Object *allow_set_undefined(int argc, Scheme_Object **argv)
{ {
return scheme_param_config("compile-allow-set!-undefined", return scheme_param_config("compile-allow-set!-undefined",

View File

@ -642,17 +642,6 @@ int scheme_is_kernel_modname(Scheme_Object *modname)
return SAME_OBJ(modname, kernel_modname); return SAME_OBJ(modname, kernel_modname);
} }
void scheme_require_from_original_env(Scheme_Env *env, int syntax_only)
{
Scheme_Object *rn, *mod_sym;
scheme_prepare_env_renames(env, mzMOD_RENAME_TOPLEVEL);
rn = scheme_get_module_rename_from_set(env->rename_set, scheme_make_integer(0), 1);
mod_sym = scheme_intern_symbol("module");
scheme_extend_module_rename(rn, kernel_modidx, mod_sym, mod_sym, kernel_modidx, mod_sym, 0, NULL, NULL, 0);
}
Scheme_Object *scheme_sys_wraps(Scheme_Comp_Env *env) Scheme_Object *scheme_sys_wraps(Scheme_Comp_Env *env)
{ {
Scheme_Object *rn, *w; Scheme_Object *rn, *w;
@ -3936,10 +3925,7 @@ Scheme_Object *scheme_builtin_value(const char *name)
if (v) if (v)
return v; return v;
/* FIXME... */ return NULL;
/* Last resort: 'mzscheme */
a[0] = scheme_intern_symbol("mzscheme");
return _dynamic_require(2, a, initial_modules_env, 0, 0, 0, 0, 0, -1);
} }
Scheme_Module *scheme_extract_compiled_module(Scheme_Object *o) Scheme_Module *scheme_extract_compiled_module(Scheme_Object *o)

View File

@ -88,6 +88,24 @@ void scheme_set_stack_base(void *base, int no_auto_statics)
use_registered_statics = no_auto_statics; use_registered_statics = no_auto_statics;
} }
int scheme_setup(int no_auto_statics, Scheme_Main _main, int argc, char **argv)
{
void *start_addr = &start_addr;
#ifdef MZ_PRECISE_GC
start_addr = &__gc_var_stack__;
#endif
scheme_set_stack_base(start_addr, no_auto_statics);
#ifdef MZ_PRECISE_GC
/* Trick xform conversion to keep start_addr: */
start_addr = start_addr;
#endif
return _main(scheme_basic_env(), argc, argv);
}
void scheme_set_stack_bounds(void *base, void *deepest, int no_auto_statics) void scheme_set_stack_bounds(void *base, void *deepest, int no_auto_statics)
{ {
scheme_set_stack_base(base, no_auto_statics); scheme_set_stack_base(base, no_auto_statics);

View File

@ -264,6 +264,7 @@ MZ_EXTERN Scheme_Object *scheme_eval_string_all(const char *str, Scheme_Env *env
MZ_EXTERN Scheme_Object *scheme_eval_string_with_prompt(const char *str, Scheme_Env *env); MZ_EXTERN Scheme_Object *scheme_eval_string_with_prompt(const char *str, Scheme_Env *env);
MZ_EXTERN Scheme_Object *scheme_eval_string_multi_with_prompt(const char *str, Scheme_Env *env); MZ_EXTERN Scheme_Object *scheme_eval_string_multi_with_prompt(const char *str, Scheme_Env *env);
MZ_EXTERN Scheme_Object *scheme_eval_string_all_with_prompt(const char *str, Scheme_Env *env, int all); MZ_EXTERN Scheme_Object *scheme_eval_string_all_with_prompt(const char *str, Scheme_Env *env, int all);
MZ_EXTERN Scheme_Object *scheme_eval_module_string(const char *str, Scheme_Env *env);
MZ_EXTERN Scheme_Object *_scheme_apply_known_prim_closure(Scheme_Object *rator, int argc, MZ_EXTERN Scheme_Object *_scheme_apply_known_prim_closure(Scheme_Object *rator, int argc,
Scheme_Object **argv); Scheme_Object **argv);

View File

@ -215,6 +215,7 @@ Scheme_Object *(*scheme_eval_string_all)(const char *str, Scheme_Env *env, int a
Scheme_Object *(*scheme_eval_string_with_prompt)(const char *str, Scheme_Env *env); Scheme_Object *(*scheme_eval_string_with_prompt)(const char *str, Scheme_Env *env);
Scheme_Object *(*scheme_eval_string_multi_with_prompt)(const char *str, Scheme_Env *env); Scheme_Object *(*scheme_eval_string_multi_with_prompt)(const char *str, Scheme_Env *env);
Scheme_Object *(*scheme_eval_string_all_with_prompt)(const char *str, Scheme_Env *env, int all); Scheme_Object *(*scheme_eval_string_all_with_prompt)(const char *str, Scheme_Env *env, int all);
Scheme_Object *(*scheme_eval_module_string)(const char *str, Scheme_Env *env);
Scheme_Object *(*_scheme_apply_known_prim_closure)(Scheme_Object *rator, int argc, Scheme_Object *(*_scheme_apply_known_prim_closure)(Scheme_Object *rator, int argc,
Scheme_Object **argv); Scheme_Object **argv);
Scheme_Object *(*_scheme_apply_known_prim_closure_multi)(Scheme_Object *rator, int argc, Scheme_Object *(*_scheme_apply_known_prim_closure_multi)(Scheme_Object *rator, int argc,

View File

@ -136,6 +136,7 @@
scheme_extension_table->scheme_eval_string_with_prompt = scheme_eval_string_with_prompt; scheme_extension_table->scheme_eval_string_with_prompt = scheme_eval_string_with_prompt;
scheme_extension_table->scheme_eval_string_multi_with_prompt = scheme_eval_string_multi_with_prompt; scheme_extension_table->scheme_eval_string_multi_with_prompt = scheme_eval_string_multi_with_prompt;
scheme_extension_table->scheme_eval_string_all_with_prompt = scheme_eval_string_all_with_prompt; scheme_extension_table->scheme_eval_string_all_with_prompt = scheme_eval_string_all_with_prompt;
scheme_extension_table->scheme_eval_module_string = scheme_eval_module_string;
scheme_extension_table->_scheme_apply_known_prim_closure = _scheme_apply_known_prim_closure; scheme_extension_table->_scheme_apply_known_prim_closure = _scheme_apply_known_prim_closure;
scheme_extension_table->_scheme_apply_known_prim_closure_multi = _scheme_apply_known_prim_closure_multi; scheme_extension_table->_scheme_apply_known_prim_closure_multi = _scheme_apply_known_prim_closure_multi;
scheme_extension_table->_scheme_apply_prim_closure = _scheme_apply_prim_closure; scheme_extension_table->_scheme_apply_prim_closure = _scheme_apply_prim_closure;

View File

@ -136,6 +136,7 @@
#define scheme_eval_string_with_prompt (scheme_extension_table->scheme_eval_string_with_prompt) #define scheme_eval_string_with_prompt (scheme_extension_table->scheme_eval_string_with_prompt)
#define scheme_eval_string_multi_with_prompt (scheme_extension_table->scheme_eval_string_multi_with_prompt) #define scheme_eval_string_multi_with_prompt (scheme_extension_table->scheme_eval_string_multi_with_prompt)
#define scheme_eval_string_all_with_prompt (scheme_extension_table->scheme_eval_string_all_with_prompt) #define scheme_eval_string_all_with_prompt (scheme_extension_table->scheme_eval_string_all_with_prompt)
#define scheme_eval_module_string (scheme_extension_table->scheme_eval_module_string)
#define _scheme_apply_known_prim_closure (scheme_extension_table->_scheme_apply_known_prim_closure) #define _scheme_apply_known_prim_closure (scheme_extension_table->_scheme_apply_known_prim_closure)
#define _scheme_apply_known_prim_closure_multi (scheme_extension_table->_scheme_apply_known_prim_closure_multi) #define _scheme_apply_known_prim_closure_multi (scheme_extension_table->_scheme_apply_known_prim_closure_multi)
#define _scheme_apply_prim_closure (scheme_extension_table->_scheme_apply_prim_closure) #define _scheme_apply_prim_closure (scheme_extension_table->_scheme_apply_prim_closure)

View File

@ -478,8 +478,6 @@ scheme_get_primitive_global(Scheme_Object *var, Scheme_Env *env,
void scheme_add_bucket_to_table(Scheme_Bucket_Table *table, Scheme_Bucket *b); void scheme_add_bucket_to_table(Scheme_Bucket_Table *table, Scheme_Bucket *b);
Scheme_Bucket *scheme_bucket_or_null_from_table(Scheme_Bucket_Table *table, const char *key, int add); Scheme_Bucket *scheme_bucket_or_null_from_table(Scheme_Bucket_Table *table, const char *key, int add);
void scheme_require_from_original_env(Scheme_Env *env, int syntax_only);
/*========================================================================*/ /*========================================================================*/
/* structs */ /* structs */
/*========================================================================*/ /*========================================================================*/

View File

@ -5,6 +5,8 @@
(define DIGS-PER-LINE 20) (define DIGS-PER-LINE 20)
(namespace-require ''#%kernel)
(let loop () (let loop ()
(let ([expr (read)]) (let ([expr (read)])
(unless (eof-object? expr) (unless (eof-object? expr)

View File

@ -366,21 +366,24 @@
"(and(file-exists? p)(found-exec p))))))" "(and(file-exists? p)(found-exec p))))))"
"((program libpath)(find-executable-path program libpath #f))" "((program libpath)(find-executable-path program libpath #f))"
"((program)(find-executable-path program #f #f))))" "((program)(find-executable-path program #f #f))))"
"(define(embedded-load start end)" "(define(embedded-load start end str)"
"(let*((s(if str"
" str"
"(let*((sp(find-system-path 'exec-file)) " "(let*((sp(find-system-path 'exec-file)) "
"(exe(find-executable-path sp #f))" "(exe(find-executable-path sp #f))"
"(start(or(string->number start) 0))" "(start(or(string->number start) 0))"
"(end(or(string->number end) 0))" "(end(or(string->number end) 0)))"
"(s(with-input-from-file exe " "(with-input-from-file exe "
"(lambda()" "(lambda()"
"(file-position(current-input-port) start)" "(file-position(current-input-port) start)"
"(read-bytes(max 0(- end start))))))" "(read-bytes(max 0(- end start))))))))"
"(p(open-input-bytes s)))" "(p(open-input-bytes s)))"
"(namespace-require ''#%kernel)"
"(let loop()" "(let loop()"
"(let((e(parameterize((read-accept-compiled #t))" "(let((e(parameterize((read-accept-compiled #t))"
"(read p))))" "(read p))))"
"(unless(eof-object? e)(eval e)(loop)))))))" "(unless(eof-object? e)"
"(eval e)"
"(loop)))))))"
); );
EVAL_ONE_STR( EVAL_ONE_STR(
"(module #%builtin '#%kernel" "(module #%builtin '#%kernel"

View File

@ -434,21 +434,24 @@
[(program) (find-executable-path program #f #f)])) [(program) (find-executable-path program #f #f)]))
;; used for the -k command-line argument: ;; used for the -k command-line argument:
(define (embedded-load start end) (define (embedded-load start end str)
(let* ([sp (find-system-path 'exec-file)] (let* ([s (if str
[exe (find-executable-path sp #f)] str
[start (or (string->number start) 0)] (let* ([sp (find-system-path 'exec-file)]
[end (or (string->number end) 0)] [exe (find-executable-path sp #f)]
[s (with-input-from-file exe [start (or (string->number start) 0)]
(lambda () [end (or (string->number end) 0)])
(file-position (current-input-port) start) (with-input-from-file exe
(read-bytes (max 0 (- end start)))))] (lambda ()
(file-position (current-input-port) start)
(read-bytes (max 0 (- end start)))))))]
[p (open-input-bytes s)]) [p (open-input-bytes s)])
(namespace-require ''#%kernel)
(let loop () (let loop ()
(let ([e (parameterize ([read-accept-compiled #t]) (let ([e (parameterize ([read-accept-compiled #t])
(read p))]) (read p))])
(unless (eof-object? e) (eval e) (loop))))))) (unless (eof-object? e)
(eval e)
(loop)))))))
;; ---------------------------------------- ;; ----------------------------------------
;; A module that collects all the built-in modules, ;; A module that collects all the built-in modules,

View File

@ -40,6 +40,13 @@
#ifndef XPMP_h #ifndef XPMP_h
#define XPMP_h #define XPMP_h
/* We don't want all those "deprecated" messages: */
#ifndef WX_KEEP_DEPRECATED_WARNINGS
# include <AvailabilityMacros.h>
# undef DEPRECATED_ATTRIBUTE
# define DEPRECATED_ATTRIBUTE /**/
#endif
#include "xpm34.h" #include "xpm34.h"
/* /*