From b89b56655b71284d1635ba5d2f18d6dfd978d215 Mon Sep 17 00:00:00 2001 From: ESL Date: Tue, 16 Jul 2024 21:54:25 -0400 Subject: [PATCH] separation of root env (=> root + hidden) --- src/t.scm | 68 +++++++++++++++++---------- t.c | 135 +++++++++++++++++++++++++++++++----------------------- 2 files changed, 122 insertions(+), 81 deletions(-) diff --git a/src/t.scm b/src/t.scm index 30110aa..31c0496 100644 --- a/src/t.scm +++ b/src/t.scm @@ -1853,6 +1853,21 @@ ; public registry for all non-hidden skint names (define *root-name-registry* (make-name-registry 300)) +; nonpublic registry for all hidden skint names (used by built-in macros) +(define *hidden-name-registry* (make-name-registry 1)) + +(define (builtin-sr-environment id at) + (cond [(new-id? id) (new-id-lookup id at)] + [(eq? at 'peek) ; for free-id=? + (or (name-lookup *hidden-name-registry* id #f) + (name-lookup *root-name-registry* id #f) + *root-name-registry*)] + [else + (name-lookup *hidden-name-registry* id + (lambda (n) ; create new bindings in rnr: + (name-lookup *root-name-registry* id + (lambda (n) (list 'ref n)))))])) + ; register integrable procedures (let loop ([i 0]) (let ([li (lookup-integrable i)]) ;=> #f, #, or integrable (li == i) @@ -1871,21 +1886,13 @@ (name-lookup *root-name-registry* k (lambda (n) v)) (loop l)] [(and (pair? v) (eq? (car v) 'syntax-rules)) - (body - ; this is the mac-env for built-in syntax-rules macros! - (define (sr-env id at) - (cond [(new-id? id) (new-id-lookup id at)] - [(eq? at 'peek) ; for free-id=? - (or (name-lookup *root-name-registry* id #f) - *root-name-registry*)] - [else (name-lookup *root-name-registry* id - (lambda (n) (list 'ref n)))])) - (define sr-v - (if (id? (cadr v)) - (syntax-rules* sr-env (cadr v) (caddr v) (cdddr v)) - (syntax-rules* sr-env #f (cadr v) (cddr v)))) - (name-lookup *root-name-registry* k (lambda (name) sr-v)) - (loop l))])))) + (let ([sr-env builtin-sr-environment]) + (define sr-v + (if (id? (cadr v)) + (syntax-rules* sr-env (cadr v) (caddr v) (cdddr v)) + (syntax-rules* sr-env #f (cadr v) (cddr v)))) + (name-lookup *root-name-registry* k (lambda (name) sr-v)) + (loop l))])))) ; register handcoded transformers (name-lookup *root-name-registry* 'include (lambda (n) (make-include-transformer #f))) @@ -1980,13 +1987,15 @@ (interaction-environment p v) (null-environment v) (read r v) (scheme-report-environment v) (write w v) (current-jiffy t) (current-second t) (jiffies-per-second t) (write-shared w) (write-simple w) + ; these are special forms in skint! + (define-library) (import) (export) (program) ; selected extracts from r7rs-large and srfis (box? x 111) (box x 111) (unbox x 111) (set-box! x 111) (format 28 48) (fprintf) (format-pretty-print) (format-fixed-print) (format-fresh-line) (format-help-string) ; skint extras go into (skint) only (set&) (lambda*) (body) (letcc) (withcc) (syntax-lambda) (syntax-length) (record?) (make-record) (record-length) (record-ref) (record-set!) - (fixnum?) (fxpositive?) (fxnegative?) (fxeven?) (fxodd?) (fx+) (fx*) (fx-) (fx/) + (fixnum?) (fxpositive?) (fxnegative?) (fxeven?) (fxodd?) (fxzero?) (fx+) (fx*) (fx-) (fx/) (fxquotient) (fxremainder) (fxmodquo) (fxmodulo) (fxeucquo) (fxeucrem) (fxneg) (fxabs) (fx?) (fx>=?) (fx=?) (fx!=?) (fxmin) (fxmax) (fxneg) (fxabs) (fxgcd) (fxexpt) (fxsqrt) (fxnot) (fxand) (fxior) (fxxor) (fxsll) (fxsrl) (fixnum->flonum) (fixnum->string) @@ -1994,17 +2003,30 @@ (flinfinite?) (flfinite?) (fleven?) (flodd?) (fl+) (fl*) (fl-) (fl/) (flneg) (flabs) (flgcd) (flexpt) (flsqrt) (flfloor) (flceiling) (fltruncate) (flround) (flexp) (fllog) (flsin) (flcos) (fltan) (flasin) (flacos) (flatan) (fl?) (fl>=?) (fl=?) (fl!=?) (flmin) - (flmax) (flonum->fixnum) (flonum->string) (string->flonum) - (list-cat) (list-head) (meme) (asse) (reverse!) (circular?) - (char-cmp) (char-ci-cmp) (string-cat) (string-position) (string-cmp) (string-ci-cmp) - (vector-cat) (bytevector->list) (list->bytevector) (subbytevector) + (flmax) (flremainder) (flmodulo) (flquotient) (flmodquo) (flonum->fixnum) (flonum->string) + (string->flonum) (list-cat) (last-pair) (list-head) (meme) (asse) (reverse!) (circular?) (cons*) + (list*) (char-cmp) (char-ci-cmp) (string-cat) (string-position) (string-cmp) (string-ci-cmp) + (vector-cat) (bytevector=?) (bytevector->list) (list->bytevector) (subbytevector) (standard-input-port) (standard-output-port) (standard-error-port) (tty-port?) - (rename-file) + (port-fold-case?) (set-port-fold-case!) (rename-file) (void) (void?) (global-store) ; temporarily here for debugging purposes - (xform) (compile-and-run-core-expr) (compile-to-thunk-code) (deserialize-code) - (closure) (repl-environment) + ;(xform) (compile-and-run-core-expr) (compile-to-thunk-code) (deserialize-code) + ;(closure) (repl-environment) )) +; clean up root environment by moving all symbolic bindings not in (skint) library +; to hidden name registry (so built-in macros can still work properly) +(let* ([rr *root-name-registry*] [l (name-lookup rr '(skint) #f)] + [eal (library-exports (location-val l))] + [n-1 (- (vector-length rr) 1)]) ; sans listnames + (do ([i 0 (+ i 1)]) [(= i n-1)] + (let loop ([prev #f] [lst (vector-ref rr i)]) + (cond [(null? lst)] + [(assq (caar lst) eal) (loop lst (cdr lst))] + [else (if prev (set-cdr! prev (cdr lst)) (vector-set! rr i (cdr lst))) + (name-install! *hidden-name-registry* (caar lst) (cdar lst)) + (loop prev (cdr lst))])))) + ; private registry for names introduced in repl (define *user-name-registry* (make-name-registry 200)) diff --git a/t.c b/t.c index a432908..0bed0ef 100644 --- a/t.c +++ b/t.c @@ -1069,6 +1069,17 @@ char *t_code[] = { "C", 0, "${'(i300),@(y18:make-name-registry)[01}@!(y20:*root-name-registry*)", + "C", 0, + "${'1,@(y18:make-name-registry)[01}@!(y22:*hidden-name-registry*)", + + "P", "builtin-sr-environment", + "%2.0K0?{.1,.1,@(y13:new-id-lookup)[22}'(y4:peek),.2q?{${f,.3,@(y22:*hi" + "dden-name-registry*),@(y11:name-lookup)[03},.0?{.0]3}${f,.4,@(y20:*roo" + "t-name-registry*),@(y11:name-lookup)[03},.0?{.0]4}@(y20:*root-name-reg" + "istry*)]4}.0,&1{%1&0{%1.0,'(y3:ref),l2]1},:0,@(y20:*root-name-registry" + "*),@(y11:name-lookup)[13},.1,@(y22:*hidden-name-registry*),@(y11:name-" + "lookup)[23", + "C", 0, "${'0,,#0.0,&1{%1.0U5,.0?{.1U0?{.1U7,.0Y0?{${.4,&1{%1:0]1},.3,@(y20:*ro" "ot-name-registry*),@(y11:name-lookup)[03}}_1}'1,.2+,:0^[21}]2}.!0.0^_1" @@ -1077,13 +1088,11 @@ char *t_code[] = { "C", 0, "${U1,,#0.0,&1{%1.0u~?{.0a,.1d,.1a,.2d,.0Y0,.0?{.0}{.1U0}_1?{${.2,&1{%1" ":0]1},.4,@(y20:*root-name-registry*),@(y11:name-lookup)[03}.2,:0^[51}." - "0p?{'(y12:syntax-rules),.1aq}{f}?{,,#0#1&0{%2.0K0?{.1,.1,@(y13:new-id-" - "lookup)[22}'(y4:peek),.2q?{${f,.3,@(y20:*root-name-registry*),@(y11:na" - "me-lookup)[03},.0?{.0]3}@(y20:*root-name-registry*)]3}&0{%1.0,'(y3:ref" - "),l2]1},.1,@(y20:*root-name-registry*),@(y11:name-lookup)[23}.!0${.4da" - ",@(y3:id?)[01}?{${.4ddd,.5dda,.6da,.5^,@(y13:syntax-rules*)[04}}{${.4d" - "d,.5da,f,.5^,@(y13:syntax-rules*)[04}}.!1${.3,&1{%1:0^]1},.6,@(y20:*ro" - "ot-name-registry*),@(y11:name-lookup)[03}.4,:0^[71}f]5}]1}.!0.0^_1[01}", + "0p?{'(y12:syntax-rules),.1aq}{f}?{@(y22:builtin-sr-environment),,#0${." + "4da,@(y3:id?)[01}?{${.4ddd,.5dda,.6da,.6,@(y13:syntax-rules*)[04}}{${." + "4dd,.5da,f,.6,@(y13:syntax-rules*)[04}}.!0${.2,&1{%1:0^]1},.6,@(y20:*r" + "oot-name-registry*),@(y11:name-lookup)[03}.4,:0^[71}f]5}]1}.!0.0^_1[01" + "}", "C", 0, "${&0{%1f,@(y24:make-include-transformer)[11},'(y7:include),@(y20:*root" @@ -1098,7 +1107,7 @@ char *t_code[] = { "0:*root-name-registry*),@(y11:name-lookup)[03}", "C", 0, - "${'(l470:l3:y1:*;y1:v;y1:b;;l3:y1:+;y1:v;y1:b;;l3:y1:-;y1:v;y1:b;;l4:y" + "${'(l482:l3:y1:*;y1:v;y1:b;;l3:y1:+;y1:v;y1:b;;l3:y1:-;y1:v;y1:b;;l4:y" "3:...;y1:v;y1:u;y1:b;;l3:y1:/;y1:v;y1:b;;l3:y1:<;y1:v;y1:b;;l3:y2:<=;y" "1:v;y1:b;;l3:y1:=;y1:v;y1:b;;l4:y2:=>;y1:v;y1:u;y1:b;;l3:y1:>;y1:v;y1:" "b;;l3:y2:>=;y1:v;y1:b;;l2:y1:_;y1:b;;l3:y3:abs;y1:v;y1:b;;l4:y3:and;y1" @@ -1227,56 +1236,66 @@ char *t_code[] = { "6:null-environment;y1:v;;l3:y4:read;y1:r;y1:v;;l2:y25:scheme-report-en" "vironment;y1:v;;l3:y5:write;y1:w;y1:v;;l2:y13:current-jiffy;y1:t;;l2:y" "14:current-second;y1:t;;l2:y18:jiffies-per-second;y1:t;;l2:y12:write-s" - "hared;y1:w;;l2:y12:write-simple;y1:w;;l3:y4:box?;y1:x;i111;;l3:y3:box;" - "y1:x;i111;;l3:y5:unbox;y1:x;i111;;l3:y8:set-box!;y1:x;i111;;l3:y6:form" - "at;i28;i48;;l1:y7:fprintf;;l1:y19:format-pretty-print;;l1:y18:format-f" - "ixed-print;;l1:y17:format-fresh-line;;l1:y18:format-help-string;;l1:y4" - ":set&;;l1:y7:lambda*;;l1:y4:body;;l1:y5:letcc;;l1:y6:withcc;;l1:y13:sy" - "ntax-lambda;;l1:y13:syntax-length;;l1:y7:record?;;l1:y11:make-record;;" - "l1:y13:record-length;;l1:y10:record-ref;;l1:y11:record-set!;;l1:y7:fix" - "num?;;l1:y11:fxpositive?;;l1:y11:fxnegative?;;l1:y7:fxeven?;;l1:y6:fxo" - "dd?;;l1:y3:fx+;;l1:y3:fx*;;l1:y3:fx-;;l1:y3:fx/;;l1:y10:fxquotient;;l1" - ":y11:fxremainder;;l1:y8:fxmodquo;;l1:y8:fxmodulo;;l1:y8:fxeucquo;;l1:y" - "8:fxeucrem;;l1:y5:fxneg;;l1:y5:fxabs;;l1:y4:fx?;;l1:y5:fx>=?;;l1:y4:fx=?;;l1:y5:fx!=?;;l1:y5:fxmin;;l1:y5:fxmax;;l" - "1:y5:fxneg;;l1:y5:fxabs;;l1:y5:fxgcd;;l1:y6:fxexpt;;l1:y6:fxsqrt;;l1:y" - "5:fxnot;;l1:y5:fxand;;l1:y5:fxior;;l1:y5:fxxor;;l1:y5:fxsll;;l1:y5:fxs" - "rl;;l1:y14:fixnum->flonum;;l1:y14:fixnum->string;;l1:y14:string->fixnu" - "m;;l1:y7:flonum?;;l1:y7:flzero?;;l1:y11:flpositive?;;l1:y11:flnegative" - "?;;l1:y10:flinteger?;;l1:y6:flnan?;;l1:y11:flinfinite?;;l1:y9:flfinite" - "?;;l1:y7:fleven?;;l1:y6:flodd?;;l1:y3:fl+;;l1:y3:fl*;;l1:y3:fl-;;l1:y3" - ":fl/;;l1:y5:flneg;;l1:y5:flabs;;l1:y5:flgcd;;l1:y6:flexpt;;l1:y6:flsqr" - "t;;l1:y7:flfloor;;l1:y9:flceiling;;l1:y10:fltruncate;;l1:y7:flround;;l" - "1:y5:flexp;;l1:y5:fllog;;l1:y5:flsin;;l1:y5:flcos;;l1:y5:fltan;;l1:y6:" - "flasin;;l1:y6:flacos;;l1:y6:flatan;;l1:y4:fl" - "?;;l1:y5:fl>=?;;l1:y4:fl=?;;l1:y5:fl!=?;;l1:y5:flmin;;l1:y5:flmax;;l1:" - "y14:flonum->fixnum;;l1:y14:flonum->string;;l1:y14:string->flonum;;l1:y" - "8:list-cat;;l1:y9:list-head;;l1:y4:meme;;l1:y4:asse;;l1:y8:reverse!;;l" - "1:y9:circular?;;l1:y8:char-cmp;;l1:y11:char-ci-cmp;;l1:y10:string-cat;" - ";l1:y15:string-position;;l1:y10:string-cmp;;l1:y13:string-ci-cmp;;l1:y" - "10:vector-cat;;l1:y16:bytevector->list;;l1:y16:list->bytevector;;l1:y1" - "3:subbytevector;;l1:y19:standard-input-port;;l1:y20:standard-output-po" - "rt;;l1:y19:standard-error-port;;l1:y9:tty-port?;;l1:y11:rename-file;;l" - "1:y5:xform;;l1:y25:compile-and-run-core-expr;;l1:y21:compile-to-thunk-" - "code;;l1:y16:deserialize-code;;l1:y7:closure;;l1:y16:repl-environment;" - ";),&0{%1,,,,#0#1#2#3&0{%1.0,'(y1:w),.1v?{'(l2:y6:scheme;y5:write;)]2}'" - "(y1:t),.1v?{'(l2:y6:scheme;y4:time;)]2}'(y1:p),.1v?{'(l2:y6:scheme;y4:" - "repl;)]2}'(y1:r),.1v?{'(l2:y6:scheme;y4:read;)]2}'(y1:v),.1v?{'(l2:y6:" - "scheme;y4:r5rs;)]2}'(y1:u),.1v?{'(l2:y6:scheme;y9:r5rs-null;)]2}'(y1:d" - "),.1v?{'(l2:y6:scheme;y4:load;)]2}'(y1:z),.1v?{'(l2:y6:scheme;y4:lazy;" - ")]2}'(y1:s),.1v?{'(l2:y6:scheme;y15:process-context;)]2}'(y1:i),.1v?{'" - "(l2:y6:scheme;y7:inexact;)]2}'(y1:f),.1v?{'(l2:y6:scheme;y4:file;)]2}'" - "(y1:e),.1v?{'(l2:y6:scheme;y4:eval;)]2}'(y1:o),.1v?{'(l2:y6:scheme;y7:" - "complex;)]2}'(y1:h),.1v?{'(l2:y6:scheme;y4:char;)]2}'(y1:l),.1v?{'(l2:" - "y6:scheme;y11:case-lambda;)]2}'(y1:a),.1v?{'(l2:y6:scheme;y3:cxr;)]2}'" - "(y1:b),.1v?{'(l2:y6:scheme;y4:base;)]2}'(y1:x),.1v?{'(l2:y6:scheme;y3:" - "box;)]2}.1I0?{.1,'(y4:srfi),l2]2}.1,l1]2}.!0&0{%1${&0{%1n,'(l1:y5:begi" - "n;),V12]1},.3,@(y20:*root-name-registry*),@(y11:name-lookup)[03}z]1}.!" - "1&0{%3'1,.1V4,.0,.3A3,.0?{.4,.1sd]5}.1,.5,.5cc,'1,.4V5]5}.!2&0{%1&0{%1" - ".0,'(y5:const),l2]1},.1,@(y20:*root-name-registry*),@(y11:name-lookup)" - "[13}.!3.4d,.5a,,#0.0,.6,.5,.7,.(i10),&5{%2.1u?{${.2,:0^[01},.1,${'(l1:" - "y5:skint;),:1^[01},:3^[23}${${.4,:0^[01},.3,${${.9a,:2^[01},:1^[01},:3" - "^[03}.1d,.1,:4^[22}.!0.0^_1[52},@(y10:%25for-each1)[02}", + "hared;y1:w;;l2:y12:write-simple;y1:w;;l1:y14:define-library;;l1:y6:imp" + "ort;;l1:y6:export;;l1:y7:program;;l3:y4:box?;y1:x;i111;;l3:y3:box;y1:x" + ";i111;;l3:y5:unbox;y1:x;i111;;l3:y8:set-box!;y1:x;i111;;l3:y6:format;i" + "28;i48;;l1:y7:fprintf;;l1:y19:format-pretty-print;;l1:y18:format-fixed" + "-print;;l1:y17:format-fresh-line;;l1:y18:format-help-string;;l1:y4:set" + "&;;l1:y7:lambda*;;l1:y4:body;;l1:y5:letcc;;l1:y6:withcc;;l1:y13:syntax" + "-lambda;;l1:y13:syntax-length;;l1:y7:record?;;l1:y11:make-record;;l1:y" + "13:record-length;;l1:y10:record-ref;;l1:y11:record-set!;;l1:y7:fixnum?" + ";;l1:y11:fxpositive?;;l1:y11:fxnegative?;;l1:y7:fxeven?;;l1:y6:fxodd?;" + ";l1:y7:fxzero?;;l1:y3:fx+;;l1:y3:fx*;;l1:y3:fx-;;l1:y3:fx/;;l1:y10:fxq" + "uotient;;l1:y11:fxremainder;;l1:y8:fxmodquo;;l1:y8:fxmodulo;;l1:y8:fxe" + "ucquo;;l1:y8:fxeucrem;;l1:y5:fxneg;;l1:y5:fxabs;;l1:y4:fx?;;l1:y5:fx>=?;;l1:y4:fx=?;;l1:y5:fx!=?;;l1:y5:fxmin;;l1:" + "y5:fxmax;;l1:y5:fxneg;;l1:y5:fxabs;;l1:y5:fxgcd;;l1:y6:fxexpt;;l1:y6:f" + "xsqrt;;l1:y5:fxnot;;l1:y5:fxand;;l1:y5:fxior;;l1:y5:fxxor;;l1:y5:fxsll" + ";;l1:y5:fxsrl;;l1:y14:fixnum->flonum;;l1:y14:fixnum->string;;l1:y14:st" + "ring->fixnum;;l1:y7:flonum?;;l1:y7:flzero?;;l1:y11:flpositive?;;l1:y11" + ":flnegative?;;l1:y10:flinteger?;;l1:y6:flnan?;;l1:y11:flinfinite?;;l1:" + "y9:flfinite?;;l1:y7:fleven?;;l1:y6:flodd?;;l1:y3:fl+;;l1:y3:fl*;;l1:y3" + ":fl-;;l1:y3:fl/;;l1:y5:flneg;;l1:y5:flabs;;l1:y5:flgcd;;l1:y6:flexpt;;" + "l1:y6:flsqrt;;l1:y7:flfloor;;l1:y9:flceiling;;l1:y10:fltruncate;;l1:y7" + ":flround;;l1:y5:flexp;;l1:y5:fllog;;l1:y5:flsin;;l1:y5:flcos;;l1:y5:fl" + "tan;;l1:y6:flasin;;l1:y6:flacos;;l1:y6:flatan;;l1:y4:fl?;;l1:y5:fl>=?;;l1:y4:fl=?;;l1:y5:fl!=?;;l1:y5:flmin;;l1:y5" + ":flmax;;l1:y11:flremainder;;l1:y8:flmodulo;;l1:y10:flquotient;;l1:y8:f" + "lmodquo;;l1:y14:flonum->fixnum;;l1:y14:flonum->string;;l1:y14:string->" + "flonum;;l1:y8:list-cat;;l1:y9:last-pair;;l1:y9:list-head;;l1:y4:meme;;" + "l1:y4:asse;;l1:y8:reverse!;;l1:y9:circular?;;l1:y5:cons*;;l1:y5:list*;" + ";l1:y8:char-cmp;;l1:y11:char-ci-cmp;;l1:y10:string-cat;;l1:y15:string-" + "position;;l1:y10:string-cmp;;l1:y13:string-ci-cmp;;l1:y10:vector-cat;;" + "l1:y12:bytevector=?;;l1:y16:bytevector->list;;l1:y16:list->bytevector;" + ";l1:y13:subbytevector;;l1:y19:standard-input-port;;l1:y20:standard-out" + "put-port;;l1:y19:standard-error-port;;l1:y9:tty-port?;;l1:y15:port-fol" + "d-case?;;l1:y19:set-port-fold-case!;;l1:y11:rename-file;;l1:y4:void;;l" + "1:y5:void?;;l1:y12:global-store;;),&0{%1,,,,#0#1#2#3&0{%1.0,'(y1:w),.1" + "v?{'(l2:y6:scheme;y5:write;)]2}'(y1:t),.1v?{'(l2:y6:scheme;y4:time;)]2" + "}'(y1:p),.1v?{'(l2:y6:scheme;y4:repl;)]2}'(y1:r),.1v?{'(l2:y6:scheme;y" + "4:read;)]2}'(y1:v),.1v?{'(l2:y6:scheme;y4:r5rs;)]2}'(y1:u),.1v?{'(l2:y" + "6:scheme;y9:r5rs-null;)]2}'(y1:d),.1v?{'(l2:y6:scheme;y4:load;)]2}'(y1" + ":z),.1v?{'(l2:y6:scheme;y4:lazy;)]2}'(y1:s),.1v?{'(l2:y6:scheme;y15:pr" + "ocess-context;)]2}'(y1:i),.1v?{'(l2:y6:scheme;y7:inexact;)]2}'(y1:f),." + "1v?{'(l2:y6:scheme;y4:file;)]2}'(y1:e),.1v?{'(l2:y6:scheme;y4:eval;)]2" + "}'(y1:o),.1v?{'(l2:y6:scheme;y7:complex;)]2}'(y1:h),.1v?{'(l2:y6:schem" + "e;y4:char;)]2}'(y1:l),.1v?{'(l2:y6:scheme;y11:case-lambda;)]2}'(y1:a)," + ".1v?{'(l2:y6:scheme;y3:cxr;)]2}'(y1:b),.1v?{'(l2:y6:scheme;y4:base;)]2" + "}'(y1:x),.1v?{'(l2:y6:scheme;y3:box;)]2}.1I0?{.1,'(y4:srfi),l2]2}.1,l1" + "]2}.!0&0{%1${&0{%1n,'(l1:y5:begin;),V12]1},.3,@(y20:*root-name-registr" + "y*),@(y11:name-lookup)[03}z]1}.!1&0{%3'1,.1V4,.0,.3A3,.0?{.4,.1sd]5}.1" + ",.5,.5cc,'1,.4V5]5}.!2&0{%1&0{%1.0,'(y5:const),l2]1},.1,@(y20:*root-na" + "me-registry*),@(y11:name-lookup)[13}.!3.4d,.5a,,#0.0,.6,.5,.7,.(i10),&" + "5{%2.1u?{${.2,:0^[01},.1,${'(l1:y5:skint;),:1^[01},:3^[23}${${.4,:0^[0" + "1},.3,${${.9a,:2^[01},:1^[01},:3^[03}.1d,.1,:4^[22}.!0.0^_1[52},@(y10:" + "%25for-each1)[02}", + + "C", 0, + "@(y20:*root-name-registry*),${f,'(l1:y5:skint;),.4,@(y11:name-lookup)[" + "03},'1,.1zV4,'1,.3V3-,${'0,,#0.0,.6,.9,.7,&4{%1:0,.1=?{]1}${.2,:1V4,f," + ",#0:2,.6,:1,.3,&4{%2.1u,.0?{.0]3}:3,.3aaA3?{.2d,.3,:0^[32}.1?{.2d,.2sd" + "}{.2d,:2,:1V5}${.4ad,.5aa,@(y22:*hidden-name-registry*),@(y13:name-ins" + "tall!)[03}.2d,.2,:0^[32}.!0.0^_1[02}'1,.1+,:3^[11}.!0.0^_1[01}_1_1_1_1", "C", 0, "${'(i200),@(y18:make-name-registry)[01}@!(y20:*user-name-registry*)",