@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.
- package/dist/THIRD_PARTY_NOTICES +1 -1
- package/dist/bin/scriptc +0 -0
- package/dist/bin/scriptc.json +1 -1
- package/dist/lib/declarations/scriptc-node-fallback.d.ts +972 -245
- package/dist/lib/declarations/scriptc-overrides.d.ts +5 -1
- package/dist/lib/declarations/scriptc.d.ts +22 -2
- package/dist/lib/llvm/bin/scriptc-llvm-codegen +0 -0
- package/dist/lib/llvm/package.json +1 -1
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_fetch.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_async_dyn.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_bigint.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_bigint_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_console_native.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_crypto_async.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_dc.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_dyn_handle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_dyn_invoke.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_fetch.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_ffi.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_ffi_queue.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_grapheme.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_http.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_http2.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_inspect.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_loop_epoll.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_loop_kqueue.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_loop_wsapoll.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_net.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_node_builtin.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_path.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_qs.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_symbol.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_test.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_tls_ca.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_url.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_url_params.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_util.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_util_style.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_watch.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_zlib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_island.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic-text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/text-decoder-legacy-workers/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/workers/scr_mailbox.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/workers/scr_message.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/workers/scr_worker.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/workers/scr_worker_events.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_inspect.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_zlib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_inspect.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_zlib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_fetch.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_async_dyn.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_bigint.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_bigint_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_console_native.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_crypto_async.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_dc.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_dyn_handle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_dyn_invoke.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_fetch.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_ffi.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_ffi_queue.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_grapheme.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_http.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_http2.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_inspect.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_loop_epoll.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_loop_kqueue.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_loop_wsapoll.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_net.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_node_builtin.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_path.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_qs.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_symbol.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_test.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_tls_ca.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_url.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_url_params.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_util.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_util_style.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_watch.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_zlib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_island.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic-text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/text-decoder-legacy-workers/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/workers/scr_mailbox.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/workers/scr_message.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/workers/scr_worker.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/workers/scr_worker_events.o +0 -0
- package/dist/lib/runtime-darwin-x64/package.json +1 -1
- package/dist/lib/runtime-darwin-x64/runtime-pack.json +3318 -790
- package/dist/lib/runtime-sources/package.json +1 -1
- package/dist/lib/runtime-sources/src/scr_array.c +479 -46
- package/dist/lib/runtime-sources/src/scr_assert.c +3 -3
- package/dist/lib/runtime-sources/src/scr_async.c +401 -71
- package/dist/lib/runtime-sources/src/scr_async.test.ts +16 -6
- package/dist/lib/runtime-sources/src/scr_async_dyn.c +30 -30
- package/dist/lib/runtime-sources/src/scr_bytes.c +487 -221
- package/dist/lib/runtime-sources/src/scr_bytes.test.c +85 -0
- package/dist/lib/runtime-sources/src/scr_bytes_io.c +45 -64
- package/dist/lib/runtime-sources/src/scr_child.c +48 -30
- package/dist/lib/runtime-sources/src/scr_closure.c +21 -11
- package/dist/lib/runtime-sources/src/scr_console.c +27 -5
- package/dist/lib/runtime-sources/src/scr_context.c +167 -0
- package/dist/lib/runtime-sources/src/scr_context.test.c +118 -0
- package/dist/lib/runtime-sources/src/scr_context.test.ts +47 -0
- package/dist/lib/runtime-sources/src/scr_copying.c +13 -2
- package/dist/lib/runtime-sources/src/scr_cycle.c +112 -12
- package/dist/lib/runtime-sources/src/scr_dc.c +8 -8
- package/dist/lib/runtime-sources/src/scr_dgram.c +10 -7
- package/dist/lib/runtime-sources/src/scr_error.c +26 -14
- package/dist/lib/runtime-sources/src/scr_events.c +45 -31
- package/dist/lib/runtime-sources/src/scr_events_emitter.c +34 -1
- package/dist/lib/runtime-sources/src/scr_exception.c +26 -7
- package/dist/lib/runtime-sources/src/scr_fetch.c +23 -20
- package/dist/lib/runtime-sources/src/scr_fetch_curl.c +1 -1
- package/dist/lib/runtime-sources/src/scr_ffi.c +3 -3
- package/dist/lib/runtime-sources/src/scr_file_handle.c +1 -0
- package/dist/lib/runtime-sources/src/scr_http.c +20 -16
- package/dist/lib/runtime-sources/src/scr_http2.c +10 -8
- package/dist/lib/runtime-sources/src/scr_inspect.c +1 -0
- package/dist/lib/runtime-sources/src/scr_island.c +1 -1
- package/dist/lib/runtime-sources/src/scr_json.c +652 -189
- package/dist/lib/runtime-sources/src/scr_json.test.c +339 -1
- package/dist/lib/runtime-sources/src/scr_json.test.ts +59 -25
- package/dist/lib/runtime-sources/src/scr_key.h +92 -0
- package/dist/lib/runtime-sources/src/scr_lib.c +256 -136
- package/dist/lib/runtime-sources/src/scr_mailbox.c +233 -0
- package/dist/lib/runtime-sources/src/scr_mailbox.h +28 -0
- package/dist/lib/runtime-sources/src/scr_mailbox.test.c +86 -0
- package/dist/lib/runtime-sources/src/scr_mailbox.test.ts +46 -0
- package/dist/lib/runtime-sources/src/scr_map.c +240 -107
- package/dist/lib/runtime-sources/src/scr_message.c +443 -0
- package/dist/lib/runtime-sources/src/scr_message.h +14 -0
- package/dist/lib/runtime-sources/src/scr_message.test.c +152 -0
- package/dist/lib/runtime-sources/src/scr_message.test.ts +44 -0
- package/dist/lib/runtime-sources/src/scr_net.c +14 -12
- package/dist/lib/runtime-sources/src/scr_number.c +36 -4
- package/dist/lib/runtime-sources/src/scr_numeric.h +25 -0
- package/dist/lib/runtime-sources/src/scr_numeric.test.c +37 -0
- package/dist/lib/runtime-sources/src/scr_numeric.test.ts +33 -0
- package/dist/lib/runtime-sources/src/scr_object.c +9 -4
- package/dist/lib/runtime-sources/src/scr_path.c +1 -1
- package/dist/lib/runtime-sources/src/scr_readline.c +8 -8
- package/dist/lib/runtime-sources/src/scr_regex.c +351 -167
- package/dist/lib/runtime-sources/src/scr_runtime.h +207 -34
- package/dist/lib/runtime-sources/src/scr_shared.c +280 -0
- package/dist/lib/runtime-sources/src/scr_shared.test.c +113 -0
- package/dist/lib/runtime-sources/src/scr_shared.test.ts +45 -0
- package/dist/lib/runtime-sources/src/scr_stream.c +9 -9
- package/dist/lib/runtime-sources/src/scr_string.c +365 -141
- package/dist/lib/runtime-sources/src/scr_test.c +8 -8
- package/dist/lib/runtime-sources/src/scr_tls.c +12 -12
- package/dist/lib/runtime-sources/src/scr_tls_ca.c +34 -12
- package/dist/lib/runtime-sources/src/scr_union.c +10 -5
- package/dist/lib/runtime-sources/src/scr_util_compare.c +1 -0
- package/dist/lib/runtime-sources/src/scr_util_style.c +11 -11
- package/dist/lib/runtime-sources/src/scr_watch.c +16 -6
- package/dist/lib/runtime-sources/src/scr_worker.c +232 -0
- package/dist/lib/runtime-sources/src/scr_worker.h +42 -0
- package/dist/lib/runtime-sources/src/scr_worker.test.c +115 -0
- package/dist/lib/runtime-sources/src/scr_worker.test.ts +49 -0
- package/dist/lib/runtime-sources/src/scr_worker_events.c +443 -0
- package/dist/lib/runtime-sources/src/scr_zlib.c +6 -0
- 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,
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 (
|
|
203
|
-
if (
|
|
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 (
|
|
206
|
-
const char *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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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
|