@scriptc/cli-darwin-x64 0.2.5 → 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 (417) 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 +57 -30
  5. package/dist/lib/llvm/bin/scriptc-llvm-codegen +0 -0
  6. package/dist/lib/llvm/package.json +1 -1
  7. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_array.o +0 -0
  8. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_assert.o +0 -0
  9. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_async.o +0 -0
  10. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_bytes.o +0 -0
  11. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_bytes_io.o +0 -0
  12. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_child.o +0 -0
  13. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_closure.o +0 -0
  14. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_console.o +0 -0
  15. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_context.o +0 -0
  16. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_cycle.o +0 -0
  17. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_dgram.o +0 -0
  18. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_error.o +0 -0
  19. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_events.o +0 -0
  20. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_events_emitter.o +0 -0
  21. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_exception.o +0 -0
  22. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_fetch.o +0 -0
  23. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_file_handle.o +0 -0
  24. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_json.o +0 -0
  25. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_lib.o +0 -0
  26. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_map.o +0 -0
  27. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_number.o +0 -0
  28. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_object.o +0 -0
  29. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_readline.o +0 -0
  30. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_regex.o +0 -0
  31. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_shared.o +0 -0
  32. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_stream.o +0 -0
  33. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_string.o +0 -0
  34. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_tls.o +0 -0
  35. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_union.o +0 -0
  36. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_array.o +0 -0
  37. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_assert.o +0 -0
  38. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_async.o +0 -0
  39. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_async_dyn.o +0 -0
  40. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_bigint.o +0 -0
  41. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_bigint_assert.o +0 -0
  42. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_bytes.o +0 -0
  43. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_bytes_io.o +0 -0
  44. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_child.o +0 -0
  45. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_closure.o +0 -0
  46. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_console.o +0 -0
  47. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_console_native.o +0 -0
  48. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_context.o +0 -0
  49. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_copying.o +0 -0
  50. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_crypto_async.o +0 -0
  51. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_cycle.o +0 -0
  52. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_dc.o +0 -0
  53. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_dgram.o +0 -0
  54. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_dyn_handle.o +0 -0
  55. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_dyn_invoke.o +0 -0
  56. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_error.o +0 -0
  57. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_events.o +0 -0
  58. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_events_emitter.o +0 -0
  59. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_exception.o +0 -0
  60. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_fetch.o +0 -0
  61. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_ffi.o +0 -0
  62. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_ffi_queue.o +0 -0
  63. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_file_handle.o +0 -0
  64. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_grapheme.o +0 -0
  65. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_http.o +0 -0
  66. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_http2.o +0 -0
  67. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_inspect.o +0 -0
  68. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_json.o +0 -0
  69. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_lib.o +0 -0
  70. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_loop_epoll.o +0 -0
  71. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_loop_kqueue.o +0 -0
  72. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_loop_wsapoll.o +0 -0
  73. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_map.o +0 -0
  74. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_net.o +0 -0
  75. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_node_builtin.o +0 -0
  76. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_number.o +0 -0
  77. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_object.o +0 -0
  78. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_path.o +0 -0
  79. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_qs.o +0 -0
  80. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_readline.o +0 -0
  81. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_regex.o +0 -0
  82. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_shared.o +0 -0
  83. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_stream.o +0 -0
  84. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_string.o +0 -0
  85. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_symbol.o +0 -0
  86. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_test.o +0 -0
  87. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_tls.o +0 -0
  88. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_tls_ca.o +0 -0
  89. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_union.o +0 -0
  90. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_url.o +0 -0
  91. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_url_params.o +0 -0
  92. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_util.o +0 -0
  93. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_util_compare.o +0 -0
  94. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_util_style.o +0 -0
  95. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_watch.o +0 -0
  96. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_zlib.o +0 -0
  97. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_array.o +0 -0
  98. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_assert.o +0 -0
  99. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_async.o +0 -0
  100. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_bytes.o +0 -0
  101. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_bytes_io.o +0 -0
  102. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_child.o +0 -0
  103. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_closure.o +0 -0
  104. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_console.o +0 -0
  105. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_context.o +0 -0
  106. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_cycle.o +0 -0
  107. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_dgram.o +0 -0
  108. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_error.o +0 -0
  109. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_events.o +0 -0
  110. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_events_emitter.o +0 -0
  111. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_exception.o +0 -0
  112. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_file_handle.o +0 -0
  113. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_island.o +0 -0
  114. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_json.o +0 -0
  115. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_lib.o +0 -0
  116. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_map.o +0 -0
  117. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_number.o +0 -0
  118. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_object.o +0 -0
  119. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_readline.o +0 -0
  120. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_regex.o +0 -0
  121. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_shared.o +0 -0
  122. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_stream.o +0 -0
  123. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_string.o +0 -0
  124. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_tls.o +0 -0
  125. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_union.o +0 -0
  126. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic-text-decoder-legacy/scr_bytes.o +0 -0
  127. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/text-decoder-legacy/scr_bytes.o +0 -0
  128. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/text-decoder-legacy-workers/scr_bytes.o +0 -0
  129. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/workers/scr_mailbox.o +0 -0
  130. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/workers/scr_message.o +0 -0
  131. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/workers/scr_worker.o +0 -0
  132. package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/workers/scr_worker_events.o +0 -0
  133. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_array.o +0 -0
  134. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_assert.o +0 -0
  135. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_bytes.o +0 -0
  136. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_bytes_io.o +0 -0
  137. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_closure.o +0 -0
  138. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_context.o +0 -0
  139. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_cycle.o +0 -0
  140. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_error.o +0 -0
  141. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_events_emitter.o +0 -0
  142. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_exception.o +0 -0
  143. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_json.o +0 -0
  144. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_lib.o +0 -0
  145. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_map.o +0 -0
  146. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_number.o +0 -0
  147. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_object.o +0 -0
  148. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_regex.o +0 -0
  149. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_shared.o +0 -0
  150. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_string.o +0 -0
  151. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_union.o +0 -0
  152. package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/text-decoder-legacy/scr_bytes.o +0 -0
  153. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_array.o +0 -0
  154. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_assert.o +0 -0
  155. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_bytes.o +0 -0
  156. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_bytes_io.o +0 -0
  157. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_closure.o +0 -0
  158. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_context.o +0 -0
  159. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_cycle.o +0 -0
  160. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_error.o +0 -0
  161. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_events_emitter.o +0 -0
  162. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_exception.o +0 -0
  163. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_json.o +0 -0
  164. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_lib.o +0 -0
  165. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_map.o +0 -0
  166. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_number.o +0 -0
  167. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_object.o +0 -0
  168. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_regex.o +0 -0
  169. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_shared.o +0 -0
  170. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_string.o +0 -0
  171. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_union.o +0 -0
  172. package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/text-decoder-legacy/scr_bytes.o +0 -0
  173. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_array.o +0 -0
  174. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_assert.o +0 -0
  175. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_bytes.o +0 -0
  176. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_bytes_io.o +0 -0
  177. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_closure.o +0 -0
  178. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_console.o +0 -0
  179. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_context.o +0 -0
  180. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_copying.o +0 -0
  181. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_cycle.o +0 -0
  182. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_error.o +0 -0
  183. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_events_emitter.o +0 -0
  184. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_exception.o +0 -0
  185. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_inspect.o +0 -0
  186. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_json.o +0 -0
  187. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_lib.o +0 -0
  188. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_map.o +0 -0
  189. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_number.o +0 -0
  190. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_object.o +0 -0
  191. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_regex.o +0 -0
  192. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_shared.o +0 -0
  193. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_string.o +0 -0
  194. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_union.o +0 -0
  195. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_zlib.o +0 -0
  196. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/text-decoder-legacy/scr_bytes.o +0 -0
  197. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_array.o +0 -0
  198. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_assert.o +0 -0
  199. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_bytes.o +0 -0
  200. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_bytes_io.o +0 -0
  201. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_closure.o +0 -0
  202. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_console.o +0 -0
  203. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_context.o +0 -0
  204. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_copying.o +0 -0
  205. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_cycle.o +0 -0
  206. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_error.o +0 -0
  207. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_events_emitter.o +0 -0
  208. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_exception.o +0 -0
  209. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_inspect.o +0 -0
  210. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_json.o +0 -0
  211. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_lib.o +0 -0
  212. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_map.o +0 -0
  213. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_number.o +0 -0
  214. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_object.o +0 -0
  215. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_regex.o +0 -0
  216. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_shared.o +0 -0
  217. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_string.o +0 -0
  218. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_union.o +0 -0
  219. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_zlib.o +0 -0
  220. package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/text-decoder-legacy/scr_bytes.o +0 -0
  221. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_array.o +0 -0
  222. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_assert.o +0 -0
  223. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_async.o +0 -0
  224. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_bytes.o +0 -0
  225. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_bytes_io.o +0 -0
  226. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_child.o +0 -0
  227. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_closure.o +0 -0
  228. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_console.o +0 -0
  229. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_context.o +0 -0
  230. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_cycle.o +0 -0
  231. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_dgram.o +0 -0
  232. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_error.o +0 -0
  233. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_events.o +0 -0
  234. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_events_emitter.o +0 -0
  235. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_exception.o +0 -0
  236. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_fetch.o +0 -0
  237. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_file_handle.o +0 -0
  238. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_json.o +0 -0
  239. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_lib.o +0 -0
  240. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_map.o +0 -0
  241. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_number.o +0 -0
  242. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_object.o +0 -0
  243. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_readline.o +0 -0
  244. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_regex.o +0 -0
  245. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_shared.o +0 -0
  246. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_stream.o +0 -0
  247. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_string.o +0 -0
  248. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_tls.o +0 -0
  249. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_union.o +0 -0
  250. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_array.o +0 -0
  251. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_assert.o +0 -0
  252. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_async.o +0 -0
  253. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_async_dyn.o +0 -0
  254. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_bigint.o +0 -0
  255. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_bigint_assert.o +0 -0
  256. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_bytes.o +0 -0
  257. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_bytes_io.o +0 -0
  258. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_child.o +0 -0
  259. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_closure.o +0 -0
  260. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_console.o +0 -0
  261. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_console_native.o +0 -0
  262. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_context.o +0 -0
  263. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_copying.o +0 -0
  264. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_crypto_async.o +0 -0
  265. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_cycle.o +0 -0
  266. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_dc.o +0 -0
  267. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_dgram.o +0 -0
  268. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_dyn_handle.o +0 -0
  269. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_dyn_invoke.o +0 -0
  270. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_error.o +0 -0
  271. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_events.o +0 -0
  272. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_events_emitter.o +0 -0
  273. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_exception.o +0 -0
  274. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_fetch.o +0 -0
  275. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_ffi.o +0 -0
  276. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_ffi_queue.o +0 -0
  277. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_file_handle.o +0 -0
  278. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_grapheme.o +0 -0
  279. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_http.o +0 -0
  280. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_http2.o +0 -0
  281. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_inspect.o +0 -0
  282. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_json.o +0 -0
  283. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_lib.o +0 -0
  284. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_loop_epoll.o +0 -0
  285. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_loop_kqueue.o +0 -0
  286. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_loop_wsapoll.o +0 -0
  287. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_map.o +0 -0
  288. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_net.o +0 -0
  289. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_node_builtin.o +0 -0
  290. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_number.o +0 -0
  291. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_object.o +0 -0
  292. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_path.o +0 -0
  293. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_qs.o +0 -0
  294. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_readline.o +0 -0
  295. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_regex.o +0 -0
  296. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_shared.o +0 -0
  297. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_stream.o +0 -0
  298. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_string.o +0 -0
  299. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_symbol.o +0 -0
  300. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_test.o +0 -0
  301. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_tls.o +0 -0
  302. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_tls_ca.o +0 -0
  303. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_union.o +0 -0
  304. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_url.o +0 -0
  305. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_url_params.o +0 -0
  306. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_util.o +0 -0
  307. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_util_compare.o +0 -0
  308. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_util_style.o +0 -0
  309. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_watch.o +0 -0
  310. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_zlib.o +0 -0
  311. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_array.o +0 -0
  312. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_assert.o +0 -0
  313. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_async.o +0 -0
  314. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_bytes.o +0 -0
  315. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_bytes_io.o +0 -0
  316. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_child.o +0 -0
  317. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_closure.o +0 -0
  318. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_console.o +0 -0
  319. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_context.o +0 -0
  320. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_cycle.o +0 -0
  321. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_dgram.o +0 -0
  322. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_error.o +0 -0
  323. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_events.o +0 -0
  324. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_events_emitter.o +0 -0
  325. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_exception.o +0 -0
  326. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_file_handle.o +0 -0
  327. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_island.o +0 -0
  328. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_json.o +0 -0
  329. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_lib.o +0 -0
  330. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_map.o +0 -0
  331. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_number.o +0 -0
  332. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_object.o +0 -0
  333. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_readline.o +0 -0
  334. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_regex.o +0 -0
  335. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_shared.o +0 -0
  336. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_stream.o +0 -0
  337. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_string.o +0 -0
  338. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_tls.o +0 -0
  339. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_union.o +0 -0
  340. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic-text-decoder-legacy/scr_bytes.o +0 -0
  341. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/text-decoder-legacy/scr_bytes.o +0 -0
  342. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/text-decoder-legacy-workers/scr_bytes.o +0 -0
  343. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/workers/scr_mailbox.o +0 -0
  344. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/workers/scr_message.o +0 -0
  345. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/workers/scr_worker.o +0 -0
  346. package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/workers/scr_worker_events.o +0 -0
  347. package/dist/lib/runtime-darwin-x64/package.json +1 -1
  348. package/dist/lib/runtime-darwin-x64/runtime-pack.json +3339 -811
  349. package/dist/lib/runtime-sources/package.json +1 -1
  350. package/dist/lib/runtime-sources/src/scr_array.c +212 -40
  351. package/dist/lib/runtime-sources/src/scr_assert.c +3 -3
  352. package/dist/lib/runtime-sources/src/scr_async.c +401 -71
  353. package/dist/lib/runtime-sources/src/scr_async_dyn.c +30 -30
  354. package/dist/lib/runtime-sources/src/scr_bytes.c +50 -5
  355. package/dist/lib/runtime-sources/src/scr_bytes_io.c +47 -32
  356. package/dist/lib/runtime-sources/src/scr_child.c +48 -30
  357. package/dist/lib/runtime-sources/src/scr_closure.c +21 -11
  358. package/dist/lib/runtime-sources/src/scr_console.c +27 -5
  359. package/dist/lib/runtime-sources/src/scr_context.c +167 -0
  360. package/dist/lib/runtime-sources/src/scr_context.test.c +118 -0
  361. package/dist/lib/runtime-sources/src/scr_context.test.ts +47 -0
  362. package/dist/lib/runtime-sources/src/scr_copying.c +1 -0
  363. package/dist/lib/runtime-sources/src/scr_cycle.c +112 -12
  364. package/dist/lib/runtime-sources/src/scr_dc.c +8 -8
  365. package/dist/lib/runtime-sources/src/scr_dgram.c +10 -7
  366. package/dist/lib/runtime-sources/src/scr_error.c +26 -14
  367. package/dist/lib/runtime-sources/src/scr_events.c +45 -31
  368. package/dist/lib/runtime-sources/src/scr_events_emitter.c +34 -1
  369. package/dist/lib/runtime-sources/src/scr_exception.c +26 -7
  370. package/dist/lib/runtime-sources/src/scr_fetch.c +23 -20
  371. package/dist/lib/runtime-sources/src/scr_fetch_curl.c +1 -1
  372. package/dist/lib/runtime-sources/src/scr_ffi.c +3 -3
  373. package/dist/lib/runtime-sources/src/scr_file_handle.c +1 -0
  374. package/dist/lib/runtime-sources/src/scr_http.c +20 -16
  375. package/dist/lib/runtime-sources/src/scr_http2.c +10 -8
  376. package/dist/lib/runtime-sources/src/scr_inspect.c +1 -0
  377. package/dist/lib/runtime-sources/src/scr_island.c +1 -1
  378. package/dist/lib/runtime-sources/src/scr_json.c +179 -45
  379. package/dist/lib/runtime-sources/src/scr_json.test.c +16 -0
  380. package/dist/lib/runtime-sources/src/scr_json.test.ts +1 -0
  381. package/dist/lib/runtime-sources/src/scr_key.h +28 -4
  382. package/dist/lib/runtime-sources/src/scr_lib.c +124 -63
  383. package/dist/lib/runtime-sources/src/scr_mailbox.c +233 -0
  384. package/dist/lib/runtime-sources/src/scr_mailbox.h +28 -0
  385. package/dist/lib/runtime-sources/src/scr_mailbox.test.c +86 -0
  386. package/dist/lib/runtime-sources/src/scr_mailbox.test.ts +46 -0
  387. package/dist/lib/runtime-sources/src/scr_map.c +195 -46
  388. package/dist/lib/runtime-sources/src/scr_message.c +443 -0
  389. package/dist/lib/runtime-sources/src/scr_message.h +14 -0
  390. package/dist/lib/runtime-sources/src/scr_message.test.c +152 -0
  391. package/dist/lib/runtime-sources/src/scr_message.test.ts +44 -0
  392. package/dist/lib/runtime-sources/src/scr_net.c +14 -12
  393. package/dist/lib/runtime-sources/src/scr_number.c +34 -0
  394. package/dist/lib/runtime-sources/src/scr_object.c +9 -4
  395. package/dist/lib/runtime-sources/src/scr_path.c +1 -1
  396. package/dist/lib/runtime-sources/src/scr_readline.c +8 -8
  397. package/dist/lib/runtime-sources/src/scr_regex.c +113 -0
  398. package/dist/lib/runtime-sources/src/scr_runtime.h +170 -28
  399. package/dist/lib/runtime-sources/src/scr_shared.c +280 -0
  400. package/dist/lib/runtime-sources/src/scr_shared.test.c +113 -0
  401. package/dist/lib/runtime-sources/src/scr_shared.test.ts +45 -0
  402. package/dist/lib/runtime-sources/src/scr_stream.c +9 -9
  403. package/dist/lib/runtime-sources/src/scr_string.c +224 -113
  404. package/dist/lib/runtime-sources/src/scr_test.c +8 -8
  405. package/dist/lib/runtime-sources/src/scr_tls.c +12 -12
  406. package/dist/lib/runtime-sources/src/scr_tls_ca.c +34 -12
  407. package/dist/lib/runtime-sources/src/scr_union.c +10 -5
  408. package/dist/lib/runtime-sources/src/scr_util_compare.c +1 -0
  409. package/dist/lib/runtime-sources/src/scr_util_style.c +11 -11
  410. package/dist/lib/runtime-sources/src/scr_watch.c +16 -6
  411. package/dist/lib/runtime-sources/src/scr_worker.c +232 -0
  412. package/dist/lib/runtime-sources/src/scr_worker.h +42 -0
  413. package/dist/lib/runtime-sources/src/scr_worker.test.c +115 -0
  414. package/dist/lib/runtime-sources/src/scr_worker.test.ts +49 -0
  415. package/dist/lib/runtime-sources/src/scr_worker_events.c +443 -0
  416. package/dist/lib/runtime-sources/src/scr_zlib.c +6 -0
  417. package/package.json +1 -1
@@ -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
@@ -0,0 +1,115 @@
1
+ #undef NDEBUG
2
+ #include "scr_worker.h"
3
+ #include <assert.h>
4
+ #include <sched.h>
5
+ #include <stdatomic.h>
6
+ #include <stdio.h>
7
+
8
+ enum { WORKERS = 4, MESSAGES = 16 };
9
+ static atomic_bool start;
10
+ static SCR_TL unsigned timer_calls;
11
+ static SCR_TL unsigned cleanup_calls;
12
+
13
+ static void check_cleanup(void) { cleanup_calls++; }
14
+
15
+ static void timer(ScrClosure *closure) {
16
+ (void)closure;
17
+ assert(!scr_context_is_main());
18
+ timer_calls++;
19
+ }
20
+
21
+ static int entry(uint32_t root_id) {
22
+ scr_init();
23
+ scr_lib_init(0, NULL);
24
+ assert(!scr_context_is_main());
25
+ assert(timer_calls == 0 && cleanup_calls == 0);
26
+ assert(scr_context_atexit(check_cleanup) == 0);
27
+ while (!atomic_load_explicit(&start, memory_order_acquire)) sched_yield();
28
+ ScrDyn *input = scr_worker_data();
29
+ assert(input && !scr_exc_pending());
30
+ assert(scr_dyn_obj_get(input, "root", 4)->v.num == root_id);
31
+ assert(scr_dyn_obj_get(input, "self", 4) == input);
32
+ ScrDyn *again = scr_worker_data();
33
+ assert(input == again);
34
+ scr_dyn_release(again);
35
+ scr_dyn_release(input);
36
+
37
+ for (unsigned i = 0; i < MESSAGES; i++) {
38
+ ScrDyn *value = scr_dyn_new_num(root_id * 100 + i);
39
+ ScrMessage *wire = scr_message_encode(value);
40
+ scr_dyn_release(value);
41
+ assert(wire && scr_worker_post_parent(wire));
42
+ ScrMailEvent *reply = NULL;
43
+ while (!(reply = scr_mailbox_take(scr_worker_inbox())))
44
+ scr_mailbox_wait(scr_worker_inbox(), 1000);
45
+ assert(reply->kind == SCR_WORKER_MESSAGE && reply->source == 0);
46
+ value = scr_message_decode(reply->message);
47
+ assert(value && value->kind == SCR_DYN_NUM && value->v.num == root_id * 100 + i);
48
+ scr_dyn_release(value);
49
+ scr_mail_event_free(reply);
50
+ }
51
+ scr_set_timeout(scr_closure_new((void *)timer, 0), 1);
52
+ assert(!scr_loop_run(NULL) && !scr_exc_pending());
53
+ assert(timer_calls == 1 && cleanup_calls == 0);
54
+ return (int)root_id;
55
+ }
56
+
57
+ int main(void) {
58
+ scr_init();
59
+ scr_lib_init(0, NULL);
60
+ ScrMailbox *mailbox = scr_mailbox_new();
61
+ assert(mailbox);
62
+ ScrWorkerThread *workers[WORKERS];
63
+ unsigned messages[WORKERS] = {0};
64
+ bool online[WORKERS] = {false};
65
+ bool exited[WORKERS] = {false};
66
+ for (unsigned i = 0; i < WORKERS; i++) {
67
+ ScrDyn *input = scr_dyn_new_obj();
68
+ scr_dyn_obj_set(input, "root", 4, scr_dyn_new_num(i));
69
+ scr_dyn_obj_set(input, "self", 4, scr_dyn_retain(input));
70
+ ScrMessage *wire = scr_message_encode(input);
71
+ scr_dyn_release(input);
72
+ assert(wire && !scr_exc_pending());
73
+ workers[i] = scr_worker_thread_start(entry, i, wire, mailbox, NULL);
74
+ assert(workers[i] && !scr_exc_pending());
75
+ assert(scr_worker_thread_id(workers[i]) != 0);
76
+ }
77
+ /* No sender heap survives into the workerData decode. */
78
+ scr_collect_cycles();
79
+ atomic_store_explicit(&start, true, memory_order_release);
80
+ unsigned exit_count = 0;
81
+ while (exit_count != WORKERS) {
82
+ ScrMailEvent *event = scr_mailbox_take(mailbox);
83
+ if (!event) { scr_mailbox_wait(mailbox, 1000); continue; }
84
+ unsigned i = 0;
85
+ while (i < WORKERS && scr_worker_thread_id(workers[i]) != event->source) i++;
86
+ assert(i < WORKERS && !exited[i]);
87
+ if (event->kind == SCR_WORKER_ONLINE) {
88
+ assert(!online[i]);
89
+ online[i] = true;
90
+ } else if (event->kind == SCR_WORKER_MESSAGE) {
91
+ assert(online[i] && messages[i] < MESSAGES);
92
+ ScrDyn *value = scr_message_decode(event->message);
93
+ assert(value && value->kind == SCR_DYN_NUM && value->v.num == i * 100 + messages[i]);
94
+ messages[i]++;
95
+ ScrMessage *reply = scr_message_encode(value);
96
+ scr_dyn_release(value);
97
+ assert(reply && scr_worker_thread_post(workers[i], reply));
98
+ } else {
99
+ assert(event->kind == SCR_WORKER_EXIT && event->code == (int)i);
100
+ assert(online[i] && messages[i] == MESSAGES);
101
+ exited[i] = true;
102
+ exit_count++;
103
+ scr_worker_thread_join(workers[i]);
104
+ scr_worker_thread_join(workers[i]);
105
+ ScrMessage *late = scr_message_encode(scr_dyn_undefined());
106
+ assert(late && !scr_worker_thread_post(workers[i], late));
107
+ }
108
+ scr_mail_event_free(event);
109
+ }
110
+ for (unsigned i = 0; i < WORKERS; i++) scr_worker_thread_release(workers[i]);
111
+ scr_mailbox_release(mailbox);
112
+ assert(timer_calls == 0 && cleanup_calls == 0 && scr_context_is_main());
113
+ scr_context_cleanup();
114
+ puts("worker threads isolate heaps, exchange messages and publish ordered exits");
115
+ }
@@ -0,0 +1,49 @@
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
+ "native workers own their data and finish all message exchanges before exit",
13
+ async () => {
14
+ const dir = await mkdtemp(join(tmpdir(), "scriptc-workers-"));
15
+ try {
16
+ const bin = join(dir, "workers");
17
+ await exec("clang", [
18
+ "-std=c11",
19
+ "-O1",
20
+ "-pthread",
21
+ "-DSCR_WORKERS",
22
+ "-DSCR_RC_AUDIT",
23
+ "-fsanitize=address,undefined",
24
+ "-Wno-deprecated-declarations",
25
+ ...(process.platform === "linux" ? ["-D_GNU_SOURCE"] : []),
26
+ ...[
27
+ "scr_worker.test.c",
28
+ "scr_worker.c",
29
+ "scr_mailbox.c",
30
+ "scr_message.c",
31
+ ...EXECUTABLE_RUNTIME_SOURCES,
32
+ ].map((name) => join(import.meta.dirname, name)),
33
+ ...(process.platform === "linux" ? ["-lm"] : []),
34
+ "-o",
35
+ bin,
36
+ ]);
37
+ const result = await exec(bin, [], {
38
+ timeout: 10000,
39
+ env: { ...process.env, UBSAN_OPTIONS: "halt_on_error=1" },
40
+ });
41
+ expect(result.stdout).toBe(
42
+ "worker threads isolate heaps, exchange messages and publish ordered exits\n",
43
+ );
44
+ expect(result.stderr).toBe("");
45
+ } finally {
46
+ await rm(dir, { recursive: true, force: true });
47
+ }
48
+ },
49
+ );