diff --git a/pkgs/racket-pkgs/racket-doc/scribblings/reference/module-reflect.scrbl b/pkgs/racket-pkgs/racket-doc/scribblings/reference/module-reflect.scrbl index 6e656fa085..60be6552a8 100644 --- a/pkgs/racket-pkgs/racket-doc/scribblings/reference/module-reflect.scrbl +++ b/pkgs/racket-pkgs/racket-doc/scribblings/reference/module-reflect.scrbl @@ -150,6 +150,16 @@ bytecode-file information recorded by the @tech{compiled-load handler} for the source namespace's @tech{module registry} is transferred to the target namespace's @tech{module registry}. +The default module name resolver also maintains a small, +@tech{module registry}-specific cache that maps @racket[lib] and symbolic +module paths to their resolutions. This cache is consulted before +checking parameters such as @racket[current-library-collection-links] +and @racket[current-library-collection-paths], so results may +``stick'' even if those parameter values change. An entry is added to +the cache only when the fourth argument to the module name resolver is +true (indicating that a module should be loaded) and only when loading +succeeds. + Module loading is suppressed (i.e., @racket[#f] is supplied as a fourth argument to the module name resolver) when resolving module paths in @tech{syntax objects} (see @secref["stxobj-model"]). When a diff --git a/racket/src/racket/src/cstartup.inc b/racket/src/racket/src/cstartup.inc index 107487efbf..0193ce56e4 100644 --- a/racket/src/racket/src/cstartup.inc +++ b/racket/src/racket/src/cstartup.inc @@ -1,5 +1,5 @@ { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,48,46,49,46,56,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,48,46,49,46,57,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,51,0,0,0,1,0,0,10,0,14,0, 27,0,31,0,38,0,42,0,49,0,54,0,61,0,66,0,69,0,74,0,83, 0,87,0,93,0,107,0,121,0,124,0,130,0,134,0,136,0,147,0,149,0, @@ -16,12 +16,12 @@ 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,36,11,8,240, -156,88,0,0,95,144,2,17,36,36,144,2,16,36,36,144,2,16,36,36,16, +160,88,0,0,95,144,2,17,36,36,144,2,16,36,36,144,2,16,36,36,16, 20,2,8,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2,2, 2,10,2,2,2,3,2,2,2,9,2,2,2,11,2,2,2,12,2,2,97, -37,11,8,240,156,88,0,0,93,144,2,16,36,37,16,2,2,13,146,2,2, -37,2,13,2,2,2,13,96,11,11,8,240,156,88,0,0,16,0,96,38,11, -8,240,156,88,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2,14, +37,11,8,240,160,88,0,0,93,144,2,16,36,37,16,2,2,13,146,2,2, +37,2,13,2,2,2,13,96,11,11,8,240,160,88,0,0,16,0,96,38,11, +8,240,160,88,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2,14, 2,2,11,11,11,8,32,8,31,8,30,8,29,27,248,22,164,4,195,249,22, 157,4,80,143,39,36,251,22,90,2,18,248,22,102,199,12,249,22,80,2,19, 248,22,104,201,27,248,22,164,4,195,249,22,157,4,80,143,39,36,251,22,90, @@ -30,14 +30,14 @@ 82,194,248,22,152,18,193,249,22,157,4,80,143,39,36,251,22,90,2,18,248, 22,152,18,199,249,22,80,2,4,248,22,153,18,201,11,18,100,10,13,16,6, 36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11,11,2, -20,3,1,8,101,110,118,49,55,56,50,55,16,4,11,11,2,21,3,1,8, -101,110,118,49,55,56,50,56,27,248,22,82,248,22,164,4,196,28,248,22,88, +20,3,1,8,101,110,118,49,55,56,50,57,16,4,11,11,2,21,3,1,8, +101,110,118,49,55,56,51,48,27,248,22,82,248,22,164,4,196,28,248,22,88, 193,20,14,144,37,36,37,28,248,22,88,248,22,82,194,248,22,152,18,193,249, 22,157,4,80,143,39,36,250,22,90,2,22,248,22,90,249,22,90,248,22,90, 2,23,248,22,152,18,201,251,22,90,2,18,2,23,2,23,249,22,80,2,11, 248,22,153,18,204,18,100,11,13,16,6,36,2,14,2,2,11,11,11,8,32, 8,31,8,30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,55,56, -51,48,16,4,11,11,2,21,3,1,8,101,110,118,49,55,56,51,49,248,22, +51,50,16,4,11,11,2,21,3,1,8,101,110,118,49,55,56,51,51,248,22, 164,4,193,27,248,22,164,4,194,249,22,80,248,22,90,248,22,81,196,248,22, 153,18,195,27,248,22,82,248,22,164,4,23,197,1,249,22,157,4,80,143,39, 36,28,248,22,64,248,22,158,4,248,22,81,23,198,2,27,249,22,2,32,0, @@ -68,8 +68,8 @@ 9,248,22,158,4,248,22,81,200,64,101,108,115,101,10,248,22,152,18,197,250, 22,91,2,22,9,248,22,153,18,200,249,22,80,2,8,248,22,82,202,99,13, 16,6,36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11, -11,2,20,3,1,8,101,110,118,49,55,56,53,51,16,4,11,11,2,21,3, -1,8,101,110,118,49,55,56,53,52,18,143,94,10,64,118,111,105,100,8,48, +11,2,20,3,1,8,101,110,118,49,55,56,53,53,16,4,11,11,2,21,3, +1,8,101,110,118,49,55,56,53,54,18,143,94,10,64,118,111,105,100,8,48, 27,248,22,82,248,22,164,4,196,249,22,157,4,80,143,39,36,28,248,22,64, 248,22,158,4,248,22,81,197,250,22,90,2,28,248,22,90,248,22,152,18,199, 248,22,102,198,27,248,22,158,4,248,22,152,18,197,250,22,90,2,28,248,22, @@ -100,7 +100,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 2051); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,48,46,49,46,56,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,48,46,49,46,57,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,187,0,0,0,1,0,0,8,0,21,0, 26,0,43,0,55,0,77,0,106,0,150,0,156,0,165,0,172,0,187,0,205, 0,217,0,233,0,247,0,13,1,32,1,39,1,73,1,90,1,107,1,130,1, @@ -559,7 +559,7 @@ 22,139,15,10,22,140,15,10,22,143,15,10,22,142,15,11,22,144,15,10,22, 141,15,10,22,145,15,10,22,146,15,10,22,147,15,10,22,148,15,10,22,149, 15,11,22,150,15,10,22,136,15,11,247,23,193,1,250,22,177,11,2,8,2, -52,23,196,1,248,22,9,20,20,94,88,148,36,37,8,43,16,4,8,128,6, +52,23,196,1,248,22,8,20,20,94,88,148,36,37,8,43,16,4,8,128,6, 8,128,104,8,240,0,64,0,0,36,9,224,1,2,33,144,2,23,195,1,0, 7,35,114,120,34,47,43,34,28,248,22,152,7,23,195,2,27,249,22,162,16, 2,146,2,23,197,2,28,23,193,2,28,249,22,128,4,248,22,101,23,196,2, @@ -1017,7 +1017,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 19187); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,48,46,49,46,56,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,48,46,49,46,57,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,14,0,0,0,1,0,0,15,0,40,0, 57,0,75,0,97,0,120,0,140,0,162,0,171,0,180,0,187,0,196,0,203, 0,0,0,231,1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99, @@ -1047,7 +1047,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 557); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,48,46,49,46,56,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,48,46,49,46,57,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,106,0,0,0,1,0,0,7,0,18,0, 45,0,51,0,60,0,67,0,89,0,102,0,128,0,145,0,167,0,175,0,187, 0,202,0,218,0,236,0,0,1,12,1,28,1,51,1,75,1,87,1,118,1, @@ -1057,8 +1057,8 @@ 5,249,12,23,13,74,13,165,13,181,13,197,13,211,13,227,13,46,14,62,14, 78,14,94,14,169,14,76,15,92,15,167,15,162,16,42,17,117,17,24,18,37, 18,190,18,118,19,161,19,243,19,115,20,176,20,184,20,195,20,229,21,243,21, -15,22,28,22,205,22,212,22,116,23,138,23,158,23,220,23,230,23,244,23,25, -24,124,24,128,24,135,24,89,25,192,33,245,33,13,34,37,34,0,0,64,38, +15,22,28,22,205,22,212,22,116,23,136,23,236,23,2,24,12,24,26,24,63, +24,162,24,166,24,173,24,122,25,14,34,67,34,91,34,115,34,0,0,142,38, 0,0,66,35,37,98,111,111,116,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,68,35,37,112,97,114,97,109,122,29, @@ -1345,191 +1345,195 @@ 111,100,117,108,101,32,112,97,116,104,58,32,126,115,10,23,202,2,248,22,167, 13,28,23,196,2,251,22,175,12,23,198,1,247,22,29,248,22,90,23,201,1, 23,199,1,86,94,23,196,1,250,22,138,13,23,197,1,247,22,29,23,198,1, -28,249,22,158,7,194,2,38,2,29,28,249,22,158,7,194,2,37,62,117,112, -192,32,93,88,148,8,36,37,50,11,67,115,115,45,62,114,107,116,222,33,94, -19,248,22,155,7,194,28,249,22,132,4,23,195,4,39,28,249,22,158,7,6, -3,3,46,115,115,249,22,174,7,197,249,22,184,3,23,199,4,39,249,22,175, -7,250,22,174,7,198,36,249,22,184,3,23,200,4,39,2,42,193,193,2,0, -8,35,114,120,34,91,46,93,34,32,96,88,148,8,36,37,47,11,2,33,222, -33,97,28,248,22,88,23,194,2,9,250,22,91,6,4,4,10,32,32,32,248, -22,172,15,248,22,103,23,198,2,248,2,96,248,22,82,23,198,1,28,249,22, -170,9,248,22,82,23,200,2,23,197,1,28,249,22,168,9,248,22,152,18,23, -200,1,23,196,1,251,22,173,11,2,23,6,41,41,99,121,99,108,101,32,105, -110,32,108,111,97,100,105,110,103,10,32,32,97,116,32,112,97,116,104,58,32, -126,97,10,32,32,112,97,116,104,115,58,126,97,23,200,1,249,22,1,22,175, -7,248,2,96,248,22,95,23,201,1,12,12,247,23,193,1,250,22,157,4,11, -196,195,20,13,144,80,144,45,50,38,249,22,80,249,22,80,248,22,185,16,247, -22,138,14,23,201,1,23,195,1,20,13,144,80,144,45,38,37,252,80,144,50, -39,37,249,22,33,11,80,144,52,38,37,22,190,4,23,200,2,22,128,5,248, -28,23,207,2,20,20,94,88,148,8,36,37,46,11,9,223,14,33,100,23,207, -1,86,94,23,207,1,22,7,28,248,22,64,23,206,2,23,205,1,28,28,248, -22,78,23,206,2,249,22,168,9,248,22,152,18,23,208,2,2,34,11,23,205, -1,86,94,23,205,1,28,248,22,150,5,23,202,2,27,248,22,152,5,23,203, -2,28,248,22,64,193,249,22,90,2,4,194,192,23,201,2,249,247,22,175,5, -23,200,1,27,248,22,68,248,22,172,15,23,201,1,28,23,203,2,28,250,22, -158,2,248,22,81,23,201,1,23,201,1,11,249,22,80,11,204,249,22,80,194, -204,192,86,96,28,248,22,160,5,23,196,2,12,28,248,22,155,4,23,198,2, -250,22,175,11,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,112,97, -116,104,23,200,2,250,22,177,11,2,23,2,35,23,198,2,28,28,23,196,2, -248,22,150,5,23,197,2,10,12,250,22,177,11,2,23,6,31,31,40,111,114, -47,99,32,35,102,32,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101, -45,112,97,116,104,63,41,23,199,2,28,28,23,197,2,248,22,155,4,23,198, -2,10,12,250,22,177,11,2,23,6,17,17,40,111,114,47,99,32,35,102,32, -115,121,110,116,97,120,63,41,23,200,2,28,28,248,22,78,23,196,2,249,22, -168,9,248,22,152,18,23,198,2,2,4,11,86,97,23,198,1,23,197,1,23, -196,1,23,193,1,248,22,151,5,248,22,102,23,197,1,28,28,248,22,78,23, +32,92,88,148,8,36,37,50,11,67,115,115,45,62,114,107,116,222,33,93,19, +248,22,155,7,194,28,249,22,132,4,23,195,4,39,28,249,22,168,9,7,46, +249,22,156,7,197,249,22,184,3,23,199,4,39,28,28,249,22,168,9,7,115, +249,22,156,7,197,249,22,184,3,23,199,4,38,249,22,168,9,7,115,249,22, +156,7,197,249,22,184,3,23,199,4,37,11,249,22,175,7,250,22,174,7,198, +36,249,22,184,3,23,200,4,39,2,42,193,193,193,2,28,249,22,158,7,194, +2,38,2,29,28,249,22,158,7,194,2,37,62,117,112,192,0,8,35,114,120, +34,91,46,93,34,32,96,88,148,8,36,37,47,11,2,33,222,33,97,28,248, +22,88,23,194,2,9,250,22,91,6,4,4,10,32,32,32,248,22,172,15,248, +22,103,23,198,2,248,2,96,248,22,82,23,198,1,28,249,22,170,9,248,22, +82,23,200,2,23,197,1,28,249,22,168,9,248,22,152,18,23,200,1,23,196, +1,251,22,173,11,2,23,6,41,41,99,121,99,108,101,32,105,110,32,108,111, +97,100,105,110,103,10,32,32,97,116,32,112,97,116,104,58,32,126,97,10,32, +32,112,97,116,104,115,58,126,97,23,200,1,249,22,1,22,175,7,248,2,96, +248,22,95,23,201,1,12,12,247,23,193,1,250,22,157,4,11,196,195,20,13, +144,80,144,46,50,38,249,22,80,249,22,80,23,198,1,23,202,1,23,195,1, +20,13,144,80,144,46,38,37,252,80,144,51,39,37,249,22,33,11,80,144,53, +38,37,22,190,4,23,201,2,22,128,5,248,28,23,208,2,20,20,94,88,148, +8,36,37,46,11,9,223,15,33,100,23,208,1,86,94,23,208,1,22,7,28, +248,22,64,23,207,2,23,206,1,28,28,248,22,78,23,207,2,249,22,168,9, +248,22,152,18,23,209,2,2,34,11,23,206,1,86,94,23,206,1,28,248,22, +150,5,23,203,2,27,248,22,152,5,23,204,2,28,248,22,64,193,249,22,90, +2,4,194,192,23,202,2,249,247,22,175,5,23,201,1,27,248,22,68,248,22, +172,15,23,202,1,28,23,204,2,28,250,22,158,2,248,22,81,23,202,1,23, +202,1,11,249,22,80,11,205,249,22,80,194,205,192,86,96,28,248,22,160,5, +23,196,2,12,28,248,22,155,4,23,198,2,250,22,175,11,11,6,15,15,98, +97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,200,2,250,22,177,11, +2,23,2,35,23,198,2,28,28,23,196,2,248,22,150,5,23,197,2,10,12, +250,22,177,11,2,23,6,31,31,40,111,114,47,99,32,35,102,32,114,101,115, +111,108,118,101,100,45,109,111,100,117,108,101,45,112,97,116,104,63,41,23,199, +2,28,28,23,197,2,248,22,155,4,23,198,2,10,12,250,22,177,11,2,23, +6,17,17,40,111,114,47,99,32,35,102,32,115,121,110,116,97,120,63,41,23, +200,2,28,28,248,22,78,23,196,2,249,22,168,9,248,22,152,18,23,198,2, +2,4,11,86,97,23,198,1,23,197,1,23,196,1,23,193,1,248,22,151,5, +248,22,102,23,197,1,28,28,248,22,78,23,196,2,28,249,22,168,9,248,22, +152,18,23,198,2,2,36,28,248,22,78,248,22,102,23,197,2,249,22,168,9, +248,22,106,23,198,2,2,4,11,11,11,86,97,23,198,1,23,197,1,23,196, +1,23,193,1,248,22,151,5,249,2,87,248,22,119,23,199,2,248,22,104,23, +199,1,28,28,248,22,78,23,196,2,28,249,22,168,9,248,22,152,18,23,198, +2,2,36,28,28,249,22,170,9,248,22,102,23,198,2,2,38,10,249,22,170, +9,248,22,102,23,198,2,2,37,28,23,196,2,27,248,22,152,5,23,198,2, +28,248,22,64,193,10,28,248,22,78,193,248,22,64,248,22,152,18,194,11,11, +11,11,11,86,96,23,198,1,23,197,1,23,193,1,27,248,22,152,5,23,198, +1,248,22,151,5,249,2,87,28,248,22,78,23,197,2,248,22,152,18,23,197, +2,23,196,2,27,28,249,22,170,9,248,22,102,23,203,2,2,37,248,22,153, +18,200,248,22,104,200,28,248,22,78,23,198,2,249,22,94,248,22,153,18,199, +194,192,28,28,248,22,78,23,196,2,249,22,168,9,248,22,152,18,23,198,2, +2,40,11,86,94,248,80,144,38,8,29,39,23,194,2,253,24,199,1,23,201, +1,23,202,1,23,203,1,23,204,1,11,80,143,43,56,28,28,248,22,78,23, 196,2,28,249,22,168,9,248,22,152,18,23,198,2,2,36,28,248,22,78,248, -22,102,23,197,2,249,22,168,9,248,22,106,23,198,2,2,4,11,11,11,86, -97,23,198,1,23,197,1,23,196,1,23,193,1,248,22,151,5,249,2,87,248, -22,119,23,199,2,248,22,104,23,199,1,28,28,248,22,78,23,196,2,28,249, -22,168,9,248,22,152,18,23,198,2,2,36,28,28,249,22,170,9,248,22,102, -23,198,2,2,38,10,249,22,170,9,248,22,102,23,198,2,2,37,28,23,196, -2,27,248,22,152,5,23,198,2,28,248,22,64,193,10,28,248,22,78,193,248, -22,64,248,22,152,18,194,11,11,11,11,11,86,96,23,198,1,23,197,1,23, -193,1,27,248,22,152,5,23,198,1,248,22,151,5,249,2,87,28,248,22,78, -23,197,2,248,22,152,18,23,197,2,23,196,2,27,28,249,22,170,9,248,22, -102,23,203,2,2,37,248,22,153,18,200,248,22,104,200,28,248,22,78,23,198, -2,249,22,94,248,22,153,18,199,194,192,28,28,248,22,78,23,196,2,249,22, -168,9,248,22,152,18,23,198,2,2,40,11,86,94,248,80,144,38,8,29,39, -23,194,2,253,24,199,1,23,201,1,23,202,1,23,203,1,23,204,1,11,80, -143,43,56,28,28,248,22,78,23,196,2,28,249,22,168,9,248,22,152,18,23, -198,2,2,36,28,248,22,78,248,22,102,23,197,2,249,22,168,9,248,22,106, -23,198,2,2,40,11,11,11,86,94,248,80,144,38,8,29,39,23,194,2,253, -24,199,1,248,22,102,23,202,2,23,202,1,23,203,1,23,204,1,248,22,104, -23,202,1,80,143,43,56,86,94,23,193,1,27,88,148,8,36,37,54,8,240, -0,0,8,0,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45, -101,114,114,225,2,5,3,33,91,27,28,248,22,78,23,198,2,28,249,22,168, -9,2,36,248,22,152,18,23,200,2,27,248,22,102,23,199,2,28,28,249,22, -170,9,23,195,2,2,38,10,249,22,170,9,23,195,2,2,37,86,94,23,193, -1,28,23,199,2,27,248,22,152,5,23,201,2,28,248,22,78,193,248,22,152, -18,193,192,250,22,173,11,2,23,6,45,45,110,111,32,98,97,115,101,32,112, -97,116,104,32,102,111,114,32,114,101,108,97,116,105,118,101,32,115,117,98,109, -111,100,117,108,101,32,112,97,116,104,58,32,126,46,115,23,201,2,192,23,197, -2,23,197,2,27,28,248,22,78,23,199,2,28,249,22,168,9,2,36,248,22, -152,18,23,201,2,27,28,28,28,249,22,170,9,248,22,102,23,202,2,2,38, -10,249,22,170,9,248,22,102,23,202,2,2,37,23,200,2,11,27,248,22,152, -5,23,202,2,27,28,249,22,170,9,248,22,102,23,204,2,2,37,248,22,153, -18,23,202,1,248,22,104,23,202,1,28,248,22,78,23,195,2,249,2,87,248, -22,152,18,23,197,2,249,22,94,248,22,153,18,23,199,1,23,197,1,249,2, -87,23,196,1,23,195,1,249,2,87,2,38,28,249,22,170,9,248,22,102,23, -204,2,2,37,248,22,153,18,23,202,1,248,22,104,23,202,1,28,248,22,78, -193,248,22,153,18,193,11,11,11,27,28,248,22,64,23,196,2,27,248,80,144, -43,48,39,249,22,80,23,199,2,247,22,148,16,28,23,193,2,192,86,94,23, -193,1,90,144,38,11,89,146,38,36,11,249,80,144,46,54,39,248,22,71,23, -201,2,11,27,28,248,22,88,23,195,2,2,41,249,22,175,7,23,197,2,2, -42,251,80,144,49,8,24,39,23,204,1,28,248,22,88,23,199,2,23,199,1, -86,94,23,199,1,248,22,81,23,199,2,28,248,22,88,23,199,2,86,94,23, -198,1,9,248,22,153,18,23,199,1,23,197,1,28,248,22,152,7,23,196,2, -86,94,23,196,1,27,248,80,144,43,8,30,39,23,202,2,27,248,80,144,44, -48,39,249,22,80,23,200,2,23,197,2,28,23,193,2,192,86,94,23,193,1, -90,144,38,11,89,146,38,36,11,249,80,144,47,54,39,23,201,2,11,250,22, -1,22,186,15,23,199,1,249,22,94,249,22,2,32,0,88,148,8,36,37,44, -11,9,222,33,92,23,200,1,248,22,90,248,2,93,23,201,1,28,248,22,168, -15,23,196,2,86,94,23,196,1,248,80,144,42,8,31,39,248,22,132,16,28, -248,22,129,16,23,198,2,23,197,2,249,22,130,16,23,199,2,248,80,144,46, -8,30,39,23,205,2,28,249,22,168,9,248,22,81,23,198,2,2,34,27,248, -80,144,43,48,39,249,22,80,23,199,2,247,22,148,16,28,23,193,2,192,86, -94,23,193,1,90,144,39,11,89,146,38,36,11,249,80,144,47,54,39,248,22, -102,23,202,2,11,89,146,37,38,11,28,248,22,88,248,22,104,23,201,2,28, -248,22,88,23,194,2,249,22,164,16,2,95,23,196,2,11,10,27,28,23,196, -2,248,2,93,23,196,2,28,248,22,88,23,195,2,2,41,28,249,22,164,16, -2,95,23,197,2,248,2,93,23,196,2,249,22,175,7,23,197,2,2,42,27, -28,23,197,1,86,94,23,196,1,249,22,94,28,248,22,88,248,22,104,23,205, -2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,94,249,22,2,80,144, -53,8,32,39,248,22,104,23,208,2,23,197,1,28,248,22,88,23,196,2,86, -94,23,195,1,248,22,90,23,197,1,86,94,23,196,1,23,195,1,251,80,144, -51,8,24,39,23,206,1,248,22,81,23,198,2,248,22,153,18,23,198,1,23, -198,1,28,249,22,168,9,248,22,152,18,23,198,2,2,39,248,80,144,42,8, -31,39,248,22,132,16,249,22,130,16,248,22,134,16,248,22,102,23,201,2,248, -80,144,46,8,30,39,23,205,2,12,86,94,28,28,248,22,168,15,23,194,2, -10,248,22,183,8,23,194,2,12,28,23,201,2,250,22,175,11,67,114,101,113, -117,105,114,101,249,22,136,8,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,81,23,199,2,6,0,0,23, -204,2,250,22,177,11,2,23,2,35,23,198,2,27,28,248,22,183,8,23,195, -2,249,22,188,8,23,196,2,36,249,22,132,16,248,22,133,16,23,197,2,11, -27,28,248,22,183,8,23,196,2,249,22,188,8,23,197,2,37,248,80,144,44, -8,25,39,23,195,2,90,144,39,11,89,146,39,36,11,28,248,22,183,8,23, -199,2,250,22,7,2,43,249,22,188,8,23,203,2,38,2,43,248,22,189,15, -23,198,2,86,95,23,195,1,23,193,1,27,28,248,22,183,8,23,200,2,249, -22,188,8,23,201,2,39,249,80,144,49,59,39,23,197,2,5,0,27,28,248, -22,183,8,23,201,2,249,22,188,8,23,202,2,40,248,22,151,5,23,200,2, -27,250,22,158,2,80,144,52,41,38,248,22,185,16,247,22,138,14,11,27,28, -23,194,2,23,194,1,86,94,23,194,1,27,249,22,80,247,22,138,2,247,22, -138,2,86,94,250,22,156,2,80,144,54,41,38,248,22,185,16,247,22,138,14, -195,192,27,28,23,204,2,248,22,151,5,249,22,80,248,22,152,5,23,200,2, -23,207,2,23,196,2,86,95,28,23,212,1,27,250,22,158,2,248,22,81,23, -199,2,196,11,28,23,193,1,12,27,27,28,248,22,17,80,144,55,51,38,80, -144,54,51,38,247,22,19,251,22,33,11,80,144,58,50,38,9,23,197,1,27, -248,22,185,16,247,22,138,14,86,94,249,22,3,20,20,94,88,148,8,36,37, -54,11,9,226,14,13,2,3,33,98,23,195,1,23,196,2,248,28,248,22,17, -80,144,56,51,38,32,0,88,148,36,37,42,11,9,222,33,99,80,144,55,8, -33,39,20,20,97,88,148,36,36,8,24,8,240,12,64,0,0,9,232,19,22, -15,16,13,12,8,7,5,2,33,101,23,195,1,23,198,1,23,208,1,23,215, -1,12,28,28,248,22,183,8,23,204,1,11,28,248,22,152,7,23,206,2,10, -28,248,22,64,23,206,2,10,28,248,22,78,23,206,2,249,22,168,9,248,22, -152,18,23,208,2,2,34,11,249,80,144,53,49,39,28,248,22,152,7,23,208, -2,249,22,80,23,209,1,248,80,144,56,8,30,39,23,215,1,86,94,23,212, -1,249,22,80,23,209,1,247,22,148,16,252,22,185,8,23,209,1,23,208,1, -23,206,1,23,204,1,23,203,1,12,192,86,96,20,18,144,11,80,143,36,56, -248,80,144,37,8,28,37,249,22,33,11,80,144,39,58,37,248,22,189,4,80, -144,37,57,38,248,22,175,5,80,144,37,37,39,248,22,137,15,80,144,37,45, -39,20,18,144,11,80,143,36,56,248,80,144,37,8,28,37,249,22,33,11,80, -144,39,58,37,20,18,144,11,80,143,36,56,248,80,144,37,8,28,37,249,22, -33,11,80,144,39,58,37,144,36,20,114,144,36,16,1,11,16,0,20,26,15, -53,9,2,1,2,1,29,11,11,11,11,9,9,11,11,11,10,38,80,143,36, -36,20,114,144,41,16,29,2,2,2,3,30,2,6,2,7,11,6,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,11,4,30,2,8,72,112,97,116,104,45,115,116,114,105,110,103, -63,39,196,15,2,9,30,2,8,71,114,101,114,111,111,116,45,112,97,116,104, -41,196,16,30,2,8,75,112,97,116,104,45,97,100,100,45,115,117,102,102,105, -120,41,196,12,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,2, -18,2,19,2,20,2,21,2,22,2,23,30,2,24,2,7,11,6,30,2,8, -79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,41, -196,14,30,2,8,73,102,105,110,100,45,99,111,108,45,102,105,108,101,44,196, -4,30,2,8,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104, -39,196,11,2,25,2,26,30,2,24,74,114,101,112,97,114,97,109,101,116,101, -114,105,122,101,11,7,16,0,37,39,36,16,0,36,16,16,2,16,2,17,2, -9,2,13,2,18,2,19,2,12,2,3,2,11,2,2,2,21,2,14,2,15, -2,10,2,20,2,23,52,11,11,11,16,3,2,25,2,22,2,26,16,3,11, -11,11,16,3,2,25,2,22,2,26,39,39,37,12,11,11,16,0,16,0,16, -0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,24,20,15,16,2, -248,22,179,8,69,115,111,45,115,117,102,102,105,120,80,144,36,36,37,20,15, -16,2,88,148,36,38,8,43,8,189,3,2,3,223,0,33,56,80,144,36,37, -37,20,15,16,2,32,0,88,148,8,36,41,52,11,2,10,222,33,57,80,144, -36,44,37,20,15,16,2,20,27,143,32,0,88,148,8,36,37,42,11,2,11, -222,192,32,0,88,148,8,36,37,42,11,2,11,222,192,80,144,36,45,37,20, -15,16,2,247,22,141,2,80,144,36,41,37,20,15,16,2,8,128,8,80,144, -36,46,37,20,15,16,2,249,22,184,8,8,128,8,11,80,144,36,47,37,20, -15,16,2,88,148,8,36,37,50,8,128,32,2,14,223,0,33,58,80,144,36, -48,37,20,15,16,2,88,148,8,36,38,55,8,128,32,2,15,223,0,33,59, -80,144,36,49,37,20,15,16,2,247,22,76,80,144,36,50,37,20,15,16,2, -248,22,18,74,109,111,100,117,108,101,45,108,111,97,100,105,110,103,80,144,36, -51,37,20,15,16,2,11,80,143,36,52,20,15,16,2,11,80,143,36,53,20, -15,16,2,32,0,88,148,36,38,57,11,2,20,222,33,78,80,144,36,54,37, -20,15,16,2,32,0,88,148,8,36,37,49,11,2,21,222,33,79,80,144,36, -55,37,20,15,16,2,11,80,143,36,56,20,15,16,2,88,149,8,34,37,45, -8,240,0,0,80,0,1,21,112,114,101,112,45,112,108,97,110,101,116,45,114, -101,115,111,108,118,101,114,33,37,224,1,0,33,80,80,144,36,8,29,39,20, -15,16,2,88,148,36,37,50,8,240,0,0,3,0,67,103,101,116,45,100,105, -114,223,0,33,81,80,144,36,8,30,39,20,15,16,2,88,148,36,37,49,8, -240,0,0,128,0,72,112,97,116,104,45,115,115,45,62,114,107,116,223,0,33, -82,80,144,36,8,31,39,20,15,16,2,88,148,8,36,37,45,8,240,0,0, -4,0,9,223,0,33,83,80,144,36,8,32,39,20,15,16,2,88,148,36,37, -45,8,240,0,128,0,0,9,223,0,33,84,80,144,36,8,33,39,20,15,16, -2,27,11,20,19,143,36,90,144,37,10,89,146,37,36,10,20,25,96,2,23, -88,148,8,36,38,54,8,32,9,224,2,1,33,85,88,148,36,39,49,11,9, -223,0,33,86,88,148,36,40,8,32,16,4,8,240,44,240,0,0,8,240,156, -227,0,0,39,36,9,224,2,1,33,102,207,80,144,36,57,37,20,15,16,2, -88,148,36,36,45,16,2,8,130,8,8,176,65,2,25,223,0,33,103,80,144, -36,8,26,37,20,15,16,2,20,27,143,88,148,8,36,36,45,16,2,36,8, -144,65,2,26,223,0,33,104,88,148,8,36,36,45,16,2,36,8,144,65,2, -26,223,0,33,105,80,144,36,8,27,37,96,29,94,2,4,68,35,37,107,101, -114,110,101,108,11,29,94,2,4,69,35,37,109,105,110,45,115,116,120,11,2, -8,2,24,9,9,9,36,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 10046); +22,102,23,197,2,249,22,168,9,248,22,106,23,198,2,2,40,11,11,11,86, +94,248,80,144,38,8,29,39,23,194,2,253,24,199,1,248,22,102,23,202,2, +23,202,1,23,203,1,23,204,1,248,22,104,23,202,1,80,143,43,56,86,94, +23,193,1,27,88,148,8,36,37,54,8,240,0,0,8,0,79,115,104,111,119, +45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,225,2,5,3,33,91, +27,28,248,22,78,23,198,2,28,249,22,168,9,2,36,248,22,152,18,23,200, +2,27,248,22,102,23,199,2,28,28,249,22,170,9,23,195,2,2,38,10,249, +22,170,9,23,195,2,2,37,86,94,23,193,1,28,23,199,2,27,248,22,152, +5,23,201,2,28,248,22,78,193,248,22,152,18,193,192,250,22,173,11,2,23, +6,45,45,110,111,32,98,97,115,101,32,112,97,116,104,32,102,111,114,32,114, +101,108,97,116,105,118,101,32,115,117,98,109,111,100,117,108,101,32,112,97,116, +104,58,32,126,46,115,23,201,2,192,23,197,2,23,197,2,27,28,248,22,78, +23,199,2,28,249,22,168,9,2,36,248,22,152,18,23,201,2,27,28,28,28, +249,22,170,9,248,22,102,23,202,2,2,38,10,249,22,170,9,248,22,102,23, +202,2,2,37,23,200,2,11,27,248,22,152,5,23,202,2,27,28,249,22,170, +9,248,22,102,23,204,2,2,37,248,22,153,18,23,202,1,248,22,104,23,202, +1,28,248,22,78,23,195,2,249,2,87,248,22,152,18,23,197,2,249,22,94, +248,22,153,18,23,199,1,23,197,1,249,2,87,23,196,1,23,195,1,249,2, +87,2,38,28,249,22,170,9,248,22,102,23,204,2,2,37,248,22,153,18,23, +202,1,248,22,104,23,202,1,28,248,22,78,193,248,22,153,18,193,11,11,11, +27,28,248,22,64,23,196,2,27,248,80,144,43,48,39,249,22,80,23,199,2, +248,22,185,16,247,22,138,14,28,23,193,2,192,86,94,23,193,1,90,144,38, +11,89,146,38,36,11,249,80,144,46,54,39,248,22,71,23,201,2,11,27,28, +248,22,88,23,195,2,2,41,249,22,175,7,23,197,2,2,42,251,80,144,49, +8,24,39,23,204,1,28,248,22,88,23,199,2,23,199,1,86,94,23,199,1, +248,22,81,23,199,2,28,248,22,88,23,199,2,86,94,23,198,1,9,248,22, +153,18,23,199,1,23,197,1,28,248,22,152,7,23,196,2,86,94,23,196,1, +27,248,80,144,43,8,30,39,23,202,2,27,248,80,144,44,48,39,249,22,80, +23,200,2,23,197,2,28,23,193,2,192,86,94,23,193,1,90,144,38,11,89, +146,38,36,11,249,80,144,47,54,39,23,201,2,11,28,248,22,88,23,194,2, +86,94,23,193,1,249,22,186,15,23,198,1,248,2,92,23,197,1,250,22,1, +22,186,15,23,199,1,249,22,94,249,22,2,32,0,88,148,8,36,37,44,11, +9,222,33,94,23,200,1,248,22,90,248,2,92,23,201,1,28,248,22,168,15, +23,196,2,86,94,23,196,1,248,80,144,42,8,31,39,248,22,132,16,28,248, +22,129,16,23,198,2,23,197,2,249,22,130,16,23,199,2,248,80,144,46,8, +30,39,23,205,2,28,249,22,168,9,248,22,81,23,198,2,2,34,27,248,80, +144,43,48,39,249,22,80,23,199,2,248,22,185,16,247,22,138,14,28,23,193, +2,192,86,94,23,193,1,90,144,39,11,89,146,38,36,11,249,80,144,47,54, +39,248,22,102,23,202,2,11,89,146,37,38,11,28,248,22,88,248,22,104,23, +201,2,28,248,22,88,23,194,2,249,22,164,16,2,95,23,196,2,11,10,27, +28,23,196,2,248,2,92,23,196,2,28,248,22,88,23,195,2,2,41,28,249, +22,164,16,2,95,23,197,2,248,2,92,23,196,2,249,22,175,7,23,197,2, +2,42,27,28,23,197,1,86,94,23,196,1,249,22,94,28,248,22,88,248,22, +104,23,205,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,94,249,22, +2,80,144,53,8,32,39,248,22,104,23,208,2,23,197,1,28,248,22,88,23, +196,2,86,94,23,195,1,248,22,90,23,197,1,86,94,23,196,1,23,195,1, +251,80,144,51,8,24,39,23,206,1,248,22,81,23,198,2,248,22,153,18,23, +198,1,23,198,1,28,249,22,168,9,248,22,152,18,23,198,2,2,39,248,80, +144,42,8,31,39,248,22,132,16,249,22,130,16,248,22,134,16,248,22,102,23, +201,2,248,80,144,46,8,30,39,23,205,2,12,86,94,28,28,248,22,168,15, +23,194,2,10,248,22,183,8,23,194,2,12,28,23,201,2,250,22,175,11,67, +114,101,113,117,105,114,101,249,22,136,8,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,81,23,199,2,6, +0,0,23,204,2,250,22,177,11,2,23,2,35,23,198,2,27,28,248,22,183, +8,23,195,2,249,22,188,8,23,196,2,36,249,22,132,16,248,22,133,16,23, +197,2,11,27,28,248,22,183,8,23,196,2,249,22,188,8,23,197,2,37,248, +80,144,44,8,25,39,23,195,2,90,144,39,11,89,146,39,36,11,28,248,22, +183,8,23,199,2,250,22,7,2,43,249,22,188,8,23,203,2,38,2,43,248, +22,189,15,23,198,2,86,95,23,195,1,23,193,1,27,28,248,22,183,8,23, +200,2,249,22,188,8,23,201,2,39,249,80,144,49,59,39,23,197,2,5,0, +27,28,248,22,183,8,23,201,2,249,22,188,8,23,202,2,40,248,22,151,5, +23,200,2,27,250,22,158,2,80,144,52,41,38,248,22,185,16,247,22,138,14, +11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249,22,80,247,22,138, +2,247,22,138,2,86,94,250,22,156,2,80,144,54,41,38,248,22,185,16,247, +22,138,14,195,192,27,28,23,204,2,248,22,151,5,249,22,80,248,22,152,5, +23,200,2,23,207,2,23,196,2,86,95,28,23,212,2,27,250,22,158,2,248, +22,81,23,199,2,196,11,28,23,193,1,12,27,27,28,248,22,17,80,144,55, +51,38,80,144,54,51,38,247,22,19,251,22,33,11,80,144,58,50,38,9,23, +197,1,27,248,22,185,16,247,22,138,14,86,94,249,22,3,88,148,8,36,37, +54,11,9,226,14,13,2,3,33,98,23,196,2,248,28,248,22,17,80,144,56, +51,38,32,0,88,148,36,37,42,11,9,222,33,99,80,144,55,8,33,39,20, +20,98,88,148,36,36,8,25,8,240,12,64,0,0,9,233,19,22,15,16,13, +12,8,7,5,1,2,33,101,23,195,1,23,194,1,23,198,1,23,208,1,23, +215,1,12,28,28,248,22,183,8,23,204,1,86,94,23,212,1,11,28,23,212, +1,28,248,22,152,7,23,206,2,10,28,248,22,64,23,206,2,10,28,248,22, +78,23,206,2,249,22,168,9,248,22,152,18,23,208,2,2,34,11,11,249,80, +144,53,49,39,28,248,22,152,7,23,208,2,249,22,80,23,209,1,248,80,144, +56,8,30,39,23,215,1,86,94,23,212,1,249,22,80,23,209,1,248,22,185, +16,247,22,138,14,252,22,185,8,23,209,1,23,208,1,23,206,1,23,204,1, +23,203,1,12,192,86,96,20,18,144,11,80,143,36,56,248,80,144,37,8,28, +37,249,22,33,11,80,144,39,58,37,248,22,189,4,80,144,37,57,38,248,22, +175,5,80,144,37,37,39,248,22,137,15,80,144,37,45,39,20,18,144,11,80, +143,36,56,248,80,144,37,8,28,37,249,22,33,11,80,144,39,58,37,20,18, +144,11,80,143,36,56,248,80,144,37,8,28,37,249,22,33,11,80,144,39,58, +37,144,36,20,114,144,36,16,1,11,16,0,20,26,15,53,9,2,1,2,1, +29,11,11,11,11,9,9,11,11,11,10,38,80,143,36,36,20,114,144,41,16, +29,2,2,2,3,30,2,6,2,7,11,6,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,11,4, +30,2,8,72,112,97,116,104,45,115,116,114,105,110,103,63,39,196,15,2,9, +30,2,8,71,114,101,114,111,111,116,45,112,97,116,104,41,196,16,30,2,8, +75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,41,196,12,2,10, +2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2, +21,2,22,2,23,30,2,24,2,7,11,6,30,2,8,79,112,97,116,104,45, +114,101,112,108,97,99,101,45,115,117,102,102,105,120,41,196,14,30,2,8,73, +102,105,110,100,45,99,111,108,45,102,105,108,101,44,196,4,30,2,8,76,110, +111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,39,196,11,2,25,2, +26,30,2,24,74,114,101,112,97,114,97,109,101,116,101,114,105,122,101,11,7, +16,0,37,39,36,16,0,36,16,16,2,16,2,17,2,9,2,13,2,18,2, +19,2,12,2,3,2,11,2,2,2,21,2,14,2,15,2,10,2,20,2,23, +52,11,11,11,16,3,2,25,2,22,2,26,16,3,11,11,11,16,3,2,25, +2,22,2,26,39,39,37,12,11,11,16,0,16,0,16,0,36,36,11,12,11, +11,16,0,16,0,16,0,36,36,16,24,20,15,16,2,248,22,179,8,69,115, +111,45,115,117,102,102,105,120,80,144,36,36,37,20,15,16,2,88,148,36,38, +8,43,8,189,3,2,3,223,0,33,56,80,144,36,37,37,20,15,16,2,32, +0,88,148,8,36,41,52,11,2,10,222,33,57,80,144,36,44,37,20,15,16, +2,20,27,143,32,0,88,148,8,36,37,42,11,2,11,222,192,32,0,88,148, +8,36,37,42,11,2,11,222,192,80,144,36,45,37,20,15,16,2,247,22,141, +2,80,144,36,41,37,20,15,16,2,8,128,8,80,144,36,46,37,20,15,16, +2,249,22,184,8,8,128,8,11,80,144,36,47,37,20,15,16,2,88,148,8, +36,37,50,8,128,32,2,14,223,0,33,58,80,144,36,48,37,20,15,16,2, +88,148,8,36,38,55,8,128,32,2,15,223,0,33,59,80,144,36,49,37,20, +15,16,2,247,22,76,80,144,36,50,37,20,15,16,2,248,22,18,74,109,111, +100,117,108,101,45,108,111,97,100,105,110,103,80,144,36,51,37,20,15,16,2, +11,80,143,36,52,20,15,16,2,11,80,143,36,53,20,15,16,2,32,0,88, +148,36,38,57,11,2,20,222,33,78,80,144,36,54,37,20,15,16,2,32,0, +88,148,8,36,37,49,11,2,21,222,33,79,80,144,36,55,37,20,15,16,2, +11,80,143,36,56,20,15,16,2,88,149,8,34,37,45,8,240,0,0,80,0, +1,21,112,114,101,112,45,112,108,97,110,101,116,45,114,101,115,111,108,118,101, +114,33,37,224,1,0,33,80,80,144,36,8,29,39,20,15,16,2,88,148,36, +37,50,8,240,0,0,3,0,67,103,101,116,45,100,105,114,223,0,33,81,80, +144,36,8,30,39,20,15,16,2,88,148,36,37,49,8,240,0,0,128,0,72, +112,97,116,104,45,115,115,45,62,114,107,116,223,0,33,82,80,144,36,8,31, +39,20,15,16,2,88,148,8,36,37,45,8,240,0,0,4,0,9,223,0,33, +83,80,144,36,8,32,39,20,15,16,2,88,148,36,37,45,8,240,0,128,0, +0,9,223,0,33,84,80,144,36,8,33,39,20,15,16,2,27,11,20,19,143, +36,90,144,37,10,89,146,37,36,10,20,25,96,2,23,88,148,8,36,38,54, +8,32,9,224,2,1,33,85,88,148,36,39,49,11,9,223,0,33,86,88,148, +36,40,8,32,16,4,8,240,44,240,0,0,8,240,156,227,0,0,39,36,9, +224,2,1,33,102,207,80,144,36,57,37,20,15,16,2,88,148,36,36,45,16, +2,8,130,8,8,176,65,2,25,223,0,33,103,80,144,36,8,26,37,20,15, +16,2,20,27,143,88,148,8,36,36,45,16,2,36,8,144,65,2,26,223,0, +33,104,88,148,8,36,36,45,16,2,36,8,144,65,2,26,223,0,33,105,80, +144,36,8,27,37,96,29,94,2,4,68,35,37,107,101,114,110,101,108,11,29, +94,2,4,69,35,37,109,105,110,45,115,116,120,11,2,8,2,24,9,9,9, +36,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 10124); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,48,46,49,46,56,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,48,46,49,46,57,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,11,0,0,0,1,0,0,10,0,16,0, 29,0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,101,1,0, 0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2, @@ -1537,7 +1541,7 @@ 114,107,11,29,94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2,2, 74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,2,66, 35,37,98,111,111,116,11,29,94,2,2,68,35,37,101,120,112,111,98,115,11, -29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,27,91, +29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,34,91, 0,0,100,144,2,3,36,36,144,2,4,36,36,144,2,5,36,36,144,2,6, 36,36,144,2,7,36,36,144,2,8,36,36,144,2,9,36,36,144,2,9,36, 36,16,0,144,36,20,114,144,36,16,1,11,16,0,20,26,15,53,9,2,1, diff --git a/racket/src/racket/src/startup.inc b/racket/src/racket/src/startup.inc index 49ae69a85f..a8318cf369 100644 --- a/racket/src/racket/src/startup.inc +++ b/racket/src/racket/src/startup.inc @@ -748,13 +748,18 @@ "(define finish" "(lambda(i sep i2)" "(bytes->path-element" -"(bytes-append" +"(let((res(bytes-append" "(subbytes bs 0 i)" " sep" "(rest-bytes bs i2)" "(if(string? sfx)" "(string->bytes/locale sfx(char->integer #\\?))" -" sfx))" +" sfx))))" +"(if(zero?(bytes-length res))" +"(raise-arguments-error 'path-replace-suffix" +" \"removing suffix makes path element empty\"" +" \"given path\" s)" +" res))" "(if(path-for-some-system? s)" "(path-convention-type s)" "(system-path-convention-type)))))" @@ -1171,6 +1176,8 @@ " base))))))" "(current-load-relative-directory)" "(current-directory))))" +"(get-reg(lambda()" +"(namespace-module-registry(current-namespace))))" "(show-collection-err(lambda(msg)" "(let((msg(string-append" "(or(and stx" @@ -1196,7 +1203,9 @@ "(ss->rkt(lambda(s)" "(let((len(string-length s)))" "(if(and(len . >= . 3)" -" (string=? \".ss\" (substring s (- len 3))))" +"(equal? #\\.(string-ref s(- len 3)))" +"(equal? #\\s(string-ref s(- len 2)))" +"(equal? #\\s(string-ref s(- len 1))))" " (string-append (substring s 0 (- len 3)) \".rkt\")" " s))))" "(path-ss->rkt(lambda(p)" @@ -1240,7 +1249,7 @@ "(let((s-parsed" "(cond" "((symbol? s)" -"(or(path-cache-get(cons s(current-library-collection-paths)))" +"(or(path-cache-get(cons s(get-reg)))" "(let-values(((cols file)(split-relative-string(symbol->string s) #f)))" "(let*((f-file(if(null? cols)" " \"main.rkt\"" @@ -1253,6 +1262,8 @@ "(let*((dir(get-dir)))" "(or(path-cache-get(cons s dir))" "(let-values(((cols file)(split-relative-string s #f)))" +"(if(null? cols)" +"(build-path dir(ss->rkt file))" "(apply build-path " " dir" "(append" @@ -1262,13 +1273,13 @@ " ((string=? s \"..\") 'up)" "(else s)))" " cols)" -"(list(ss->rkt file))))))))" +"(list(ss->rkt file)))))))))" "((path? s) " "(path-ss->rkt(simplify-path(if(complete-path? s)" " s" "(path->complete-path s(get-dir))))))" "((eq?(car s) 'lib)" -"(or(path-cache-get(cons s(current-library-collection-paths)))" +"(or(path-cache-get(cons s(get-reg)))" "(let*-values(((cols file)(split-relative-string(cadr s) #f))" "((old-style?)(if(null?(cddr s))" "(and(null? cols)" @@ -1329,11 +1340,11 @@ "(vector-ref s-parsed 4)" "(make-resolved-module-path filename)))" "(hts(or(hash-ref -module-hash-table-table" -"(namespace-module-registry(current-namespace))" +"(get-reg)" " #f)" "(let((hts(cons(make-hasheq)(make-hasheq))))" "(hash-set! -module-hash-table-table" -"(namespace-module-registry(current-namespace))" +"(get-reg)" " hts)" " hts)))" "(modname(if subm-path" @@ -1353,7 +1364,7 @@ " -loading-filename" " null" " tag)))" -"(nsr(namespace-module-registry(current-namespace))))" +"(nsr(get-reg)))" "(for-each" "(lambda(s)" "(when(and(equal?(cdr s) normal-filename)" @@ -1372,9 +1383,7 @@ "(lambda(f)(f))" "(lambda(f)(call-with-continuation-prompt f -loading-prompt-tag)))" "(lambda()" -"(with-continuation-mark -loading-filename(cons(cons " -"(namespace-module-registry(current-namespace))" -" normal-filename)" +"(with-continuation-mark -loading-filename(cons(cons nsr normal-filename)" " loading)" "(parameterize((current-module-declare-name root-modname)" "(current-module-path-for-load" @@ -1399,13 +1408,14 @@ "(cons sym subm-path))" " sym)))))))))))" "(when(and(not(vector? s-parsed))" +" load?" "(or(string? s)" "(symbol? s)" "(and(pair? s)" "(eq?(car s) 'lib))))" "(path-cache-set!(if(string? s)" "(cons s(get-dir))" -"(cons s(current-library-collection-paths)))" +"(cons s(get-reg)))" "(vector filename" " normal-filename" " name" diff --git a/racket/src/racket/src/startup.rktl b/racket/src/racket/src/startup.rktl index 7c6b38786b..81fd726390 100644 --- a/racket/src/racket/src/startup.rktl +++ b/racket/src/racket/src/startup.rktl @@ -1349,6 +1349,8 @@ base)))))) (current-load-relative-directory) (current-directory)))] + [get-reg (lambda () + (namespace-module-registry (current-namespace)))] [show-collection-err (lambda (msg) (let ([msg (string-append (or (and stx @@ -1374,7 +1376,10 @@ [ss->rkt (lambda (s) (let ([len (string-length s)]) (if (and (len . >= . 3) - (string=? ".ss" (substring s (- len 3)))) + ;; ".ss" + (equal? #\. (string-ref s (- len 3))) + (equal? #\s (string-ref s (- len 2))) + (equal? #\s (string-ref s (- len 1)))) (string-append (substring s 0 (- len 3)) ".rkt") s)))] [path-ss->rkt (lambda (p) @@ -1421,7 +1426,7 @@ ;; Non-string result represents an error (cond [(symbol? s) - (or (path-cache-get (cons s (current-library-collection-paths))) + (or (path-cache-get (cons s (get-reg))) (let-values ([(cols file) (split-relative-string (symbol->string s) #f)]) (let* ([f-file (if (null? cols) "main.rkt" @@ -1434,23 +1439,25 @@ (let* ([dir (get-dir)]) (or (path-cache-get (cons s dir)) (let-values ([(cols file) (split-relative-string s #f)]) - (apply build-path - dir - (append - (map (lambda (s) - (cond - [(string=? s ".") 'same] - [(string=? s "..") 'up] - [else s])) - cols) - (list (ss->rkt file)))))))] + (if (null? cols) + (build-path dir (ss->rkt file)) + (apply build-path + dir + (append + (map (lambda (s) + (cond + [(string=? s ".") 'same] + [(string=? s "..") 'up] + [else s])) + cols) + (list (ss->rkt file))))))))] [(path? s) ;; Use filesystem-sensitive `simplify-path' here: (path-ss->rkt (simplify-path (if (complete-path? s) s (path->complete-path s (get-dir)))))] [(eq? (car s) 'lib) - (or (path-cache-get (cons s (current-library-collection-paths))) + (or (path-cache-get (cons s (get-reg))) (let*-values ([(cols file) (split-relative-string (cadr s) #f)] [(old-style?) (if (null? (cddr s)) (and (null? cols) @@ -1513,11 +1520,11 @@ (vector-ref s-parsed 4) (make-resolved-module-path filename))] [hts (or (hash-ref -module-hash-table-table - (namespace-module-registry (current-namespace)) + (get-reg) #f) (let ([hts (cons (make-hasheq) (make-hasheq))]) (hash-set! -module-hash-table-table - (namespace-module-registry (current-namespace)) + (get-reg) hts) hts))] [modname (if subm-path @@ -1539,7 +1546,7 @@ -loading-filename null tag))] - [nsr (namespace-module-registry (current-namespace))]) + [nsr (get-reg)]) (for-each (lambda (s) (when (and (equal? (cdr s) normal-filename) @@ -1558,9 +1565,7 @@ (lambda (f) (f)) (lambda (f) (call-with-continuation-prompt f -loading-prompt-tag))) (lambda () - (with-continuation-mark -loading-filename (cons (cons - (namespace-module-registry (current-namespace)) - normal-filename) + (with-continuation-mark -loading-filename (cons (cons nsr normal-filename) loading) (parameterize ([current-module-declare-name root-modname] [current-module-path-for-load @@ -1592,13 +1597,14 @@ sym))))))))))) ;; If a `lib' path, cache pathname manipulations (when (and (not (vector? s-parsed)) + load? (or (string? s) (symbol? s) (and (pair? s) (eq? (car s) 'lib)))) (path-cache-set! (if (string? s) (cons s (get-dir)) - (cons s (current-library-collection-paths))) + (cons s (get-reg))) (vector filename normal-filename name