@scriptc/cli-darwin-x64 0.2.4 → 0.2.6

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 (434) hide show
  1. package/dist/THIRD_PARTY_NOTICES +1 -1
  2. package/dist/bin/scriptc +0 -0
  3. package/dist/bin/scriptc.json +1 -1
  4. package/dist/lib/declarations/scriptc-node-fallback.d.ts +972 -245
  5. package/dist/lib/declarations/scriptc-overrides.d.ts +5 -1
  6. package/dist/lib/declarations/scriptc.d.ts +22 -2
  7. package/dist/lib/llvm/bin/scriptc-llvm-codegen +0 -0
  8. package/dist/lib/llvm/package.json +1 -1
  9. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_array.o +0 -0
  10. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_assert.o +0 -0
  11. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_async.o +0 -0
  12. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_bytes.o +0 -0
  13. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_bytes_io.o +0 -0
  14. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_child.o +0 -0
  15. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_closure.o +0 -0
  16. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_console.o +0 -0
  17. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_context.o +0 -0
  18. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_copying.o +0 -0
  19. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_cycle.o +0 -0
  20. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_dgram.o +0 -0
  21. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_error.o +0 -0
  22. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_events.o +0 -0
  23. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_events_emitter.o +0 -0
  24. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_exception.o +0 -0
  25. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_fetch.o +0 -0
  26. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_file_handle.o +0 -0
  27. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_json.o +0 -0
  28. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_lib.o +0 -0
  29. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_map.o +0 -0
  30. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_number.o +0 -0
  31. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_object.o +0 -0
  32. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_readline.o +0 -0
  33. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_regex.o +0 -0
  34. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_shared.o +0 -0
  35. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_stream.o +0 -0
  36. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_string.o +0 -0
  37. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_tls.o +0 -0
  38. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_union.o +0 -0
  39. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_util_compare.o +0 -0
  40. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_array.o +0 -0
  41. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_assert.o +0 -0
  42. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_async.o +0 -0
  43. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_async_dyn.o +0 -0
  44. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_bigint.o +0 -0
  45. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_bigint_assert.o +0 -0
  46. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_bytes.o +0 -0
  47. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_bytes_io.o +0 -0
  48. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_child.o +0 -0
  49. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_closure.o +0 -0
  50. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_console.o +0 -0
  51. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_console_native.o +0 -0
  52. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_context.o +0 -0
  53. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_copying.o +0 -0
  54. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_crypto_async.o +0 -0
  55. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_cycle.o +0 -0
  56. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_dc.o +0 -0
  57. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_dgram.o +0 -0
  58. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_dyn_handle.o +0 -0
  59. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_dyn_invoke.o +0 -0
  60. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_error.o +0 -0
  61. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_events.o +0 -0
  62. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_events_emitter.o +0 -0
  63. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_exception.o +0 -0
  64. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_fetch.o +0 -0
  65. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_ffi.o +0 -0
  66. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_ffi_queue.o +0 -0
  67. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_file_handle.o +0 -0
  68. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_grapheme.o +0 -0
  69. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_http.o +0 -0
  70. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_http2.o +0 -0
  71. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_inspect.o +0 -0
  72. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_json.o +0 -0
  73. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_lib.o +0 -0
  74. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_loop_epoll.o +0 -0
  75. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_loop_kqueue.o +0 -0
  76. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_loop_wsapoll.o +0 -0
  77. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_map.o +0 -0
  78. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_net.o +0 -0
  79. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_node_builtin.o +0 -0
  80. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_number.o +0 -0
  81. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_object.o +0 -0
  82. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_path.o +0 -0
  83. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_qs.o +0 -0
  84. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_readline.o +0 -0
  85. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_regex.o +0 -0
  86. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_shared.o +0 -0
  87. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_stream.o +0 -0
  88. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_string.o +0 -0
  89. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_symbol.o +0 -0
  90. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_test.o +0 -0
  91. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_tls.o +0 -0
  92. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_tls_ca.o +0 -0
  93. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_union.o +0 -0
  94. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_url.o +0 -0
  95. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_url_params.o +0 -0
  96. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_util.o +0 -0
  97. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_util_compare.o +0 -0
  98. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_util_style.o +0 -0
  99. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_watch.o +0 -0
  100. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_zlib.o +0 -0
  101. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_array.o +0 -0
  102. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_assert.o +0 -0
  103. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_async.o +0 -0
  104. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_bytes.o +0 -0
  105. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_bytes_io.o +0 -0
  106. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_child.o +0 -0
  107. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_closure.o +0 -0
  108. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_console.o +0 -0
  109. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_context.o +0 -0
  110. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_copying.o +0 -0
  111. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_cycle.o +0 -0
  112. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_dgram.o +0 -0
  113. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_error.o +0 -0
  114. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_events.o +0 -0
  115. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_events_emitter.o +0 -0
  116. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_exception.o +0 -0
  117. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_file_handle.o +0 -0
  118. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_island.o +0 -0
  119. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_json.o +0 -0
  120. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_lib.o +0 -0
  121. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_map.o +0 -0
  122. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_number.o +0 -0
  123. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_object.o +0 -0
  124. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_readline.o +0 -0
  125. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_regex.o +0 -0
  126. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_shared.o +0 -0
  127. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_stream.o +0 -0
  128. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_string.o +0 -0
  129. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_tls.o +0 -0
  130. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_union.o +0 -0
  131. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_util_compare.o +0 -0
  132. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic-text-decoder-legacy/scr_bytes.o +0 -0
  133. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/text-decoder-legacy/scr_bytes.o +0 -0
  134. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/text-decoder-legacy-workers/scr_bytes.o +0 -0
  135. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/workers/scr_mailbox.o +0 -0
  136. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/workers/scr_message.o +0 -0
  137. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/workers/scr_worker.o +0 -0
  138. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/workers/scr_worker_events.o +0 -0
  139. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_array.o +0 -0
  140. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_assert.o +0 -0
  141. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_bytes.o +0 -0
  142. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_bytes_io.o +0 -0
  143. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_closure.o +0 -0
  144. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_context.o +0 -0
  145. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_copying.o +0 -0
  146. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_cycle.o +0 -0
  147. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_error.o +0 -0
  148. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_events_emitter.o +0 -0
  149. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_exception.o +0 -0
  150. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_json.o +0 -0
  151. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_lib.o +0 -0
  152. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_map.o +0 -0
  153. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_number.o +0 -0
  154. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_object.o +0 -0
  155. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_regex.o +0 -0
  156. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_shared.o +0 -0
  157. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_string.o +0 -0
  158. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_union.o +0 -0
  159. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/text-decoder-legacy/scr_bytes.o +0 -0
  160. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_array.o +0 -0
  161. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_assert.o +0 -0
  162. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_bytes.o +0 -0
  163. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_bytes_io.o +0 -0
  164. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_closure.o +0 -0
  165. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_context.o +0 -0
  166. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_copying.o +0 -0
  167. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_cycle.o +0 -0
  168. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_error.o +0 -0
  169. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_events_emitter.o +0 -0
  170. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_exception.o +0 -0
  171. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_json.o +0 -0
  172. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_lib.o +0 -0
  173. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_map.o +0 -0
  174. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_number.o +0 -0
  175. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_object.o +0 -0
  176. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_regex.o +0 -0
  177. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_shared.o +0 -0
  178. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_string.o +0 -0
  179. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_union.o +0 -0
  180. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/text-decoder-legacy/scr_bytes.o +0 -0
  181. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_array.o +0 -0
  182. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_assert.o +0 -0
  183. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_bytes.o +0 -0
  184. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_bytes_io.o +0 -0
  185. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_closure.o +0 -0
  186. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_console.o +0 -0
  187. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_context.o +0 -0
  188. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_copying.o +0 -0
  189. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_cycle.o +0 -0
  190. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_error.o +0 -0
  191. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_events_emitter.o +0 -0
  192. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_exception.o +0 -0
  193. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_inspect.o +0 -0
  194. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_json.o +0 -0
  195. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_lib.o +0 -0
  196. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_map.o +0 -0
  197. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_number.o +0 -0
  198. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_object.o +0 -0
  199. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_regex.o +0 -0
  200. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_shared.o +0 -0
  201. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_string.o +0 -0
  202. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_union.o +0 -0
  203. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_zlib.o +0 -0
  204. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/text-decoder-legacy/scr_bytes.o +0 -0
  205. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_array.o +0 -0
  206. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_assert.o +0 -0
  207. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_bytes.o +0 -0
  208. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_bytes_io.o +0 -0
  209. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_closure.o +0 -0
  210. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_console.o +0 -0
  211. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_context.o +0 -0
  212. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_copying.o +0 -0
  213. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_cycle.o +0 -0
  214. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_error.o +0 -0
  215. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_events_emitter.o +0 -0
  216. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_exception.o +0 -0
  217. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_inspect.o +0 -0
  218. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_json.o +0 -0
  219. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_lib.o +0 -0
  220. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_map.o +0 -0
  221. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_number.o +0 -0
  222. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_object.o +0 -0
  223. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_regex.o +0 -0
  224. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_shared.o +0 -0
  225. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_string.o +0 -0
  226. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_union.o +0 -0
  227. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_zlib.o +0 -0
  228. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/text-decoder-legacy/scr_bytes.o +0 -0
  229. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_array.o +0 -0
  230. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_assert.o +0 -0
  231. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_async.o +0 -0
  232. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_bytes.o +0 -0
  233. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_bytes_io.o +0 -0
  234. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_child.o +0 -0
  235. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_closure.o +0 -0
  236. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_console.o +0 -0
  237. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_context.o +0 -0
  238. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_copying.o +0 -0
  239. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_cycle.o +0 -0
  240. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_dgram.o +0 -0
  241. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_error.o +0 -0
  242. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_events.o +0 -0
  243. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_events_emitter.o +0 -0
  244. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_exception.o +0 -0
  245. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_fetch.o +0 -0
  246. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_file_handle.o +0 -0
  247. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_json.o +0 -0
  248. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_lib.o +0 -0
  249. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_map.o +0 -0
  250. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_number.o +0 -0
  251. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_object.o +0 -0
  252. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_readline.o +0 -0
  253. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_regex.o +0 -0
  254. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_shared.o +0 -0
  255. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_stream.o +0 -0
  256. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_string.o +0 -0
  257. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_tls.o +0 -0
  258. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_union.o +0 -0
  259. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_util_compare.o +0 -0
  260. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_array.o +0 -0
  261. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_assert.o +0 -0
  262. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_async.o +0 -0
  263. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_async_dyn.o +0 -0
  264. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_bigint.o +0 -0
  265. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_bigint_assert.o +0 -0
  266. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_bytes.o +0 -0
  267. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_bytes_io.o +0 -0
  268. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_child.o +0 -0
  269. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_closure.o +0 -0
  270. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_console.o +0 -0
  271. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_console_native.o +0 -0
  272. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_context.o +0 -0
  273. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_copying.o +0 -0
  274. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_crypto_async.o +0 -0
  275. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_cycle.o +0 -0
  276. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_dc.o +0 -0
  277. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_dgram.o +0 -0
  278. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_dyn_handle.o +0 -0
  279. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_dyn_invoke.o +0 -0
  280. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_error.o +0 -0
  281. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_events.o +0 -0
  282. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_events_emitter.o +0 -0
  283. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_exception.o +0 -0
  284. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_fetch.o +0 -0
  285. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_ffi.o +0 -0
  286. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_ffi_queue.o +0 -0
  287. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_file_handle.o +0 -0
  288. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_grapheme.o +0 -0
  289. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_http.o +0 -0
  290. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_http2.o +0 -0
  291. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_inspect.o +0 -0
  292. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_json.o +0 -0
  293. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_lib.o +0 -0
  294. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_loop_epoll.o +0 -0
  295. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_loop_kqueue.o +0 -0
  296. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_loop_wsapoll.o +0 -0
  297. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_map.o +0 -0
  298. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_net.o +0 -0
  299. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_node_builtin.o +0 -0
  300. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_number.o +0 -0
  301. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_object.o +0 -0
  302. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_path.o +0 -0
  303. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_qs.o +0 -0
  304. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_readline.o +0 -0
  305. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_regex.o +0 -0
  306. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_shared.o +0 -0
  307. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_stream.o +0 -0
  308. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_string.o +0 -0
  309. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_symbol.o +0 -0
  310. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_test.o +0 -0
  311. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_tls.o +0 -0
  312. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_tls_ca.o +0 -0
  313. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_union.o +0 -0
  314. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_url.o +0 -0
  315. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_url_params.o +0 -0
  316. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_util.o +0 -0
  317. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_util_compare.o +0 -0
  318. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_util_style.o +0 -0
  319. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_watch.o +0 -0
  320. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_zlib.o +0 -0
  321. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_array.o +0 -0
  322. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_assert.o +0 -0
  323. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_async.o +0 -0
  324. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_bytes.o +0 -0
  325. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_bytes_io.o +0 -0
  326. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_child.o +0 -0
  327. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_closure.o +0 -0
  328. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_console.o +0 -0
  329. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_context.o +0 -0
  330. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_copying.o +0 -0
  331. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_cycle.o +0 -0
  332. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_dgram.o +0 -0
  333. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_error.o +0 -0
  334. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_events.o +0 -0
  335. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_events_emitter.o +0 -0
  336. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_exception.o +0 -0
  337. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_file_handle.o +0 -0
  338. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_island.o +0 -0
  339. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_json.o +0 -0
  340. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_lib.o +0 -0
  341. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_map.o +0 -0
  342. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_number.o +0 -0
  343. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_object.o +0 -0
  344. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_readline.o +0 -0
  345. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_regex.o +0 -0
  346. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_shared.o +0 -0
  347. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_stream.o +0 -0
  348. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_string.o +0 -0
  349. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_tls.o +0 -0
  350. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_union.o +0 -0
  351. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_util_compare.o +0 -0
  352. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic-text-decoder-legacy/scr_bytes.o +0 -0
  353. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/text-decoder-legacy/scr_bytes.o +0 -0
  354. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/text-decoder-legacy-workers/scr_bytes.o +0 -0
  355. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/workers/scr_mailbox.o +0 -0
  356. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/workers/scr_message.o +0 -0
  357. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/workers/scr_worker.o +0 -0
  358. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/workers/scr_worker_events.o +0 -0
  359. package/dist/lib/runtime-darwin-x64/package.json +1 -1
  360. package/dist/lib/runtime-darwin-x64/runtime-pack.json +3318 -790
  361. package/dist/lib/runtime-sources/package.json +1 -1
  362. package/dist/lib/runtime-sources/src/scr_array.c +479 -46
  363. package/dist/lib/runtime-sources/src/scr_assert.c +3 -3
  364. package/dist/lib/runtime-sources/src/scr_async.c +401 -71
  365. package/dist/lib/runtime-sources/src/scr_async.test.ts +16 -6
  366. package/dist/lib/runtime-sources/src/scr_async_dyn.c +30 -30
  367. package/dist/lib/runtime-sources/src/scr_bytes.c +487 -221
  368. package/dist/lib/runtime-sources/src/scr_bytes.test.c +85 -0
  369. package/dist/lib/runtime-sources/src/scr_bytes_io.c +45 -64
  370. package/dist/lib/runtime-sources/src/scr_child.c +48 -30
  371. package/dist/lib/runtime-sources/src/scr_closure.c +21 -11
  372. package/dist/lib/runtime-sources/src/scr_console.c +27 -5
  373. package/dist/lib/runtime-sources/src/scr_context.c +167 -0
  374. package/dist/lib/runtime-sources/src/scr_context.test.c +118 -0
  375. package/dist/lib/runtime-sources/src/scr_context.test.ts +47 -0
  376. package/dist/lib/runtime-sources/src/scr_copying.c +13 -2
  377. package/dist/lib/runtime-sources/src/scr_cycle.c +112 -12
  378. package/dist/lib/runtime-sources/src/scr_dc.c +8 -8
  379. package/dist/lib/runtime-sources/src/scr_dgram.c +10 -7
  380. package/dist/lib/runtime-sources/src/scr_error.c +26 -14
  381. package/dist/lib/runtime-sources/src/scr_events.c +45 -31
  382. package/dist/lib/runtime-sources/src/scr_events_emitter.c +34 -1
  383. package/dist/lib/runtime-sources/src/scr_exception.c +26 -7
  384. package/dist/lib/runtime-sources/src/scr_fetch.c +23 -20
  385. package/dist/lib/runtime-sources/src/scr_fetch_curl.c +1 -1
  386. package/dist/lib/runtime-sources/src/scr_ffi.c +3 -3
  387. package/dist/lib/runtime-sources/src/scr_file_handle.c +1 -0
  388. package/dist/lib/runtime-sources/src/scr_http.c +20 -16
  389. package/dist/lib/runtime-sources/src/scr_http2.c +10 -8
  390. package/dist/lib/runtime-sources/src/scr_inspect.c +1 -0
  391. package/dist/lib/runtime-sources/src/scr_island.c +1 -1
  392. package/dist/lib/runtime-sources/src/scr_json.c +652 -189
  393. package/dist/lib/runtime-sources/src/scr_json.test.c +339 -1
  394. package/dist/lib/runtime-sources/src/scr_json.test.ts +59 -25
  395. package/dist/lib/runtime-sources/src/scr_key.h +92 -0
  396. package/dist/lib/runtime-sources/src/scr_lib.c +256 -136
  397. package/dist/lib/runtime-sources/src/scr_mailbox.c +233 -0
  398. package/dist/lib/runtime-sources/src/scr_mailbox.h +28 -0
  399. package/dist/lib/runtime-sources/src/scr_mailbox.test.c +86 -0
  400. package/dist/lib/runtime-sources/src/scr_mailbox.test.ts +46 -0
  401. package/dist/lib/runtime-sources/src/scr_map.c +240 -107
  402. package/dist/lib/runtime-sources/src/scr_message.c +443 -0
  403. package/dist/lib/runtime-sources/src/scr_message.h +14 -0
  404. package/dist/lib/runtime-sources/src/scr_message.test.c +152 -0
  405. package/dist/lib/runtime-sources/src/scr_message.test.ts +44 -0
  406. package/dist/lib/runtime-sources/src/scr_net.c +14 -12
  407. package/dist/lib/runtime-sources/src/scr_number.c +36 -4
  408. package/dist/lib/runtime-sources/src/scr_numeric.h +25 -0
  409. package/dist/lib/runtime-sources/src/scr_numeric.test.c +37 -0
  410. package/dist/lib/runtime-sources/src/scr_numeric.test.ts +33 -0
  411. package/dist/lib/runtime-sources/src/scr_object.c +9 -4
  412. package/dist/lib/runtime-sources/src/scr_path.c +1 -1
  413. package/dist/lib/runtime-sources/src/scr_readline.c +8 -8
  414. package/dist/lib/runtime-sources/src/scr_regex.c +351 -167
  415. package/dist/lib/runtime-sources/src/scr_runtime.h +207 -34
  416. package/dist/lib/runtime-sources/src/scr_shared.c +280 -0
  417. package/dist/lib/runtime-sources/src/scr_shared.test.c +113 -0
  418. package/dist/lib/runtime-sources/src/scr_shared.test.ts +45 -0
  419. package/dist/lib/runtime-sources/src/scr_stream.c +9 -9
  420. package/dist/lib/runtime-sources/src/scr_string.c +365 -141
  421. package/dist/lib/runtime-sources/src/scr_test.c +8 -8
  422. package/dist/lib/runtime-sources/src/scr_tls.c +12 -12
  423. package/dist/lib/runtime-sources/src/scr_tls_ca.c +34 -12
  424. package/dist/lib/runtime-sources/src/scr_union.c +10 -5
  425. package/dist/lib/runtime-sources/src/scr_util_compare.c +1 -0
  426. package/dist/lib/runtime-sources/src/scr_util_style.c +11 -11
  427. package/dist/lib/runtime-sources/src/scr_watch.c +16 -6
  428. package/dist/lib/runtime-sources/src/scr_worker.c +232 -0
  429. package/dist/lib/runtime-sources/src/scr_worker.h +42 -0
  430. package/dist/lib/runtime-sources/src/scr_worker.test.c +115 -0
  431. package/dist/lib/runtime-sources/src/scr_worker.test.ts +49 -0
  432. package/dist/lib/runtime-sources/src/scr_worker_events.c +443 -0
  433. package/dist/lib/runtime-sources/src/scr_zlib.c +6 -0
  434. package/package.json +1 -1
@@ -0,0 +1,167 @@
1
+ #include "scr_runtime.h"
2
+
3
+ #ifdef SCR_WORKERS
4
+ #include <stdlib.h>
5
+ #include <stdatomic.h>
6
+
7
+ void scr_runtime_workers_v7(void) {}
8
+
9
+ typedef struct ScrContextExit {
10
+ void (*fn)(void);
11
+ struct ScrContextExit *next;
12
+ } ScrContextExit;
13
+
14
+ static SCR_TL ScrContextExit *scr_context_exits;
15
+ static SCR_TL uint64_t scr_context_id;
16
+ static SCR_TL const atomic_bool *scr_context_cancel;
17
+ static SCR_TL bool scr_context_stopped;
18
+ SCR_TL void (*scr_context_report_error)(void);
19
+
20
+ typedef struct { char *name; char *value; } ScrContextEnvEntry;
21
+ struct ScrContextEnv { size_t count; ScrContextEnvEntry *entries; };
22
+ static SCR_TL ScrContextEnv *scr_context_environment;
23
+
24
+ static char *scr_context_text_copy(const char *value) {
25
+ size_t length = strlen(value);
26
+ char *copy = malloc(length + 1);
27
+ if (!copy) scr_trap("scriptc: out of memory\n");
28
+ memcpy(copy, value, length + 1);
29
+ return copy;
30
+ }
31
+
32
+ ScrContextEnv *scr_context_env_capture(void) {
33
+ ScrArr *pairs = scr_env_pairs();
34
+ ScrContextEnv *environment = calloc(1, sizeof(*environment));
35
+ if (!environment) scr_trap("scriptc: out of memory\n");
36
+ environment->count = pairs->len / 2;
37
+ environment->entries = calloc(environment->count ? environment->count : 1, sizeof(*environment->entries));
38
+ if (!environment->entries) scr_trap("scriptc: out of memory\n");
39
+ for (size_t i = 0; i < environment->count; i++) {
40
+ ScrStr *key = scr_arr_get_ref(pairs, (double)(2 * i));
41
+ ScrStr *value = scr_arr_get_ref(pairs, (double)(2 * i + 1));
42
+ environment->entries[i] = (ScrContextEnvEntry){scr_context_text_copy(key->data), scr_context_text_copy(value->data)};
43
+ scr_str_release(key); scr_str_release(value);
44
+ }
45
+ scr_arr_release(pairs);
46
+ return environment;
47
+ }
48
+
49
+ void scr_context_env_free(ScrContextEnv *environment) {
50
+ if (!environment) return;
51
+ for (size_t i = 0; i < environment->count; i++) {
52
+ free(environment->entries[i].name); free(environment->entries[i].value);
53
+ }
54
+ free(environment->entries); free(environment);
55
+ }
56
+
57
+ static void scr_context_env_cleanup(void) {
58
+ scr_context_env_free(scr_context_environment);
59
+ scr_context_environment = NULL;
60
+ }
61
+
62
+ void scr_context_env_enter(ScrContextEnv *environment) {
63
+ scr_context_environment = environment;
64
+ if (scr_context_atexit(scr_context_env_cleanup)) scr_trap("scriptc: out of memory\n");
65
+ }
66
+
67
+ const char *scr_context_getenv(const char *name) {
68
+ if (!scr_context_environment) return getenv(name);
69
+ for (size_t i = 0; i < scr_context_environment->count; i++)
70
+ if (!strcmp(scr_context_environment->entries[i].name, name)) return scr_context_environment->entries[i].value;
71
+ return NULL;
72
+ }
73
+
74
+ bool scr_context_env_set(const char *name, const char *value) {
75
+ ScrContextEnv *environment = scr_context_environment;
76
+ if (!environment) return false;
77
+ for (size_t i = 0; i < environment->count; i++) {
78
+ ScrContextEnvEntry *entry = &environment->entries[i];
79
+ if (strcmp(entry->name, name)) continue;
80
+ char *copy = value ? scr_context_text_copy(value) : NULL;
81
+ free(entry->value);
82
+ entry->value = copy;
83
+ if (!copy) {
84
+ free(entry->name);
85
+ memmove(entry, entry + 1, (--environment->count - i) * sizeof(*entry));
86
+ }
87
+ return true;
88
+ }
89
+ if (value) {
90
+ ScrContextEnvEntry *entries = realloc(environment->entries, (environment->count + 1) * sizeof(*entries));
91
+ if (!entries) scr_trap("scriptc: out of memory\n");
92
+ environment->entries = entries;
93
+ entries[environment->count++] = (ScrContextEnvEntry){scr_context_text_copy(name), scr_context_text_copy(value)};
94
+ }
95
+ return true;
96
+ }
97
+
98
+ ScrArr *scr_context_env_pairs(void) {
99
+ if (!scr_context_environment) return NULL;
100
+ ScrArr *out = scr_arr_new(SCR_ELEM_STR, 0);
101
+ for (size_t i = 0; i < scr_context_environment->count; i++) {
102
+ const ScrContextEnvEntry *entry = &scr_context_environment->entries[i];
103
+ scr_arr_push_ref(out, scr_str_new(entry->name, strlen(entry->name)));
104
+ scr_arr_push_ref(out, scr_str_new(entry->value, strlen(entry->value)));
105
+ }
106
+ return out;
107
+ }
108
+
109
+ void scr_context_enter(uint64_t thread_id) { scr_context_id = thread_id; }
110
+ bool scr_context_is_main(void) { return scr_context_id == 0; }
111
+ uint64_t scr_context_thread_id(void) { return scr_context_id; }
112
+ double scr_context_thread_number(void) { return (double)scr_context_id; }
113
+
114
+ void scr_context_stop_flag(const void *flag) { scr_context_cancel = flag; }
115
+ bool scr_context_stopping(void) { return scr_context_stopped; }
116
+
117
+ void scr_context_stop(int code) {
118
+ scr_context_stopped = true;
119
+ scr_exit_code_note(code);
120
+ scr_exc_clear();
121
+ scr_exc_current_cell()->kind = SCR_EXC_TERMINATE;
122
+ }
123
+
124
+ bool scr_context_checkpoint(void) {
125
+ if (!scr_context_stopped && scr_context_cancel &&
126
+ atomic_load_explicit(scr_context_cancel, memory_order_relaxed)) scr_context_stop(1);
127
+ if (!scr_context_stopped) return false;
128
+ /* Each fiber has its own exception cell. Reinstall the sentinel after a
129
+ * context switch or a runtime continuation consumes its pending payload. */
130
+ if (scr_exc_current_cell()->kind != SCR_EXC_TERMINATE) {
131
+ scr_exc_clear();
132
+ scr_exc_current_cell()->kind = SCR_EXC_TERMINATE;
133
+ }
134
+ return true;
135
+ }
136
+
137
+ int scr_context_atexit(void (*fn)(void)) {
138
+ ScrContextExit *entry = malloc(sizeof(*entry));
139
+ if (!entry) return -1;
140
+ entry->fn = fn;
141
+ entry->next = scr_context_exits;
142
+ scr_context_exits = entry;
143
+ return 0;
144
+ }
145
+
146
+ void scr_context_cleanup(void) {
147
+ scr_loop_context_shutdown();
148
+ /* Pop before calling: a callback may register further cleanup. Those
149
+ * registrations run first, just as newly registered libc exit handlers do.
150
+ * Repeated cleanup is harmless after the list has been drained. */
151
+ while (scr_context_exits) {
152
+ ScrContextExit *entry = scr_context_exits;
153
+ scr_context_exits = entry->next;
154
+ void (*fn)(void) = entry->fn;
155
+ free(entry);
156
+ fn();
157
+ }
158
+ scr_exc_clear();
159
+ scr_cyc_context_cleanup();
160
+ }
161
+ #else
162
+ bool scr_context_is_main(void) { return true; }
163
+ double scr_context_thread_number(void) { return 0; }
164
+ double scr_worker_root(void) { return -1; }
165
+ ScrDyn *scr_worker_data(void) { return scr_dyn_new_null(); }
166
+ ScrDyn *scr_worker_parent_port(void) { return scr_dyn_new_null(); }
167
+ #endif
@@ -0,0 +1,118 @@
1
+ #undef NDEBUG
2
+ #include "scr_async.c"
3
+ #include <assert.h>
4
+ #include <sched.h>
5
+ #include <stdatomic.h>
6
+
7
+ enum { CONTEXTS = 4, REQUESTS = 64 };
8
+ static atomic_uint started;
9
+ static SCR_TL unsigned completed;
10
+ static SCR_TL unsigned destroyed;
11
+ static SCR_TL unsigned cleanup_order;
12
+ static SCR_TL unsigned timer_calls;
13
+
14
+ typedef struct Work {
15
+ uint64_t owner;
16
+ unsigned input;
17
+ unsigned result;
18
+ ScrStr *text;
19
+ bool deliver;
20
+ } Work;
21
+
22
+ static void run_work(void *data) {
23
+ Work *work = data;
24
+ work->result = work->input * 7 + 3;
25
+ }
26
+
27
+ static void deliver_work(void *data) {
28
+ Work *work = data;
29
+ assert(work->deliver);
30
+ assert(scr_context_thread_id() == work->owner);
31
+ assert(work->result == work->input * 7 + 3);
32
+ completed++;
33
+ }
34
+
35
+ static void destroy_work(void *data) {
36
+ Work *work = data;
37
+ assert(scr_context_thread_id() == work->owner);
38
+ scr_str_release(work->text);
39
+ destroyed++;
40
+ free(work);
41
+ }
42
+
43
+ static void submit_work(unsigned input, bool deliver) {
44
+ Work *work = malloc(sizeof(*work));
45
+ assert(work);
46
+ *work = (Work){scr_context_thread_id(), input, 0, scr_str_new("owned", 5), deliver};
47
+ scr_work_submit(work, run_work, deliver_work, destroy_work);
48
+ }
49
+
50
+ static void timer(ScrClosure *closure) {
51
+ (void)closure;
52
+ timer_calls++;
53
+ }
54
+
55
+ static void cleanup_first(void) {
56
+ assert(cleanup_order == 2);
57
+ cleanup_order = 3;
58
+ }
59
+
60
+ static void cleanup_inserted(void) {
61
+ assert(cleanup_order == 1);
62
+ cleanup_order = 2;
63
+ }
64
+
65
+ static void cleanup_second(void) {
66
+ assert(cleanup_order == 0);
67
+ cleanup_order = 1;
68
+ assert(scr_context_atexit(cleanup_inserted) == 0);
69
+ }
70
+
71
+ static void *run_context(void *data) {
72
+ uint64_t id = (uintptr_t)data;
73
+ scr_context_enter(id);
74
+ assert(!scr_context_is_main());
75
+ scr_init();
76
+ scr_lib_init(0, NULL);
77
+ assert(scr_context_atexit(cleanup_first) == 0);
78
+ assert(scr_context_atexit(cleanup_second) == 0);
79
+
80
+ /* Leave a distinct exception pending while every context is active. */
81
+ scr_throw_f64((double)id);
82
+ atomic_fetch_add_explicit(&started, 1, memory_order_release);
83
+ while (atomic_load_explicit(&started, memory_order_acquire) != CONTEXTS) sched_yield();
84
+ ScrCaught *caught = scr_exc_take();
85
+ assert(caught && caught->kind == SCR_EXC_F64 && caught->f64 == (double)id);
86
+ scr_caught_release(caught);
87
+
88
+ for (unsigned i = 0; i < REQUESTS; i++) submit_work(i, true);
89
+ ScrClosure *callback = scr_closure_new((void *)timer, 0);
90
+ scr_set_timeout(callback, 1);
91
+ assert(!scr_loop_run(NULL));
92
+ assert(!scr_exc_pending());
93
+ assert(completed == REQUESTS && destroyed == REQUESTS && timer_calls == 1);
94
+
95
+ /* Teardown must wait for borrowed native work, release it on its owner,
96
+ * and suppress its script callback. It must not stop another context. */
97
+ submit_work(REQUESTS, false);
98
+ scr_context_cleanup();
99
+ assert(destroyed == REQUESTS + 1 && completed == REQUESTS);
100
+ assert(cleanup_order == 3);
101
+ scr_context_cleanup();
102
+ assert(cleanup_order == 3);
103
+ return NULL;
104
+ }
105
+
106
+ int main(void) {
107
+ scr_init();
108
+ scr_lib_init(0, NULL);
109
+ pthread_t threads[CONTEXTS];
110
+ for (uintptr_t i = 0; i < CONTEXTS; i++)
111
+ assert(pthread_create(&threads[i], NULL, run_context, (void *)(i + 1)) == 0);
112
+ for (unsigned i = 0; i < CONTEXTS; i++) assert(pthread_join(threads[i], NULL) == 0);
113
+ assert(scr_context_is_main());
114
+ assert(!scr_exc_pending());
115
+ assert(completed == 0 && destroyed == 0 && timer_calls == 0);
116
+ scr_context_cleanup();
117
+ puts("runtime contexts keep completions, timers, exceptions and cleanup isolated");
118
+ }
@@ -0,0 +1,47 @@
1
+ import { execFile } from "node:child_process";
2
+ import { mkdtemp, rm } from "node:fs/promises";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { expect, test } from "vitest";
7
+ import { EXECUTABLE_RUNTIME_SOURCES } from "../../compiler/src/backend/native-toolchain.js";
8
+
9
+ const exec = promisify(execFile);
10
+
11
+ test.skipIf(process.platform === "win32")(
12
+ "concurrent runtime contexts deliver native work and drain cleanup on their owner",
13
+ async () => {
14
+ const dir = await mkdtemp(join(tmpdir(), "scriptc-context-"));
15
+ try {
16
+ const bin = join(dir, "contexts");
17
+ await exec("clang", [
18
+ "-std=c11",
19
+ "-O1",
20
+ "-Wall",
21
+ "-Wextra",
22
+ "-Wno-deprecated-declarations",
23
+ "-pthread",
24
+ "-DSCR_WORKERS",
25
+ "-DSCR_RC_AUDIT",
26
+ "-fsanitize=address,undefined",
27
+ ...(process.platform === "linux" ? ["-D_GNU_SOURCE"] : []),
28
+ join(import.meta.dirname, "scr_context.test.c"),
29
+ ...EXECUTABLE_RUNTIME_SOURCES.filter((name) => name !== "scr_async.c").map((name) =>
30
+ join(import.meta.dirname, name),
31
+ ),
32
+ ...(process.platform === "linux" ? ["-lm"] : []),
33
+ "-o",
34
+ bin,
35
+ ]);
36
+ const result = await exec(bin, [], {
37
+ env: { ...process.env, UBSAN_OPTIONS: "halt_on_error=1" },
38
+ });
39
+ expect(result.stdout).toBe(
40
+ "runtime contexts keep completions, timers, exceptions and cleanup isolated\n",
41
+ );
42
+ expect(result.stderr).toBe("");
43
+ } finally {
44
+ await rm(dir, { recursive: true, force: true });
45
+ }
46
+ },
47
+ );
@@ -124,10 +124,21 @@ ScrArr *scr_arr_with_undefined(ScrArr *a, double index) {
124
124
  }
125
125
 
126
126
  ScrBytes *scr_bytes_to_reversed(const ScrBytes *b) {
127
+ SCR_SHARED_GUARD(b, NULL);
127
128
  ScrBytes *out = scr_bytes_new(b->elem, (double)b->len);
129
+ size_t width = scr_bytes_elem_size(b->elem);
130
+ /* Copy the stored representation without numeric conversion. Views may
131
+ * be unaligned, so fixed-width memcpy preserves both alignment safety
132
+ * and floating-point payload bits. The width is invariant for the loop. */
128
133
  for (size_t i = 0; i < b->len; i++) {
129
- scr_bytes_set(out, (double)i,
130
- scr_bytes_get(b, (double)(b->len - i - 1)));
134
+ const uint8_t *source = b->data + (b->len - i - 1) * width;
135
+ uint8_t *target = out->data + i * width;
136
+ switch (width) {
137
+ case 1: *target = *source; break;
138
+ case 2: memcpy(target, source, 2); break;
139
+ case 4: memcpy(target, source, 4); break;
140
+ case 8: memcpy(target, source, 8); break;
141
+ }
131
142
  }
132
143
  return out;
133
144
  }
@@ -68,7 +68,13 @@
68
68
  * unlinked INTO a dead cycle grows no counter at all (it
69
69
  * was tallied when it was allocated) and is invisible to a
70
70
  * nursery pass, so without it a program that churns its
71
- * long-lived structures would never collect anything.
71
+ * long-lived structures would never collect anything. But
72
+ * a mature object is also buffered whenever a temporary
73
+ * reference to it is dropped, so merely READING a live
74
+ * structure (walking a tree, say) refills the buffer with
75
+ * objects that are not garbage. A full pass that frees
76
+ * almost nothing therefore doubles this fraction, and a
77
+ * productive one restores it.
72
78
  * scheduled age a mature candidate has waited through a nursery's worth
73
79
  * of event-loop checkpoints. Candidate COUNT cannot bound
74
80
  * the garbage behind one root, and an idle heap does not
@@ -101,10 +107,58 @@ static void scr_cyc_oom(void) {
101
107
  scr_trap("scriptc: out of memory\n");
102
108
  }
103
109
 
110
+ typedef struct {
111
+ void *object;
112
+ void (*destroy)(void *);
113
+ } ScrDestroyEntry;
114
+
115
+ /* Keep shallow destruction synchronous without allocating. A chain may mix
116
+ * program layouts, unions and runtime containers, so one instance-local
117
+ * depth budget covers every participating destructor. Queued zero-count
118
+ * objects still own their children until their callback runs. */
119
+ #define SCR_DESTROY_DEPTH 64
120
+ static SCR_TL unsigned scr_destroy_depth;
121
+ static SCR_TL ScrDestroyEntry *scr_destroy_pending;
122
+ static SCR_TL size_t scr_destroy_count, scr_destroy_capacity;
123
+
124
+ void scr_rc_destroy(void *obj, void (*destroy)(void *)) {
125
+ if (scr_destroy_depth == SCR_DESTROY_DEPTH) {
126
+ if (scr_destroy_count == scr_destroy_capacity) {
127
+ size_t capacity = scr_destroy_capacity ? scr_destroy_capacity * 2 : 64;
128
+ if (capacity < scr_destroy_capacity || capacity > SIZE_MAX / sizeof(ScrDestroyEntry))
129
+ scr_cyc_oom();
130
+ ScrDestroyEntry *entries = realloc(scr_destroy_pending, capacity * sizeof(*entries));
131
+ if (!entries) scr_cyc_oom();
132
+ scr_destroy_pending = entries;
133
+ scr_destroy_capacity = capacity;
134
+ }
135
+ scr_destroy_pending[scr_destroy_count++] = (ScrDestroyEntry){ obj, destroy };
136
+ return;
137
+ }
138
+ scr_destroy_depth++;
139
+ destroy(obj);
140
+ scr_destroy_depth--;
141
+ if (scr_destroy_depth) return;
142
+ while (scr_destroy_count) {
143
+ ScrDestroyEntry entry = scr_destroy_pending[--scr_destroy_count];
144
+ scr_destroy_depth = 1;
145
+ entry.destroy(entry.object);
146
+ scr_destroy_depth = 0;
147
+ }
148
+ /* Deep teardown is exceptional; don't retain its peak queue allocation
149
+ * throughout an otherwise idle executable or embedded runtime instance. */
150
+ if (scr_destroy_pending) {
151
+ free(scr_destroy_pending);
152
+ scr_destroy_pending = NULL;
153
+ scr_destroy_capacity = 0;
154
+ }
155
+ }
156
+
104
157
  /* Live cycle-headered objects — what the full-pass trigger watches. */
105
158
  static SCR_TL size_t scr_cyc_live = 0;
106
159
 
107
160
  void *scr_cyc_alloc(size_t size, ScrTraceFn trace, ScrCycFreeFn free_fn) {
161
+ if (size > SIZE_MAX - sizeof(ScrCycHdr)) scr_cyc_oom();
108
162
  ScrCycHdr *h = calloc(1, sizeof(ScrCycHdr) + size);
109
163
  if (!h) scr_cyc_oom();
110
164
  h->trace = trace;
@@ -182,10 +236,15 @@ static size_t scr_cyc_pass(unsigned gen_limit);
182
236
  /* Live count as of the end of the last full pass. */
183
237
  static SCR_TL size_t scr_cyc_live_after_full = 0;
184
238
 
239
+ /* Doublings of the mature-backlog threshold earned by consecutive full passes
240
+ * that found almost nothing to free (see scr_cyc_mature_threshold). */
241
+ #define SCR_CYC_BACKLOG_MAX_SHIFT 8
242
+ static SCR_TL unsigned scr_cyc_backlog_shift = 0;
243
+
185
244
  static size_t scr_cyc_nursery_threshold(void) {
186
245
  static SCR_TL size_t cached = 0;
187
246
  if (cached == 0) {
188
- const char *env = getenv("SCR_CYCLE_THRESHOLD");
247
+ const char *env = scr_getenv("SCR_CYCLE_THRESHOLD");
189
248
  long v = env ? strtol(env, NULL, 10) : 0;
190
249
  cached = v > 0 ? (size_t)v : SCR_CYC_NURSERY_CANDIDATES;
191
250
  }
@@ -232,16 +291,41 @@ static bool scr_cyc_full_due(void) {
232
291
  * allocating would never collect anything. So the mature buffer's own size
233
292
  * is the second full-pass trigger, at a fraction of the live heap: that
234
293
  * bounds uncollected mature candidates proportionally and keeps the
235
- * amortized cost linear (one heap-sized walk per live/N candidates). */
294
+ * amortized cost linear (one heap-sized walk per live/N candidates).
295
+ *
296
+ * Re-buffered live objects cannot be told apart from new garbage until a
297
+ * pass walks them, and a program that keeps traversing one live structure
298
+ * buffers it again after every pass. Each full pass that frees almost none
299
+ * of its candidates doubles the threshold, so repeated unproductive walks
300
+ * thin out geometrically; once it exceeds the mature population this
301
+ * trigger rests, leaving heap growth, the scheduled age and exit to collect.
302
+ * That only delays garbage made from existing data: replacing it requires
303
+ * allocation, which grows the heap and trips the growth trigger. The first
304
+ * productive full pass restores the original fraction. */
236
305
  static size_t scr_cyc_mature_threshold(void) {
237
306
  size_t t = scr_cyc_live / SCR_CYC_FULL_GROWTH_DIV;
238
- return t < SCR_CYC_NURSERY_CANDIDATES ? SCR_CYC_NURSERY_CANDIDATES : t;
307
+ if (t < SCR_CYC_NURSERY_CANDIDATES) t = SCR_CYC_NURSERY_CANDIDATES;
308
+ return t > (SIZE_MAX >> scr_cyc_backlog_shift) ? SIZE_MAX : t << scr_cyc_backlog_shift;
309
+ }
310
+
311
+ /* A scheduled full pass, adapting the backlog threshold to its yield. The
312
+ * explicit sweep (scr_collect_cycles) is not a scheduling decision and
313
+ * leaves the threshold alone. Productive means at least one object freed
314
+ * per FULL_GROWTH_DIV candidates; a pass with no candidates says nothing. */
315
+ static void scr_cyc_full_pass(void) {
316
+ size_t freed = scr_cyc_pass(SCR_CYC_MATURE);
317
+ if (scr_cands.n == 0) return;
318
+ if (freed * SCR_CYC_FULL_GROWTH_DIV >= scr_cands.n)
319
+ scr_cyc_backlog_shift = 0;
320
+ else if (scr_cyc_backlog_shift < SCR_CYC_BACKLOG_MAX_SHIFT)
321
+ scr_cyc_backlog_shift++;
239
322
  }
240
323
 
241
324
  static void scr_cyc_collect_due(void) {
242
- bool full = scr_cyc_full_due()
243
- || scr_roots[SCR_CYC_MATURE].n >= scr_cyc_mature_threshold();
244
- scr_cyc_pass(full ? SCR_CYC_MATURE : SCR_CYC_NURSERY);
325
+ if (scr_cyc_full_due() || scr_roots[SCR_CYC_MATURE].n >= scr_cyc_mature_threshold())
326
+ scr_cyc_full_pass();
327
+ else
328
+ scr_cyc_pass(SCR_CYC_NURSERY);
245
329
  }
246
330
 
247
331
  /* One scheduled pass, for callers that reach a natural collection point
@@ -258,7 +342,7 @@ void scr_cyc_collect_scheduled(void) {
258
342
  scr_cyc_scheduled_mature_age = 0;
259
343
  } else if (++scr_cyc_scheduled_mature_age
260
344
  >= scr_cyc_nursery_threshold()) {
261
- scr_cyc_pass(SCR_CYC_MATURE);
345
+ scr_cyc_full_pass();
262
346
  return;
263
347
  }
264
348
  scr_cyc_collect_due();
@@ -428,8 +512,14 @@ static void scr_xg_child_visit(void *child, void *ctx) {
428
512
  }
429
513
 
430
514
  /* One genuine release, generically: the header carries everything needed. */
431
- static void scr_xg_release(void *obj) {
515
+ static void scr_xg_destroy(void *obj) {
432
516
  ScrCycHdr *h = scr_cyc_hdr(obj);
517
+ h->trace(obj, scr_xg_child_visit, NULL);
518
+ h->free_fn(obj);
519
+ scr_xg_freed++;
520
+ }
521
+
522
+ static void scr_xg_release(void *obj) {
433
523
  if (SCR_RC(obj) > 1) {
434
524
  SCR_RC(obj) -= 1;
435
525
  scr_cyc_on_release(obj); /* lost a reference: a possible cycle root */
@@ -437,9 +527,7 @@ static void scr_xg_release(void *obj) {
437
527
  }
438
528
  SCR_RC(obj) = 0;
439
529
  scr_cyc_on_dead(obj); /* out of its candidate buffer before the block goes */
440
- h->trace(obj, scr_xg_child_visit, NULL); /* the traced children */
441
- h->free_fn(obj); /* the untraced ones, then the block */
442
- scr_xg_freed++;
530
+ scr_rc_destroy(obj, scr_xg_destroy);
443
531
  }
444
532
 
445
533
  /* One pass over every candidate at or below `gen_limit`; returns how many
@@ -587,3 +675,15 @@ void scr_collect_cycles(void) {
587
675
  && (scr_roots[SCR_CYC_NURSERY].n || scr_roots[SCR_CYC_MATURE].n)) {
588
676
  }
589
677
  }
678
+
679
+ /* Worker TLS becomes unreachable when its OS thread returns. Release the
680
+ * reusable traversal buffers after all context-owned roots are retired. */
681
+ void scr_cyc_context_cleanup(void) {
682
+ scr_collect_cycles();
683
+ ScrVec *vectors[] = {&scr_roots[SCR_CYC_NURSERY], &scr_roots[SCR_CYC_MATURE],
684
+ &scr_cands, &scr_promote, &scr_pending, &scr_restore_pending, &scr_white, &scr_xgen};
685
+ for (size_t i = 0; i < sizeof vectors / sizeof vectors[0]; i++) {
686
+ free(vectors[i]->v);
687
+ *vectors[i] = (ScrVec){0};
688
+ }
689
+ }
@@ -42,9 +42,9 @@ typedef struct {
42
42
  size_t nbinds, binds_cap;
43
43
  } ScrDcChannel;
44
44
 
45
- static ScrDcChannel *dc_channels = NULL;
46
- static size_t dc_nchannels = 0, dc_cap = 0;
47
- static bool dc_teardown_registered = false;
45
+ static SCR_TL ScrDcChannel *dc_channels = NULL;
46
+ static SCR_TL size_t dc_nchannels = 0, dc_cap = 0;
47
+ static SCR_TL bool dc_teardown_registered = false;
48
48
 
49
49
  static void scr_dc_teardown(void) {
50
50
  for (size_t i = 0; i < dc_nchannels; i++) {
@@ -75,7 +75,7 @@ static size_t dc_intern(ScrStr *name) {
75
75
  }
76
76
  if (!dc_teardown_registered) {
77
77
  dc_teardown_registered = true;
78
- atexit(scr_dc_teardown);
78
+ scr_atexit(scr_dc_teardown);
79
79
  }
80
80
  ScrDcChannel *ch = &dc_channels[dc_nchannels];
81
81
  ch->name = scr_str_retain(name);
@@ -358,9 +358,9 @@ enum { DC_TC_START, DC_TC_END, DC_TC_ASYNC_START, DC_TC_ASYNC_END, DC_TC_ERROR }
358
358
 
359
359
  static const char *const dc_trace_events[5] = {"start", "end", "asyncStart", "asyncEnd", "error"};
360
360
 
361
- static ScrDcTracing *dc_tracings = NULL;
362
- static size_t dc_ntracings = 0, dc_tracings_cap = 0;
363
- static bool dc_tracings_teardown_registered = false;
361
+ static SCR_TL ScrDcTracing *dc_tracings = NULL;
362
+ static SCR_TL size_t dc_ntracings = 0, dc_tracings_cap = 0;
363
+ static SCR_TL bool dc_tracings_teardown_registered = false;
364
364
 
365
365
  static void scr_dc_tracings_teardown(void) {
366
366
  free(dc_tracings);
@@ -379,7 +379,7 @@ static double dc_tracing_register(const size_t ch[5]) {
379
379
  }
380
380
  if (!dc_tracings_teardown_registered) {
381
381
  dc_tracings_teardown_registered = true;
382
- atexit(scr_dc_tracings_teardown);
382
+ scr_atexit(scr_dc_tracings_teardown);
383
383
  }
384
384
  for (size_t i = 0; i < 5; i++) dc_tracings[dc_ntracings].ch[i] = ch[i];
385
385
  dc_ntracings++;
@@ -346,12 +346,12 @@ struct ScrDgramSocket {
346
346
  };
347
347
 
348
348
  #ifdef SCR_RC_AUDIT
349
- static long scr_dgram_live = 0;
349
+ static SCR_TL long scr_dgram_live = 0;
350
350
  long scr_dgram_live_count(void) { return scr_dgram_live; }
351
351
  #endif
352
352
 
353
- static ScrDgramSocket *scr_dgram_socks = NULL; /* registry: +1 each, tail-appended */
354
- static ScrPoller *scr_dgram_poller = NULL;
353
+ static SCR_TL ScrDgramSocket *scr_dgram_socks = NULL; /* registry: +1 each, tail-appended */
354
+ static SCR_TL ScrPoller *scr_dgram_poller = NULL;
355
355
 
356
356
  /* Pending dns.lookup deliveries (already resolved — getaddrinfo ran at
357
357
  * the call; the sweep fires them FIFO). */
@@ -364,7 +364,7 @@ typedef struct ScrDnsPending {
364
364
  struct ScrDnsPending *next;
365
365
  } ScrDnsPending;
366
366
 
367
- static ScrDnsPending *scr_dns_pending = NULL;
367
+ static SCR_TL ScrDnsPending *scr_dns_pending = NULL;
368
368
 
369
369
  /* ── RC ──────────────────────────────────────────────────────────────── */
370
370
 
@@ -645,6 +645,7 @@ void scr_dgram_send_str(ScrDgramSocket *s, ScrStr *data, double port, ScrStr *ho
645
645
  }
646
646
 
647
647
  void scr_dgram_send_bytes(ScrDgramSocket *s, ScrBytes *data, double port, ScrStr *host) {
648
+ SCR_BYTES_SNAPSHOT(data);
648
649
  scr_dgram_send_raw(s, (const char *)data->data, data->len, port, host);
649
650
  }
650
651
 
@@ -1011,10 +1012,10 @@ static void scr_dgram_cleanup_atexit(void) {
1011
1012
  }
1012
1013
 
1013
1014
  void scr_dgram_install(void) {
1014
- static bool installed = false;
1015
+ static SCR_TL bool installed = false;
1015
1016
  if (installed) return;
1016
1017
  installed = true;
1017
- atexit(scr_dgram_cleanup_atexit);
1018
+ scr_atexit(scr_dgram_cleanup_atexit);
1018
1019
  scr_loop_set_dgram(&scr_dgram_pending, &scr_dgram_dispatch, &scr_dgram_pollfd);
1019
1020
  }
1020
1021
 
@@ -1167,8 +1168,10 @@ void scr_dgram_send_chk(ScrDgramSocket *s, const ScrDyn *buffer, const ScrDyn *a
1167
1168
  scr_throw_lowering_fence(fence);
1168
1169
  return;
1169
1170
  }
1171
+ const ScrBytes *byte_input = buffer->kind == SCR_DYN_BYTES ? buffer->v.bytes : NULL;
1172
+ SCR_BYTES_SNAPSHOT(byte_input);
1170
1173
  const char *data = buffer->kind == SCR_DYN_STR ? buffer->v.str->data
1171
- : (const char *)buffer->v.bytes->data;
1174
+ : (const char *)byte_input->data;
1172
1175
  size_t datalen = buffer->kind == SCR_DYN_STR ? buffer->v.str->len
1173
1176
  : (size_t)scr_bytes_byte_len(buffer->v.bytes);
1174
1177
  if (sliced) {