substrate-lang 0.9.2 → 0.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/build/compiler/binary.cdd2ffb408dd@0+0.wasm +0 -0
  2. package/build/compiler/checker.2b0ea87ed311@0+0.wasm +0 -0
  3. package/build/compiler/compile.da85f9bc4478@0+0.wasm +0 -0
  4. package/build/compiler/{core.11abd90bead5@0+0.wasm → core.0410ffbdc488@0+0.wasm} +0 -0
  5. package/build/compiler/expander.80707e1666d6@0+0.wasm +0 -0
  6. package/build/compiler/{fs.3f7cf768e7ed@0+0.wasm → fs.5017b627cbd2@0+0.wasm} +0 -0
  7. package/build/compiler/{leb128.0d2a247f239f@0+0.wasm → leb128.ba77430f659f@0+0.wasm} +0 -0
  8. package/build/compiler/{link.3c4158bb6ba3@0+0.wasm → link.be6e641afa93@0+0.wasm} +0 -0
  9. package/build/compiler/{macros.6f0e1a78d640@0+0.wasm → macros.b695763c0ca3@0+0.wasm} +0 -0
  10. package/build/compiler/main.cbbdf42e34c2@0+0.wasm +0 -0
  11. package/build/compiler/{ops.a5b9269c5240@0+0.wasm → ops.324f0a665fab@0+0.wasm} +0 -0
  12. package/build/compiler/{path.ec5532669c81@0+0.wasm → path.1b5fd988b6f3@0+0.wasm} +0 -0
  13. package/build/compiler/program +21 -20
  14. package/build/compiler/prune.29dde307bdee@0+0.wasm +0 -0
  15. package/build/compiler/{reader.f4378a1f91d1@0+0.wasm → reader.d256e69e09e2@0+0.wasm} +0 -0
  16. package/build/compiler/roots.e366210c01d6@0+0.wasm +0 -0
  17. package/build/compiler/{running.7f03ff780e03@0+0.wasm → running.b99787c2d180@0+0.wasm} +0 -0
  18. package/build/compiler/serialize.a12536bbbe9a@0+0.wasm +0 -0
  19. package/build/compiler/sha256.f6c742932dde@0+0.wasm +0 -0
  20. package/build/compiler/substrate.728c690187f2@0+0.wasm +0 -0
  21. package/build/compiler/syntax.fadc832db29f@0+0.wasm +0 -0
  22. package/build/compiler/{writer.b698107b491f@0+0.wasm → writer.550227768eb9@0+0.wasm} +0 -0
  23. package/build/sub/{base64.fc39f9b2a664@0+0.wasm → base64.454b045156d2@0+0.wasm} +0 -0
  24. package/build/sub/build.115aeefc15e8@0+0.wasm +0 -0
  25. package/build/sub/{chromium.0cdcaad35704@0+0.wasm → chromium.fc0bfea0fbe6@0+0.wasm} +0 -0
  26. package/build/sub/{common.9ea008df47e6@0+0.wasm → common.997c21b0b8cf@0+0.wasm} +0 -0
  27. package/build/sub/deflate.3138a38325a1@0+0.wasm +0 -0
  28. package/build/sub/{doc.e0af22e9d586@0+0.wasm → doc.e3f9a998cd91@0+0.wasm} +0 -0
  29. package/build/sub/{doc.49b234ac4521@0+0.wasm → doc.f18ad14060e9@0+0.wasm} +0 -0
  30. package/build/sub/env.861d55fff974@0+0.wasm +0 -0
  31. package/build/sub/events.2c981f6f1ec7@0+0.wasm +0 -0
  32. package/build/sub/{fetch.59ad8bf17eeb@0+0.wasm → fetch.b0ce8f8b3da8@0+0.wasm} +0 -0
  33. package/build/sub/fetch.d62aa5fc9623@0+0.wasm +0 -0
  34. package/build/sub/{files.25d3fe28ff57@0+0.wasm → files.1706cc0941c0@0+0.wasm} +0 -0
  35. package/build/sub/{fs.3f7cf768e7ed@0+0.wasm → fs.5017b627cbd2@0+0.wasm} +0 -0
  36. package/build/sub/{git.c47e41fed371@0+0.wasm → git.1c5791236e35@0+0.wasm} +0 -0
  37. package/build/sub/{grants.e7dc20c93375@0+0.wasm → grants.cd99dff2854e@0+0.wasm} +0 -0
  38. package/build/sub/{gzip.0bacbb40f6e2@0+0.wasm → gzip.9ebea150f218@0+0.wasm} +0 -0
  39. package/build/sub/hash.ba8330dad9ff@0+0.wasm +0 -0
  40. package/build/sub/{html.1ab670c5f861@0+0.wasm → html.0b0362932a75@0+0.wasm} +0 -0
  41. package/build/sub/{html.a860b2ff2c4e@0+0.wasm → html.3b3c8d7d9971@0+0.wasm} +0 -0
  42. package/build/sub/{inflate.16c735654147@0+0.wasm → inflate.3cfa17586072@0+0.wasm} +0 -0
  43. package/build/sub/{json.74966c67a96d@0+0.wasm → json.af2e0ae20084@0+0.wasm} +0 -0
  44. package/build/sub/manifest.6e014ac19e5d@0+0.wasm +0 -0
  45. package/build/sub/map.e582eae03ec2@0+0.wasm +0 -0
  46. package/build/sub/{pack.a62f186e997c@0+0.wasm → pack.4295e4f5bdbd@0+0.wasm} +0 -0
  47. package/build/sub/{path.ec5532669c81@0+0.wasm → path.1b5fd988b6f3@0+0.wasm} +0 -0
  48. package/build/sub/path.de22f6659534@0+0.wasm +0 -0
  49. package/build/sub/process.ca10ac0b8a62@0+0.wasm +0 -0
  50. package/build/sub/program +48 -48
  51. package/build/sub/read.279fafcda508@0+0.wasm +0 -0
  52. package/build/sub/{reader.f4378a1f91d1@0+0.wasm → reader.d256e69e09e2@0+0.wasm} +0 -0
  53. package/build/sub/{root.5a3e4a594d25@0+0.wasm → root.02141d04d568@0+0.wasm} +0 -0
  54. package/build/sub/roots.e366210c01d6@0+0.wasm +0 -0
  55. package/build/sub/{sha256.92185201fb4b@0+0.wasm → sha256.f6c742932dde@0+0.wasm} +0 -0
  56. package/build/sub/{sha512.bf0d4c469a96@0+0.wasm → sha512.9fee24e95460@0+0.wasm} +0 -0
  57. package/build/sub/site.76aa8286c257@0+0.wasm +0 -0
  58. package/build/sub/{site.81b7f3938874@0+0.wasm → site.e6e415bc3170@0+0.wasm} +0 -0
  59. package/build/sub/{store.128b4d772823@0+0.wasm → store.c48db3345968@0+0.wasm} +0 -0
  60. package/build/sub/{stream.d95d09173ea2@0+0.wasm → stream.27fd2fe858e1@0+0.wasm} +0 -0
  61. package/build/sub/{sub.84126bd636af@0+0.wasm → sub.c0fb7310de12@0+0.wasm} +0 -0
  62. package/build/sub/{substrate.b31300129ffb@0+0.wasm → substrate.728c690187f2@0+0.wasm} +0 -0
  63. package/build/sub/{syntax.500cf1bcecd4@0+0.wasm → syntax.fadc832db29f@0+0.wasm} +0 -0
  64. package/build/sub/tar.692c0e8827cd@0+0.wasm +0 -0
  65. package/build/sub/{test.eed7cfa3264c@0+0.wasm → test.1fd2ff8123bf@0+0.wasm} +0 -0
  66. package/build/sub/{text.ca2b0668e319@0+0.wasm → text.8ff142d72fd7@0+0.wasm} +0 -0
  67. package/build/sub/{timer.21d74714d40b@0+0.wasm → timer.d3454726b3bf@0+0.wasm} +0 -0
  68. package/build/sub/{upgrade.61c36d2a50cf@0+0.wasm → upgrade.2a9219e6a45d@0+0.wasm} +0 -0
  69. package/build/sub/{utf8.b61525c6fb12@0+0.wasm → utf8.e82afeb9e953@0+0.wasm} +0 -0
  70. package/build/sub/worker.ea1e11f8f5e2@0+0.wasm +0 -0
  71. package/build/sub/writer.550227768eb9@0+0.wasm +0 -0
  72. package/package.json +1 -1
  73. package/std/archive/tar.sub +14 -21
  74. package/std/compress/deflate.sub +10 -12
  75. package/std/crypto/sha256.sub +3 -109
  76. package/std/encoding/json.sub +44 -65
  77. package/std/encoding/wire.sub +6 -8
  78. package/std/http/checks.sub +3 -3
  79. package/std/http/conditional.sub +2 -4
  80. package/std/http/cookie.sub +5 -7
  81. package/std/http/form.sub +7 -10
  82. package/std/http/http.sub +17 -24
  83. package/std/http/multipart.sub +5 -5
  84. package/std/http/route.sub +9 -9
  85. package/std/http/server.sub +7 -12
  86. package/std/http/session.sub +1 -4
  87. package/std/http/sse-client.sub +9 -14
  88. package/std/http/url.sub +10 -10
  89. package/std/http/websocket.sub +2 -5
  90. package/std/meta/type-info.sub +10 -10
  91. package/std/package/hash.sub +1 -1
  92. package/std/package/manifest.sub +14 -15
  93. package/std/package/map.sub +4 -8
  94. package/std/package/path.sub +1 -4
  95. package/std/package/read.sub +3 -8
  96. package/std/package/site.sub +5 -5
  97. package/std/test/compare.sub +9 -10
  98. package/std/test/page.sub +1 -1
  99. package/std/test/run.sub +1 -1
  100. package/std/test/session.sub +0 -1
  101. package/std/test/test.sub +24 -17
  102. package/substrate/VERSION +1 -1
  103. package/substrate/compiler/binary.sub +5 -14
  104. package/substrate/compiler/checker.sub +204 -19
  105. package/substrate/compiler/compile.sub +8 -8
  106. package/substrate/compiler/expander.sub +208 -84
  107. package/substrate/compiler/link.sub +2 -2
  108. package/substrate/compiler/main.sub +15 -2
  109. package/substrate/compiler/ops.sub +1 -1
  110. package/substrate/compiler/prune.sub +12 -17
  111. package/substrate/compiler/roots.sub +93 -26
  112. package/substrate/compiler/serialize.sub +1 -1
  113. package/substrate/compiler/sha256.sub +110 -0
  114. package/substrate/compiler/substrate.sub +14 -14
  115. package/substrate/compiler/syntax.sub +8 -21
  116. package/substrate/host/fs.sub +8 -11
  117. package/substrate/host/grants.sub +25 -26
  118. package/substrate/host/node/process.sub +5 -6
  119. package/substrate/host/node/worker-thread.mjs +1 -1
  120. package/substrate/host/node/worker.mjs +1 -0
  121. package/substrate/host/subhost-core.mjs +10 -3
  122. package/substrate/host/subhost.mjs +13 -1
  123. package/substrate/host/web/subhost-web.mjs +13 -2
  124. package/substrate/host/web/worker-script.mjs +1 -0
  125. package/substrate/host/web/worker.mjs +1 -0
  126. package/substrate/host/worker.mjs +3 -1
  127. package/build/compiler/binary.5d81a93450b2@0+0.wasm +0 -0
  128. package/build/compiler/checker.343075746d8c@0+0.wasm +0 -0
  129. package/build/compiler/compile.2db0f824839f@0+0.wasm +0 -0
  130. package/build/compiler/expander.c0f36d0bd5fc@0+0.wasm +0 -0
  131. package/build/compiler/main.cf521803fc5e@0+0.wasm +0 -0
  132. package/build/compiler/prune.f800615ca8cc@0+0.wasm +0 -0
  133. package/build/compiler/roots.02808ca2c6a7@0+0.wasm +0 -0
  134. package/build/compiler/serialize.f4354af92feb@0+0.wasm +0 -0
  135. package/build/compiler/substrate.b31300129ffb@0+0.wasm +0 -0
  136. package/build/compiler/syntax.500cf1bcecd4@0+0.wasm +0 -0
  137. package/build/sub/build.3a016536f5a5@0+0.wasm +0 -0
  138. package/build/sub/deflate.67457f2269ae@0+0.wasm +0 -0
  139. package/build/sub/env.d4a2d3ca5408@0+0.wasm +0 -0
  140. package/build/sub/events.ee8945a7ea00@0+0.wasm +0 -0
  141. package/build/sub/fetch.22f5c88f8a7b@0+0.wasm +0 -0
  142. package/build/sub/hash.75dc86b3dd19@0+0.wasm +0 -0
  143. package/build/sub/manifest.0c0fe02b1e58@0+0.wasm +0 -0
  144. package/build/sub/map.b767b94ffe7f@0+0.wasm +0 -0
  145. package/build/sub/path.b98f74b36b19@0+0.wasm +0 -0
  146. package/build/sub/process.94378bb2ecf2@0+0.wasm +0 -0
  147. package/build/sub/read.4b71de2f3337@0+0.wasm +0 -0
  148. package/build/sub/roots.02808ca2c6a7@0+0.wasm +0 -0
  149. package/build/sub/site.b678ce0b53b9@0+0.wasm +0 -0
  150. package/build/sub/tar.9c01735ea170@0+0.wasm +0 -0
  151. package/build/sub/worker.5ced1d8ab0d4@0+0.wasm +0 -0
  152. package/build/sub/writer.b698107b491f@0+0.wasm +0 -0
@@ -39,7 +39,7 @@
39
39
  [on-end (fn ((ptr http-request)))]
40
40
  [on-gone (fn ((ptr http-request)))] [on-drained (fn ((ptr http-request)))] [body buffer] [limit u32]
41
41
  [taken (fn ((ptr http-request) (slice u8)))] [added buffer] [own-head http-head] [etag string] [modified f64]
42
- [ranges bool] [compressible bool] [events bool] [encoded bool] [gzip i32] [deflater (ptr deflater)] [crc u32]
42
+ [ranges bool] [compressible bool] [events bool] [encoded bool] [gzip zip-mode] [deflater (ptr deflater)] [crc u32]
43
43
  [size u32])
44
44
 
45
45
  ;; A check runs before the handler and returns #t when it has answered.
@@ -140,13 +140,11 @@
140
140
  (http-write-header! (& (-> r added)) name value))
141
141
 
142
142
  (define (new-request! [c (ptr http-connection)] [h (ptr http-head)]) -> (ptr http-request)
143
- (let ([r (cast (ptr http-request) (calloc 1 (sizeof http-request)))])
143
+ (let ([r (new 0 http-request)])
144
144
  (set! (-> r connection) (cast (ptr void) c))
145
145
  (set! (-> r server) (-> c server))
146
146
  (set! (-> r length) -1)
147
- (set! (-> r peer) (cast string (slice (cast (ptr u8) (arena-alloc (& (-> r arena)) (-> c peer length)))
148
- (-> c peer length))))
149
- (memcpy (-> r peer bytes) (-> c peer bytes) (-> c peer length))
147
+ (set! (-> r peer) (copy (& (-> r arena)) (-> c peer)))
150
148
  (http-head-copy! (& (-> r own-head)) h)
151
149
  (set! (-> r head) (& (-> r own-head)))
152
150
  (set! (-> r method) (-> r own-head method))
@@ -581,7 +579,7 @@
581
579
  [(== kind stream-failed) (drop! c)])))
582
580
 
583
581
  (define (new-connection! [s (ptr http-server)] [stream u32]) -> (ptr http-connection)
584
- (let ([c (cast (ptr http-connection) (calloc 1 (sizeof http-connection)))])
582
+ (let ([c (new 0 http-connection)])
585
583
  (set! (-> c head handle) connection-heard)
586
584
  (set! (-> c server) (cast (ptr void) s))
587
585
  (set! (-> c stream) stream)
@@ -612,10 +610,7 @@
612
610
  ;; ---- compression ----
613
611
 
614
612
  ;; How an answer is compressed: not, whole by http-send!, as each piece is written, or each event alone.
615
- (const zip-none i32 0)
616
- (const zip-whole i32 1)
617
- (const zip-pieces i32 2)
618
- (const zip-events i32 3)
613
+ (enum zip-mode zip-none zip-whole zip-pieces zip-events)
619
614
 
620
615
  ;; Bodies shorter than this go uncompressed.
621
616
  (const zip-least i64 1024)
@@ -763,7 +758,7 @@
763
758
  (when (and (== (-> r gzip) zip-none) (or (< (-> r length) 0) (>= (-> r length) zip-least)) (zip? r))
764
759
  (set! (-> r gzip) (if (-> r events) zip-events zip-pieces))
765
760
  (when (== (-> r gzip) zip-pieces)
766
- (set! (-> r deflater) (cast (ptr deflater) (malloc (sizeof deflater))))
761
+ (set! (-> r deflater) (new 0 deflater))
767
762
  (deflater-init! (-> r deflater) (-> s compress))))
768
763
  (when (and (has-length? r) (>= (-> r length) 0) (< (-> r gzip) zip-pieces))
769
764
  (http-write-number! b "content-length" (-> r length)))
@@ -911,7 +906,7 @@
911
906
  (begin
912
907
  (stream-close from)
913
908
  (http-finish! r))
914
- (let ([p (cast (ptr relay) (malloc (sizeof relay)))])
909
+ (let ([p (new 0 relay)])
915
910
  (http-write! r 0)
916
911
  (set! (-> p head handle) relay-heard)
917
912
  (set! (-> p from) from)
@@ -51,10 +51,7 @@
51
51
  (set! ok (and (<= at (+ (now-seconds) 60)) (<= (cast i64 (- (now-seconds) at)) (max-age-of s)))))
52
52
  (set! (-> b length) 0)
53
53
  (set! ok (and ok (base64url-decode! (& b) (slice value 0 first))))
54
- (when ok
55
- (let ([p (cast (ptr u8) (arena-alloc (& (-> r arena)) (-> b length)))])
56
- (memcpy p (-> b bytes) (-> b length))
57
- (set! (@ into) (slice p (-> b length)))))
54
+ (when ok (set! (@ into) (copy (& (-> r arena)) (buffer-bytes (& b)))))
58
55
  (buffer-free! (& b))
59
56
  ok))
60
57
 
@@ -11,16 +11,11 @@
11
11
  (require-unqualified "http.sub")
12
12
 
13
13
  (provide sse-event sse-parser sse-parser-init! sse-parse! sse-parser-end! sse-parser-free! sse-client
14
- sse-client-open! sse-client-close! sse-ended sse-lost sse-refused)
14
+ sse-client-open! sse-client-close! sse-end sse-ended sse-lost sse-refused)
15
15
 
16
- (const sse-ended i32 0)
17
- (const sse-lost i32 1)
18
- (const sse-refused i32 2)
16
+ (enum sse-end sse-ended sse-lost sse-refused)
19
17
 
20
- (const state-closed i32 0)
21
- (const state-connecting i32 1)
22
- (const state-open i32 2)
23
- (const state-waiting i32 3)
18
+ (enum client-state state-closed state-connecting state-open state-waiting)
24
19
 
25
20
  (const default-retry f64 3000.0)
26
21
 
@@ -133,10 +128,10 @@
133
128
  ;; ---- the client ----
134
129
 
135
130
  (struct sse-client [head event-head] [user (ptr void)] [reconnect bool] [retry f64] [status i32] [error i32]
136
- [method string] [url string] [headers (slice string)] [body (slice u8)] [state i32] [fetch u32] [timer u32]
131
+ [method string] [url string] [headers (slice string)] [body (slice u8)] [state client-state] [fetch u32] [timer u32]
137
132
  [parser sse-parser] [chunk (array u8 16384)]
138
133
  [on-open (fn ((ptr sse-client)))] [on-event (fn ((ptr sse-client) (ptr sse-event)))]
139
- [on-closed (fn ((ptr sse-client) i32))])
134
+ [on-closed (fn ((ptr sse-client) sse-end))])
140
135
 
141
136
  (define (parsed [p (ptr sse-parser)] [e (ptr sse-event)])
142
137
  (let ([c (cast (ptr sse-client) (-> p user))])
@@ -144,7 +139,7 @@
144
139
 
145
140
  (define (connect! [c (ptr sse-client)])
146
141
  (let* ([n (-> c headers length)] [id (buffer-string (& (-> c parser id)))]
147
- [all (cast (ptr string) (malloc (* (+ n 4) (sizeof string))))] [k n])
142
+ [all (new 0 string (+ n 4))] [k n])
148
143
  (for ([i u32 0]) (< i n) (+= i 1) (set! (@ all i) (@ (-> c headers) i)))
149
144
  (set! (@ all k) "accept")
150
145
  (set! (@ all (+ k 1)) "text/event-stream")
@@ -154,8 +149,8 @@
154
149
  (set! (@ all (+ k 1)) id)
155
150
  (+= k 2))
156
151
  (set! (-> c state) state-connecting)
157
- (set! (-> c fetch) (fetch-start (-> c method) (-> c url) (slice all k) (-> c body) (cast (ptr void) c)))
158
- (free all)))
152
+ (set! (-> c fetch) (fetch-start (-> c method) (-> c url) (slice all 0 k) (-> c body) (cast (ptr void) c)))
153
+ (free (-> all items))))
159
154
 
160
155
  (define (stop! [c (ptr sse-client)])
161
156
  (unless (== (-> c fetch) 0) (stream-close (-> c fetch)))
@@ -164,7 +159,7 @@
164
159
  (set! (-> c timer) 0)
165
160
  (set! (-> c state) state-closed))
166
161
 
167
- (define (ended! [c (ptr sse-client)] [why i32])
162
+ (define (ended! [c (ptr sse-client)] [why sse-end])
168
163
  (stream-close (-> c fetch))
169
164
  (set! (-> c fetch) 0)
170
165
  (sse-parser-end! (& (-> c parser)))
package/std/http/url.sub CHANGED
@@ -26,7 +26,7 @@
26
26
  (for ([i u32 0]) (< i n) (+= i 1)
27
27
  (when (or (escape? s i) (and plus (== (@ s i) #\+))) (set! plain #f)))
28
28
  (when plain (return s))
29
- (let ([p (cast (ptr u8) (arena-alloc a n))] [i u32 0] [k u32 0])
29
+ (let ([p (new a u8 n)] [i u32 0] [k u32 0])
30
30
  (while (< i n)
31
31
  (cond [(escape? s i)
32
32
  (set! (@ p k) (+ (* 16 (digit-value (@ s (+ i 1)) 16)) (digit-value (@ s (+ i 2)) 16)))
@@ -38,7 +38,7 @@
38
38
  (set! (@ p k) (@ s i))
39
39
  (+= i 1)])
40
40
  (+= k 1))
41
- (cast string (slice p k)))))
41
+ (cast string (slice p 0 k)))))
42
42
 
43
43
  ;; A path's segments after its first slash, decoded into the arena: "/" has none, and a final slash gives an empty last
44
44
  ;; segment. It returns 1 when a segment is . or .., or empty before the end, and -1 when the path does not start with a
@@ -49,7 +49,7 @@
49
49
  (when (or (== n 0) (!= (@ path 0) #\/)) (return -1))
50
50
  (when (== n 1) (return 0))
51
51
  (for ([i u32 1]) (< i n) (+= i 1) (when (== (@ path i) #\/) (+= count 1)))
52
- (let ([items (cast (ptr string) (arena-alloc a (* count (sizeof string))))])
52
+ (let ([items (new a string count)])
53
53
  (for ([i u32 1]) (<= i n) (+= i 1)
54
54
  (when (or (== i n) (== (@ path i) #\/))
55
55
  (let ([s (url-unescape a (slice path start i) #f)])
@@ -57,12 +57,12 @@
57
57
  (set! (@ items k) s)
58
58
  (+= k 1)
59
59
  (set! start (+ i 1)))))
60
- (set! (@ to) (slice items k))
60
+ (set! (@ to) (slice items 0 k))
61
61
  (if unclean 1 0))))
62
62
 
63
63
  ;; The path the segments name, resolved as Go's path.Clean does, keeping a final slash.
64
64
  (define (url-add-clean! [b (ptr buffer)] [segments (slice string)])
65
- (let* ([n (-> segments length)] [kept (cast (ptr u32) (malloc (* 4 (+ n 1))))] [k u32 0]
65
+ (let* ([n (-> segments length)] [kept (new 0 u32 (+ n 1))] [k u32 0]
66
66
  [last (if (> n 0) (@ segments (- n 1)) "x")] [slash (or (== last "") (== last ".") (== last ".."))])
67
67
  (for ([i u32 0]) (< i n) (+= i 1)
68
68
  (let ([s (@ segments i)])
@@ -76,7 +76,7 @@
76
76
  (buffer-add-byte! b #\/)
77
77
  (url-add-segment! b (@ segments (@ kept j))))
78
78
  (when (and slash (> k 0)) (buffer-add-byte! b #\/))
79
- (free kept)))
79
+ (free (-> kept items))))
80
80
 
81
81
  (define hex-digits string "0123456789ABCDEF")
82
82
 
@@ -109,17 +109,17 @@
109
109
  (define (url-form-parse [a (ptr arena)] [s string]) -> (slice url-pair)
110
110
  (let ([n (-> s length)] [count u32 1] [k u32 0] [start u32 0])
111
111
  (for ([i u32 0]) (< i n) (+= i 1) (when (== (@ s i) #\&) (+= count 1)))
112
- (let ([pairs (cast (ptr url-pair) (arena-alloc a (* count (sizeof url-pair))))])
112
+ (let ([pairs (new a url-pair count)])
113
113
  (for ([i u32 0]) (<= i n) (+= i 1)
114
114
  (when (or (== i n) (== (@ s i) #\&))
115
115
  (when (> i start)
116
116
  (let ([part (slice s start i)] [e u32 0])
117
117
  (while (and (< e (-> part length)) (!= (@ part e) #\=)) (+= e 1))
118
- (set! (-> (+ pairs k) name) (url-unescape a (slice part 0 e) #t))
119
- (set! (-> (+ pairs k) value) (url-unescape a (if (< e (-> part length)) (slice part (+ e 1)) "") #t))
118
+ (set! (-> (@ pairs k) name) (url-unescape a (slice part 0 e) #t))
119
+ (set! (-> (@ pairs k) value) (url-unescape a (if (< e (-> part length)) (slice part (+ e 1)) "") #t))
120
120
  (+= k 1)))
121
121
  (set! start (+ i 1))))
122
- (slice pairs k))))
122
+ (slice pairs 0 k))))
123
123
 
124
124
  ;; The value of the first pair with the name.
125
125
  (define (url-form-value [pairs (slice url-pair)] [name string] [to (ptr string)]) -> bool
@@ -19,14 +19,11 @@
19
19
  ;; A message beyond this many bytes closes the connection with 1009.
20
20
  (const largest u32 16777216)
21
21
 
22
- (const state-open i32 0)
23
- (const state-closing i32 1)
24
- (const state-finishing i32 2)
25
- (const state-closed i32 3)
22
+ (enum ws-state state-open state-closing state-finishing state-closed)
26
23
 
27
24
  (struct ws-connection [head event-head] [stream u32] [user (ptr void)] [server (ptr http-server)] [ping f64]
28
25
  [hook http-hook] [frames buffer] [message buffer] [out buffer]
29
- [kind i32] [state i32] [code i32] [reading bool] [full bool] [timer u32] [timer-at f64] [heard f64] [pinged bool]
26
+ [kind i32] [state ws-state] [code i32] [reading bool] [full bool] [timer u32] [timer-at f64] [heard f64] [pinged bool]
30
27
  [any-origin bool]
31
28
  [on-message (fn ((ptr ws-connection) (slice u8) i32))]
32
29
  [on-closed (fn ((ptr ws-connection) i32))]
@@ -3,17 +3,17 @@
3
3
 
4
4
  (provide type-info variable-type type-datum)
5
5
 
6
- ;; (kind name items parameters), kind struct, union or variant, or 0 when t names none. A struct's or union's items are
7
- ;; (field . type), a variant's (case (field . type) ...). A type is i8 to u64, f32, f64, bool or string, (ptr type),
8
- ;; (slice type), (array type n), a struct's, union's or variant's identifier, (identifier type ...) for one with
9
- ;; parameters, or (other type). For (identifier type ...), the items have those types in place of the parameters, and the
10
- ;; parameters are ().
6
+ ;; (kind name items parameters), kind struct, union, variant or enum, or 0 when t names none. A struct's or union's items
7
+ ;; are (field . type), a variant's (case (field . type) ...) and an enum's (case). A type is i8 to u64, f32, f64, bool or
8
+ ;; string, (ptr type), (slice type), (array type n), a struct's, union's, variant's or enum's identifier,
9
+ ;; (identifier type ...) for one with parameters, or (other type). For (identifier type ...), the items have those types
10
+ ;; in place of the parameters, and the parameters are ().
11
11
  (define (type-info [t datum]) -> datum
12
12
  (let ([instance (pair? t)])
13
13
  (syntax-match (binding-of (if instance (car t) t))
14
- [('substrate-struct name (item ...) kind (p ...))
14
+ [('substrate-struct name (item ...) kind (p ...) . _)
15
15
  (let ([k (syntax-e kind)] [env (if instance (for/list ([q p] [a (cdr t)]) (cons (syntax-e q) a)) nil)])
16
- `(,k ,name ,(for/list ([i item]) (if (== k 'variant) (case-info i env) (field-info i env)))
16
+ `(,k ,name ,(for/list ([i item]) (if (!= (memq k '(variant enum)) 0) (case-info i env) (field-info i env)))
17
17
  ,(if instance nil p)))]
18
18
  [('substrate-typedef u)
19
19
  (let ([d (parsed-type (syntax->datum u))])
@@ -37,7 +37,7 @@
37
37
  (cond [(!= (memq (syntax-e x) scalars) 0) (syntax-e x)]
38
38
  [(!= (assq (syntax-e x) env) 0) (cdr (assq (syntax-e x) env))]
39
39
  [else (syntax-match (binding-of x)
40
- [('substrate-struct _ _ _ ()) x]
40
+ [('substrate-struct _ _ _ () . _) x]
41
41
  [('substrate-typedef u) (parsed-type (syntax->datum u))]
42
42
  [_ `(other ,t)])])]
43
43
  [('ptr u) `(ptr ,(type-of u env))]
@@ -46,7 +46,7 @@
46
46
  [('quote u) (parsed-type (syntax->datum u))]
47
47
  [((? identifier? h) a ...)
48
48
  (syntax-match (binding-of h)
49
- [('substrate-struct _ _ _ (p ...))
49
+ [('substrate-struct _ _ _ (p ...) . _)
50
50
  (if (and (pair? p) (== (length p) (length a))) `(,h ,@(for/list ([u a]) (type-of u env))) `(other ,t))]
51
51
  [_ `(other ,t)])]
52
52
  [_ `(other ,t)]))
@@ -62,6 +62,6 @@
62
62
  (cond [(and (symbol? d) (!= (memq d scalars) 0)) d]
63
63
  [(and (pair? d) (!= (memq (car d) '(ptr slice)) 0)) `(,(car d) ,(parsed-type (cadr d)))]
64
64
  [(and (pair? d) (== (car d) 'array)) `(array ,(parsed-type (cadr d)) ,(caddr d))]
65
- [(and (pair? d) (== (car d) 'struct) (null? (cdddr d))) (name-identifier (cadr d))]
65
+ [(and (pair? d) (memq (car d) '(struct enum)) (null? (cdddr d))) (name-identifier (cadr d))]
66
66
  [(and (pair? d) (== (car d) 'struct)) `(,(name-identifier (cadr d)) ,@(for/list ([a (cadddr d)]) (parsed-type a)))]
67
67
  [else `(other ,d)]))
@@ -20,7 +20,7 @@
20
20
 
21
21
  (define (hash! [a (ptr arena)] [given string] [w (ptr waiting)] [into (ptr buffer)] [err (ptr buffer)]) -> bool
22
22
  (let ([dir string] [why string] [o w] [m manifest] [paths (make-buffer)] [lines (make-buffer)] [digest (array u8 32)]
23
- [ok #t] [me (cast (ptr waiting) (arena-alloc a (sizeof waiting)))])
23
+ [ok #t] [me (new a waiting)])
24
24
  (when (< (fs-real-path given (& dir) (& why)) 0) (return (cannot! err why)))
25
25
  (while (and (!= o 0) (!= (-> o dir) dir)) (set! o (-> o next)))
26
26
  (when (!= o 0)
@@ -59,8 +59,7 @@
59
59
  (let ([d dir] [info fs-info] [found ""])
60
60
  (while (> (-> d length) 0)
61
61
  (when (and (== (fs-stat (joined-path d "package.sub") (& info) 0) 0) (== (-> info kind) fs-file))
62
- (set! found (cast string (slice (cast (ptr u8) (arena-alloc a (-> d length))) (-> d length))))
63
- (memcpy (-> found bytes) (-> d bytes) (-> d length))
62
+ (set! found (copy a d))
64
63
  (break))
65
64
  (set! d (if (root-path? d) "" (parent-of d))))
66
65
  found))
@@ -190,7 +189,7 @@
190
189
  (if versioned #t (failed-at! err file f "the package has no (version \"major.minor.patch\")"))))
191
190
 
192
191
  (define (exports-of [file string] [c (ptr data)] [a (ptr arena)] [m (ptr manifest)] [err (ptr buffer)]) -> bool
193
- (let* ([items (items-of c)] [n (- (-> items length) 1)] [es (cast (ptr string) (arena-alloc a (* n (sizeof string))))])
192
+ (let* ([items (items-of c)] [n (- (-> items length) 1)] [es (new a string n)])
194
193
  (for ([i u32 0]) (< i n) (+= i 1)
195
194
  (let ([d (& (@ items (+ i 1)))])
196
195
  (set! (@ es i) (symbol-of d))
@@ -198,11 +197,11 @@
198
197
  (return (failed-at! err file d "an export is the name of a module in the package, as text or lib/value")))
199
198
  (for ([k u32 0]) (< k i) (+= k 1)
200
199
  (when (== (@ es k) (@ es i)) (return (failed-at! err file d "this export is given twice"))))))
201
- (set! (-> m exports) (slice es n))
200
+ (set! (-> m exports) es)
202
201
  #t))
203
202
 
204
203
  (define (tests-of [file string] [c (ptr data)] [a (ptr arena)] [m (ptr manifest)] [err (ptr buffer)]) -> bool
205
- (let* ([items (items-of c)] [n u32 0] [ts (cast (ptr string) (arena-alloc a (* (-> items length) (sizeof string))))])
204
+ (let* ([items (items-of c)] [n u32 0] [ts (new a string (-> items length))])
206
205
  (for ([i u32 1]) (< i (-> items length)) (+= i 1)
207
206
  (let ([d (& (@ items i))])
208
207
  (cond [(and (list-of? d "browser" 1) (not (-> m test-browser))) (set! (-> m test-browser) #t)]
@@ -210,15 +209,15 @@
210
209
  [else
211
210
  (return (failed-at! err file d
212
211
  "a test module is a path in the package, with * for any text, as \"tests/*.sub\", and (browser) comes at most once"))])))
213
- (when (> n 0) (set! (-> m tests) (slice ts n)))
212
+ (when (> n 0) (set! (-> m tests) (slice ts 0 n)))
214
213
  #t))
215
214
 
216
215
  (define (sites-of [file string] [c (ptr data)] [a (ptr arena)] [m (ptr manifest)] [err (ptr buffer)]) -> bool
217
216
  (let* ([items (items-of c)] [n (- (-> items length) 1)]
218
- [ss (cast (ptr declared-site) (arena-alloc a (* n (sizeof declared-site))))])
217
+ [ss (new a declared-site n)])
219
218
  (for ([i u32 0]) (< i n) (+= i 1)
220
- (let* ([d (& (@ items (+ i 1)))] [parts (items-of d)] [s (& (@ ss i))]
221
- [groups (cast (ptr site-files) (arena-alloc a (* (-> parts length) (sizeof site-files))))] [g u32 0])
219
+ (let* ([d (& (@ items (+ i 1)))] [parts (items-of d)] [s (& (@ ss i))] [groups (new a site-files (-> parts length))]
220
+ [g u32 0])
222
221
  (set! (-> s html) "")
223
222
  (match d [(data-list p line column) (set! (-> s line) line) (set! (-> s column) column)] [_ (begin)])
224
223
  (unless (and (>= (-> parts length) 2) (package-name? (symbol-of (& (@ parts 0))))
@@ -236,12 +235,12 @@
236
235
  (unless (files-of file p a (& (@ groups g)) err) (return #f))
237
236
  (+= g 1)]
238
237
  [else (return (failed-at! err file p site-form))])))
239
- (set! (-> s files) (slice groups g))))
240
- (set! (-> m sites) (slice ss n))
238
+ (set! (-> s files) (slice groups 0 g))))
239
+ (set! (-> m sites) ss)
241
240
  #t))
242
241
 
243
242
  (define (files-of [file string] [c (ptr data)] [a (ptr arena)] [f (ptr site-files)] [err (ptr buffer)]) -> bool
244
- (let* ([items (items-of c)] [k u32 2] [n u32 0] [ps (cast (ptr string) (arena-alloc a (* (-> items length) (sizeof string))))])
243
+ (let* ([items (items-of c)] [k u32 2] [n u32 0] [ps (new a string (-> items length))])
245
244
  (set! (-> f from) "")
246
245
  (unless (and (>= (-> items length) 3) (string-of (& (@ items 1)) (& (-> f dir))) (starts? (-> f dir) "/"))
247
246
  (return (failed-at! err file c files-form)))
@@ -253,7 +252,7 @@
253
252
  (return (failed-at! err file (& (@ items i)) files-form)))
254
253
  (+= n 1))
255
254
  (when (== n 0) (return (failed-at! err file c files-form)))
256
- (set! (-> f patterns) (slice ps n))
255
+ (set! (-> f patterns) (slice ps 0 n))
257
256
  #t))
258
257
 
259
258
  (define site-form string
@@ -272,7 +271,7 @@
272
271
 
273
272
  (define (dependencies-of [file string] [c (ptr data)] [a (ptr arena)] [m (ptr manifest)] [err (ptr buffer)]) -> bool
274
273
  (let* ([items (items-of c)] [n (- (-> items length) 1)]
275
- [ds (cast (ptr dependency) (arena-alloc a (* n (sizeof dependency))))])
274
+ [ds (new a dependency n)])
276
275
  (for ([i u32 0]) (< i n) (+= i 1)
277
276
  (let* ([d (& (@ items (+ i 1)))] [parts (items-of d)] [dep (& (@ ds i))])
278
277
  (set! (-> dep path) "")
@@ -302,7 +301,7 @@
302
301
  (return (failed-at! err file d "a dependency's url starts with http:// or https://")))
303
302
  (when (and (> (-> dep url length) 0) (not (full-hash? (-> dep hash))))
304
303
  (return (failed-at! err file d "a url's hash is sha256: and 64 hex digits, as substrate hash prints it")))))
305
- (set! (-> m dependencies) (slice ds n))
304
+ (set! (-> m dependencies) ds)
306
305
  #t))
307
306
 
308
307
  (define dependency-form string
@@ -58,15 +58,12 @@
58
58
  (define (visit! [a (ptr arena)] [dir string] [file string] [m (ptr manifest)] [store string] [g (ptr graph)]
59
59
  [err (ptr buffer)]) -> (ptr reached)
60
60
  (let* ([deps (-> m dependencies)] [n (-> deps length)]
61
- [dirs (cast (ptr string) (arena-alloc a (* n (sizeof string))))]
62
- [ms (cast (ptr manifest) (arena-alloc a (* n (sizeof manifest))))]
63
- [me (cast (ptr reached) (arena-alloc a (sizeof reached)))] [other (ptr reached) 0])
61
+ [dirs (new a string n)] [ms (new a manifest n)] [me (new a reached)] [other (ptr reached) 0])
64
62
  (set! (-> me m) m)
65
63
  (set! (-> me r dir) dir)
66
64
  (set! (-> me r file) file)
67
65
  (set! (-> me r substrate) (-> m substrate))
68
- (set! (-> me r exports) (slice (cast (ptr string) 0) 0))
69
- (set! (-> me deps) (cast (ptr (ptr reached)) (arena-alloc a (* n (sizeof (ptr reached))))))
66
+ (set! (-> me deps) (-> (new a (ptr reached) n) items))
70
67
  (set! (-> me hash) "")
71
68
  (set! (-> me open) #t)
72
69
  (set! (-> me next) 0)
@@ -207,13 +204,12 @@
207
204
  ok))
208
205
 
209
206
  (define (under [a (ptr arena)] [dir string] [b (ptr buffer)]) -> (slice string)
210
- (let* ([n (/ (-> b length) (sizeof string))] [ps (cast (ptr string) (-> b bytes))]
211
- [out (cast (ptr string) (arena-alloc a (* n (sizeof string))))])
207
+ (let* ([n (/ (-> b length) (sizeof string))] [ps (cast (ptr string) (-> b bytes))] [out (new a string n)])
212
208
  (for ([i u32 0]) (< i n) (+= i 1)
213
209
  (let ([full (joined-path dir (@ ps i))])
214
210
  (set! (@ out i) (normal-path a full))
215
211
  (free (-> full bytes))))
216
- (slice out n)))
212
+ out))
217
213
 
218
214
  (define (rules! [b (ptr buffer)] [r (ptr package-root)])
219
215
  (if (> (-> r file length) 0)
@@ -21,10 +21,7 @@
21
21
 
22
22
  (define (root-path? [p string]) -> bool (path-same? (path-windows?) (path-parent (path-windows?) p) p))
23
23
 
24
- (define (kept [a (ptr arena)] [s string]) -> string
25
- (let ([out (cast string (slice (cast (ptr u8) (arena-alloc a (-> s length))) (-> s length)))])
26
- (memcpy (-> out bytes) (-> s bytes) (-> s length))
27
- out))
24
+ (define (kept [a (ptr arena)] [s string]) -> string (copy a s))
28
25
 
29
26
  (define (within? [p string] [dir string]) -> bool (path-within? (path-windows?) p dir))
30
27
 
@@ -48,10 +48,7 @@
48
48
  (while (and (more? (& r)) (not (delimiter? (here (& r))))) (advance! (& r)))
49
49
  (slice text start (-> r at))))
50
50
 
51
- (define (copied [a (ptr arena)] [b (slice u8)]) -> (ptr u8)
52
- (let ([p (cast (ptr u8) (arena-alloc a (-> b length)))])
53
- (memcpy p (-> b items) (-> b length))
54
- p))
51
+ (define (copied [a (ptr arena)] [b (slice u8)]) -> (ptr u8) (-> (copy a b) items))
55
52
 
56
53
  (define (here [r (ptr data-reader)]) -> u32 (@ (-> r text) (-> r at)))
57
54
 
@@ -110,9 +107,7 @@
110
107
  [else
111
108
  (let ([start (-> r at)])
112
109
  (while (and (more? r) (not (delimiter? (here r)))) (advance! r))
113
- (set! (@ into) (data-symbol (cast string (slice (copied (-> r arena) (cast (slice u8) (slice (-> r text) start (-> r at))))
114
- (- (-> r at) start)))
115
- line column))
110
+ (set! (@ into) (data-symbol (copy (-> r arena) (slice (-> r text) start (-> r at))) line column))
116
111
  #t)])))
117
112
 
118
113
  (define (read-list! [r (ptr data-reader)] [close u32] [line u32] [column u32] [into (ptr data)]) -> bool
@@ -162,7 +157,7 @@
162
157
  (return (failed! r "a string's escapes are \\\", \\\\, \\n, \\t, \\r, \\0, and \\x with hex digits and ;" l k))])
163
158
  (advance! r))]
164
159
  [else (buffer-add-byte! (& b) (cast i32 c)) (advance! r)]))
165
- (set! (@ into) (data-string (cast string (slice (copied (-> r arena) (buffer-bytes (& b))) (-> b length))) line column))
160
+ (set! (@ into) (data-string (cast string (copy (-> r arena) (buffer-bytes (& b)))) line column))
166
161
  (buffer-free! (& b))
167
162
  #t))
168
163
 
@@ -19,8 +19,8 @@
19
19
  (buffer-add-string! (& out) b)
20
20
  (buffer-string (& out))))
21
21
 
22
- (define (kind-of [path string]) -> i32
23
- (let ([info fs-info]) (if (< (fs-stat path (& info) 0) 0) 0 (-> info kind))))
22
+ (define (kind-of [path string]) -> fs-kind
23
+ (let ([info fs-info]) (fs-stat path (& info) 0) (-> info kind)))
24
24
 
25
25
  (define (made! [path string])
26
26
  (let ([why string]) (when (< (fs-make-dir path (& why)) 0) (throw site-failed why))))
@@ -84,7 +84,7 @@
84
84
  ;; Collects the paths under base that match parts k onward; rel is the part of the path matched so far.
85
85
  (define (matched! [base string] [rel string] [parts (slice string)] [k u32] [into (ptr buffer)])
86
86
  (let ([here (if (== (-> rel length) 0) base (joined-path base rel))])
87
- (cond [(== k (-> parts length)) (when (!= (kind-of here) 0) (kept! into rel))]
87
+ (cond [(== k (-> parts length)) (when (!= (kind-of here) fs-none) (kept! into rel))]
88
88
  [(== (@ parts k) "**")
89
89
  (matched! base rel parts (+ k 1) into)
90
90
  (when (== (kind-of here) fs-directory)
@@ -132,11 +132,11 @@
132
132
 
133
133
  (define (site-written! [p (ptr site-plan)] [out string] [toolchain string])
134
134
  (let ([list (make-buffer)] [files (make-buffer)] [packed (make-buffer)] [err (make-buffer)] [why string])
135
- (when (and (!= (kind-of out) 0)
135
+ (when (and (!= (kind-of out) fs-none)
136
136
  (or (!= (kind-of out) fs-directory)
137
137
  (and (> (-> (names-in out) length) 0) (!= (kind-of (joined-path out ".site")) fs-file))))
138
138
  (throw site-failed (joined (joined "site: " out) " is not a site, so it is not replaced")))
139
- (when (and (!= (kind-of out) 0) (< (fs-remove out #t (& why)) 0)) (throw site-failed why))
139
+ (when (and (!= (kind-of out) fs-none) (< (fs-remove out #t (& why)) 0)) (throw site-failed why))
140
140
  (made! (joined-path out "host/modules"))
141
141
  (made! (joined-path out "host/web"))
142
142
  (written! (joined-path out ".site") (cast (slice u8) (joined (-> p program) "\n")))
@@ -23,8 +23,7 @@
23
23
  (begin
24
24
  (for ([i u32 0]) (< i n) (+= i 1) (diff-line! b 1 (@ xs i)))
25
25
  (for ([j u32 0]) (< j m) (+= j 1) (diff-line! b 2 (@ ys j))))
26
- (let ([t (cast (ptr u32) (calloc (* (+ n 1) (+ m 1)) 4))] [w (+ m 1)]
27
- [kinds (cast (ptr u8) (malloc (+ n m)))] [texts (cast (ptr string) (malloc (* (+ n m) (sizeof string))))]
26
+ (let ([t (new 0 u32 (* (+ n 1) (+ m 1)))] [w (+ m 1)] [kinds (new 0 u8 (+ n m))] [texts (new 0 string (+ n m))]
28
27
  [k u32 0] [i u32 0] [j u32 0] [skipped #f])
29
28
  (for ([a u32 n]) (> a 0) (-= a 1)
30
29
  (for ([c u32 m]) (> c 0) (-= c 1)
@@ -55,13 +54,13 @@
55
54
  (set! skipped #f)
56
55
  (diff-line! b (@ kinds p) (@ texts p)))
57
56
  (set! skipped #t)))
58
- (free (cast (ptr u8) t))
59
- (free kinds)
60
- (free (cast (ptr u8) texts))))
61
- (free (cast (ptr u8) (-> xs items)))
62
- (free (cast (ptr u8) (-> ys items)))))
57
+ (free (-> t items))
58
+ (free (-> kinds items))
59
+ (free (-> texts items))))
60
+ (free (-> xs items))
61
+ (free (-> ys items))))
63
62
 
64
- (define (changed-near? [kinds (ptr u8)] [k u32] [p u32]) -> bool
63
+ (define (changed-near? [kinds (slice u8)] [k u32] [p u32]) -> bool
65
64
  (for ([q u32 (if (> p 2) (- p 2) 0)]) (and (< q k) (<= q (+ p 2))) (+= q 1)
66
65
  (when (!= (@ kinds q) 0) (return #t)))
67
66
  #f)
@@ -75,11 +74,11 @@
75
74
  (let ([n u32 0] [start u32 0] [k u32 0])
76
75
  (for ([i u32 0]) (< i (-> text length)) (+= i 1) (when (== (@ text i) 10) (+= n 1)))
77
76
  (when (and (> (-> text length) 0) (!= (@ text (- (-> text length) 1)) 10)) (+= n 1))
78
- (let ([out (cast (ptr string) (malloc (* (+ n 1) (sizeof string))))])
77
+ (let ([out (new 0 string (+ n 1))])
79
78
  (for ([i u32 0]) (<= i (-> text length)) (+= i 1)
80
79
  (when (or (== i (-> text length)) (== (@ text i) 10))
81
80
  (when (or (< start i) (< i (-> text length)))
82
81
  (set! (@ out k) (slice text start i))
83
82
  (+= k 1))
84
83
  (set! start (+ i 1))))
85
- (slice out k))))
84
+ (slice out 0 k))))
package/std/test/page.sub CHANGED
@@ -78,7 +78,7 @@
78
78
  (let ([why string])
79
79
  (unless (devtools-connect (& connection) address heard 0 (& why)) (throw page-failed why))
80
80
  (set! connected #t)))
81
- (let ([b (cast (ptr page) (calloc 1 (sizeof page)))])
81
+ (let ([b (new 0 page)])
82
82
  (+= opened 1)
83
83
  (set! (-> b site) (kept (absolute dir)))
84
84
  (buffer-add-u32! (& pages) (cast u32 b))
package/std/test/run.sub CHANGED
@@ -38,7 +38,7 @@
38
38
  g))
39
39
 
40
40
  (define (host-in [dir string] [env (slice string)] [g (ptr grants)] [args (slice string)] [input (slice u8)]) -> ran
41
- (program-in dir (joined-path (root) "substrate/host/subhost.mjs") env
41
+ (program-in dir (toolchain-host) env
42
42
  (grants-arguments g (@ args 0) (slice args 1 (-> args length))) input))
43
43
 
44
44
  (define (sub-in [dir string] [clauses (slice (slice string))] [env (slice string)] [args (slice string)]
@@ -20,7 +20,6 @@
20
20
  (define (run-session [file string])
21
21
  (let ([map (string->datum (setting "SUBSTRATE_MODULE_MAP"))])
22
22
  (set-toolchain-directory! (string->datum (setting "SUBSTRATE_TOOLCHAIN")))
23
- (install-core!)
24
23
  (set-module-map-text! (file-text map) map)
25
24
  (set-cache-directory! (string->datum (setting "SUBSTRATE_CACHE")))
26
25
  (set-display-directory! (string->datum (parent-of file)))