ref: d947890106aec2221abbe43c7a39331283f25515
parent: bd27f0f713c79a7fd6124dfce9238024e0766308
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Tue Apr 15 22:31:00 EDT 2025
bootstrap after several changes
--- a/boot/sl.boot
+++ b/boot/sl.boot
@@ -18,9 +18,10 @@
:to destination)
(data :size decompressed-bytes)) defstruct ((name doc options… (slot-1 DEFAULT) slot-2 (slot-3
:read-only))
- (name (:type 'vec) (:named NIL) (:constructor T) (:conc-name
- NIL)
- (:predicate T) . slots)) compare ((x y)) buffer (NIL) num? ((v)) add-exit-hook ((fun)) rand-float (NIL) builtin? ((v)) set-car! ((cell
+ (name (:type 'vec)
+ (:named NIL named-supplied) (:constructor T)
+ (:conc-name NIL) (:predicate T) . slots)) compare ((x
+ y)) buffer (NIL) num? ((v)) add-exit-hook ((fun)) rand-float (NIL) builtin? ((v)) set-car! ((cell
new-first)) cons? ((v)) doc-group ((group-name doc)) 1+ ((n)) aref ((sequence subscript0 . rest)) zero? ((x)) vec (rest) >= ((a . rest)) sym? ((v)) void? ((x)) length= ((lst
n)) positive? ((x)) doc-for ((term . doc)) aset! ((sequence subscripts… new-value)) car ((lst)) <= ((a . rest)) str (term) cons ((first
second)) - ((a . rest)) remprop ((symbol key)) negative? ((x)) rand (NIL) void (rest) file ((path
@@ -79,7 +80,7 @@
#fn(get) *properties* :kind *doc-extra* filter #fn("n10<20Q:" #(:doc-fmt))
#fn("n10<20Q:" #(:doc-see)) princ foldl #fn("n20=161:") newline "See also:" #fn("n1A<0=700=21522263:" #(getprop
*formals-list* " ")) "Members:" #fn("n1A<070021522263:" #(getprop *formals-list* " ")) void
- "no help for " #fn(str) " " "" " (undefined)")) defstruct #fn("O10005000*///z6W1000J7021?14W2000J60q?24W3000J60D?34W4000J60q?44W5000J60D?54IIb;228;230>1_5142224?<5147586518=<8==268?5127288?528<8?51121Q82;J5048C;3404085;3\\0485DCC08D;3:042902:52@D08DJ=02;2<2=52@40858C3:02>0e2@7002?e283;3\\0483H;3M0483DQ;3:04292@052;J504838BP;J5048384;J:042A02B52I222C8C18D8G848508?>8?I5148>3G07D02E8>2F8IPe15252@30q42G2He18E3{02I8E2Je28C3E02K2L2Je22M8Fe2e3@V02N2O2P2JEe32M0e2e32Q2R2Je27S8@51e3e3e3@30qe18G3\xae08C3t02H2I8G2G1e12M2Te2e12M0e2e12U7V2Wq8A535154e32X2M0e22M2Ye28G<e4e3@d02I8G8D3K02G2Ze12M8De2e12U8A5153@@02G2Ze12U8A5152e3@30qe12U7[2\\8;8B8A8H8C8E8F8D0>98@525164:" #(#(:constructor
+ "no help for " #fn(str) " " "" " (undefined)")) defstruct #fn("O10005000*///z6W1000J7021?14W2000;J60q?24W3000J60D?34W4000J60q?44W5000J60D?54IIb<228<230>1_5142224?=5147586518><8>=268@5127288@528=8@51121C60D@C0129C60q@907:2;1528D3T08;S;J70482DQ360q@807:2<51;J404D@4082;3404085;3Z0485DCC08E;3:042=02>52@B08EJ;07:2?51@40858D3:02@0e2@7002Ae283;3\\0483H;3M0483DQ;3:042=2B052;J504838CP;J5048384;J:042C02D52I222E8D18E8H848508@>8?J5148?3G07F02G8?2H8JPe15252@30q42I2Je18F3{02K8F2Le28D3E02M2N2Le22O8Ge2e3@V02P2Q2R2LEe32O0e2e32S2T2Le27U8A51e3e3e3@30qe18H3\xae08D3t02J2K8H2I1e12O2Ve2e12O0e2e12W7X2Yq8B535154e32Z2O0e22O2[e28H<e4e3@d02K8H8E3K02I29e12O8Ee2e12W8B5153@@02I29e12W8B5152e3@30qe12W7\\2]8<8C8B8I8D8F8G8E0>98A525164:" #(#(:constructor
2 :predicate 4 NIL NIL :type 0 :named 1 :conc-name 3 NIL NIL) vec #0#
#fn("n17005121220A>28552485:" #(cddr #fn(for-each)
#fn("n17002152340q:722324A<25F2605661:" #(member (:read-only)
@@ -87,14 +88,15 @@
" of struct " ": "))) slot-opts)
#fn("n12021062:" #(#fn(map) #fn("n10B;35040<85;J404085;35040=;J604qe186RS;J9042086513=071228652@30q423242586522087<51390q87P@408762:" #(#fn(keyword?)
error "invalid slot name: " #fn(list*) #fn(sym) #\:))) tokw) separate-doc-from-body #fn(length)
- #fn(map) #fn("n10B3500<:0:") #fn(sym) #\? #fn(raise) arg-error ("predicate not possible unless the struct is :named")
- struct … "make-" #fn(str) "-" #fn("n12002152853=0220E8553@300853<02208552@40232486252627e1A360q@7028Fe292360q@802992e293360q@802:93e2943;02;94e2@30q95S;J80495DQS;39042<95e29697P578764:" #(#fn(str-find)
+ #fn(map) #fn("n10B3500<:0:") list arg-error "invalid struct type: " "structs of type `vec` are always :named T"
+ #fn(sym) #\? "predicate not possible unless the struct is :named T" struct … "make-" #fn(str) "-"
+ #fn("n12002152853=0220E8553@300853<02208552@40232486252627e1A360q@7028Fe292360q@802992e293360q@802:93e2943;02;94e2@30q95S;J80495DQS;39042<95e29697P578764:" #(#fn(str-find)
"\n\n" #fn(str-sub) "" #fn(str) "\n\n " #fn(append) defstruct :type :named :constructor
:conc-name :predicate) fmt) sym-set-doc #fn(append) :doc-fmt #fn(nconc) begin def s equal?
type-of quote and eq? aref = length 1+ %struct% #fn(copy-list) foldr #fn("n2202105201PP:" #(#fn(sym)
- ":")) putprop constructor list map-int #fn("n1A<70F05251709205221938652943<0r20i2KM@30022872324q25e3e3953U0269523e22728292:e22996e223e4e2e3@30q2;2<25e22=2397360K@30E88Me37>2?85523O02@2A2B2986e22C2998e22De6e2@G02E2397360K@30E88M24e4e4e4:" #(list-ref
- #fn(sym) def s v v-supplied? unless raise list quote type-error if not aref member :read-only
- error str "slot " " in struct " " is :read-only" aset!)))) bcode:ctable #fn("n1200Ke3:" #(aref)) with-output-to #fn("z12021e1220e2e1e12315163:" #(#fn(nconc)
+ ":")) putprop constructor map-int #fn("n1A<70F05251709205221938652943<0r20i2KM@30022872324q25e3e3953K0269523e2272896e223e3e3@30q292:25e22;2397360K@30E88Me37<2=85523O02>2?2@2886e22A2898e22Be6e2@G02C2397360K@30E88M24e4e4e4:" #(list-ref
+ #fn(sym) def s v v-supplied? unless type-error quote if not aref member :read-only error str "slot "
+ " in struct " " is :read-only" aset!)))) bcode:ctable #fn("n1200Ke3:" #(aref)) with-output-to #fn("z12021e1220e2e1e12315163:" #(#fn(nconc)
with-bindings *io-out* #fn(copy-list))) catch #fn("n22012122e123242522e2262722e22829e2e3262:22e20e3e42;22e22<22e2e4e3e3:" #(trycatch
λ #:g429 if and cons? eq? car quote thrown-value cadr caddr raise)) let* #fn("z10H3E02021e1qe12215153e1:2021e173051e1e1220=B3H02024e10=e12215153e1@301515375051e2:" #(#fn(nconc)
λ #fn(copy-list) caar let* cadar)) letrec #fn("z1202021e12273052e122240522515154e1227605262:" #(#fn(nconc)
@@ -115,7 +117,8 @@
#fn("z1Ib6862086>1_486<^10162:" #(#fn("n21S;JE041<0L2;3;04A<1<1=62:")) >) >= #fn("z1Ib6862086>1_486<^10162:" #(#fn("n21S;JL0401<L2;J5040V340q:A<1<1=62:")) >=)
Instructions #table(call.l #u8(81) trycatch #u8(75) loadg.l #u8(68) aref2 #u8(23) box #u8(50) cadr #u8(36) argc #u8(62) setg #u8(71) load0 #u8(21) nan? #u8(38) fixnum? #u8(41) loadc0 #u8(17) loada0 #u8(0) div0 #u8(59) keyargs #u8(31) call #u8(5) loada.l #u8(69) num? #u8(40) sub2 #u8(78) add2 #u8(29) loadc.l #u8(70) loadc #u8(9) builtin? #u8(43) set-car! #u8(47) vargc.l #u8(80) vec #u8(63) ret #u8(10) loadi8 #u8(66) tapply #u8(77) loadvoid #u8(25) loada1 #u8(1) shift #u8(46) atom? #u8(24) cdr #u8(13) brne.l #u8(83) / #u8(58) equal? #u8(52) apply #u8(54) dup #u8(11) loadt #u8(20) bounda #u8(39) jmp.l #u8(48) = #u8(60) not #u8(35) set-cdr! #u8(30) fn? #u8(44) eq? #u8(33) * #u8(57) load1 #u8(27) bound? #u8(42) box.l #u8(86) < #u8(28) brnn.l #u8(84) jmp #u8(16) loadv #u8(2) for #u8(76) dummy_eof #u8(88) + #u8(55) brne #u8(19) argc.l #u8(79) compare #u8(61) brn #u8(3) neg #u8(37) loadv.l #u8(67) vargc #u8(74) loadc1 #u8(22) setg.l #u8(72) cons? #u8(18) aref #u8(85) sym? #u8(34) aset! #u8(64) car #u8(12) cons #u8(32) tcall.l #u8(82) - #u8(56) brn.l #u8(49) optargs #u8(87) closure #u8(14) vec? #u8(45) pop #u8(4) eqv? #u8(51) list #u8(53) seta #u8(15) seta.l #u8(73) brnn #u8(26) loadnil #u8(65) loadg #u8(7) loada #u8(8) tcall #u8(6))
S #fn("z170021521}2:" #(getprop constructor) S) __finish
- #fn("n120210>17262:" #(#fn(for-each) #fn("n10A61:") *exit-hooks*) __finish)
+ #fn("n120Z3>021220>17062:q:" #(*exit-hooks* #fn(for-each)
+ #fn("n10A61:")) __finish)
__init_globals #fn("n07021d37022@402384w4^147025d;350426;J50427w8429w:4qw;47<w=47>w?47@wA:" #(*os-name*
"macos" #fn("n0702161:" #(princ "\e[0m\e[1m#;> \e[0m"))
#fn("n0702161:" #(princ "#;> ")) *prompt* "dos" "\\" "/" *directory-separator* "\n" *linefeed*
@@ -132,8 +135,8 @@
abs #fn("n10EL23500U:0:" #() abs) add-exit-hook
#fn("n1070Pw047160:" #(*exit-hooks* void) add-exit-hook) any #fn("n21B;3D0401<51;J:047001=62:" #(any) any)
arg-counts #table(bound? 1 sym? 1 car 1 cons 2 cadr 1 nan? 1 for 3 fixnum? 1 cdr 1 atom? 1 div0 2 vec? 1 equal? 2 eqv? 2 compare 2 not 1 set-cdr! 2 num? 1 fn? 1 eq? 2 builtin? 1 cons? 1 set-car! 2)
- argc-error #fn("n2702102211Kl237023@402465:" #(error "compile error: " " expects " " argument."
- " arguments.") argc-error)
+ arg-error #fn("z020210P61:" #(#fn(raise) arg-error) arg-error) argc-error
+ #fn("n2702102211Kl237023@402465:" #(error "compile error: " " expects " " argument." " arguments.") argc-error)
arr? #fn("n10];JF042005185B;390485<21Q:" #(#fn(type-of) arr) arr?) assoc
#fn("n2701510d3501<:13:07101=62:q:" #(caar assoc) assoc) assv #fn("n2701510c3501<:13:07101=62:q:" #(caar
assv) assv)
@@ -502,9 +505,9 @@
traced? #fn(set-top-level-value!) eval λ #:g432 write cons quote newline apply void) trace)
traced? #fn("n170051;3>042105121A51d:" #(closure? #fn(fn-code)) #(#fn("z020210P51472504230}2:" #(#fn(write)
x newline #.apply))))
- untrace #fn("n1200517185513C0220238551r3G52@30q^147460:" #(#fn(top-level-value) traced?
- #fn(set-top-level-value!)
- #fn(fn-vals) void) untrace)
+ type-error #fn("z020210P61:" #(#fn(raise) type-error) type-error) untrace
+ #fn("n1200517185513C0220238551r3G52@30q^147460:" #(#fn(top-level-value) traced? #fn(set-top-level-value!)
+ #fn(fn-vals) void) untrace)
values #fn("z00B3:00=J500<:A0P:" #() #(#3#)) vars-to-env
#fn("n32021182>2072230515163:" #(#fn(map)
#fn("n2700210A52SS1FM63:" #(vinfo #fn(memq))) iota #fn(length)) vars-to-env)