From 543f586a97dd8443e33b61536820cad4ec484cc3 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 19 Aug 2009 16:40:33 +0000 Subject: [PATCH] orig paramz to planet resolver (v4.2.1.7) svn: r15783 --- collects/planet/resolver.ss | 16 +- collects/scribblings/inside/hooks.scrbl | 11 +- collects/scribblings/inside/overview.scrbl | 9 +- doc/release-notes/mzscheme/HISTORY.txt | 4 + src/mzscheme/cmdline.inc | 2 + src/mzscheme/include/scheme.h | 2 + src/mzscheme/src/cstartup.inc | 447 +++++++++++---------- src/mzscheme/src/env.c | 11 + src/mzscheme/src/eval.c | 2 + src/mzscheme/src/schpriv.h | 4 +- src/mzscheme/src/schvers.h | 4 +- src/mzscheme/src/startup.inc | 25 +- src/mzscheme/src/startup.ss | 35 +- src/mzscheme/src/thread.c | 52 ++- 14 files changed, 371 insertions(+), 253 deletions(-) diff --git a/collects/planet/resolver.ss b/collects/planet/resolver.ss index f00c9bf58e..20b75439a2 100644 --- a/collects/planet/resolver.ss +++ b/collects/planet/resolver.ss @@ -162,12 +162,16 @@ subdirectory. #lang mzscheme +;; This `resolver' no longer fits the normal protocol for a +;; module name resolver, because it accepts an extra argument in +;; the second and third cases. The extra argument is a parameterization +;; to use for installation actions. (define resolver (case-lambda [(name) (void)] - [(spec module-path stx) - (resolver spec module-path stx #t)] - [(spec module-path stx load?) + [(spec module-path stx orig-paramz) + (resolver spec module-path stx #t orig-paramz)] + [(spec module-path stx load? orig-paramz) ;; ensure these directories exist (make-directory* (PLANET-DIR)) (make-directory* (CACHE-DIR)) @@ -175,7 +179,8 @@ subdirectory. (planet-resolve spec (current-module-declare-name) ;; seems more reliable than module-path in v3.99 stx - load?)])) + load? + orig-paramz)])) (require mzlib/match mzlib/file @@ -321,7 +326,8 @@ subdirectory. ;; planet-resolve : PLANET-REQUEST (resolved-module-path | #f) syntax[PLANET-REQUEST] -> symbol ;; resolves the given request. Returns a name corresponding to the module in ;; the correct environment -(define (planet-resolve spec rmp stx load?) +(define (planet-resolve spec rmp stx load? orig-paramz) + ;; Need to send `orig-paramz' on to the right place (let-values ([(path pkg) (get-planet-module-path/pkg spec rmp stx)]) (when load? (add-pkg-to-diamond-registry! pkg stx)) (do-require path (pkg-path pkg) rmp stx load?))) diff --git a/collects/scribblings/inside/hooks.scrbl b/collects/scribblings/inside/hooks.scrbl index a9360cc328..52b38198d4 100644 --- a/collects/scribblings/inside/hooks.scrbl +++ b/collects/scribblings/inside/hooks.scrbl @@ -65,7 +65,9 @@ Sets the path to be returned by @scheme[(find-system-path Initializes the @scheme[current-library-collection-paths] parameter using @scheme[find-library-collection-paths]. The @var{pre_extra_paths} and @var{post_extra-paths} arguments are -propagated to @scheme[find-library-collection-paths].} +propagated to @scheme[find-library-collection-paths]. + +The function calls @cpp{scheme_seal_parameters} automatically.} @function[(void scheme_init_collection_paths [Scheme_Env* env] @@ -73,3 +75,10 @@ propagated to @scheme[find-library-collection-paths].} Like @cpp{scheme_init_collection_paths_post}, but with @scheme[null] as the last argument.} + + +@function[(void scheme_seal_parameters)]{ + +Takes a snapshot of the current values of built-in parameters. These +values are used for privileged actions, such as installing a @|PLaneT| +package.} diff --git a/collects/scribblings/inside/overview.scrbl b/collects/scribblings/inside/overview.scrbl index 4e877ba4a5..ccf65c5d32 100644 --- a/collects/scribblings/inside/overview.scrbl +++ b/collects/scribblings/inside/overview.scrbl @@ -326,7 +326,14 @@ To embed PLT Scheme CGC in a program, follow these steps: @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. + + If the embedding program configures built-in parameters in a way + that should be considered part of the default configuration, then + call @cpp{scheme_seal_parameters} afterward. The snapshot of + parameter values taken by @cpp{scheme_seal_parameters} is used for + certain privileged operations, such as installing a @|PLaneT| + package.} @item{Compile the program and link it with the MzScheme libraries.} diff --git a/doc/release-notes/mzscheme/HISTORY.txt b/doc/release-notes/mzscheme/HISTORY.txt index 7c56db5de7..4839195ec1 100644 --- a/doc/release-notes/mzscheme/HISTORY.txt +++ b/doc/release-notes/mzscheme/HISTORY.txt @@ -1,3 +1,7 @@ +Version 4.2.1.7 +Inside: embedding applications should call scheme_seal_parameters + after initializing parameter values (currently used by Planet) + Version 4.2.1.6 Added print-syntax-width diff --git a/src/mzscheme/cmdline.inc b/src/mzscheme/cmdline.inc index 5bf537bff0..2c4e4dfe1d 100644 --- a/src/mzscheme/cmdline.inc +++ b/src/mzscheme/cmdline.inc @@ -1074,6 +1074,8 @@ static int run_from_cmd_line(int argc, char *_argv[], } #endif /* NO_FILE_SYSTEM_UTILS */ + scheme_seal_parameters(); + fa_a = (FinishArgsAtoms *)scheme_malloc_atomic(sizeof(FinishArgsAtoms)); fa = (FinishArgs *)scheme_malloc(sizeof(FinishArgs)); fa->a = fa_a; diff --git a/src/mzscheme/include/scheme.h b/src/mzscheme/include/scheme.h index 05fc0493f0..e2a71aa7e0 100644 --- a/src/mzscheme/include/scheme.h +++ b/src/mzscheme/include/scheme.h @@ -1746,6 +1746,8 @@ 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); MZ_EXTERN void scheme_init_collection_paths_post(Scheme_Env *global_env, Scheme_Object *extra_dirs, Scheme_Object *extra_post_dirs); +MZ_EXTERN void scheme_seal_parameters(); + /* Initialization */ MZ_EXTERN Scheme_Env *scheme_basic_env(void); MZ_EXTERN void scheme_reset_overflow(void); diff --git a/src/mzscheme/src/cstartup.inc b/src/mzscheme/src/cstartup.inc index d6661a9ee9..ac9f7a7098 100644 --- a/src/mzscheme/src/cstartup.inc +++ b/src/mzscheme/src/cstartup.inc @@ -1,12 +1,12 @@ { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,49,46,54,50,0,0,0,1,0,0,3,0,12,0, -19,0,23,0,28,0,41,0,44,0,49,0,56,0,63,0,67,0,72,0,78, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,49,46,55,50,0,0,0,1,0,0,3,0,12,0, +19,0,32,0,36,0,41,0,44,0,49,0,56,0,63,0,67,0,72,0,78, 0,92,0,106,0,109,0,115,0,119,0,121,0,132,0,134,0,148,0,155,0, 177,0,179,0,193,0,1,1,27,1,35,1,43,1,53,1,89,1,122,1,155, 1,214,1,24,2,102,2,168,2,173,2,193,2,84,3,104,3,155,3,221,3, 106,4,248,4,44,5,67,5,146,5,0,0,93,7,0,0,29,11,11,68,104, -101,114,101,45,115,116,120,66,100,101,102,105,110,101,63,97,110,100,64,108,101, -116,42,72,112,97,114,97,109,101,116,101,114,105,122,101,62,111,114,64,99,111, +101,114,101,45,115,116,120,66,100,101,102,105,110,101,72,112,97,114,97,109,101, +116,101,114,105,122,101,63,97,110,100,64,108,101,116,42,62,111,114,64,99,111, 110,100,66,108,101,116,114,101,99,66,117,110,108,101,115,115,63,108,101,116,64, 119,104,101,110,65,113,117,111,116,101,29,94,2,13,68,35,37,107,101,114,110, 101,108,11,29,94,2,13,68,35,37,112,97,114,97,109,122,11,62,105,102,65, @@ -14,29 +14,29 @@ 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,111,110, 45,107,101,121,61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,115,97, -35,11,8,171,244,95,159,2,15,35,35,159,2,14,35,35,159,2,14,35,35, -16,20,2,3,2,1,2,7,2,1,2,4,2,1,2,5,2,1,2,8,2, -1,2,9,2,1,2,6,2,1,2,10,2,1,2,11,2,1,2,12,2,1, -97,36,11,8,171,244,93,159,2,14,35,36,16,2,2,2,161,2,1,36,2, -2,2,1,2,2,96,11,11,8,171,244,16,0,96,37,11,8,171,244,16,0, +35,11,8,170,244,95,159,2,15,35,35,159,2,14,35,35,159,2,14,35,35, +16,20,2,3,2,1,2,4,2,1,2,7,2,1,2,5,2,1,2,6,2, +1,2,9,2,1,2,8,2,1,2,10,2,1,2,11,2,1,2,12,2,1, +97,36,11,8,170,244,93,159,2,14,35,36,16,2,2,2,161,2,1,36,2, +2,2,1,2,2,96,11,11,8,170,244,16,0,96,37,11,8,170,244,16,0, 13,16,4,35,29,11,11,2,1,11,18,16,2,99,64,104,101,114,101,8,31, -8,30,8,29,8,28,8,27,93,8,224,50,61,0,0,95,9,8,224,50,61, +8,30,8,29,8,28,8,27,93,8,224,49,61,0,0,95,9,8,224,49,61, 0,0,2,1,27,248,22,137,4,195,249,22,130,4,80,158,38,35,251,22,77, 2,16,248,22,92,199,12,249,22,67,2,17,248,22,94,201,27,248,22,137,4, 195,249,22,130,4,80,158,38,35,251,22,77,2,16,248,22,92,199,249,22,67, 2,17,248,22,94,201,12,27,248,22,69,248,22,137,4,196,28,248,22,75,193, 20,15,159,36,35,36,28,248,22,75,248,22,69,194,248,22,68,193,249,22,130, -4,80,158,38,35,251,22,77,2,16,248,22,68,199,249,22,67,2,4,248,22, +4,80,158,38,35,251,22,77,2,16,248,22,68,199,249,22,67,2,5,248,22, 69,201,11,18,16,2,101,10,8,31,8,30,8,29,8,28,8,27,16,4,11, -11,2,18,3,1,8,101,110,118,49,48,51,49,56,16,4,11,11,2,19,3, -1,8,101,110,118,49,48,51,49,57,93,8,224,51,61,0,0,95,9,8,224, -51,61,0,0,2,1,27,248,22,69,248,22,137,4,196,28,248,22,75,193,20, +11,2,18,3,1,8,101,110,118,49,48,51,50,48,16,4,11,11,2,19,3, +1,8,101,110,118,49,48,51,50,49,93,8,224,50,61,0,0,95,9,8,224, +50,61,0,0,2,1,27,248,22,69,248,22,137,4,196,28,248,22,75,193,20, 15,159,36,35,36,28,248,22,75,248,22,69,194,248,22,68,193,249,22,130,4, 80,158,38,35,250,22,77,2,20,248,22,77,249,22,77,248,22,77,2,21,248, 22,68,201,251,22,77,2,16,2,21,2,21,249,22,67,2,7,248,22,69,204, 18,16,2,101,11,8,31,8,30,8,29,8,28,8,27,16,4,11,11,2,18, -3,1,8,101,110,118,49,48,51,50,49,16,4,11,11,2,19,3,1,8,101, -110,118,49,48,51,50,50,93,8,224,52,61,0,0,95,9,8,224,52,61,0, +3,1,8,101,110,118,49,48,51,50,51,16,4,11,11,2,19,3,1,8,101, +110,118,49,48,51,50,52,93,8,224,51,61,0,0,95,9,8,224,51,61,0, 0,2,1,248,22,137,4,193,27,248,22,137,4,194,249,22,67,248,22,77,248, 22,68,196,248,22,69,195,27,248,22,69,248,22,137,4,23,197,1,249,22,130, 4,80,158,38,35,28,248,22,53,248,22,131,4,248,22,68,23,198,2,27,249, @@ -51,7 +51,7 @@ 222,33,42,248,22,137,4,248,22,68,201,248,22,69,198,27,248,22,69,248,22, 137,4,196,27,248,22,137,4,248,22,68,195,249,22,130,4,80,158,39,35,28, 248,22,75,195,250,22,78,2,20,9,248,22,69,199,250,22,77,2,11,248,22, -77,248,22,68,199,250,22,78,2,5,248,22,69,201,248,22,69,202,27,248,22, +77,248,22,68,199,250,22,78,2,6,248,22,69,201,248,22,69,202,27,248,22, 69,248,22,137,4,23,197,1,27,249,22,1,22,81,249,22,2,22,137,4,248, 22,137,4,248,22,68,199,249,22,130,4,80,158,39,35,251,22,77,1,22,119, 105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107, @@ -66,9 +66,9 @@ 69,202,251,22,77,2,16,28,249,22,167,8,248,22,131,4,248,22,68,200,64, 101,108,115,101,10,248,22,68,197,250,22,78,2,20,9,248,22,69,200,249,22, 67,2,8,248,22,69,202,100,8,31,8,30,8,29,8,28,8,27,16,4,11, -11,2,18,3,1,8,101,110,118,49,48,51,52,52,16,4,11,11,2,19,3, -1,8,101,110,118,49,48,51,52,53,93,8,224,53,61,0,0,18,16,2,158, -94,10,64,118,111,105,100,8,47,95,9,8,224,53,61,0,0,2,1,27,248, +11,2,18,3,1,8,101,110,118,49,48,51,52,54,16,4,11,11,2,19,3, +1,8,101,110,118,49,48,51,52,55,93,8,224,52,61,0,0,18,16,2,158, +94,10,64,118,111,105,100,8,47,95,9,8,224,52,61,0,0,2,1,27,248, 22,69,248,22,137,4,196,249,22,130,4,80,158,38,35,28,248,22,53,248,22, 131,4,248,22,68,197,250,22,77,2,26,248,22,77,248,22,68,199,248,22,92, 198,27,248,22,131,4,248,22,68,197,250,22,77,2,26,248,22,77,248,22,68, @@ -83,14 +83,14 @@ 159,35,35,35,35,20,103,159,35,16,0,16,1,33,32,10,16,5,2,10,89, 162,8,44,36,52,9,223,0,33,33,35,20,103,159,35,16,1,2,2,16,0, 11,16,5,2,12,89,162,8,44,36,52,9,223,0,33,34,35,20,103,159,35, -16,1,2,2,16,0,11,16,5,2,4,89,162,8,44,36,52,9,223,0,33, +16,1,2,2,16,0,11,16,5,2,5,89,162,8,44,36,52,9,223,0,33, 35,35,20,103,159,35,16,1,2,2,16,1,33,36,11,16,5,2,7,89,162, 8,44,36,55,9,223,0,33,37,35,20,103,159,35,16,1,2,2,16,1,33, 38,11,16,5,2,11,89,162,8,44,36,57,9,223,0,33,41,35,20,103,159, 35,16,1,2,2,16,0,11,16,5,2,9,89,162,8,44,36,52,9,223,0, -33,43,35,20,103,159,35,16,1,2,2,16,0,11,16,5,2,5,89,162,8, +33,43,35,20,103,159,35,16,1,2,2,16,0,11,16,5,2,6,89,162,8, 44,36,53,9,223,0,33,44,35,20,103,159,35,16,1,2,2,16,0,11,16, -5,2,6,89,162,8,44,36,54,9,223,0,33,45,35,20,103,159,35,16,1, +5,2,4,89,162,8,44,36,54,9,223,0,33,45,35,20,103,159,35,16,1, 2,2,16,0,11,16,5,2,8,89,162,8,44,36,57,9,223,0,33,46,35, 20,103,159,35,16,1,2,2,16,1,33,48,11,16,5,2,3,89,162,8,44, 36,53,9,223,0,33,49,35,20,103,159,35,16,1,2,2,16,0,11,16,0, @@ -98,7 +98,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 2006); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,49,46,54,59,0,0,0,1,0,0,13,0,18,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,49,46,55,59,0,0,0,1,0,0,13,0,18,0, 35,0,50,0,68,0,84,0,94,0,112,0,132,0,148,0,166,0,197,0,226, 0,248,0,6,1,12,1,26,1,31,1,41,1,49,1,77,1,109,1,154,1, 199,1,223,1,6,2,8,2,65,2,155,3,196,3,31,5,135,5,239,5,100, @@ -340,12 +340,12 @@ EVAL_ONE_SIZED_STR((char *)expr, 5006); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,49,46,54,8,0,0,0,1,0,0,6,0,19,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,49,46,55,8,0,0,0,1,0,0,6,0,19,0, 34,0,48,0,62,0,76,0,115,0,0,0,6,1,0,0,65,113,117,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,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,97,35,11,8,177,246,98,159,2,2,35,35,159, +37,107,101,114,110,101,108,11,97,35,11,8,176,246,98,159,2,2,35,35,159, 2,3,35,35,159,2,4,35,35,159,2,5,35,35,159,2,6,35,35,159,2, 6,35,35,16,0,159,35,20,103,159,35,16,1,11,16,0,83,158,41,20,100, 144,69,35,37,98,117,105,108,116,105,110,29,11,11,11,11,11,18,96,11,42, @@ -358,200 +358,205 @@ EVAL_ONE_SIZED_STR((char *)expr, 299); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,49,46,54,52,0,0,0,1,0,0,11,0,38,0, -44,0,57,0,71,0,93,0,119,0,131,0,149,0,169,0,181,0,197,0,220, -0,0,1,5,1,10,1,15,1,24,1,29,1,60,1,64,1,72,1,81,1, -89,1,192,1,237,1,1,2,30,2,61,2,117,2,127,2,174,2,184,2,191, -2,78,4,91,4,110,4,229,4,241,4,119,5,133,5,255,5,5,6,19,6, -46,6,131,6,133,6,199,6,154,12,213,12,247,12,0,0,128,15,0,0,70, -100,108,108,45,115,117,102,102,105,120,1,25,100,101,102,97,117,108,116,45,108, -111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,65,113,117,111,116, -101,29,94,2,3,67,35,37,117,116,105,108,115,11,29,94,2,3,68,35,37, -112,97,114,97,109,122,11,1,20,100,101,102,97,117,108,116,45,114,101,97,100, -101,114,45,103,117,97,114,100,1,24,45,109,111,100,117,108,101,45,104,97,115, -104,45,116,97,98,108,101,45,116,97,98,108,101,71,45,112,97,116,104,45,99, -97,99,104,101,77,45,108,111,97,100,105,110,103,45,102,105,108,101,110,97,109, -101,79,45,108,111,97,100,105,110,103,45,112,114,111,109,112,116,45,116,97,103, -71,45,112,114,101,118,45,114,101,108,116,111,75,45,112,114,101,118,45,114,101, -108,116,111,45,100,105,114,1,21,115,112,108,105,116,45,114,101,108,97,116,105, -118,101,45,115,116,114,105,110,103,1,34,109,97,107,101,45,115,116,97,110,100, -97,114,100,45,109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108, -118,101,114,64,98,111,111,116,64,115,97,109,101,5,3,46,122,111,6,6,6, -110,97,116,105,118,101,64,108,111,111,112,1,29,115,116,97,110,100,97,114,100, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,49,46,55,56,0,0,0,1,0,0,11,0,38,0, +44,0,57,0,66,0,73,0,95,0,117,0,143,0,155,0,173,0,193,0,205, +0,221,0,244,0,0,1,31,1,38,1,43,1,48,1,53,1,58,1,67,1, +72,1,76,1,84,1,93,1,101,1,204,1,249,1,13,2,42,2,73,2,129, +2,139,2,186,2,196,2,203,2,90,4,103,4,122,4,241,4,253,4,131,5, +145,5,11,6,17,6,31,6,58,6,143,6,145,6,211,6,157,12,207,12,228, +12,0,0,207,15,0,0,70,100,108,108,45,115,117,102,102,105,120,1,25,100, +101,102,97,117,108,116,45,108,111,97,100,47,117,115,101,45,99,111,109,112,105, +108,101,100,65,113,117,111,116,101,29,94,2,3,67,35,37,117,116,105,108,115, +11,68,35,37,112,97,114,97,109,122,29,94,2,3,2,5,11,1,20,112,97, +114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,1,20,100, +101,102,97,117,108,116,45,114,101,97,100,101,114,45,103,117,97,114,100,1,24, +45,109,111,100,117,108,101,45,104,97,115,104,45,116,97,98,108,101,45,116,97, +98,108,101,71,45,112,97,116,104,45,99,97,99,104,101,77,45,108,111,97,100, +105,110,103,45,102,105,108,101,110,97,109,101,79,45,108,111,97,100,105,110,103, +45,112,114,111,109,112,116,45,116,97,103,71,45,112,114,101,118,45,114,101,108, +116,111,75,45,112,114,101,118,45,114,101,108,116,111,45,100,105,114,1,21,115, +112,108,105,116,45,114,101,108,97,116,105,118,101,45,115,116,114,105,110,103,71, +111,114,105,103,45,112,97,114,97,109,122,1,29,115,116,97,110,100,97,114,100, 45,109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114, -63,108,105,98,67,105,103,110,111,114,101,100,249,22,14,195,80,159,37,45,37, -249,80,159,37,48,36,195,10,27,28,23,195,2,28,249,22,167,8,23,197,2, -80,158,38,46,87,94,23,195,1,80,158,36,47,27,248,22,176,4,23,197,2, -28,248,22,147,13,23,194,2,91,159,38,11,90,161,38,35,11,248,22,168,13, -23,197,1,87,95,83,160,37,11,80,158,40,46,198,83,160,37,11,80,158,40, -47,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,130,5,28, -192,192,247,22,188,13,20,14,159,80,158,35,39,250,80,158,38,40,249,22,27, -11,80,158,40,39,22,130,5,28,248,22,147,13,23,198,2,23,197,1,87,94, -23,197,1,247,22,188,13,247,194,250,22,165,13,23,197,1,23,199,1,249,80, -158,42,38,23,198,1,2,17,252,22,165,13,23,199,1,23,201,1,2,18,247, -22,182,7,249,80,158,44,38,23,200,1,80,159,44,35,37,87,94,23,194,1, -27,250,22,182,13,196,11,32,0,89,162,8,44,35,40,9,222,11,28,192,249, -22,67,195,194,11,27,252,22,165,13,23,200,1,23,202,1,2,18,247,22,182, -7,249,80,158,45,38,23,201,1,80,159,45,35,37,27,250,22,182,13,196,11, -32,0,89,162,8,44,35,40,9,222,11,28,192,249,22,67,195,194,11,249,247, -22,129,14,248,22,68,195,195,27,250,22,165,13,23,198,1,23,200,1,249,80, -158,43,38,23,199,1,2,17,27,250,22,182,13,196,11,32,0,89,162,8,44, -35,40,9,222,11,28,192,249,22,67,195,194,11,249,247,22,128,5,248,22,68, -195,195,249,247,22,128,5,194,195,87,94,28,248,80,158,36,37,23,195,2,12, -250,22,135,9,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101, -100,6,25,25,112,97,116,104,32,111,114,32,118,97,108,105,100,45,112,97,116, -104,32,115,116,114,105,110,103,23,197,2,91,159,41,11,90,161,36,35,11,28, -248,22,171,13,23,201,2,23,200,1,27,247,22,130,5,28,23,193,2,249,22, -172,13,23,203,1,23,195,1,200,90,161,38,36,11,248,22,168,13,23,194,2, -87,94,23,196,1,90,161,36,39,11,28,249,22,167,8,23,196,2,68,114,101, -108,97,116,105,118,101,87,94,23,194,1,2,16,23,194,1,90,161,36,40,11, -247,22,190,13,27,89,162,43,36,49,62,122,111,225,7,5,3,33,27,27,89, -162,43,36,51,9,225,8,6,4,33,28,27,249,22,5,89,162,8,44,36,46, -9,223,5,33,29,23,203,2,27,28,23,195,1,27,249,22,5,89,162,8,44, -36,52,9,225,13,11,9,33,30,23,205,2,27,28,23,196,2,11,193,28,192, -192,28,193,28,23,196,2,28,249,22,170,3,248,22,69,196,248,22,69,23,199, -2,193,11,11,11,11,28,23,193,2,249,80,159,47,54,36,202,89,162,43,35, -45,9,224,14,2,33,31,87,94,23,193,1,27,28,23,197,1,27,249,22,5, -83,158,39,20,97,94,89,162,8,44,36,50,9,225,14,12,10,33,32,23,203, -1,23,206,1,27,28,196,11,193,28,192,192,28,193,28,196,28,249,22,170,3, -248,22,69,196,248,22,69,199,193,11,11,11,11,28,192,249,80,159,48,54,36, -203,89,162,43,35,45,9,224,15,2,33,33,249,80,159,48,54,36,203,89,162, -43,35,44,9,224,15,7,33,34,32,36,89,162,8,44,36,54,2,19,222,33, -38,0,17,35,114,120,34,94,40,46,42,63,41,47,40,46,42,41,36,34,27, -249,22,134,14,2,37,23,196,2,28,23,193,2,87,94,23,194,1,249,22,67, -248,22,92,23,196,2,27,248,22,101,23,197,1,27,249,22,134,14,2,37,23, -196,2,28,23,193,2,87,94,23,194,1,249,22,67,248,22,92,23,196,2,27, -248,22,101,23,197,1,27,249,22,134,14,2,37,23,196,2,28,23,193,2,87, -94,23,194,1,249,22,67,248,22,92,23,196,2,248,2,36,248,22,101,23,197, -1,248,22,77,194,248,22,77,194,248,22,77,194,32,39,89,162,43,36,54,2, -19,222,33,40,28,248,22,75,248,22,69,23,195,2,249,22,7,9,248,22,68, -195,91,159,37,11,90,161,37,35,11,27,248,22,69,196,28,248,22,75,248,22, -69,23,195,2,249,22,7,9,248,22,68,195,91,159,37,11,90,161,37,35,11, -27,248,22,69,196,28,248,22,75,248,22,69,23,195,2,249,22,7,9,248,22, -68,195,91,159,37,11,90,161,37,35,11,248,2,39,248,22,69,196,249,22,7, -249,22,67,248,22,68,199,196,195,249,22,7,249,22,67,248,22,68,199,196,195, -249,22,7,249,22,67,248,22,68,199,196,195,27,248,2,36,23,195,1,28,194, -192,248,2,39,193,87,95,28,248,22,174,4,195,12,250,22,135,9,2,20,6, -20,20,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112,97,116, -104,197,28,24,193,2,248,24,194,1,195,87,94,23,193,1,12,27,27,250,22, -141,2,80,159,41,42,37,248,22,154,14,247,22,129,12,11,28,23,193,2,192, -87,94,23,193,1,27,247,22,125,87,94,250,22,139,2,80,159,42,42,37,248, -22,154,14,247,22,129,12,195,192,250,22,139,2,195,198,66,97,116,116,97,99, -104,251,211,197,198,199,10,28,192,250,22,134,9,11,196,195,248,22,132,9,194, -28,249,22,168,6,194,6,1,1,46,2,16,28,249,22,168,6,194,6,2,2, -46,46,62,117,112,192,28,249,22,169,8,248,22,69,23,200,2,23,197,1,28, -249,22,167,8,248,22,68,23,200,2,23,196,1,251,22,132,9,2,20,6,26, -26,99,121,99,108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32, -126,101,58,32,126,101,23,200,1,249,22,2,22,69,248,22,82,249,22,67,23, -206,1,23,202,1,12,12,247,192,20,14,159,80,159,39,44,37,249,22,67,248, -22,154,14,247,22,129,12,23,197,1,20,14,159,80,158,39,39,250,80,158,42, -40,249,22,27,11,80,158,44,39,22,156,4,23,196,1,249,247,22,129,5,23, -198,1,248,22,55,248,22,151,13,23,198,1,87,94,28,28,248,22,147,13,23, -197,2,10,248,22,180,4,23,197,2,12,28,23,198,2,250,22,134,9,11,6, -15,15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,201,2,250, -22,135,9,2,20,6,19,19,109,111,100,117,108,101,45,112,97,116,104,32,111, -114,32,112,97,116,104,23,199,2,28,28,248,22,65,23,197,2,249,22,167,8, -248,22,68,23,199,2,2,3,11,248,22,175,4,248,22,92,197,28,28,248,22, -65,23,197,2,249,22,167,8,248,22,68,23,199,2,66,112,108,97,110,101,116, -11,87,94,28,207,12,20,14,159,80,158,37,39,250,80,158,40,40,249,22,27, -11,80,158,42,39,22,129,12,23,197,1,90,161,36,35,10,249,22,157,4,21, -94,2,21,6,18,18,112,108,97,110,101,116,47,114,101,115,111,108,118,101,114, -46,115,115,1,27,112,108,97,110,101,116,45,109,111,100,117,108,101,45,110,97, -109,101,45,114,101,115,111,108,118,101,114,12,251,211,199,200,201,202,87,94,23, -193,1,27,89,162,8,44,36,45,79,115,104,111,119,45,99,111,108,108,101,99, -116,105,111,110,45,101,114,114,223,6,33,44,27,28,248,22,53,23,199,2,27, -250,22,141,2,80,159,43,43,37,249,22,67,23,204,2,247,22,189,13,11,28, -23,193,2,192,87,94,23,193,1,91,159,37,11,90,161,37,35,11,249,80,159, -44,48,36,248,22,58,23,204,2,11,27,251,80,158,47,50,2,20,23,202,1, -28,248,22,75,23,199,2,23,199,2,248,22,68,23,199,2,28,248,22,75,23, -199,2,9,248,22,69,23,199,2,249,22,165,13,23,195,1,28,248,22,75,23, -197,1,87,94,23,197,1,6,7,7,109,97,105,110,46,115,115,249,22,185,6, -23,199,1,6,3,3,46,115,115,28,248,22,162,6,23,199,2,87,94,23,194, -1,27,248,80,159,41,55,36,23,201,2,27,250,22,141,2,80,159,44,43,37, -249,22,67,23,205,2,23,199,2,11,28,23,193,2,192,87,94,23,193,1,91, -159,37,11,90,161,37,35,11,249,80,159,45,48,36,23,204,2,11,250,22,1, -22,165,13,23,199,1,249,22,81,249,22,2,32,0,89,162,8,44,36,43,9, -222,33,45,23,200,1,248,22,77,23,200,1,28,248,22,147,13,23,199,2,87, -94,23,194,1,28,248,22,170,13,23,199,2,23,198,2,248,22,77,6,26,26, -32,40,97,32,112,97,116,104,32,109,117,115,116,32,98,101,32,97,98,115,111, -108,117,116,101,41,28,249,22,167,8,248,22,68,23,201,2,2,21,27,250,22, -141,2,80,159,43,43,37,249,22,67,23,204,2,247,22,189,13,11,28,23,193, -2,192,87,94,23,193,1,91,159,38,11,90,161,37,35,11,249,80,159,45,48, -36,248,22,92,23,205,2,11,90,161,36,37,11,28,248,22,75,248,22,94,23, -204,2,28,248,22,75,23,194,2,249,22,136,14,0,8,35,114,120,34,91,46, -93,34,23,196,2,11,10,27,27,28,23,197,2,249,22,81,28,248,22,75,248, -22,94,23,208,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,81,249, -22,2,80,159,51,56,36,248,22,94,23,211,2,23,197,2,28,248,22,75,23, -196,2,248,22,77,23,197,2,23,195,2,251,80,158,49,50,2,20,23,204,1, -248,22,68,23,198,2,248,22,69,23,198,1,249,22,165,13,23,195,1,28,23, -198,1,87,94,23,196,1,23,197,1,28,248,22,75,23,197,1,87,94,23,197, -1,6,7,7,109,97,105,110,46,115,115,28,249,22,136,14,0,8,35,114,120, -34,91,46,93,34,23,199,2,23,197,1,249,22,185,6,23,199,1,6,3,3, -46,115,115,28,249,22,167,8,248,22,68,23,201,2,64,102,105,108,101,249,22, -172,13,248,22,176,13,248,22,92,23,202,2,248,80,159,42,55,36,23,202,2, -12,87,94,28,28,248,22,147,13,23,194,2,10,248,22,184,7,23,194,2,87, -94,23,200,1,12,28,23,200,2,250,22,134,9,67,114,101,113,117,105,114,101, -249,22,146,7,6,17,17,98,97,100,32,109,111,100,117,108,101,32,112,97,116, -104,126,97,28,23,198,2,248,22,68,23,199,2,6,0,0,23,203,1,87,94, -23,200,1,250,22,135,9,2,20,249,22,146,7,6,13,13,109,111,100,117,108, -101,32,112,97,116,104,126,97,28,23,198,2,248,22,68,23,199,2,6,0,0, -23,201,2,27,28,248,22,184,7,23,195,2,249,22,189,7,23,196,2,35,249, -22,174,13,248,22,175,13,23,197,2,11,27,28,248,22,184,7,23,196,2,249, -22,189,7,23,197,2,36,248,80,158,42,51,23,195,2,91,159,38,11,90,161, -38,35,11,28,248,22,184,7,23,199,2,250,22,7,2,22,249,22,189,7,23, -203,2,37,2,22,248,22,168,13,23,198,2,87,95,23,195,1,23,193,1,27, -28,248,22,184,7,23,200,2,249,22,189,7,23,201,2,38,249,80,158,47,52, -23,197,2,5,0,27,28,248,22,184,7,23,201,2,249,22,189,7,23,202,2, -39,248,22,175,4,23,200,2,27,27,250,22,141,2,80,159,51,42,37,248,22, -154,14,247,22,129,12,11,28,23,193,2,192,87,94,23,193,1,27,247,22,125, -87,94,250,22,139,2,80,159,52,42,37,248,22,154,14,247,22,129,12,195,192, -87,95,28,23,209,1,27,250,22,141,2,23,197,2,197,11,28,23,193,1,12, -87,95,27,27,28,248,22,17,80,159,51,45,37,80,159,50,45,37,247,22,19, -250,22,25,248,22,23,23,197,2,80,159,53,44,37,23,196,1,27,248,22,154, -14,247,22,129,12,249,22,3,83,158,39,20,97,94,89,162,8,44,36,54,9, -226,12,11,2,3,33,46,23,195,1,23,196,1,248,28,248,22,17,80,159,50, -45,37,32,0,89,162,43,36,41,9,222,33,47,80,159,49,57,36,89,162,43, -35,50,9,227,14,9,8,4,3,33,48,250,22,139,2,23,197,1,197,10,12, -28,28,248,22,184,7,23,202,1,11,27,248,22,162,6,23,208,2,28,192,192, -27,248,22,53,23,209,2,28,192,192,28,248,22,65,23,209,2,249,22,167,8, -248,22,68,23,211,2,2,21,11,250,22,139,2,80,159,50,43,37,28,248,22, -162,6,23,210,2,249,22,67,23,211,1,248,80,159,53,55,36,23,213,1,87, -94,23,210,1,249,22,67,23,211,1,247,22,189,13,252,22,186,7,23,208,1, -23,207,1,23,205,1,23,203,1,201,12,193,91,159,37,10,90,161,36,35,10, -11,90,161,36,36,10,83,158,38,20,96,96,2,20,89,162,8,44,36,50,9, -224,2,0,33,42,89,162,43,38,48,9,223,1,33,43,89,162,43,39,8,30, -9,225,2,3,0,33,49,208,87,95,248,22,155,4,248,80,159,37,49,36,247, -22,129,12,248,22,129,5,80,159,36,36,36,248,22,184,12,80,159,36,41,36, -159,35,20,103,159,35,16,1,11,16,0,83,158,41,20,100,144,66,35,37,98, -111,111,116,29,11,11,11,11,11,10,36,80,158,35,35,20,103,159,39,16,19, -2,1,2,2,30,2,4,72,112,97,116,104,45,115,116,114,105,110,103,63,10, -30,2,4,75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,7,30, -2,5,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45, -107,101,121,4,30,2,5,1,23,101,120,116,101,110,100,45,112,97,114,97,109, -101,116,101,114,105,122,97,116,105,111,110,3,2,6,2,7,2,8,2,9,2, -10,2,11,2,12,2,13,2,14,30,2,4,69,45,102,105,110,100,45,99,111, -108,0,30,2,4,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116, -104,6,30,2,4,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117, -102,102,105,120,9,2,15,16,0,16,0,35,16,0,35,16,11,2,9,2,10, -2,7,2,8,2,11,2,12,2,2,2,6,2,1,2,14,2,13,46,11,11, -38,35,11,11,11,16,1,2,15,16,1,11,16,1,2,15,36,36,36,11,11, -11,16,0,16,0,16,0,35,35,11,11,11,11,16,0,16,0,16,0,35,35, -16,0,16,16,83,158,35,16,2,89,162,43,36,44,9,223,0,33,23,80,159, -35,57,36,83,158,35,16,2,89,162,43,36,44,9,223,0,33,24,80,159,35, -56,36,83,158,35,16,2,89,162,43,36,48,67,103,101,116,45,100,105,114,223, -0,33,25,80,159,35,55,36,83,158,35,16,2,89,162,43,37,48,68,119,105, -116,104,45,100,105,114,223,0,33,26,80,159,35,54,36,83,158,35,16,2,248, -22,181,7,69,115,111,45,115,117,102,102,105,120,80,159,35,35,36,83,158,35, -16,2,89,162,43,37,59,2,2,223,0,33,35,80,159,35,36,36,83,158,35, -16,2,32,0,89,162,8,44,36,41,2,6,222,192,80,159,35,41,36,83,158, -35,16,2,247,22,128,2,80,159,35,42,36,83,158,35,16,2,247,22,127,80, -159,35,43,36,83,158,35,16,2,247,22,63,80,159,35,44,36,83,158,35,16, -2,248,22,18,74,109,111,100,117,108,101,45,108,111,97,100,105,110,103,80,159, -35,45,36,83,158,35,16,2,11,80,158,35,46,83,158,35,16,2,11,80,158, -35,47,83,158,35,16,2,32,0,89,162,43,37,44,2,13,222,33,41,80,159, -35,48,36,83,158,35,16,2,89,162,8,44,36,44,2,14,223,0,33,50,80, -159,35,49,36,83,158,35,16,2,89,162,43,35,43,2,15,223,0,33,51,80, -159,35,53,36,95,29,94,2,3,68,35,37,107,101,114,110,101,108,11,29,94, -2,3,69,35,37,109,105,110,45,115,116,120,11,2,4,9,9,9,35,0}; - EVAL_ONE_SIZED_STR((char *)expr, 4093); +29,94,2,3,2,5,11,64,98,111,111,116,64,115,101,97,108,64,115,97,109, +101,5,3,46,122,111,6,6,6,110,97,116,105,118,101,64,108,111,111,112,63, +108,105,98,67,105,103,110,111,114,101,100,249,22,14,195,80,159,37,45,37,249, +80,159,37,48,36,195,10,27,28,23,195,2,28,249,22,167,8,23,197,2,80, +158,38,46,87,94,23,195,1,80,158,36,47,27,248,22,176,4,23,197,2,28, +248,22,147,13,23,194,2,91,159,38,11,90,161,38,35,11,248,22,168,13,23, +197,1,87,95,83,160,37,11,80,158,40,46,198,83,160,37,11,80,158,40,47, +192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,130,5,28,192, +192,247,22,188,13,20,14,159,80,158,35,39,250,80,158,38,40,249,22,27,11, +80,158,40,39,22,130,5,28,248,22,147,13,23,198,2,23,197,1,87,94,23, +197,1,247,22,188,13,247,194,250,22,165,13,23,197,1,23,199,1,249,80,158, +42,38,23,198,1,2,22,252,22,165,13,23,199,1,23,201,1,2,23,247,22, +182,7,249,80,158,44,38,23,200,1,80,159,44,35,37,87,94,23,194,1,27, +250,22,182,13,196,11,32,0,89,162,8,44,35,40,9,222,11,28,192,249,22, +67,195,194,11,27,252,22,165,13,23,200,1,23,202,1,2,23,247,22,182,7, +249,80,158,45,38,23,201,1,80,159,45,35,37,27,250,22,182,13,196,11,32, +0,89,162,8,44,35,40,9,222,11,28,192,249,22,67,195,194,11,249,247,22, +129,14,248,22,68,195,195,27,250,22,165,13,23,198,1,23,200,1,249,80,158, +43,38,23,199,1,2,22,27,250,22,182,13,196,11,32,0,89,162,8,44,35, +40,9,222,11,28,192,249,22,67,195,194,11,249,247,22,128,5,248,22,68,195, +195,249,247,22,128,5,194,195,87,94,28,248,80,158,36,37,23,195,2,12,250, +22,135,9,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100, +6,25,25,112,97,116,104,32,111,114,32,118,97,108,105,100,45,112,97,116,104, +32,115,116,114,105,110,103,23,197,2,91,159,41,11,90,161,36,35,11,28,248, +22,171,13,23,201,2,23,200,1,27,247,22,130,5,28,23,193,2,249,22,172, +13,23,203,1,23,195,1,200,90,161,38,36,11,248,22,168,13,23,194,2,87, +94,23,196,1,90,161,36,39,11,28,249,22,167,8,23,196,2,68,114,101,108, +97,116,105,118,101,87,94,23,194,1,2,21,23,194,1,90,161,36,40,11,247, +22,190,13,27,89,162,43,36,49,62,122,111,225,7,5,3,33,31,27,89,162, +43,36,51,9,225,8,6,4,33,32,27,249,22,5,89,162,8,44,36,46,9, +223,5,33,33,23,203,2,27,28,23,195,1,27,249,22,5,89,162,8,44,36, +52,9,225,13,11,9,33,34,23,205,2,27,28,23,196,2,11,193,28,192,192, +28,193,28,23,196,2,28,249,22,170,3,248,22,69,196,248,22,69,23,199,2, +193,11,11,11,11,28,23,193,2,249,80,159,47,58,36,202,89,162,43,35,45, +9,224,14,2,33,35,87,94,23,193,1,27,28,23,197,1,27,249,22,5,83, +158,39,20,97,94,89,162,8,44,36,50,9,225,14,12,10,33,36,23,203,1, +23,206,1,27,28,196,11,193,28,192,192,28,193,28,196,28,249,22,170,3,248, +22,69,196,248,22,69,199,193,11,11,11,11,28,192,249,80,159,48,58,36,203, +89,162,43,35,45,9,224,15,2,33,37,249,80,159,48,58,36,203,89,162,43, +35,44,9,224,15,7,33,38,32,40,89,162,8,44,36,54,2,24,222,33,42, +0,17,35,114,120,34,94,40,46,42,63,41,47,40,46,42,41,36,34,27,249, +22,134,14,2,41,23,196,2,28,23,193,2,87,94,23,194,1,249,22,67,248, +22,92,23,196,2,27,248,22,101,23,197,1,27,249,22,134,14,2,41,23,196, +2,28,23,193,2,87,94,23,194,1,249,22,67,248,22,92,23,196,2,27,248, +22,101,23,197,1,27,249,22,134,14,2,41,23,196,2,28,23,193,2,87,94, +23,194,1,249,22,67,248,22,92,23,196,2,248,2,40,248,22,101,23,197,1, +248,22,77,194,248,22,77,194,248,22,77,194,32,43,89,162,43,36,54,2,24, +222,33,44,28,248,22,75,248,22,69,23,195,2,249,22,7,9,248,22,68,195, +91,159,37,11,90,161,37,35,11,27,248,22,69,196,28,248,22,75,248,22,69, +23,195,2,249,22,7,9,248,22,68,195,91,159,37,11,90,161,37,35,11,27, +248,22,69,196,28,248,22,75,248,22,69,23,195,2,249,22,7,9,248,22,68, +195,91,159,37,11,90,161,37,35,11,248,2,43,248,22,69,196,249,22,7,249, +22,67,248,22,68,199,196,195,249,22,7,249,22,67,248,22,68,199,196,195,249, +22,7,249,22,67,248,22,68,199,196,195,27,248,2,40,23,195,1,28,194,192, +248,2,43,193,87,95,28,248,22,174,4,195,12,250,22,135,9,2,17,6,20, +20,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112,97,116,104, +197,28,24,193,2,248,24,194,1,195,87,94,23,193,1,12,27,27,250,22,141, +2,80,159,41,42,37,248,22,154,14,247,22,129,12,11,28,23,193,2,192,87, +94,23,193,1,27,247,22,125,87,94,250,22,139,2,80,159,42,42,37,248,22, +154,14,247,22,129,12,195,192,250,22,139,2,195,198,66,97,116,116,97,99,104, +251,211,197,198,199,10,28,192,250,22,134,9,11,196,195,248,22,132,9,194,28, +249,22,168,6,194,6,1,1,46,2,21,28,249,22,168,6,194,6,2,2,46, +46,62,117,112,192,28,249,22,169,8,248,22,69,23,200,2,23,197,1,28,249, +22,167,8,248,22,68,23,200,2,23,196,1,251,22,132,9,2,17,6,26,26, +99,121,99,108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126, +101,58,32,126,101,23,200,1,249,22,2,22,69,248,22,82,249,22,67,23,206, +1,23,202,1,12,12,247,192,20,14,159,80,159,39,44,37,249,22,67,248,22, +154,14,247,22,129,12,23,197,1,20,14,159,80,158,39,39,250,80,158,42,40, +249,22,27,11,80,158,44,39,22,156,4,23,196,1,249,247,22,129,5,23,198, +1,248,22,55,248,22,151,13,23,198,1,87,94,28,28,248,22,147,13,23,196, +2,10,248,22,180,4,23,196,2,12,28,23,197,2,250,22,134,9,11,6,15, +15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,200,2,250,22, +135,9,2,17,6,19,19,109,111,100,117,108,101,45,112,97,116,104,32,111,114, +32,112,97,116,104,23,198,2,28,28,248,22,65,23,196,2,249,22,167,8,248, +22,68,23,198,2,2,3,11,248,22,175,4,248,22,92,196,28,28,248,22,65, +23,196,2,249,22,167,8,248,22,68,23,198,2,66,112,108,97,110,101,116,11, +87,94,28,207,12,20,14,159,80,158,36,51,80,158,36,49,90,161,36,35,10, +249,22,157,4,21,94,2,25,6,18,18,112,108,97,110,101,116,47,114,101,115, +111,108,118,101,114,46,115,115,1,27,112,108,97,110,101,116,45,109,111,100,117, +108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,12,252,212,199,200, +201,202,80,158,41,49,87,94,23,193,1,27,89,162,8,44,36,45,79,115,104, +111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,223,5,33,48, +27,28,248,22,53,23,198,2,27,250,22,141,2,80,159,42,43,37,249,22,67, +23,203,2,247,22,189,13,11,28,23,193,2,192,87,94,23,193,1,91,159,37, +11,90,161,37,35,11,249,80,159,43,48,36,248,22,58,23,203,2,11,27,251, +80,158,46,52,2,17,23,202,1,28,248,22,75,23,199,2,23,199,2,248,22, +68,23,199,2,28,248,22,75,23,199,2,9,248,22,69,23,199,2,249,22,165, +13,23,195,1,28,248,22,75,23,197,1,87,94,23,197,1,6,7,7,109,97, +105,110,46,115,115,249,22,185,6,23,199,1,6,3,3,46,115,115,28,248,22, +162,6,23,198,2,87,94,23,194,1,27,248,80,159,40,59,36,23,200,2,27, +250,22,141,2,80,159,43,43,37,249,22,67,23,204,2,23,199,2,11,28,23, +193,2,192,87,94,23,193,1,91,159,37,11,90,161,37,35,11,249,80,159,44, +48,36,23,203,2,11,250,22,1,22,165,13,23,199,1,249,22,81,249,22,2, +32,0,89,162,8,44,36,43,9,222,33,49,23,200,1,248,22,77,23,200,1, +28,248,22,147,13,23,198,2,87,94,23,194,1,28,248,22,170,13,23,198,2, +23,197,2,248,22,77,6,26,26,32,40,97,32,112,97,116,104,32,109,117,115, +116,32,98,101,32,97,98,115,111,108,117,116,101,41,28,249,22,167,8,248,22, +68,23,200,2,2,25,27,250,22,141,2,80,159,42,43,37,249,22,67,23,203, +2,247,22,189,13,11,28,23,193,2,192,87,94,23,193,1,91,159,38,11,90, +161,37,35,11,249,80,159,44,48,36,248,22,92,23,204,2,11,90,161,36,37, +11,28,248,22,75,248,22,94,23,203,2,28,248,22,75,23,194,2,249,22,136, +14,0,8,35,114,120,34,91,46,93,34,23,196,2,11,10,27,27,28,23,197, +2,249,22,81,28,248,22,75,248,22,94,23,207,2,21,93,6,5,5,109,122, +108,105,98,249,22,1,22,81,249,22,2,80,159,50,8,25,36,248,22,94,23, +210,2,23,197,2,28,248,22,75,23,196,2,248,22,77,23,197,2,23,195,2, +251,80,158,48,52,2,17,23,204,1,248,22,68,23,198,2,248,22,69,23,198, +1,249,22,165,13,23,195,1,28,23,198,1,87,94,23,196,1,23,197,1,28, +248,22,75,23,197,1,87,94,23,197,1,6,7,7,109,97,105,110,46,115,115, +28,249,22,136,14,0,8,35,114,120,34,91,46,93,34,23,199,2,23,197,1, +249,22,185,6,23,199,1,6,3,3,46,115,115,28,249,22,167,8,248,22,68, +23,200,2,64,102,105,108,101,249,22,172,13,248,22,176,13,248,22,92,23,201, +2,248,80,159,41,59,36,23,201,2,12,87,94,28,28,248,22,147,13,23,194, +2,10,248,22,184,7,23,194,2,87,94,23,199,1,12,28,23,199,2,250,22, +134,9,67,114,101,113,117,105,114,101,249,22,146,7,6,17,17,98,97,100,32, +109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,68,23, +199,2,6,0,0,23,202,1,87,94,23,199,1,250,22,135,9,2,17,249,22, +146,7,6,13,13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198, +2,248,22,68,23,199,2,6,0,0,23,200,2,27,28,248,22,184,7,23,195, +2,249,22,189,7,23,196,2,35,249,22,174,13,248,22,175,13,23,197,2,11, +27,28,248,22,184,7,23,196,2,249,22,189,7,23,197,2,36,248,80,158,41, +53,23,195,2,91,159,38,11,90,161,38,35,11,28,248,22,184,7,23,199,2, +250,22,7,2,26,249,22,189,7,23,203,2,37,2,26,248,22,168,13,23,198, +2,87,95,23,195,1,23,193,1,27,28,248,22,184,7,23,200,2,249,22,189, +7,23,201,2,38,249,80,158,46,54,23,197,2,5,0,27,28,248,22,184,7, +23,201,2,249,22,189,7,23,202,2,39,248,22,175,4,23,200,2,27,27,250, +22,141,2,80,159,50,42,37,248,22,154,14,247,22,129,12,11,28,23,193,2, +192,87,94,23,193,1,27,247,22,125,87,94,250,22,139,2,80,159,51,42,37, +248,22,154,14,247,22,129,12,195,192,87,95,28,23,208,1,27,250,22,141,2, +23,197,2,197,11,28,23,193,1,12,87,95,27,27,28,248,22,17,80,159,50, +45,37,80,159,49,45,37,247,22,19,250,22,25,248,22,23,23,197,2,80,159, +52,44,37,23,196,1,27,248,22,154,14,247,22,129,12,249,22,3,83,158,39, +20,97,94,89,162,8,44,36,54,9,226,12,11,2,3,33,50,23,195,1,23, +196,1,248,28,248,22,17,80,159,49,45,37,32,0,89,162,43,36,41,9,222, +33,51,80,159,48,8,26,36,89,162,43,35,50,9,227,13,9,8,4,3,33, +52,250,22,139,2,23,197,1,197,10,12,28,28,248,22,184,7,23,202,1,11, +27,248,22,162,6,23,207,2,28,192,192,27,248,22,53,23,208,2,28,192,192, +28,248,22,65,23,208,2,249,22,167,8,248,22,68,23,210,2,2,25,11,250, +22,139,2,80,159,49,43,37,28,248,22,162,6,23,209,2,249,22,67,23,210, +1,248,80,159,52,59,36,23,212,1,87,94,23,209,1,249,22,67,23,210,1, +247,22,189,13,252,22,186,7,23,208,1,23,207,1,23,205,1,23,203,1,201, +12,193,87,96,83,160,37,11,80,158,35,49,248,80,158,36,57,249,22,27,11, +80,158,38,51,248,22,155,4,80,159,36,50,37,248,22,129,5,80,159,36,36, +36,248,22,184,12,80,159,36,41,36,83,160,37,11,80,158,35,49,248,80,158, +36,57,249,22,27,11,80,158,38,51,159,35,20,103,159,35,16,1,11,16,0, +83,158,41,20,100,144,66,35,37,98,111,111,116,29,11,11,11,11,11,10,37, +80,158,35,35,20,103,159,39,16,23,2,1,2,2,30,2,4,72,112,97,116, +104,45,115,116,114,105,110,103,63,10,30,2,4,75,112,97,116,104,45,97,100, +100,45,115,117,102,102,105,120,7,30,2,6,2,7,4,30,2,6,1,23,101, +120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111, +110,3,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2, +17,30,2,18,2,7,4,30,2,4,69,45,102,105,110,100,45,99,111,108,0, +30,2,4,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,6, +30,2,4,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102, +105,120,9,2,19,2,20,30,2,18,74,114,101,112,97,114,97,109,101,116,101, +114,105,122,101,5,16,0,16,0,35,16,0,35,16,12,2,11,2,12,2,9, +2,10,2,13,2,14,2,2,2,8,2,1,2,16,2,15,2,17,47,11,11, +38,35,11,11,11,16,2,2,19,2,20,16,2,11,11,16,2,2,19,2,20, +37,37,36,11,11,11,16,0,16,0,16,0,35,35,11,11,11,11,16,0,16, +0,16,0,35,35,16,0,16,18,83,158,35,16,2,89,162,43,36,44,9,223, +0,33,27,80,159,35,8,26,36,83,158,35,16,2,89,162,43,36,44,9,223, +0,33,28,80,159,35,8,25,36,83,158,35,16,2,89,162,43,36,48,67,103, +101,116,45,100,105,114,223,0,33,29,80,159,35,59,36,83,158,35,16,2,89, +162,43,37,48,68,119,105,116,104,45,100,105,114,223,0,33,30,80,159,35,58, +36,83,158,35,16,2,248,22,181,7,69,115,111,45,115,117,102,102,105,120,80, +159,35,35,36,83,158,35,16,2,89,162,43,37,59,2,2,223,0,33,39,80, +159,35,36,36,83,158,35,16,2,32,0,89,162,8,44,36,41,2,8,222,192, +80,159,35,41,36,83,158,35,16,2,247,22,128,2,80,159,35,42,36,83,158, +35,16,2,247,22,127,80,159,35,43,36,83,158,35,16,2,247,22,63,80,159, +35,44,36,83,158,35,16,2,248,22,18,74,109,111,100,117,108,101,45,108,111, +97,100,105,110,103,80,159,35,45,36,83,158,35,16,2,11,80,158,35,46,83, +158,35,16,2,11,80,158,35,47,83,158,35,16,2,32,0,89,162,43,37,44, +2,15,222,33,45,80,159,35,48,36,83,158,35,16,2,11,80,158,35,49,83, +158,35,16,2,91,159,37,10,90,161,36,35,10,11,90,161,36,36,10,83,158, +38,20,96,96,2,17,89,162,8,44,36,50,9,224,2,0,33,46,89,162,43, +38,48,9,223,1,33,47,89,162,43,39,8,29,9,224,2,0,33,53,208,80, +159,35,50,36,83,158,35,16,2,89,162,43,35,44,2,19,223,0,33,54,80, +159,35,55,36,83,158,35,16,2,89,162,8,44,35,44,2,20,223,0,33,55, +80,159,35,56,36,96,29,94,2,3,68,35,37,107,101,114,110,101,108,11,29, +94,2,3,69,35,37,109,105,110,45,115,116,120,11,2,4,2,18,9,9,9, +35,0}; + EVAL_ONE_SIZED_STR((char *)expr, 4180); } diff --git a/src/mzscheme/src/env.c b/src/mzscheme/src/env.c index f8c332996f..a2a94cab6f 100644 --- a/src/mzscheme/src/env.c +++ b/src/mzscheme/src/env.c @@ -208,6 +208,17 @@ static void boot_module_resolver() scheme_apply(boot, 0, NULL); } +void scheme_seal_parameters() +{ + Scheme_Object *seal, *a[2]; + a[0] = scheme_make_pair(scheme_intern_symbol("quote"), + scheme_make_pair(scheme_intern_symbol("#%boot"), + scheme_null)); + a[1] = scheme_intern_symbol("seal"); + seal = scheme_dynamic_require(2, a); + scheme_apply(seal, 0, NULL); +} + void os_platform_init() { #ifdef UNIX_LIMIT_STACK struct rlimit rl; diff --git a/src/mzscheme/src/eval.c b/src/mzscheme/src/eval.c index 5d9b7607a9..6d987dd3e7 100644 --- a/src/mzscheme/src/eval.c +++ b/src/mzscheme/src/eval.c @@ -9972,6 +9972,8 @@ void scheme_init_collection_paths_post(Scheme_Env *global_env, Scheme_Object *ex a[0] = _scheme_apply(flcp, 2, a); _scheme_apply(clcp, 1, a); } + + } p->error_buf = save; } diff --git a/src/mzscheme/src/schpriv.h b/src/mzscheme/src/schpriv.h index c707497020..f6dcd063ff 100644 --- a/src/mzscheme/src/schpriv.h +++ b/src/mzscheme/src/schpriv.h @@ -512,8 +512,8 @@ typedef struct { struct Scheme_Config { Scheme_Object so; - Scheme_Object *key; - Scheme_Object *cell; + Scheme_Object *key; /* NULL => cell is a Scheme_Parameterization* and next is NULL */ + Scheme_Object *cell; /* value or thread cell (when key != NULL) or Scheme_Parameterization* (otherwise) */ int depth; struct Scheme_Config *next; }; diff --git a/src/mzscheme/src/schvers.h b/src/mzscheme/src/schvers.h index db01a292cf..8491f6ec4c 100644 --- a/src/mzscheme/src/schvers.h +++ b/src/mzscheme/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "4.2.1.6" +#define MZSCHEME_VERSION "4.2.1.7" #define MZSCHEME_VERSION_X 4 #define MZSCHEME_VERSION_Y 2 #define MZSCHEME_VERSION_Z 1 -#define MZSCHEME_VERSION_W 6 +#define MZSCHEME_VERSION_W 7 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) diff --git a/src/mzscheme/src/startup.inc b/src/mzscheme/src/startup.inc index 17a9273bc0..b1dad98cba 100644 --- a/src/mzscheme/src/startup.inc +++ b/src/mzscheme/src/startup.inc @@ -398,8 +398,8 @@ ); EVAL_ONE_STR( "(module #%boot '#%kernel" -"(#%require '#%min-stx '#%utils)" -"(#%provide boot)" +"(#%require '#%min-stx '#%utils '#%paramz)" +"(#%provide boot seal)" "(define-values(dll-suffix)" "(system-type 'so-suffix))" "(define-values(default-load/use-compiled)" @@ -483,8 +483,9 @@ "(values null(car l))" "(let-values(((c f)(loop(cdr l))))" "(values(cons(car l) c) f)))))))" -"(define-values(make-standard-module-name-resolver)" -"(lambda(orig-namespace)" +"(define-values(orig-paramz) #f)" +"(define-values(standard-module-name-resolver)" +"(let-values()" "(define-values(planet-resolver) #f)" "(define-values(standard-module-name-resolver)" "(case-lambda " @@ -520,9 +521,11 @@ "(make-resolved-module-path(cadr s)))" "((and(pair? s)(eq?(car s) 'planet))" "(unless planet-resolver" -"(parameterize((current-namespace orig-namespace))" +"(with-continuation-mark" +" parameterization-key" +" orig-paramz" " (set! planet-resolver (dynamic-require '(lib \"planet/resolver.ss\") 'planet-module-name-resolver))))" -"(planet-resolver s relto stx load?))" +"(planet-resolver s relto stx load? orig-paramz))" "(else" "(let((get-dir(lambda()" "(or(and relto" @@ -698,7 +701,13 @@ " standard-module-name-resolver))" "(define-values(boot)" "(lambda()" -"(current-module-name-resolver(make-standard-module-name-resolver(current-namespace)))" +"(seal)" +"(current-module-name-resolver standard-module-name-resolver)" "(current-load/use-compiled default-load/use-compiled)" -"(current-reader-guard default-reader-guard))))" +"(current-reader-guard default-reader-guard)))" +"(define-values(seal)" +"(lambda()" +"(set! orig-paramz" +"(reparameterize " +"(continuation-mark-set-first #f parameterization-key))))))" ); diff --git a/src/mzscheme/src/startup.ss b/src/mzscheme/src/startup.ss index 0665d94fa3..88ac3b59a5 100644 --- a/src/mzscheme/src/startup.ss +++ b/src/mzscheme/src/startup.ss @@ -5,9 +5,11 @@ ;; needed to start up MzScheme --- especially to install the ;; default module-name resolver. -;; MzScheme runs ((dynamic-require ''#%boot boot)) on startup. So, -;; replace the content of this file to get a different set of initial -;; module definitions and parameter values. +;; MzScheme runs ((dynamic-require ''#%boot boot)) on startup. Then, +;; after configuring all startup parameters, MzScheme may run +;; ((dynamic-require ''#%boot seal)), and it may seal multiple +;; times. So, replace the content of this file to get a different set +;; of initial module definitions and parameter values. ;; When using makefiles, `make startup' in [the build directory for] ;; plt/src/mzscheme creates plt/src/mzscheme/src/cstartup.inc. Note @@ -472,9 +474,9 @@ ;; Handlers to install on startup (module #%boot '#%kernel - (#%require '#%min-stx '#%utils) + (#%require '#%min-stx '#%utils '#%paramz) - (#%provide boot) + (#%provide boot seal) (define-values (dll-suffix) (system-type 'so-suffix)) @@ -565,8 +567,10 @@ (let-values ([(c f) (loop (cdr l))]) (values (cons (car l) c) f))))))) - (define-values (make-standard-module-name-resolver) - (lambda (orig-namespace) + (define-values (orig-paramz) #f) + + (define-values (standard-module-name-resolver) + (let-values () (define-values (planet-resolver) #f) (define-values (standard-module-name-resolver) (case-lambda @@ -606,9 +610,11 @@ (make-resolved-module-path (cadr s))] [(and (pair? s) (eq? (car s) 'planet)) (unless planet-resolver - (parameterize ([current-namespace orig-namespace]) + (with-continuation-mark + parameterization-key + orig-paramz (set! planet-resolver (dynamic-require '(lib "planet/resolver.ss") 'planet-module-name-resolver)))) - (planet-resolver s relto stx load?)] + (planet-resolver s relto stx load? orig-paramz)] [else (let ([get-dir (lambda () (or (and relto @@ -791,6 +797,13 @@ (define-values (boot) (lambda () - (current-module-name-resolver (make-standard-module-name-resolver (current-namespace))) + (seal) + (current-module-name-resolver standard-module-name-resolver) (current-load/use-compiled default-load/use-compiled) - (current-reader-guard default-reader-guard)))) + (current-reader-guard default-reader-guard))) + + (define-values (seal) + (lambda () + (set! orig-paramz + (reparameterize + (continuation-mark-set-first #f parameterization-key)))))) diff --git a/src/mzscheme/src/thread.c b/src/mzscheme/src/thread.c index 3603da3cbd..747cf3302c 100644 --- a/src/mzscheme/src/thread.c +++ b/src/mzscheme/src/thread.c @@ -336,6 +336,7 @@ static Scheme_Object *make_parameter(int argc, Scheme_Object *args[]); static Scheme_Object *make_derived_parameter(int argc, Scheme_Object *args[]); static Scheme_Object *extend_parameterization(int argc, Scheme_Object *args[]); static Scheme_Object *parameterization_p(int argc, Scheme_Object *args[]); +static Scheme_Object *reparameterize(int argc, Scheme_Object **argv); static Scheme_Object *make_thread_cell(int argc, Scheme_Object *args[]); static Scheme_Object *thread_cell_p(int argc, Scheme_Object *args[]); @@ -859,6 +860,12 @@ void scheme_init_parameterization(Scheme_Env *env) 0, 0), newenv); + scheme_add_global_constant("reparameterize", + scheme_make_prim_w_arity(reparameterize, + "reparameterize", + 1, 1), + newenv); + scheme_finish_primitive_module(newenv); scheme_protect_primitive_provide(newenv, NULL); @@ -6216,6 +6223,12 @@ void scheme_set_param(Scheme_Config *c, int pos, Scheme_Object *o) scheme_current_thread->cell_values, o); } +static Scheme_Parameterization *malloc_paramz() +{ + return (Scheme_Parameterization *)scheme_malloc_tagged(sizeof(Scheme_Parameterization) + + (max_configs - 1) * sizeof(Scheme_Object*)); +} + void scheme_flatten_config(Scheme_Config *orig_c) { int pos, i; @@ -6225,8 +6238,7 @@ void scheme_flatten_config(Scheme_Config *orig_c) Scheme_Config *c; if (orig_c->next) { - paramz = (Scheme_Parameterization *)scheme_malloc_tagged(sizeof(Scheme_Parameterization) + - (max_configs - 1) * sizeof(Scheme_Object*)); + paramz = malloc_paramz(); #ifdef MZTAG_REQUIRED paramz->type = scheme_rt_parameterization; #endif @@ -6353,6 +6365,42 @@ static Scheme_Object *extend_parameterization(int argc, Scheme_Object *argv[]) return (Scheme_Object *)c; } +static Scheme_Object *reparameterize(int argc, Scheme_Object **argv) +{ + /* Clones values of all built-in parameters in a new parameterization. + This could be implemented in Scheme by enumerating all built-in parameters, + but it's easier and faster here. We need this for the Planet resolver. */ + Scheme_Config *c, *naya; + Scheme_Parameterization *pz, *npz; + Scheme_Object *v; + int i; + + if (!SCHEME_CONFIGP(argv[0])) + scheme_wrong_type("reparameterize", "parameterization", 0, argc, argv); + + c = (Scheme_Config *)argv[0]; + scheme_flatten_config(c); + + pz = (Scheme_Parameterization *)c->cell; + npz = malloc_paramz(); + memcpy(npz, pz, sizeof(Scheme_Parameterization)); + + naya = MALLOC_ONE_TAGGED(Scheme_Config); + naya->so.type = scheme_config_type; + naya->depth = 0; + naya->key = NULL; + naya->cell = (Scheme_Object *)npz; + naya->next = NULL; + + for (i = 0; i < max_configs; i++) { + v = scheme_thread_cell_get(pz->prims[i], scheme_current_thread->cell_values); + v = scheme_make_thread_cell(v, 1); + npz->prims[i] = v; + } + + return (Scheme_Object *)naya; +} + static Scheme_Object *parameter_p(int argc, Scheme_Object **argv) { Scheme_Object *v = argv[0];