@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
@@ -100,19 +100,19 @@ struct ScrTestCtx {
100
100
  ScrTestHooks hooks[4]; /* suites and root only */
101
101
  };
102
102
 
103
- static ScrTestCtx *scr_test_root = NULL;
103
+ static SCR_TL ScrTestCtx *scr_test_root = NULL;
104
104
  /* Where registrations attach: the suite body being collected or the test
105
105
  * currently running (its nested test()/t.test() calls are subtests). */
106
- static ScrTestCtx *scr_test_reg_parent = NULL;
107
- static bool scr_test_runner_spawned = false;
108
- static bool scr_test_run_done = false;
109
- static long scr_test_ct_tests = 0, scr_test_ct_suites = 0, scr_test_ct_pass = 0,
106
+ static SCR_TL ScrTestCtx *scr_test_reg_parent = NULL;
107
+ static SCR_TL bool scr_test_runner_spawned = false;
108
+ static SCR_TL bool scr_test_run_done = false;
109
+ static SCR_TL long scr_test_ct_tests = 0, scr_test_ct_suites = 0, scr_test_ct_pass = 0,
110
110
  scr_test_ct_fail = 0, scr_test_ct_skipped = 0, scr_test_ct_todo = 0;
111
- static double scr_test_t0 = 0;
112
- static bool scr_test_suite_hook_failed = false;
111
+ static SCR_TL double scr_test_t0 = 0;
112
+ static SCR_TL bool scr_test_suite_hook_failed = false;
113
113
 
114
114
  #ifdef SCR_RC_AUDIT
115
- static long scr_testctx_live = 0;
115
+ static SCR_TL long scr_testctx_live = 0;
116
116
  long scr_testctx_live_count(void) { return scr_testctx_live; }
117
117
  #endif
118
118
 
@@ -141,9 +141,9 @@ static ssize_t scr_tls_w32_write(int fd, const void *buf, size_t len) {
141
141
 
142
142
  /* ── the unit RNG (one CTR_DRBG, lazily seeded) ──────────────────────── */
143
143
 
144
- static mbedtls_entropy_context scr_tls_entropy;
145
- static mbedtls_ctr_drbg_context scr_tls_drbg;
146
- static bool scr_tls_rng_ready = false;
144
+ static SCR_TL mbedtls_entropy_context scr_tls_entropy;
145
+ static SCR_TL mbedtls_ctr_drbg_context scr_tls_drbg;
146
+ static SCR_TL bool scr_tls_rng_ready = false;
147
147
 
148
148
  /* Defined with the dyn-member hooks at the tail of this file; registered
149
149
  * from rng_init so every TLS entry point installs the TLSSocket member
@@ -206,7 +206,7 @@ struct ScrSecureCtx {
206
206
  };
207
207
 
208
208
  #ifdef SCR_RC_AUDIT
209
- static long scr_live_secure_ctx = 0;
209
+ static SCR_TL long scr_live_secure_ctx = 0;
210
210
  long scr_secure_ctx_live_count(void) { return scr_live_secure_ctx; }
211
211
  #endif
212
212
 
@@ -345,16 +345,16 @@ typedef struct ScrTlsCli {
345
345
  * first (macOS ships it; Alpine links it), then Debian/Ubuntu's
346
346
  * ca-certificates.crt, Fedora/RHEL's ca-bundle.crt, and openSUSE's
347
347
  * ca-bundle.pem. */
348
- static mbedtls_x509_crt scr_tls_system_roots;
349
- static bool scr_tls_system_roots_loaded = false;
348
+ static SCR_TL mbedtls_x509_crt scr_tls_system_roots;
349
+ static SCR_TL bool scr_tls_system_roots_loaded = false;
350
350
 
351
351
  /* setDefaultCACertificates' replacement anchors (scr_tls_ca.c — always
352
352
  * compiled alongside this unit): parsed lazily per generation, so each
353
353
  * set re-parses once and every later dial reuses the chain. An EMPTY
354
354
  * replacement keeps an initialized, certificate-free chain — every
355
355
  * verification fails, Node's own consequence of trusting nothing. */
356
- static mbedtls_x509_crt scr_tls_override_roots;
357
- static uint64_t scr_tls_override_parsed_gen = 0;
356
+ static SCR_TL mbedtls_x509_crt scr_tls_override_roots;
357
+ static SCR_TL uint64_t scr_tls_override_parsed_gen = 0;
358
358
 
359
359
  #ifdef _WIN32
360
360
  static void scr_tls_add_windows_ca(void *ctx, const unsigned char *der, size_t len) {
@@ -633,7 +633,7 @@ static void scr_tls_verify_msg(ScrTlsSock *t, char *out, size_t n) {
633
633
  /* The socket whose handshake this unit is driving — f_sni's route back
634
634
  * to the answered context (single-threaded runtime; set around
635
635
  * mbedtls_ssl_handshake). */
636
- static ScrTlsSock *scr_tls_current = NULL;
636
+ static SCR_TL ScrTlsSock *scr_tls_current = NULL;
637
637
 
638
638
  /* Defined with the other transport ops below; the answer path needs the
639
639
  * table's identity to re-find its engine from the boxed socket. */
@@ -1105,7 +1105,7 @@ static ScrBytes *scr_tls_pem_dyn(const ScrDyn *v, const char *what, bool concat)
1105
1105
  memcpy(b->data, v->v.str->data, v->v.str->len);
1106
1106
  return b;
1107
1107
  }
1108
- if (scr_dyn_bytes_is(v, SCR_BYTES_U8)) return scr_dyn_bytes_unbox(v);
1108
+ if (scr_dyn_bytes_is(v, SCR_BYTES_U8)) return v->v.bytes->shared ? scr_bytes_copy(v->v.bytes) : scr_dyn_bytes_unbox(v);
1109
1109
  if (v->kind == SCR_DYN_ARR) {
1110
1110
  if (v->v.arr.len == 0) {
1111
1111
  ScrJsonBuf b;
@@ -1138,9 +1138,9 @@ static ScrBytes *scr_tls_pem_dyn(const ScrDyn *v, const char *what, bool concat)
1138
1138
  size_t off = 0;
1139
1139
  for (size_t i = 0; i < v->v.arr.len; i++) {
1140
1140
  const ScrDyn *e = v->v.arr.items[i];
1141
- const char *p = e->kind == SCR_DYN_STR ? e->v.str->data : (const char *)e->v.bytes->data;
1142
1141
  size_t n = e->kind == SCR_DYN_STR ? e->v.str->len : e->v.bytes->len;
1143
- memcpy(b->data + off, p, n);
1142
+ if (e->kind == SCR_DYN_STR) memcpy(b->data + off, e->v.str->data, n);
1143
+ else scr_bytes_read(e->v.bytes, 0, b->data + off, n);
1144
1144
  off += n;
1145
1145
  b->data[off++] = '\n'; /* PEM blocks join on line boundaries */
1146
1146
  }
@@ -33,16 +33,23 @@
33
33
  /* The per-type caches: +1 held here for the process lifetime (an atexit
34
34
  * teardown releases them so the RC audit stays clean). 'default' also
35
35
  * keeps the concatenated PEM buffer scr_tls.c parses into anchors. */
36
- static ScrArr *scr_ca_bundled = NULL;
37
- static ScrArr *scr_ca_system = NULL;
38
- static ScrArr *scr_ca_extra = NULL;
39
- static ScrArr *scr_ca_default = NULL;
40
- static char *scr_ca_extra_buf = NULL;
41
- static size_t scr_ca_extra_len = 0;
42
- static bool scr_ca_installed = false;
43
- static char *scr_ca_override_buf = NULL;
44
- static size_t scr_ca_override_len = 0;
45
- static uint64_t scr_ca_override_gen = 0; /* 0 = never set */
36
+ static SCR_TL ScrArr *scr_ca_bundled = NULL;
37
+ static SCR_TL ScrArr *scr_ca_system = NULL;
38
+ static SCR_TL ScrArr *scr_ca_extra = NULL;
39
+ static SCR_TL ScrArr *scr_ca_default = NULL;
40
+ static SCR_TL char *scr_ca_extra_buf = NULL;
41
+ static SCR_TL size_t scr_ca_extra_len = 0;
42
+ static SCR_TL bool scr_ca_installed = false;
43
+ static SCR_TL char *scr_ca_override_buf = NULL;
44
+ static SCR_TL size_t scr_ca_override_len = 0;
45
+ static SCR_TL uint64_t scr_ca_override_gen = 0; /* 0 = never set */
46
+
47
+ #ifdef SCR_WORKERS
48
+ /* Published during executable startup, before any worker exists. The main
49
+ * context owns these raw bytes until all its children have been joined. */
50
+ static const char *scr_ca_initial_extra;
51
+ static size_t scr_ca_initial_extra_len;
52
+ #endif
46
53
 
47
54
  static void scr_ca_oom(void) {
48
55
  fputs("scriptc: out of memory\n", stderr);
@@ -62,12 +69,12 @@ static void scr_ca_teardown(void) {
62
69
  scr_ca_override_buf = NULL;
63
70
  }
64
71
 
65
- static bool scr_ca_teardown_armed = false;
72
+ static SCR_TL bool scr_ca_teardown_armed = false;
66
73
 
67
74
  static void scr_ca_arm_teardown(void) {
68
75
  if (!scr_ca_teardown_armed) {
69
76
  scr_ca_teardown_armed = true;
70
- atexit(scr_ca_teardown);
77
+ scr_atexit(scr_ca_teardown);
71
78
  }
72
79
  }
73
80
 
@@ -145,10 +152,25 @@ void scr_tls_ca_install(void) {
145
152
  if (scr_ca_installed) return;
146
153
  scr_ca_installed = true;
147
154
  scr_ca_arm_teardown();
155
+ #ifdef SCR_WORKERS
156
+ if (!scr_context_is_main()) {
157
+ if (scr_ca_initial_extra) {
158
+ scr_ca_extra_len = scr_ca_initial_extra_len;
159
+ scr_ca_extra_buf = malloc(scr_ca_extra_len + 1);
160
+ if (!scr_ca_extra_buf) scr_ca_oom();
161
+ memcpy(scr_ca_extra_buf, scr_ca_initial_extra, scr_ca_extra_len + 1);
162
+ }
163
+ return;
164
+ }
165
+ #endif
148
166
  const char *path = getenv("NODE_EXTRA_CA_CERTS");
149
167
  if (path != NULL && path[0] != '\0') {
150
168
  scr_ca_extra_buf = scr_ca_read_file(path, &scr_ca_extra_len);
151
169
  }
170
+ #ifdef SCR_WORKERS
171
+ scr_ca_initial_extra = scr_ca_extra_buf;
172
+ scr_ca_initial_extra_len = scr_ca_extra_len;
173
+ #endif
152
174
  }
153
175
 
154
176
  bool scr_tls_ca_extra_pem(const char **pem, size_t *len) {
@@ -67,15 +67,20 @@ ScrUnion *scr_union_new_ref(uint32_t tag, void *v, void *(*retain)(void *),
67
67
  return u;
68
68
  }
69
69
 
70
+ static void scr_union_destroy(void *object) {
71
+ ScrUnion *u = object;
72
+ if (u->arm_release) u->arm_release(scr_union_peek(u));
73
+ #ifdef SCR_RC_AUDIT
74
+ scr_live_unions--;
75
+ #endif
76
+ scr_cyc_free(u);
77
+ }
78
+
70
79
  void scr_union_release(ScrUnion *u) {
71
80
  if (!u || u->rc == SIZE_MAX) return; /* NULL: an uninitialized `let` local */
72
81
  if (--u->rc == 0) {
73
82
  scr_cyc_on_dead(u);
74
- if (u->arm_release) u->arm_release(scr_union_peek(u));
75
- #ifdef SCR_RC_AUDIT
76
- scr_live_unions--;
77
- #endif
78
- scr_cyc_free(u);
83
+ scr_rc_destroy(u, scr_union_destroy);
79
84
  } else {
80
85
  scr_cyc_on_release(u); /* possible cycle root; may collect — u is done */
81
86
  }
@@ -184,6 +184,7 @@ static bool util_deep_equal(const ScrDyn *a, const ScrDyn *b, bool skip,
184
184
  if (a->kind == SCR_DYN_BYTES) {
185
185
  const ScrBytes *x = a->v.bytes, *y = b->v.bytes;
186
186
  if (x->elem != y->elem || x->len != y->len) return false;
187
+ SCR_SHARED_GUARD(x, y);
187
188
  size_t length = x->len * scr_bytes_elem_size(x->elem);
188
189
  if (length && memcmp(x->data, y->data, length)) return false;
189
190
  }
@@ -148,7 +148,7 @@ static ScrStr *util_style_replace(const ScrStr *text, const char *close,
148
148
  }
149
149
 
150
150
  static bool util_style_env_nonempty(const char *name) {
151
- const char *value = getenv(name);
151
+ const char *value = scr_getenv(name);
152
152
  return value && *value;
153
153
  }
154
154
 
@@ -174,7 +174,7 @@ done:
174
174
  /* styleText only needs the color/no-color distinction, rather than the
175
175
  * full 4/8/24-bit depth. Follow the ordering of Node 24 internal/tty. */
176
176
  static bool util_style_terminal_colors(void) {
177
- const char *force = getenv("FORCE_COLOR");
177
+ const char *force = scr_getenv("FORCE_COLOR");
178
178
  if (force) {
179
179
  bool enabled = !strcmp(force, "") || !strcmp(force, "true") ||
180
180
  !strcmp(force, "1") || !strcmp(force, "2") || !strcmp(force, "3");
@@ -192,21 +192,21 @@ static bool util_style_terminal_colors(void) {
192
192
  }
193
193
  return enabled;
194
194
  }
195
- const char *term = getenv("TERM");
195
+ const char *term = scr_getenv("TERM");
196
196
  if (util_style_env_nonempty("NO_COLOR") || util_style_env_nonempty("NODE_DISABLE_COLORS") ||
197
197
  (term && !strcmp(term, "dumb"))) return false;
198
198
  #ifdef _WIN32
199
199
  return true;
200
200
  #endif
201
201
  if (util_style_env_nonempty("TMUX")) return true;
202
- if (getenv("TF_BUILD") && getenv("AGENT_NAME")) return true;
203
- if (getenv("CI")) {
202
+ if (scr_getenv("TF_BUILD") && scr_getenv("AGENT_NAME")) return true;
203
+ if (scr_getenv("CI")) {
204
204
  static const char *const ci[] = { "APPVEYOR", "BUILDKITE", "CIRCLECI", "DRONE", "GITEA_ACTIONS", "GITHUB_ACTIONS", "GITLAB_CI", "TRAVIS" };
205
- for (size_t i = 0; i < sizeof ci / sizeof ci[0]; i++) if (getenv(ci[i])) return true;
206
- const char *name = getenv("CI_NAME");
205
+ for (size_t i = 0; i < sizeof ci / sizeof ci[0]; i++) if (scr_getenv(ci[i])) return true;
206
+ const char *name = scr_getenv("CI_NAME");
207
207
  return name && !strcmp(name, "codeship");
208
208
  }
209
- const char *teamcity = getenv("TEAMCITY_VERSION");
209
+ const char *teamcity = scr_getenv("TEAMCITY_VERSION");
210
210
  if (teamcity) {
211
211
  const char *p = teamcity;
212
212
  if (!strncmp(p, "9.", 2)) {
@@ -218,10 +218,10 @@ static bool util_style_terminal_colors(void) {
218
218
  while (*p >= '0' && *p <= '9') p++;
219
219
  return p - teamcity >= 2 && *p == '.';
220
220
  }
221
- const char *program = getenv("TERM_PROGRAM");
221
+ const char *program = scr_getenv("TERM_PROGRAM");
222
222
  if (program && (!strcmp(program, "iTerm.app") || !strcmp(program, "HyperTerm") ||
223
223
  !strcmp(program, "MacTerm") || !strcmp(program, "Apple_Terminal"))) return true;
224
- const char *colorterm = getenv("COLORTERM");
224
+ const char *colorterm = scr_getenv("COLORTERM");
225
225
  if (colorterm && (!strcmp(colorterm, "truecolor") || !strcmp(colorterm, "24bit"))) return true;
226
226
  if (term) {
227
227
  if (strstr(term, "truecolor") || !strncmp(term, "xterm-256", 9)) return true;
@@ -294,7 +294,7 @@ ScrStr *scr_util_style_text(const ScrDyn *format, const ScrDyn *text, const ScrD
294
294
  scr_dyn_arg_type_fail("stream", "an instance of ReadableStream, WritableStream, or Stream", stream); goto done;
295
295
  }
296
296
  }
297
- colorize = getenv("FORCE_COLOR") ? util_style_terminal_colors() :
297
+ colorize = scr_getenv("FORCE_COLOR") ? util_style_terminal_colors() :
298
298
  scr_process_is_tty(fd) && util_style_terminal_colors();
299
299
  }
300
300
  }
@@ -121,11 +121,11 @@ struct ScrWatcher {
121
121
  struct ScrWatcher *next; /* the open-watcher registry (+1 each) */
122
122
  };
123
123
 
124
- static ScrWatcher *scr_watchers = NULL;
125
- static size_t scr_watchers_open = 0; /* liveness: open (unclosed) watchers */
124
+ static SCR_TL ScrWatcher *scr_watchers = NULL;
125
+ static SCR_TL size_t scr_watchers_open = 0; /* liveness: open (unclosed) watchers */
126
126
 
127
127
  #ifdef SCR_HAVE_KQUEUE
128
- static int scr_watch_kq = -1; /* created with the first watch; lives forever */
128
+ static SCR_TL int scr_watch_kq = -1; /* created with the first watch; lives forever */
129
129
 
130
130
  /* Arms the vnode filter for a watcher's current fd. EV_CLEAR: state resets
131
131
  * at delivery, so an unserviced event never busy-spins the idle poll (the
@@ -145,7 +145,7 @@ static bool scr_watch_arm(ScrWatcher *w) {
145
145
  #endif
146
146
 
147
147
  #ifdef SCR_HAVE_INOTIFY
148
- static int scr_watch_ino = -1; /* created with the first watch; lives forever */
148
+ static SCR_TL int scr_watch_ino = -1; /* created with the first watch */
149
149
 
150
150
  /* libuv's subscription mask: name-level events for directory watches,
151
151
  * self events for the file case, IN_IGNORED arriving for free. */
@@ -557,12 +557,22 @@ static void scr_watch_cleanup_atexit(void) {
557
557
  scr_watcher_drop_listeners(w);
558
558
  scr_watcher_release(w);
559
559
  }
560
+ #ifdef SCR_WORKERS
561
+ #ifdef SCR_HAVE_KQUEUE
562
+ if (scr_watch_kq >= 0) close(scr_watch_kq);
563
+ scr_watch_kq = -1;
564
+ #endif
565
+ #ifdef SCR_HAVE_INOTIFY
566
+ if (scr_watch_ino >= 0) close(scr_watch_ino);
567
+ scr_watch_ino = -1;
568
+ #endif
569
+ #endif
560
570
  }
561
571
 
562
572
  void scr_watch_install(void) {
563
- static bool installed = false;
573
+ static SCR_TL bool installed = false;
564
574
  if (installed) return;
565
575
  installed = true;
566
- atexit(scr_watch_cleanup_atexit);
576
+ scr_atexit(scr_watch_cleanup_atexit);
567
577
  scr_loop_set_watch(&scr_watch_pending, &scr_watch_dispatch, &scr_watch_pollfd);
568
578
  }
@@ -0,0 +1,232 @@
1
+ #include "scr_worker.h"
2
+
3
+ #ifdef SCR_WORKERS
4
+ #include <stdatomic.h>
5
+ #include <stdlib.h>
6
+ #include <limits.h>
7
+ #ifdef _WIN32
8
+ #include <process.h>
9
+ #include <windows.h>
10
+ #else
11
+ #include <pthread.h>
12
+ #endif
13
+
14
+ struct ScrWorkerThread {
15
+ atomic_size_t references;
16
+ atomic_bool cancel;
17
+ atomic_bool port_closed;
18
+ uint64_t id;
19
+ uint32_t root;
20
+ ScrWorkerEntry entry;
21
+ ScrMailbox *inbox;
22
+ ScrMailbox *parent;
23
+ ScrMessage *data;
24
+ ScrContextEnv *environment;
25
+ int argc;
26
+ char **argv;
27
+ bool joined;
28
+ #ifdef _WIN32
29
+ HANDLE thread;
30
+ #else
31
+ pthread_t thread;
32
+ #endif
33
+ };
34
+
35
+ static atomic_uint_fast64_t scr_worker_next_id = 1;
36
+ static SCR_TL ScrWorkerThread *scr_worker_current;
37
+ static SCR_TL ScrDyn *scr_worker_local_data;
38
+
39
+ static ScrMailEvent *scr_worker_event(unsigned kind, uint64_t source,
40
+ int code, ScrMessage *message) {
41
+ ScrMailEvent *event = calloc(1, sizeof(*event));
42
+ if (!event) scr_trap("scriptc: out of memory\n");
43
+ *event = (ScrMailEvent){.kind = kind, .source = source, .code = code, .message = message};
44
+ return event;
45
+ }
46
+
47
+ ScrWorkerThread *scr_worker_thread_retain(ScrWorkerThread *worker) {
48
+ atomic_fetch_add_explicit(&worker->references, 1, memory_order_relaxed);
49
+ return worker;
50
+ }
51
+
52
+ void scr_worker_thread_release(ScrWorkerThread *worker) {
53
+ if (!worker || atomic_fetch_sub_explicit(&worker->references, 1, memory_order_acq_rel) != 1) return;
54
+ #ifdef _WIN32
55
+ if (worker->thread) CloseHandle(worker->thread);
56
+ #else
57
+ if (!worker->joined) (void)pthread_detach(worker->thread);
58
+ #endif
59
+ scr_mailbox_release(worker->inbox);
60
+ scr_mailbox_release(worker->parent);
61
+ scr_message_free(worker->data);
62
+ scr_context_env_free(worker->environment);
63
+ for (int i = 0; i < worker->argc; i++) free(worker->argv[i]);
64
+ free(worker->argv);
65
+ free(worker);
66
+ }
67
+
68
+ static void scr_worker_data_cleanup(void) {
69
+ ScrDyn *data = scr_worker_local_data;
70
+ scr_worker_local_data = NULL;
71
+ scr_dyn_release(data);
72
+ }
73
+
74
+ ScrDyn *scr_worker_data(void) {
75
+ if (!scr_worker_current) return scr_dyn_new_null();
76
+ if (!scr_worker_local_data) {
77
+ ScrDyn *data = scr_message_decode(scr_worker_current->data);
78
+ if (!data) return NULL;
79
+ scr_worker_local_data = data;
80
+ if (scr_context_atexit(scr_worker_data_cleanup) != 0) scr_trap("scriptc: out of memory\n");
81
+ scr_message_free(scr_worker_current->data);
82
+ scr_worker_current->data = NULL;
83
+ }
84
+ return scr_dyn_retain(scr_worker_local_data);
85
+ }
86
+
87
+ ScrMailbox *scr_worker_inbox(void) {
88
+ return scr_worker_current ? scr_worker_current->inbox : NULL;
89
+ }
90
+
91
+ double scr_worker_root(void) { return scr_worker_current ? (double)scr_worker_current->root : -1; }
92
+ int scr_worker_argc(void) { return scr_worker_current ? scr_worker_current->argc : 0; }
93
+ char **scr_worker_argv(void) { return scr_worker_current ? scr_worker_current->argv : NULL; }
94
+
95
+ uint64_t scr_worker_thread_id(const ScrWorkerThread *worker) { return worker->id; }
96
+
97
+ void scr_worker_thread_terminate(ScrWorkerThread *worker) {
98
+ atomic_store_explicit(&worker->cancel, true, memory_order_relaxed);
99
+ scr_mailbox_post(worker->inbox, scr_worker_event(SCR_WORKER_WAKE, 0, 0, NULL));
100
+ }
101
+
102
+ bool scr_worker_thread_post(ScrWorkerThread *worker, ScrMessage *message) {
103
+ if (atomic_load_explicit(&worker->port_closed, memory_order_relaxed)) {
104
+ scr_message_free(message);
105
+ return false;
106
+ }
107
+ return scr_mailbox_post(worker->inbox, scr_worker_event(SCR_WORKER_MESSAGE, 0, 0, message));
108
+ }
109
+
110
+ void scr_worker_port_close(void) {
111
+ if (scr_worker_current)
112
+ atomic_store_explicit(&scr_worker_current->port_closed, true, memory_order_relaxed);
113
+ }
114
+
115
+ bool scr_worker_post_parent(ScrMessage *message) {
116
+ if (!scr_worker_current) { scr_message_free(message); return false; }
117
+ return scr_mailbox_post(scr_worker_current->parent,
118
+ scr_worker_event(SCR_WORKER_MESSAGE, scr_worker_current->id, 0, message));
119
+ }
120
+
121
+ static void scr_worker_report_error(void) {
122
+ ScrCaught *caught = scr_exc_take();
123
+ ScrDyn *value = scr_caught_to_dyn(caught);
124
+ ScrMessage *message = scr_message_encode(value);
125
+ scr_dyn_release(value);
126
+ scr_caught_release(caught);
127
+ if (!message) {
128
+ scr_exc_clear();
129
+ static const char text[] = "Serializing an uncaught exception failed";
130
+ scr_throw_error_msg_code(SCR_ERR_ERROR, text, sizeof text - 1, "ERR_WORKER_UNSERIALIZABLE_ERROR");
131
+ caught = scr_exc_take();
132
+ value = scr_caught_to_dyn(caught);
133
+ message = scr_message_encode(value);
134
+ scr_dyn_release(value);
135
+ scr_caught_release(caught);
136
+ }
137
+ scr_mailbox_post(scr_worker_current->parent,
138
+ scr_worker_event(SCR_WORKER_ERROR, scr_worker_current->id, 0, message));
139
+ }
140
+
141
+ static void scr_worker_thread_run(ScrWorkerThread *worker) {
142
+ scr_context_enter(worker->id);
143
+ scr_context_stop_flag(&worker->cancel);
144
+ scr_context_env_enter(worker->environment);
145
+ worker->environment = NULL;
146
+ scr_worker_current = worker;
147
+ scr_context_report_error = scr_worker_report_error;
148
+ scr_mailbox_post(worker->parent, scr_worker_event(SCR_WORKER_ONLINE, worker->id, 0, NULL));
149
+ int code = worker->entry(worker->root);
150
+ scr_mailbox_close(worker->inbox);
151
+ scr_context_cleanup();
152
+ scr_worker_current = NULL;
153
+ /* Cleanup may itself finish owner-bound native operations. Publish exit
154
+ * only once none of those operations can touch the worker's script heap. */
155
+ scr_mailbox_post(worker->parent, scr_worker_event(SCR_WORKER_EXIT, worker->id, code, NULL));
156
+ scr_worker_thread_release(worker);
157
+ }
158
+
159
+ #ifdef _WIN32
160
+ static unsigned __stdcall scr_worker_thread_main(void *data) {
161
+ scr_worker_thread_run(data);
162
+ return 0;
163
+ }
164
+ #else
165
+ static void *scr_worker_thread_main(void *data) {
166
+ scr_worker_thread_run(data);
167
+ return NULL;
168
+ }
169
+ #endif
170
+
171
+ ScrWorkerThread *scr_worker_thread_start(ScrWorkerEntry entry, uint32_t root,
172
+ ScrMessage *data, ScrMailbox *parent,
173
+ ScrArr *arguments) {
174
+ ScrWorkerThread *worker = calloc(1, sizeof(*worker));
175
+ if (!worker) scr_trap("scriptc: out of memory\n");
176
+ atomic_init(&worker->references, 2); /* owner and native thread */
177
+ atomic_init(&worker->cancel, false);
178
+ atomic_init(&worker->port_closed, false);
179
+ worker->id = atomic_fetch_add_explicit(&scr_worker_next_id, 1, memory_order_relaxed);
180
+ worker->entry = entry;
181
+ worker->root = root;
182
+ worker->data = data;
183
+ worker->environment = scr_context_env_capture();
184
+ worker->parent = scr_mailbox_retain(parent);
185
+ if (arguments) {
186
+ if (arguments->len > INT_MAX) scr_trap("scriptc: too many worker arguments\n");
187
+ worker->argc = (int)arguments->len;
188
+ worker->argv = calloc(arguments->len + 1, sizeof(*worker->argv));
189
+ if (!worker->argv) scr_trap("scriptc: out of memory\n");
190
+ for (size_t i = 0; i < arguments->len; i++) {
191
+ ScrStr *text = scr_arr_get_ref(arguments, (double)i);
192
+ worker->argv[i] = malloc(text->len + 1);
193
+ if (!worker->argv[i]) scr_trap("scriptc: out of memory\n");
194
+ memcpy(worker->argv[i], text->data, text->len + 1);
195
+ scr_str_release(text);
196
+ }
197
+ }
198
+ worker->inbox = scr_mailbox_new();
199
+ if (!worker->inbox) goto failed;
200
+ #ifdef _WIN32
201
+ worker->thread = (HANDLE)_beginthreadex(NULL, 0, scr_worker_thread_main, worker, 0, NULL);
202
+ if (!worker->thread) goto failed;
203
+ #else
204
+ if (pthread_create(&worker->thread, NULL, scr_worker_thread_main, worker) != 0) goto failed;
205
+ #endif
206
+ return worker;
207
+ failed:
208
+ for (int i = 0; i < worker->argc; i++) free(worker->argv[i]);
209
+ free(worker->argv);
210
+ scr_context_env_free(worker->environment);
211
+ scr_mailbox_release(worker->inbox);
212
+ scr_mailbox_release(worker->parent);
213
+ scr_message_free(worker->data);
214
+ free(worker);
215
+ if (!scr_exc_pending()) {
216
+ static const char message[] = "Could not start worker thread";
217
+ scr_throw_error_msg_code(SCR_ERR_ERROR, message, sizeof message - 1, "ERR_WORKER_INIT_FAILED");
218
+ }
219
+ return NULL;
220
+ }
221
+
222
+ void scr_worker_thread_join(ScrWorkerThread *worker) {
223
+ if (worker->joined) return;
224
+ #ifdef _WIN32
225
+ if (WaitForSingleObject(worker->thread, INFINITE) != WAIT_OBJECT_0)
226
+ scr_trap("scriptc: worker join failed\n");
227
+ #else
228
+ if (pthread_join(worker->thread, NULL) != 0) scr_trap("scriptc: worker join failed\n");
229
+ #endif
230
+ worker->joined = true;
231
+ }
232
+ #endif
@@ -0,0 +1,42 @@
1
+ #ifndef SCR_WORKER_H
2
+ #define SCR_WORKER_H
3
+
4
+ #include "scr_mailbox.h"
5
+
6
+ /* A thread carries only neutral transport state and an immutable compiled
7
+ * entry point. Script-visible handles and listeners stay in their owner's
8
+ * runtime heap. The entry initializes that thread's runtime before user code;
9
+ * the thread wrapper drains its context before publishing the exit event. */
10
+ typedef struct ScrWorkerThread ScrWorkerThread;
11
+ typedef int (*ScrWorkerEntry)(uint32_t root);
12
+
13
+ enum {
14
+ SCR_WORKER_ONLINE = 1,
15
+ SCR_WORKER_MESSAGE,
16
+ SCR_WORKER_ERROR,
17
+ SCR_WORKER_EXIT,
18
+ SCR_WORKER_WAKE,
19
+ SCR_WORKER_STDOUT,
20
+ SCR_WORKER_STDERR,
21
+ };
22
+
23
+ /* Consumes data, including on failure. Borrows the parent's mailbox. */
24
+ ScrWorkerThread *scr_worker_thread_start(ScrWorkerEntry entry, uint32_t root,
25
+ ScrMessage *data, ScrMailbox *parent,
26
+ ScrArr *arguments);
27
+ ScrWorkerThread *scr_worker_thread_retain(ScrWorkerThread *worker);
28
+ void scr_worker_thread_release(ScrWorkerThread *worker);
29
+ /* Join is owner-only and idempotent. The caller holds a reference. */
30
+ void scr_worker_thread_join(ScrWorkerThread *worker);
31
+ void scr_worker_thread_terminate(ScrWorkerThread *worker);
32
+ uint64_t scr_worker_thread_id(const ScrWorkerThread *worker);
33
+ /* Posting consumes the message even after the destination has closed. */
34
+ bool scr_worker_thread_post(ScrWorkerThread *worker, ScrMessage *message);
35
+ bool scr_worker_post_parent(ScrMessage *message);
36
+ void scr_worker_port_close(void);
37
+ /* Current-thread access: inbox is borrowed, data is a retained local value. */
38
+ ScrMailbox *scr_worker_inbox(void);
39
+ void scr_loop_set_workers(bool (*pending)(void), bool (*ready)(void), void (*dispatch)(void),
40
+ int (*pollfd)(void), void (*wait)(double));
41
+
42
+ #endif