@scriptc/cli-darwin-arm64 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.
- 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 +57 -30
- package/dist/lib/llvm/bin/scriptc-llvm-codegen +0 -0
- package/dist/lib/llvm/package.json +1 -1
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_fetch.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_async_dyn.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_bigint.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_bigint_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_console_native.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_crypto_async.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_dc.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_dyn_handle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_dyn_invoke.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_fetch.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_ffi.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_ffi_queue.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_grapheme.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_http.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_http2.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_inspect.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_loop_epoll.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_loop_kqueue.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_loop_wsapoll.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_net.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_node_builtin.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_path.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_qs.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_symbol.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_test.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_tls_ca.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_url.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_url_params.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_util.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_util_style.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_watch.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default-workers/scr_zlib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_island.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic-text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/text-decoder-legacy-workers/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/workers/scr_mailbox.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/workers/scr_message.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/workers/scr_worker.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/workers/scr_worker_events.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_inspect.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_zlib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_inspect.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_zlib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_fetch.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_async_dyn.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_bigint.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_bigint_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_console_native.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_crypto_async.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_dc.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_dyn_handle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_dyn_invoke.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_fetch.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_ffi.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_ffi_queue.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_grapheme.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_http.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_http2.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_inspect.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_loop_epoll.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_loop_kqueue.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_loop_wsapoll.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_net.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_node_builtin.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_path.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_qs.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_symbol.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_test.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_tls_ca.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_url.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_url_params.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_util.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_util_style.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_watch.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default-workers/scr_zlib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_island.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic-text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/text-decoder-legacy-workers/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/workers/scr_mailbox.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/workers/scr_message.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/workers/scr_worker.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/workers/scr_worker_events.o +0 -0
- package/dist/lib/runtime-darwin-arm64/package.json +1 -1
- package/dist/lib/runtime-darwin-arm64/runtime-pack.json +3300 -772
- package/dist/lib/runtime-sources/package.json +1 -1
- package/dist/lib/runtime-sources/src/scr_array.c +212 -40
- 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_dyn.c +30 -30
- package/dist/lib/runtime-sources/src/scr_bytes.c +50 -5
- package/dist/lib/runtime-sources/src/scr_bytes_io.c +47 -32
- 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 +1 -0
- 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 +179 -45
- package/dist/lib/runtime-sources/src/scr_json.test.c +16 -0
- package/dist/lib/runtime-sources/src/scr_json.test.ts +1 -0
- package/dist/lib/runtime-sources/src/scr_key.h +28 -4
- package/dist/lib/runtime-sources/src/scr_lib.c +124 -63
- 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 +195 -46
- 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 +34 -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 +113 -0
- package/dist/lib/runtime-sources/src/scr_runtime.h +170 -28
- 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 +224 -113
- 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
|
@@ -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
|
|
@@ -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
|
+
);
|