@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
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/* Shared storage is neutral: only its backing allocation and synchronization
|
|
2
|
+
* cross contexts. ScrBytes wrappers and their reference counts remain local. */
|
|
3
|
+
#include "scr_runtime.h"
|
|
4
|
+
#include "scr_numeric.h"
|
|
5
|
+
#include <math.h>
|
|
6
|
+
#include <stdatomic.h>
|
|
7
|
+
#include <stdlib.h>
|
|
8
|
+
#include <time.h>
|
|
9
|
+
#if defined(SCR_WORKERS) || (defined(SCR_LIB) && defined(SCR_THREAD_INSTANCES))
|
|
10
|
+
#ifdef _WIN32
|
|
11
|
+
#include <windows.h>
|
|
12
|
+
#else
|
|
13
|
+
#include <pthread.h>
|
|
14
|
+
#include <time.h>
|
|
15
|
+
#endif
|
|
16
|
+
#endif
|
|
17
|
+
|
|
18
|
+
struct ScrSharedBytes {
|
|
19
|
+
atomic_size_t references;
|
|
20
|
+
size_t length;
|
|
21
|
+
uint8_t *data;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
#if defined(SCR_WORKERS) || (defined(SCR_LIB) && defined(SCR_THREAD_INSTANCES))
|
|
25
|
+
#ifdef _WIN32
|
|
26
|
+
static SRWLOCK scr_shared_mutex = SRWLOCK_INIT;
|
|
27
|
+
static CONDITION_VARIABLE scr_shared_condition = CONDITION_VARIABLE_INIT;
|
|
28
|
+
#else
|
|
29
|
+
static pthread_mutex_t scr_shared_mutex = PTHREAD_MUTEX_INITIALIZER;
|
|
30
|
+
static pthread_cond_t scr_shared_condition = PTHREAD_COND_INITIALIZER;
|
|
31
|
+
#endif
|
|
32
|
+
static SCR_TL unsigned scr_shared_depth;
|
|
33
|
+
#endif
|
|
34
|
+
|
|
35
|
+
/* One ordering domain covers overlapping views of different widths. Recursive
|
|
36
|
+
* runtime helpers may nest, but no caller may execute script while holding it. */
|
|
37
|
+
void scr_shared_enter(void) {
|
|
38
|
+
#if defined(SCR_WORKERS) || (defined(SCR_LIB) && defined(SCR_THREAD_INSTANCES))
|
|
39
|
+
if (scr_shared_depth++ != 0) return;
|
|
40
|
+
#ifdef _WIN32
|
|
41
|
+
AcquireSRWLockExclusive(&scr_shared_mutex);
|
|
42
|
+
#else
|
|
43
|
+
pthread_mutex_lock(&scr_shared_mutex);
|
|
44
|
+
#endif
|
|
45
|
+
#endif
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
void scr_shared_leave(void) {
|
|
49
|
+
#if defined(SCR_WORKERS) || (defined(SCR_LIB) && defined(SCR_THREAD_INSTANCES))
|
|
50
|
+
if (--scr_shared_depth != 0) return;
|
|
51
|
+
#ifdef _WIN32
|
|
52
|
+
ReleaseSRWLockExclusive(&scr_shared_mutex);
|
|
53
|
+
#else
|
|
54
|
+
pthread_mutex_unlock(&scr_shared_mutex);
|
|
55
|
+
#endif
|
|
56
|
+
#endif
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
bool scr_shared_guard(const ScrBytes *a, const ScrBytes *b) {
|
|
60
|
+
bool shared = (a && a->shared) || (b && b->shared);
|
|
61
|
+
if (shared) scr_shared_enter();
|
|
62
|
+
return shared;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
void scr_shared_guard_release(bool *held) { if (*held) scr_shared_leave(); }
|
|
66
|
+
|
|
67
|
+
ScrSharedBytes *scr_shared_retain(ScrSharedBytes *storage) {
|
|
68
|
+
atomic_fetch_add_explicit(&storage->references, 1, memory_order_relaxed);
|
|
69
|
+
return storage;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
void scr_shared_release(ScrSharedBytes *storage) {
|
|
73
|
+
if (!storage || atomic_fetch_sub_explicit(&storage->references, 1, memory_order_acq_rel) != 1) return;
|
|
74
|
+
free(storage->data);
|
|
75
|
+
free(storage);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
void scr_bytes_make_shared(ScrBytes *bytes) {
|
|
79
|
+
if (bytes->backing || bytes->shared || bytes->external) scr_trap("scriptc: invalid shared storage owner\n");
|
|
80
|
+
ScrSharedBytes *storage = malloc(sizeof(*storage));
|
|
81
|
+
if (!storage) scr_trap("scriptc: out of memory\n");
|
|
82
|
+
atomic_init(&storage->references, 1);
|
|
83
|
+
storage->length = bytes->len * scr_bytes_elem_size(bytes->elem);
|
|
84
|
+
storage->data = bytes->data;
|
|
85
|
+
bytes->shared = storage;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
ScrBytes *scr_shared_wrap(ScrSharedBytes *storage) {
|
|
89
|
+
ScrBytes *bytes = scr_bytes_from_external(storage->data, storage->length);
|
|
90
|
+
bytes->external = false;
|
|
91
|
+
bytes->shared = scr_shared_retain(storage);
|
|
92
|
+
return bytes;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
void scr_bytes_read(const ScrBytes *bytes, size_t offset, void *out, size_t length) {
|
|
96
|
+
SCR_SHARED_GUARD(bytes, NULL);
|
|
97
|
+
if (length) memcpy(out, bytes->data + offset, length);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
void scr_bytes_write(ScrBytes *bytes, size_t offset, const void *data, size_t length) {
|
|
101
|
+
SCR_SHARED_GUARD(bytes, NULL);
|
|
102
|
+
if (length) memcpy(bytes->data + offset, data, length);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
ScrStr *scr_bytes_string(const ScrBytes *bytes, size_t offset, size_t length) {
|
|
106
|
+
SCR_SHARED_GUARD(bytes, NULL);
|
|
107
|
+
return scr_str_new((const char *)bytes->data + offset, length);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
ScrBytes *scr_bytes_snapshot(const ScrBytes *bytes) {
|
|
111
|
+
if (!bytes || !bytes->shared) return NULL;
|
|
112
|
+
ScrBytes *copy = scr_bytes_copy(bytes);
|
|
113
|
+
copy->is_buffer = bytes->is_buffer;
|
|
114
|
+
copy->is_data_view = bytes->is_data_view;
|
|
115
|
+
return copy;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
void scr_bytes_snapshot_release(ScrBytes **bytes) { scr_bytes_release(*bytes); }
|
|
119
|
+
|
|
120
|
+
ScrBytes *scr_bytes_local_copy(ScrBytes *bytes) {
|
|
121
|
+
ScrBytes *copy = scr_bytes_snapshot(bytes);
|
|
122
|
+
return copy ? copy : scr_bytes_retain(bytes);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
void scr_bytes_require_unshared(const ScrBytes *bytes) {
|
|
126
|
+
if (!bytes->shared) return;
|
|
127
|
+
static const char message[] = "Shared byte storage cannot expose an unmanaged native pointer";
|
|
128
|
+
scr_throw_error_msg_code(SCR_ERR_ERROR, message, sizeof message - 1, "SC2020");
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
static bool scr_atomics_index(ScrBytes *bytes, double index, bool waitable, size_t *out) {
|
|
132
|
+
bool integer = bytes->elem == SCR_BYTES_I8 || bytes->elem == SCR_BYTES_U8 ||
|
|
133
|
+
bytes->elem == SCR_BYTES_I16 || bytes->elem == SCR_BYTES_U16 ||
|
|
134
|
+
bytes->elem == SCR_BYTES_I32 || bytes->elem == SCR_BYTES_U32;
|
|
135
|
+
if (bytes->is_data_view || !integer || (waitable && bytes->elem != SCR_BYTES_I32)) {
|
|
136
|
+
static const char message[] = "The typed array is not an integer typed array of the required kind";
|
|
137
|
+
scr_throw_error_msg(SCR_ERR_TYPE, message, sizeof message - 1);
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
double normalized = isnan(index) ? 0 : trunc(index);
|
|
141
|
+
if (!(normalized >= 0) || normalized >= (double)bytes->len) {
|
|
142
|
+
static const char message[] = "Invalid atomic access index";
|
|
143
|
+
scr_throw_error_msg(SCR_ERR_RANGE, message, sizeof message - 1);
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
*out = (size_t)normalized;
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* Operations: load, store, exchange, compareExchange, add, sub, and, or, xor.
|
|
151
|
+
* Unsigned arithmetic avoids signed overflow; the element store supplies the
|
|
152
|
+
* selected width and signedness. The lock gives one sequentially consistent
|
|
153
|
+
* order shared with ordinary accesses, including overlapping DataViews. */
|
|
154
|
+
double scr_atomics_op(ScrBytes *bytes, double index, double value, double replacement, double operation) {
|
|
155
|
+
size_t i;
|
|
156
|
+
if (!scr_atomics_index(bytes, index, false, &i)) return 0;
|
|
157
|
+
SCR_SHARED_GUARD(bytes, NULL);
|
|
158
|
+
double previous = scr_bytes_get(bytes, (double)i);
|
|
159
|
+
uint32_t before = scr_numeric_to_u32(previous), operand = scr_numeric_to_u32(value);
|
|
160
|
+
uint32_t after;
|
|
161
|
+
switch ((int)operation) {
|
|
162
|
+
case 0: return previous;
|
|
163
|
+
case 1:
|
|
164
|
+
scr_bytes_set(bytes, (double)i, value);
|
|
165
|
+
return isnan(value) || value == 0 ? 0 : trunc(value);
|
|
166
|
+
case 2: after = operand; break;
|
|
167
|
+
case 3: {
|
|
168
|
+
unsigned bits = (unsigned)scr_bytes_elem_size(bytes->elem) * 8;
|
|
169
|
+
uint32_t mask = bits == 32 ? UINT32_MAX : (UINT32_C(1) << bits) - 1;
|
|
170
|
+
if ((before & mask) != (operand & mask)) return previous;
|
|
171
|
+
after = scr_numeric_to_u32(replacement);
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
case 4: after = before + operand; break;
|
|
175
|
+
case 5: after = before - operand; break;
|
|
176
|
+
case 6: after = before & operand; break;
|
|
177
|
+
case 7: after = before | operand; break;
|
|
178
|
+
case 8: after = before ^ operand; break;
|
|
179
|
+
default: scr_trap("scriptc: invalid atomic operation\n");
|
|
180
|
+
}
|
|
181
|
+
scr_bytes_set(bytes, (double)i, (double)after);
|
|
182
|
+
return previous;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
typedef struct ScrAtomicWaiter {
|
|
186
|
+
ScrSharedBytes *storage;
|
|
187
|
+
size_t offset;
|
|
188
|
+
bool notified;
|
|
189
|
+
struct ScrAtomicWaiter *next;
|
|
190
|
+
} ScrAtomicWaiter;
|
|
191
|
+
static ScrAtomicWaiter *scr_atomic_waiters;
|
|
192
|
+
|
|
193
|
+
static void scr_atomics_pause(double ms) {
|
|
194
|
+
#if defined(SCR_WORKERS) || (defined(SCR_LIB) && defined(SCR_THREAD_INSTANCES))
|
|
195
|
+
#ifdef _WIN32
|
|
196
|
+
SleepConditionVariableSRW(&scr_shared_condition, &scr_shared_mutex, (DWORD)ceil(ms), 0);
|
|
197
|
+
#else
|
|
198
|
+
struct timespec until;
|
|
199
|
+
clock_gettime(CLOCK_REALTIME, &until);
|
|
200
|
+
until.tv_nsec += (long)(ms * 1000000.0);
|
|
201
|
+
until.tv_sec += until.tv_nsec / 1000000000;
|
|
202
|
+
until.tv_nsec %= 1000000000;
|
|
203
|
+
pthread_cond_timedwait(&scr_shared_condition, &scr_shared_mutex, &until);
|
|
204
|
+
#endif
|
|
205
|
+
#else
|
|
206
|
+
struct timespec duration = {(time_t)(ms / 1000), (long)(fmod(ms, 1000) * 1000000)};
|
|
207
|
+
nanosleep(&duration, NULL);
|
|
208
|
+
#endif
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
ScrStr *scr_atomics_wait(ScrBytes *bytes, double index, double expected, double timeout) {
|
|
212
|
+
size_t i;
|
|
213
|
+
if (!scr_atomics_index(bytes, index, true, &i)) return NULL;
|
|
214
|
+
if (!bytes->shared) {
|
|
215
|
+
static const char message[] = "[object Int32Array] is not a shared typed array.";
|
|
216
|
+
scr_throw_error_msg(SCR_ERR_TYPE, message, sizeof message - 1);
|
|
217
|
+
return NULL;
|
|
218
|
+
}
|
|
219
|
+
int32_t compare;
|
|
220
|
+
uint32_t bits = scr_numeric_to_u32(expected);
|
|
221
|
+
memcpy(&compare, &bits, sizeof compare);
|
|
222
|
+
scr_shared_enter();
|
|
223
|
+
if (scr_bytes_get(bytes, (double)i) != compare) {
|
|
224
|
+
scr_shared_leave();
|
|
225
|
+
return scr_str_new("not-equal", 9);
|
|
226
|
+
}
|
|
227
|
+
double duration = isnan(timeout) ? INFINITY : fmax(timeout, 0);
|
|
228
|
+
double end = scr_perf_now() + duration;
|
|
229
|
+
ScrAtomicWaiter waiter = {bytes->shared, (size_t)(bytes->data - bytes->shared->data) + i * 4, false, NULL};
|
|
230
|
+
ScrAtomicWaiter **tail = &scr_atomic_waiters;
|
|
231
|
+
while (*tail) tail = &(*tail)->next;
|
|
232
|
+
*tail = &waiter;
|
|
233
|
+
bool stopped = false;
|
|
234
|
+
while (!waiter.notified) {
|
|
235
|
+
double remaining = end - scr_perf_now();
|
|
236
|
+
if (!(remaining > 0)) break;
|
|
237
|
+
/* A bounded wait gives cooperative termination a safe cancellation point.
|
|
238
|
+
* Registration and condition release share the notify lock: no wakeup can
|
|
239
|
+
* fall between the expected-value check and entering the wait. */
|
|
240
|
+
scr_atomics_pause(fmin(remaining, 10));
|
|
241
|
+
#if defined(SCR_WORKERS) || (defined(SCR_LIB) && defined(SCR_THREAD_INSTANCES))
|
|
242
|
+
scr_shared_leave();
|
|
243
|
+
#ifdef SCR_WORKERS
|
|
244
|
+
stopped = scr_context_checkpoint();
|
|
245
|
+
#endif
|
|
246
|
+
scr_shared_enter();
|
|
247
|
+
if (stopped) break;
|
|
248
|
+
#endif
|
|
249
|
+
}
|
|
250
|
+
ScrAtomicWaiter **slot = &scr_atomic_waiters;
|
|
251
|
+
while (*slot != &waiter) slot = &(*slot)->next;
|
|
252
|
+
*slot = waiter.next;
|
|
253
|
+
scr_shared_leave();
|
|
254
|
+
return stopped ? NULL : scr_str_new(waiter.notified ? "ok" : "timed-out", waiter.notified ? 2 : 9);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
double scr_atomics_notify(ScrBytes *bytes, double index, double count) {
|
|
258
|
+
size_t i;
|
|
259
|
+
if (!scr_atomics_index(bytes, index, true, &i)) return 0;
|
|
260
|
+
if (!bytes->shared) return 0;
|
|
261
|
+
double limit = isnan(count) ? 0 : fmax(trunc(count), 0);
|
|
262
|
+
size_t offset = (size_t)(bytes->data - bytes->shared->data) + i * 4;
|
|
263
|
+
double notified = 0;
|
|
264
|
+
scr_shared_enter();
|
|
265
|
+
for (ScrAtomicWaiter *waiter = scr_atomic_waiters; waiter && notified < limit; waiter = waiter->next) {
|
|
266
|
+
if (waiter->storage == bytes->shared && waiter->offset == offset && !waiter->notified) {
|
|
267
|
+
waiter->notified = true;
|
|
268
|
+
notified++;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
#if defined(SCR_WORKERS) || (defined(SCR_LIB) && defined(SCR_THREAD_INSTANCES))
|
|
272
|
+
#ifdef _WIN32
|
|
273
|
+
if (notified) WakeAllConditionVariable(&scr_shared_condition);
|
|
274
|
+
#else
|
|
275
|
+
if (notified) pthread_cond_broadcast(&scr_shared_condition);
|
|
276
|
+
#endif
|
|
277
|
+
#endif
|
|
278
|
+
scr_shared_leave();
|
|
279
|
+
return notified;
|
|
280
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
#undef NDEBUG
|
|
2
|
+
#include "scr_runtime.h"
|
|
3
|
+
#include <assert.h>
|
|
4
|
+
#include <math.h>
|
|
5
|
+
#include <pthread.h>
|
|
6
|
+
#include <sched.h>
|
|
7
|
+
#include <stdatomic.h>
|
|
8
|
+
#include <stdio.h>
|
|
9
|
+
|
|
10
|
+
enum { THREADS = 4, INCREMENTS = 10000 };
|
|
11
|
+
static atomic_uint ready;
|
|
12
|
+
static atomic_bool cancel_wait;
|
|
13
|
+
typedef struct { ScrSharedBytes *storage; unsigned id; bool waiting; } Task;
|
|
14
|
+
|
|
15
|
+
static void *run(void *ptr) {
|
|
16
|
+
Task *task = ptr;
|
|
17
|
+
scr_context_enter(task->id);
|
|
18
|
+
scr_init();
|
|
19
|
+
scr_lib_init(0, NULL);
|
|
20
|
+
ScrBytes *storage = scr_shared_wrap(task->storage);
|
|
21
|
+
scr_shared_release(task->storage);
|
|
22
|
+
ScrBytes *values = scr_bytes_buffer_view(storage, SCR_BYTES_I32, 4, true, 2);
|
|
23
|
+
ScrBytes *view = scr_dataview_new(storage, 12, true, 4);
|
|
24
|
+
atomic_fetch_add_explicit(&ready, 1, memory_order_release);
|
|
25
|
+
if (task->waiting) {
|
|
26
|
+
scr_context_stop_flag(&cancel_wait);
|
|
27
|
+
ScrStr *result = scr_atomics_wait(values, 0, 0, INFINITY);
|
|
28
|
+
if (task->id == 1) {
|
|
29
|
+
assert(result && result->len == 2 && !memcmp(result->data, "ok", 2));
|
|
30
|
+
scr_str_release(result);
|
|
31
|
+
} else assert(!result && scr_context_stopping());
|
|
32
|
+
} else {
|
|
33
|
+
while (atomic_load_explicit(&ready, memory_order_acquire) != THREADS) sched_yield();
|
|
34
|
+
for (unsigned i = 0; i < INCREMENTS; i++) {
|
|
35
|
+
scr_atomics_op(values, 0, 1, 0, 4);
|
|
36
|
+
/* These accesses overlap the same shared address with different view
|
|
37
|
+
* metadata. Non-atomic JS accesses must still be C data-race-free. */
|
|
38
|
+
scr_dataview_set(view, 0, 0x12345678, SCR_DV_U32, true);
|
|
39
|
+
assert(scr_dataview_get(view, 0, SCR_DV_U32, true) == 0x12345678);
|
|
40
|
+
scr_bytes_set(values, 1, -7);
|
|
41
|
+
assert(scr_bytes_get(values, 1) == -7);
|
|
42
|
+
if (i % 100 == 0) {
|
|
43
|
+
ScrBytes *copy = scr_bytes_local_copy(storage);
|
|
44
|
+
assert(!copy->shared && copy->data != storage->data && copy->len == storage->len);
|
|
45
|
+
scr_bytes_release(copy);
|
|
46
|
+
ScrStr *text = scr_bytes_string(storage, 0, storage->len);
|
|
47
|
+
assert(text->len == storage->len);
|
|
48
|
+
scr_str_release(text);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
scr_bytes_release(values);
|
|
53
|
+
scr_bytes_release(view);
|
|
54
|
+
scr_bytes_release(storage);
|
|
55
|
+
scr_context_cleanup();
|
|
56
|
+
return NULL;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
int main(void) {
|
|
60
|
+
scr_init();
|
|
61
|
+
scr_lib_init(0, NULL);
|
|
62
|
+
ScrBytes *storage = scr_bytes_new(SCR_BYTES_U8, 16);
|
|
63
|
+
scr_bytes_make_shared(storage);
|
|
64
|
+
ScrBytes *values = scr_bytes_buffer_view(storage, SCR_BYTES_I32, 4, true, 2);
|
|
65
|
+
scr_bytes_require_unshared(values);
|
|
66
|
+
assert(scr_exc_pending());
|
|
67
|
+
scr_exc_clear();
|
|
68
|
+
ScrBytes *local = scr_bytes_new(SCR_BYTES_U8, 2);
|
|
69
|
+
ScrBytes *retained = scr_bytes_local_copy(local);
|
|
70
|
+
assert(retained == local);
|
|
71
|
+
scr_bytes_require_unshared(local);
|
|
72
|
+
assert(!scr_exc_pending());
|
|
73
|
+
scr_bytes_release(retained);
|
|
74
|
+
scr_bytes_release(local);
|
|
75
|
+
pthread_t threads[THREADS];
|
|
76
|
+
Task tasks[THREADS];
|
|
77
|
+
for (unsigned i = 0; i < THREADS; i++) {
|
|
78
|
+
tasks[i] = (Task){scr_shared_retain(storage->shared), i + 1, false};
|
|
79
|
+
assert(!pthread_create(&threads[i], NULL, run, &tasks[i]));
|
|
80
|
+
}
|
|
81
|
+
for (unsigned i = 0; i < THREADS; i++) assert(!pthread_join(threads[i], NULL));
|
|
82
|
+
assert(scr_bytes_get(values, 0) == THREADS * INCREMENTS);
|
|
83
|
+
assert(scr_atomics_op(values, 0, 3.9, 0, 1) == 3);
|
|
84
|
+
assert(scr_atomics_op(values, 0, 3, 0xffffffff, 3) == 3);
|
|
85
|
+
assert(scr_atomics_op(values, 0, 0, 0, 0) == -1);
|
|
86
|
+
assert(scr_atomics_op(values, 0, 0, 0, 2) == -1);
|
|
87
|
+
ScrStr *status = scr_atomics_wait(values, 0, 1, INFINITY);
|
|
88
|
+
assert(status && !strcmp(status->data, "not-equal"));
|
|
89
|
+
scr_str_release(status);
|
|
90
|
+
status = scr_atomics_wait(values, 0, 0, 0);
|
|
91
|
+
assert(status && !strcmp(status->data, "timed-out"));
|
|
92
|
+
scr_str_release(status);
|
|
93
|
+
|
|
94
|
+
tasks[0] = (Task){scr_shared_retain(storage->shared), 1, true};
|
|
95
|
+
assert(!pthread_create(&threads[0], NULL, run, &tasks[0]));
|
|
96
|
+
double deadline = scr_perf_now() + 5000;
|
|
97
|
+
while (scr_atomics_notify(values, 0, 1) == 0) {
|
|
98
|
+
assert(scr_perf_now() < deadline);
|
|
99
|
+
sched_yield();
|
|
100
|
+
}
|
|
101
|
+
assert(!pthread_join(threads[0], NULL));
|
|
102
|
+
assert(scr_atomics_notify(values, 0, INFINITY) == 0);
|
|
103
|
+
|
|
104
|
+
tasks[0] = (Task){scr_shared_retain(storage->shared), 2, true};
|
|
105
|
+
assert(!pthread_create(&threads[0], NULL, run, &tasks[0]));
|
|
106
|
+
atomic_store_explicit(&cancel_wait, true, memory_order_relaxed);
|
|
107
|
+
assert(!pthread_join(threads[0], NULL));
|
|
108
|
+
assert(scr_atomics_notify(values, 0, INFINITY) == 0);
|
|
109
|
+
scr_bytes_release(values);
|
|
110
|
+
scr_bytes_release(storage);
|
|
111
|
+
scr_context_cleanup();
|
|
112
|
+
puts("shared views preserve atomic updates, wait queues and cancellation ownership");
|
|
113
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
"shared views serialize concurrent accesses and cancel parked waiters",
|
|
13
|
+
async () => {
|
|
14
|
+
const dir = await mkdtemp(join(tmpdir(), "scriptc-shared-"));
|
|
15
|
+
try {
|
|
16
|
+
const bin = join(dir, "shared");
|
|
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
|
+
...["scr_shared.test.c", ...EXECUTABLE_RUNTIME_SOURCES].map((name) =>
|
|
27
|
+
join(import.meta.dirname, name),
|
|
28
|
+
),
|
|
29
|
+
...(process.platform === "linux" ? ["-lm"] : []),
|
|
30
|
+
"-o",
|
|
31
|
+
bin,
|
|
32
|
+
]);
|
|
33
|
+
const result = await exec(bin, [], {
|
|
34
|
+
timeout: 10000,
|
|
35
|
+
env: { ...process.env, UBSAN_OPTIONS: "halt_on_error=1" },
|
|
36
|
+
});
|
|
37
|
+
expect(result.stdout).toBe(
|
|
38
|
+
"shared views preserve atomic updates, wait queues and cancellation ownership\n",
|
|
39
|
+
);
|
|
40
|
+
expect(result.stderr).toBe("");
|
|
41
|
+
} finally {
|
|
42
|
+
await rm(dir, { recursive: true, force: true });
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
);
|
|
@@ -183,11 +183,11 @@ struct ScrStreamState {
|
|
|
183
183
|
* user class whose preorder number happens to collide (scr_stream_is
|
|
184
184
|
* below tests interval membership for compiler-emitted subclasses). */
|
|
185
185
|
static void scr_stream_release_direct(void *obj);
|
|
186
|
-
ScrVt scr_readable_vt = {1, 0, &scr_stream_release_direct};
|
|
187
|
-
ScrVt scr_writable_vt = {1, 0, &scr_stream_release_direct};
|
|
188
|
-
ScrVt scr_duplex_vt = {1, 0, &scr_stream_release_direct};
|
|
189
|
-
ScrVt scr_transform_vt = {1, 0, &scr_stream_release_direct};
|
|
190
|
-
ScrVt scr_passthrough_vt = {1, 0, &scr_stream_release_direct};
|
|
186
|
+
SCR_TL ScrVt scr_readable_vt = {1, 0, &scr_stream_release_direct};
|
|
187
|
+
SCR_TL ScrVt scr_writable_vt = {1, 0, &scr_stream_release_direct};
|
|
188
|
+
SCR_TL ScrVt scr_duplex_vt = {1, 0, &scr_stream_release_direct};
|
|
189
|
+
SCR_TL ScrVt scr_transform_vt = {1, 0, &scr_stream_release_direct};
|
|
190
|
+
SCR_TL ScrVt scr_passthrough_vt = {1, 0, &scr_stream_release_direct};
|
|
191
191
|
|
|
192
192
|
static bool scr_vt_within(const ScrVt *vt, const ScrVt *cls) {
|
|
193
193
|
return cls->pre <= vt->pre && vt->pre <= cls->post;
|
|
@@ -353,8 +353,8 @@ typedef struct ScrStreamTick {
|
|
|
353
353
|
struct ScrStreamTick *next;
|
|
354
354
|
} ScrStreamTick;
|
|
355
355
|
|
|
356
|
-
static ScrStreamTick *scr_st_head = NULL;
|
|
357
|
-
static ScrStreamTick *scr_st_tail = NULL;
|
|
356
|
+
static SCR_TL ScrStreamTick *scr_st_head = NULL;
|
|
357
|
+
static SCR_TL ScrStreamTick *scr_st_tail = NULL;
|
|
358
358
|
|
|
359
359
|
static void scr_stream_dispatch_one(void);
|
|
360
360
|
|
|
@@ -512,7 +512,7 @@ static void *scr_stream_rbuf_take(ScrStreamState *st, size_t n) {
|
|
|
512
512
|
ScrBytes *head = st->r.buf[0];
|
|
513
513
|
size_t avail = head->len - st->r.head_off;
|
|
514
514
|
size_t take = avail < n - at ? avail : n - at;
|
|
515
|
-
|
|
515
|
+
scr_bytes_read(head, st->r.head_off, out->data + at, take);
|
|
516
516
|
at += take;
|
|
517
517
|
st->r.head_off += take;
|
|
518
518
|
if (st->r.head_off == head->len) {
|
|
@@ -2544,7 +2544,7 @@ ScrStream *scr_stream_set_encoding(ScrStream *s, ScrStr *enc) {
|
|
|
2544
2544
|
ScrBytes *view = chunk;
|
|
2545
2545
|
if (i == 0 && skip > 0) {
|
|
2546
2546
|
view = scr_bytes_new(SCR_BYTES_U8, (double)(chunk->len - skip));
|
|
2547
|
-
|
|
2547
|
+
scr_bytes_read(chunk, skip, view->data, chunk->len - skip);
|
|
2548
2548
|
}
|
|
2549
2549
|
ScrStr *piece = scr_strdec_write(st->r.enc, st->r.dec_pending, view);
|
|
2550
2550
|
st->r.dec_pending = scr_strdec_next(st->r.enc, st->r.dec_pending, view);
|