diff --git a/pkgs/base/info.rkt b/pkgs/base/info.rkt index fbe980fcdd..f094655a3f 100644 --- a/pkgs/base/info.rkt +++ b/pkgs/base/info.rkt @@ -12,7 +12,7 @@ (define collection 'multi) -(define version "7.4.0.9") +(define version "7.4.0.10") (define deps `("racket-lib" ["racket" #:version ,version])) diff --git a/racket/src/cs/bootstrap/make-boot.rkt b/racket/src/cs/bootstrap/make-boot.rkt index 6e6c00c88c..ed09e24d50 100644 --- a/racket/src/cs/bootstrap/make-boot.rkt +++ b/racket/src/cs/bootstrap/make-boot.rkt @@ -12,7 +12,8 @@ "r6rs-readtable.rkt" "scheme-readtable.rkt" "parse-makefile.rkt" - "config.rkt") + "config.rkt" + "strip.rkt") ;; Set `SCHEME_SRC` and `MACH` to specify the ChezScheme source ;; directory and the target machine. Set the `MAKE_BOOT_FOR_CROSS` @@ -183,7 +184,7 @@ (lambda (stx) (syntax-case stx () [("noexpand" form) - (orig-eval ($uncprep (syntax-e #'form)))] + (orig-eval (strip-$app (strip-$primitive ($uncprep (syntax-e #'form)))))] [_ (orig-eval stx)]))) (call-with-expressions @@ -206,9 +207,11 @@ [(eval-when (compile) . rest) #'(eval-when (compile eval load) . rest)] [_ stx]))))) - (define r (if (struct? ex) - ($uncprep ex) - ex)) + (define r (strip-$app + (strip-$primitive + (if (struct? ex) + ($uncprep ex) + ex)))) (e r)))) (status "Load cmacros using expander") (load-ss (build-path scheme-dir "s/cmacros.ss")) diff --git a/racket/src/cs/bootstrap/scheme-lang.rkt b/racket/src/cs/bootstrap/scheme-lang.rkt index e13dab9c55..da70d851d1 100644 --- a/racket/src/cs/bootstrap/scheme-lang.rkt +++ b/racket/src/cs/bootstrap/scheme-lang.rkt @@ -52,6 +52,7 @@ $record? $primitive $unbound-object? + $app (rename-out [get-$unbound-object $unbound-object]) meta-cond constant @@ -598,6 +599,9 @@ [(_ name) name] [(_ opt name) name])) +(define ($app proc . args) + (apply proc args)) + (define tc (make-hasheq)) (define ($tc) tc) (define ($thread-tc tc) tc) diff --git a/racket/src/cs/bootstrap/strip.rkt b/racket/src/cs/bootstrap/strip.rkt new file mode 100644 index 0000000000..22dd35cee2 --- /dev/null +++ b/racket/src/cs/bootstrap/strip.rkt @@ -0,0 +1,30 @@ +#lang racket/base + +(provide strip-$primitive + strip-$app) + +(define (strip-$primitive e) + (cond + [(and (pair? e) + (eq? (car e) 'quote)) + e] + [(and (pair? e) + (eq? (car e) '$primitive)) + (if (pair? (cddr e)) + (caddr e) + (cadr e))] + [(list? e) + (map strip-$primitive e)] + [else e])) + +(define (strip-$app e) + (cond + [(and (pair? e) + (eq? (car e) 'quote)) + e] + [(and (pair? e) + (eq? (car e) '$app)) + (strip-$app (cdr e))] + [(list? e) + (map strip-$app e)] + [else e])) diff --git a/racket/src/cs/compile-file.ss b/racket/src/cs/compile-file.ss index d53a53d17b..9b270608ed 100644 --- a/racket/src/cs/compile-file.ss +++ b/racket/src/cs/compile-file.ss @@ -2,7 +2,7 @@ ;; Check to make we're using a build of Chez Scheme ;; that has all the features we need. (define-values (need-maj need-min need-sub need-dev) - (values 9 5 3 1)) + (values 9 5 3 2)) (unless (guard (x [else #f]) (eval 'scheme-fork-version-number)) (error 'compile-file diff --git a/racket/src/cs/rumble/procedure.ss b/racket/src/cs/rumble/procedure.ss index c25fe01bb1..0fcc88daca 100644 --- a/racket/src/cs/rumble/procedure.ss +++ b/racket/src/cs/rumble/procedure.ss @@ -58,7 +58,7 @@ (syntax-case stx () [(_ rator rand ...) (with-syntax ([n-args (length #'(rand ...))]) - #'((extract-procedure rator n-args) rand ...))])) + #'(#3%$app (extract-procedure rator n-args) rand ...))])) (define |#%call-with-values| (|#%name| diff --git a/racket/src/racket/src/schvers.h b/racket/src/racket/src/schvers.h index b88be9570d..60aeba9489 100644 --- a/racket/src/racket/src/schvers.h +++ b/racket/src/racket/src/schvers.h @@ -16,7 +16,7 @@ #define MZSCHEME_VERSION_X 7 #define MZSCHEME_VERSION_Y 4 #define MZSCHEME_VERSION_Z 0 -#define MZSCHEME_VERSION_W 9 +#define MZSCHEME_VERSION_W 10 /* A level of indirection makes `#` work as needed: */ #define AS_a_STR_HELPER(x) #x