@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
|
@@ -215,7 +215,7 @@ typedef struct ScrH2HuffNode {
|
|
|
215
215
|
int sym; /* -1 = interior */
|
|
216
216
|
} ScrH2HuffNode;
|
|
217
217
|
|
|
218
|
-
static ScrH2HuffNode *scr_h2_huff_root = NULL;
|
|
218
|
+
static SCR_TL ScrH2HuffNode *scr_h2_huff_root = NULL;
|
|
219
219
|
|
|
220
220
|
static ScrH2HuffNode *scr_h2_huff_node(void) {
|
|
221
221
|
ScrH2HuffNode *n = calloc(1, sizeof *n);
|
|
@@ -762,8 +762,8 @@ struct ScrH2Session {
|
|
|
762
762
|
/* ── refcounts + the RC audit ────────────────────────────────────────── */
|
|
763
763
|
|
|
764
764
|
#ifdef SCR_RC_AUDIT
|
|
765
|
-
static long scr_h2_sessions_live = 0;
|
|
766
|
-
static long scr_h2_streams_live = 0;
|
|
765
|
+
static SCR_TL long scr_h2_sessions_live = 0;
|
|
766
|
+
static SCR_TL long scr_h2_streams_live = 0;
|
|
767
767
|
long scr_http2_live_count(void) { return scr_h2_sessions_live + scr_h2_streams_live; }
|
|
768
768
|
#endif
|
|
769
769
|
|
|
@@ -885,9 +885,9 @@ typedef struct {
|
|
|
885
885
|
void *h; /* +1, typed by kind */
|
|
886
886
|
} ScrH2Emit;
|
|
887
887
|
|
|
888
|
-
static ScrH2Emit *scr_h2_emits = NULL;
|
|
889
|
-
static size_t scr_h2_emits_head = 0, scr_h2_emits_len = 0, scr_h2_emits_cap = 0;
|
|
890
|
-
static bool scr_h2_exiting = false;
|
|
888
|
+
static SCR_TL ScrH2Emit *scr_h2_emits = NULL;
|
|
889
|
+
static SCR_TL size_t scr_h2_emits_head = 0, scr_h2_emits_len = 0, scr_h2_emits_cap = 0;
|
|
890
|
+
static SCR_TL bool scr_h2_exiting = false;
|
|
891
891
|
|
|
892
892
|
static void scr_h2_emit_release(ScrH2Emit *e) {
|
|
893
893
|
switch (e->kind) {
|
|
@@ -1249,10 +1249,10 @@ static void scr_h2_connect_hook(void *ctx, ScrClosure *cb, void *h1_fn, void *h2
|
|
|
1249
1249
|
static void scr_h2_upgrade_hook(void *ctx, ScrClosure *cb, void *fn, bool once);
|
|
1250
1250
|
|
|
1251
1251
|
static void scr_http2_install(void) {
|
|
1252
|
-
static bool installed = false;
|
|
1252
|
+
static SCR_TL bool installed = false;
|
|
1253
1253
|
if (installed) return;
|
|
1254
1254
|
installed = true;
|
|
1255
|
-
|
|
1255
|
+
scr_atexit(scr_h2_cleanup_atexit);
|
|
1256
1256
|
scr_net_set_proto_sweep(&scr_h2_proto_pending, &scr_h2_proto_sweep);
|
|
1257
1257
|
/* the compat seam: scr_http.c routes h2-backed responses through the
|
|
1258
1258
|
* ops vtable and h2-tagged 'request' registrations through the hook */
|
|
@@ -1887,6 +1887,7 @@ void scr_http2_stream_write_str(ScrH2Stream *st, ScrStr *data /*borrowed*/) {
|
|
|
1887
1887
|
}
|
|
1888
1888
|
|
|
1889
1889
|
void scr_http2_stream_write_bytes(ScrH2Stream *st, ScrBytes *data /*borrowed*/) {
|
|
1890
|
+
SCR_BYTES_SNAPSHOT(data);
|
|
1890
1891
|
scr_h2_stream_send(st, (const char *)data->data, (size_t)(data->len * scr_bytes_elem_size(data->elem)));
|
|
1891
1892
|
}
|
|
1892
1893
|
|
|
@@ -1904,6 +1905,7 @@ void scr_http2_stream_end_str(ScrH2Stream *st, ScrStr *data /*borrowed*/) {
|
|
|
1904
1905
|
}
|
|
1905
1906
|
|
|
1906
1907
|
void scr_http2_stream_end_bytes(ScrH2Stream *st, ScrBytes *data /*borrowed*/) {
|
|
1908
|
+
SCR_BYTES_SNAPSHOT(data);
|
|
1907
1909
|
if (st->destroyed || st->want_end || scr_h2_stream_local_closed(st)) return;
|
|
1908
1910
|
scr_h2_buf_put(&st->wbuf, (const char *)data->data, (size_t)(data->len * scr_bytes_elem_size(data->elem)));
|
|
1909
1911
|
st->want_end = true;
|
|
@@ -629,6 +629,7 @@ ScrStr *scr_insp_regex(ScrRegex *re) {
|
|
|
629
629
|
* runs before the depth check in Node). u8 element kind only (the
|
|
630
630
|
* frontend fences the rest). */
|
|
631
631
|
ScrStr *scr_insp_buffer(ScrBytes *b) {
|
|
632
|
+
SCR_SHARED_GUARD(b, NULL);
|
|
632
633
|
InspBuf out = {0};
|
|
633
634
|
ib_cstr(&out, "<Buffer ");
|
|
634
635
|
size_t max = b->len < 50 ? b->len : 50;
|
|
@@ -587,7 +587,7 @@ static void isl_init(void) {
|
|
|
587
587
|
isl_register_hostfn_class();
|
|
588
588
|
/* LIFO: registered after scr_init's handlers, so teardown runs before
|
|
589
589
|
* the cycle collection + RC audit — the audit sees the engine gone. */
|
|
590
|
-
|
|
590
|
+
scr_atexit(isl_teardown_at_exit);
|
|
591
591
|
}
|
|
592
592
|
|
|
593
593
|
/* Nesting depth of host-function callbacks (scriptc closures invoked BY
|
|
@@ -208,6 +208,12 @@ void scr_jb_put_str(ScrJsonBuf *b, const ScrStr *s) {
|
|
|
208
208
|
|
|
209
209
|
void scr_jb_puts(ScrJsonBuf *b, const char *s) { scr_jb_write(b, s, strlen(s)); }
|
|
210
210
|
|
|
211
|
+
void scr_jb_put_number(ScrJsonBuf *b, double v) {
|
|
212
|
+
char buf[32];
|
|
213
|
+
size_t n = scr_f64_to_str(v, buf);
|
|
214
|
+
scr_jb_write(b, buf, n);
|
|
215
|
+
}
|
|
216
|
+
|
|
211
217
|
void scr_jb_put_f64(ScrJsonBuf *b, double v) {
|
|
212
218
|
/* JSON.stringify number rules: non-finite → null, -0 → "0" (String(-0)
|
|
213
219
|
* is "0" too, so scr_f64_to_str would agree — the zero test just makes
|
|
@@ -220,9 +226,7 @@ void scr_jb_put_f64(ScrJsonBuf *b, double v) {
|
|
|
220
226
|
scr_jb_putc(b, '0');
|
|
221
227
|
return;
|
|
222
228
|
}
|
|
223
|
-
|
|
224
|
-
size_t n = scr_f64_to_str(v, buf);
|
|
225
|
-
scr_jb_write(b, buf, n);
|
|
229
|
+
scr_jb_put_number(b, v);
|
|
226
230
|
}
|
|
227
231
|
|
|
228
232
|
/* Find the next quote, backslash or control byte. memcpy keeps the word
|
|
@@ -254,32 +258,46 @@ static size_t scr_json_plain_bytes(const char *data, size_t len) {
|
|
|
254
258
|
}
|
|
255
259
|
|
|
256
260
|
static void scr_jb_put_json_span(ScrJsonBuf *b, const char *data, size_t len) {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
+
if (len > SIZE_MAX - 2) scr_json_oom();
|
|
262
|
+
size_t run = scr_json_plain_bytes(data, len);
|
|
263
|
+
/* The overwhelmingly common unescaped string needs one capacity check,
|
|
264
|
+
* including both quotes, and no per-byte builder calls. */
|
|
265
|
+
scr_jb_grow(b, run + 2);
|
|
266
|
+
b->data[b->len++] = '"';
|
|
267
|
+
if (run) memcpy(b->data + b->len, data, run);
|
|
268
|
+
b->len += run;
|
|
269
|
+
size_t i = run;
|
|
261
270
|
while (i < len) {
|
|
262
|
-
size_t run = scr_json_plain_bytes(data + i, len - i);
|
|
263
|
-
scr_jb_write(b, data + i, run);
|
|
264
|
-
i += run;
|
|
265
|
-
if (i == len) break;
|
|
266
271
|
unsigned char c = (unsigned char)data[i++];
|
|
272
|
+
char escaped[6] = {'\\', 0, '0', '0', 0, 0};
|
|
273
|
+
size_t count = 2;
|
|
267
274
|
switch (c) {
|
|
268
|
-
case '"':
|
|
269
|
-
case '\\':
|
|
270
|
-
case '\n':
|
|
271
|
-
case '\r':
|
|
272
|
-
case '\t':
|
|
273
|
-
case '\b':
|
|
274
|
-
case '\f':
|
|
275
|
+
case '"': escaped[1] = '"'; break;
|
|
276
|
+
case '\\': escaped[1] = '\\'; break;
|
|
277
|
+
case '\n': escaped[1] = 'n'; break;
|
|
278
|
+
case '\r': escaped[1] = 'r'; break;
|
|
279
|
+
case '\t': escaped[1] = 't'; break;
|
|
280
|
+
case '\b': escaped[1] = 'b'; break;
|
|
281
|
+
case '\f': escaped[1] = 'f'; break;
|
|
275
282
|
default: {
|
|
276
|
-
char
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
283
|
+
static const char hex[] = "0123456789abcdef";
|
|
284
|
+
escaped[1] = 'u';
|
|
285
|
+
escaped[4] = hex[c >> 4];
|
|
286
|
+
escaped[5] = hex[c & 15];
|
|
287
|
+
count = 6;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
run = scr_json_plain_bytes(data + i, len - i);
|
|
291
|
+
if (run > SIZE_MAX - count) scr_json_oom();
|
|
292
|
+
scr_jb_grow(b, count + run);
|
|
293
|
+
memcpy(b->data + b->len, escaped, count);
|
|
294
|
+
b->len += count;
|
|
295
|
+
if (run) memcpy(b->data + b->len, data + i, run);
|
|
296
|
+
b->len += run;
|
|
297
|
+
i += run;
|
|
281
298
|
}
|
|
282
|
-
|
|
299
|
+
scr_jb_grow(b, 1);
|
|
300
|
+
b->data[b->len++] = '"';
|
|
283
301
|
}
|
|
284
302
|
|
|
285
303
|
void scr_jb_put_json_str(ScrJsonBuf *b, const ScrStr *s) {
|
|
@@ -302,6 +320,81 @@ ScrStr *scr_jb_finish(ScrJsonBuf *b) {
|
|
|
302
320
|
return s;
|
|
303
321
|
}
|
|
304
322
|
|
|
323
|
+
/* Write newline and a repeated gap with one reservation. Copies never
|
|
324
|
+
* overlap: each doubling reads only the already initialized prefix. */
|
|
325
|
+
static void scr_jb_indent(ScrJsonBuf *b, const char *gap, size_t gap_len, size_t depth) {
|
|
326
|
+
if (gap_len && depth > (SIZE_MAX - 1) / gap_len) scr_json_oom();
|
|
327
|
+
size_t count = gap_len * depth;
|
|
328
|
+
scr_jb_grow(b, count + 1);
|
|
329
|
+
b->data[b->len++] = '\n';
|
|
330
|
+
if (!count) return;
|
|
331
|
+
memcpy(b->data + b->len, gap, gap_len);
|
|
332
|
+
size_t filled = gap_len;
|
|
333
|
+
while (filled < count) {
|
|
334
|
+
size_t take = filled < count - filled ? filled : count - filled;
|
|
335
|
+
memcpy(b->data + b->len + filled, b->data + b->len, take);
|
|
336
|
+
filled += take;
|
|
337
|
+
}
|
|
338
|
+
b->len += count;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
ScrStr *scr_json_indent(const ScrStr *compact, const char *gap, size_t gap_len) {
|
|
342
|
+
if (!gap_len) return scr_str_retain((ScrStr *)compact);
|
|
343
|
+
/* Node stops copying the gap at its first NUL but still inserts breaks
|
|
344
|
+
* and colon spaces when the original gap is nonempty. */
|
|
345
|
+
const char *end = memchr(gap, 0, gap_len);
|
|
346
|
+
if (end) gap_len = (size_t)(end - gap);
|
|
347
|
+
ScrJsonBuf b;
|
|
348
|
+
scr_jb_init(&b);
|
|
349
|
+
size_t depth = 0, start = 0, i = 0;
|
|
350
|
+
while (i < compact->len) {
|
|
351
|
+
char c = compact->data[i];
|
|
352
|
+
if (c == '"') {
|
|
353
|
+
/* Quoted punctuation is data. Scan ordinary runs and skip the byte
|
|
354
|
+
* after each backslash so an escaped quote cannot end this string. */
|
|
355
|
+
i++;
|
|
356
|
+
while (i < compact->len) {
|
|
357
|
+
i += scr_json_plain_bytes(compact->data + i, compact->len - i);
|
|
358
|
+
if (i == compact->len) break;
|
|
359
|
+
if (compact->data[i] == '\\') {
|
|
360
|
+
i += compact->len - i >= 2 ? 2 : 1;
|
|
361
|
+
} else {
|
|
362
|
+
i++;
|
|
363
|
+
break;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
continue;
|
|
367
|
+
}
|
|
368
|
+
if (c == '{' || c == '[') {
|
|
369
|
+
char closer = c == '{' ? '}' : ']';
|
|
370
|
+
if (i + 1 < compact->len && compact->data[i + 1] == closer) {
|
|
371
|
+
i += 2;
|
|
372
|
+
continue;
|
|
373
|
+
}
|
|
374
|
+
scr_jb_write(&b, compact->data + start, i + 1 - start);
|
|
375
|
+
scr_jb_indent(&b, gap, gap_len, ++depth);
|
|
376
|
+
start = ++i;
|
|
377
|
+
continue;
|
|
378
|
+
}
|
|
379
|
+
if (c == '}' || c == ']') {
|
|
380
|
+
scr_jb_write(&b, compact->data + start, i - start);
|
|
381
|
+
scr_jb_indent(&b, gap, gap_len, --depth);
|
|
382
|
+
start = i++;
|
|
383
|
+
continue;
|
|
384
|
+
}
|
|
385
|
+
if (c == ',' || c == ':') {
|
|
386
|
+
scr_jb_write(&b, compact->data + start, i + 1 - start);
|
|
387
|
+
if (c == ',') scr_jb_indent(&b, gap, gap_len, depth);
|
|
388
|
+
else scr_jb_putc(&b, ' ');
|
|
389
|
+
start = ++i;
|
|
390
|
+
continue;
|
|
391
|
+
}
|
|
392
|
+
i++;
|
|
393
|
+
}
|
|
394
|
+
scr_jb_write(&b, compact->data + start, compact->len - start);
|
|
395
|
+
return scr_jb_finish(&b);
|
|
396
|
+
}
|
|
397
|
+
|
|
305
398
|
/* ── circular-structure detection ──────────────────────────────────────
|
|
306
399
|
* RECURSIVE record types permit runtime reference cycles; JSON.stringify
|
|
307
400
|
* of a cyclic value throws V8's exact TypeError. The compiler-emitted
|
|
@@ -821,6 +914,8 @@ static void scr_dyn_dispose(ScrDyn *d, bool collected) {
|
|
|
821
914
|
|
|
822
915
|
static void scr_dyn_gcfree(void *ptr) { scr_dyn_dispose(ptr, true); }
|
|
823
916
|
|
|
917
|
+
static void scr_dyn_destroy(void *ptr) { scr_dyn_dispose(ptr, false); }
|
|
918
|
+
|
|
824
919
|
void scr_dyn_release(ScrDyn *d) {
|
|
825
920
|
if (!d || d->rc == SIZE_MAX) return;
|
|
826
921
|
if (--d->rc != 0) {
|
|
@@ -831,7 +926,7 @@ void scr_dyn_release(ScrDyn *d) {
|
|
|
831
926
|
return;
|
|
832
927
|
}
|
|
833
928
|
scr_cyc_on_dead(d);
|
|
834
|
-
|
|
929
|
+
scr_rc_destroy(d, scr_dyn_destroy);
|
|
835
930
|
}
|
|
836
931
|
|
|
837
932
|
/* Small objects retain their compact linear representation. A wide object
|
|
@@ -880,7 +975,7 @@ static SCR_TL size_t scr_dyn_property_hints[SCR_DYN_PROPERTY_HINTS];
|
|
|
880
975
|
static ScrDynEntry *scr_dyn_find_linear_entry(const ScrDyn *object, const char *key, size_t length) {
|
|
881
976
|
for (size_t i = 0; i < object->v.obj.len; i++) {
|
|
882
977
|
ScrDynEntry *entry = &object->v.obj.entries[i];
|
|
883
|
-
if (entry->key_len == length &&
|
|
978
|
+
if (entry->key_len == length && scr_key_equal(entry->key, key, length)) return entry;
|
|
884
979
|
}
|
|
885
980
|
return NULL;
|
|
886
981
|
}
|
|
@@ -891,7 +986,7 @@ static __attribute__((noinline)) ScrDynEntry *scr_dyn_find_indexed_entry(
|
|
|
891
986
|
size_t slot = scr_key_hash(key, length) & (index->buckets - 1);
|
|
892
987
|
while (index->slots[slot]) {
|
|
893
988
|
ScrDynEntry *entry = &object->v.obj.entries[index->slots[slot] - 1];
|
|
894
|
-
if (entry->key_len == length &&
|
|
989
|
+
if (entry->key_len == length && scr_key_equal(entry->key, key, length)) return entry;
|
|
895
990
|
slot = (slot + 1) & (index->buckets - 1);
|
|
896
991
|
}
|
|
897
992
|
return NULL;
|
|
@@ -904,7 +999,7 @@ static ScrDynEntry *scr_dyn_find_entry(const ScrDyn *object, const char *key, si
|
|
|
904
999
|
size_t hint = scr_dyn_property_hints[slot];
|
|
905
1000
|
if (hint < object->v.obj.len) {
|
|
906
1001
|
ScrDynEntry *entry = &object->v.obj.entries[hint];
|
|
907
|
-
if (entry->key_len == length &&
|
|
1002
|
+
if (entry->key_len == length && scr_key_equal(entry->key, key, length)) return entry;
|
|
908
1003
|
}
|
|
909
1004
|
ScrDynEntry *entry = scr_dyn_find_linear_entry(object, key, length);
|
|
910
1005
|
if (entry) scr_dyn_property_hints[slot] = (size_t)(entry - object->v.obj.entries);
|
|
@@ -2173,7 +2268,9 @@ bool scr_dyn_util_type_is(const ScrDyn *value, const ScrStr *probe) {
|
|
|
2173
2268
|
if (!value) return false;
|
|
2174
2269
|
if (value->kind == SCR_DYN_JSVAL) return scr_dyn_jsval_ops()->type_probe(value->v.jsval.cell, probe);
|
|
2175
2270
|
#define PROBE(name) (probe->len == sizeof(name) - 1 && memcmp(probe->data, name, sizeof(name) - 1) == 0)
|
|
2176
|
-
if (PROBE("isAnyArrayBuffer")
|
|
2271
|
+
if (PROBE("isAnyArrayBuffer")) return scr_buffer_storage_is(value);
|
|
2272
|
+
if (PROBE("isArrayBuffer")) return scr_array_buffer_is(value);
|
|
2273
|
+
if (PROBE("isSharedArrayBuffer")) return scr_shared_array_buffer_is(value);
|
|
2177
2274
|
if (PROBE("isArrayBufferView")) return value->kind == SCR_DYN_BYTES;
|
|
2178
2275
|
if (PROBE("isDataView")) return value->kind == SCR_DYN_BYTES && value->v.bytes->is_data_view;
|
|
2179
2276
|
if (PROBE("isTypedArray")) return value->kind == SCR_DYN_BYTES && !value->v.bytes->is_data_view;
|
|
@@ -2411,7 +2508,7 @@ void scr_dyn_chunk_enc(bool utf8) { scr_dyn_chunk_utf8 = utf8; }
|
|
|
2411
2508
|
* a Buffer-flavored bytes box, or a string inside a setEncoding window. */
|
|
2412
2509
|
ScrDyn *scr_dyn_new_chunk(const ScrBytes *b) {
|
|
2413
2510
|
if (scr_dyn_chunk_utf8) {
|
|
2414
|
-
ScrStr *s =
|
|
2511
|
+
ScrStr *s = scr_bytes_string(b, 0, b->len);
|
|
2415
2512
|
ScrDyn *d = scr_dyn_new_str(s);
|
|
2416
2513
|
scr_str_release(s);
|
|
2417
2514
|
return d;
|
|
@@ -2589,7 +2686,7 @@ ScrDyn *scr_dyn_bind(ScrDyn *target, ScrDyn *const *args, size_t argc) {
|
|
|
2589
2686
|
* always-linked core never references gated units. A missing tag at use
|
|
2590
2687
|
* is an internal error: emitted programs install a unit's ops whenever
|
|
2591
2688
|
* they can box its handles. */
|
|
2592
|
-
static const ScrDynHandleOps *scr_dynh_ops[SCR_DYNH_COUNT];
|
|
2689
|
+
static SCR_TL const ScrDynHandleOps *scr_dynh_ops[SCR_DYNH_COUNT];
|
|
2593
2690
|
|
|
2594
2691
|
void scr_dyn_handle_install(ScrDynHandleTag tag, const ScrDynHandleOps *ops) {
|
|
2595
2692
|
scr_dynh_ops[tag] = ops;
|
|
@@ -2836,6 +2933,7 @@ ScrDyn *scr_dyn_new_handle(void *h, ScrDynHandleTag tag) {
|
|
|
2836
2933
|
d->v.handle.ptr = scr_dyn_handle_ops(tag)->retain(h);
|
|
2837
2934
|
d->v.handle.tag = tag;
|
|
2838
2935
|
d->v.handle.traced = tag == SCR_DYNH_WEAK_MAP || tag == SCR_DYNH_WEAK_SET ||
|
|
2936
|
+
tag == SCR_DYNH_WORKER || tag == SCR_DYNH_MESSAGE_PORT ||
|
|
2839
2937
|
((tag == SCR_DYNH_SET || tag == SCR_DYNH_MAP) &&
|
|
2840
2938
|
(((ScrMap *)h)->key_trace != NULL || ((ScrMap *)h)->val_trace != NULL));
|
|
2841
2939
|
return d;
|
|
@@ -2845,8 +2943,8 @@ ScrDyn *scr_dyn_new_handle(void *h, ScrDynHandleTag tag) {
|
|
|
2845
2943
|
* allocator view; the freelist stays private, and the release arm's
|
|
2846
2944
|
* scr_promise_release edge installs HERE — a promise-free link never
|
|
2847
2945
|
* references the fiber machinery (the unit-test subset links). */
|
|
2848
|
-
void (*scr_dyn_promise_release_fn)(ScrPromise *p) = NULL;
|
|
2849
|
-
bool (*scr_dyn_promise_identity_fn)(ScrPromise *a, ScrPromise *b) = NULL;
|
|
2946
|
+
SCR_TL void (*scr_dyn_promise_release_fn)(ScrPromise *p) = NULL;
|
|
2947
|
+
SCR_TL bool (*scr_dyn_promise_identity_fn)(ScrPromise *a, ScrPromise *b) = NULL;
|
|
2850
2948
|
|
|
2851
2949
|
ScrDyn *scr_dyn_alloc_promise(void (*release_fn)(ScrPromise *p)) {
|
|
2852
2950
|
scr_dyn_promise_release_fn = release_fn;
|
|
@@ -3011,7 +3109,15 @@ typedef struct {
|
|
|
3011
3109
|
static SCR_TL ScrDynThisEnt *scr_dyn_this_stack;
|
|
3012
3110
|
static SCR_TL size_t scr_dyn_this_n, scr_dyn_this_cap;
|
|
3013
3111
|
|
|
3112
|
+
static void scr_dyn_this_cleanup(void) {
|
|
3113
|
+
while (scr_dyn_this_n) scr_dyn_this_pop();
|
|
3114
|
+
free(scr_dyn_this_stack);
|
|
3115
|
+
scr_dyn_this_stack = NULL;
|
|
3116
|
+
scr_dyn_this_cap = 0;
|
|
3117
|
+
}
|
|
3118
|
+
|
|
3014
3119
|
static ScrDynThisEnt *scr_dyn_this_grow(void) {
|
|
3120
|
+
if (!scr_dyn_this_stack) scr_atexit(scr_dyn_this_cleanup);
|
|
3015
3121
|
if (scr_dyn_this_n == scr_dyn_this_cap) {
|
|
3016
3122
|
size_t cap = scr_dyn_this_cap ? scr_dyn_this_cap * 2 : 8;
|
|
3017
3123
|
ScrDynThisEnt *s = realloc(scr_dyn_this_stack, cap * sizeof *s);
|
|
@@ -4220,7 +4326,7 @@ ScrStr *scr_dyn_object_tag(const ScrDyn *d) {
|
|
|
4220
4326
|
case SCR_DYN_OBJ: tag = "[object Object]"; break;
|
|
4221
4327
|
case SCR_DYN_HANDLE:
|
|
4222
4328
|
if ((d->v.handle.tag >= SCR_DYNH_ABORT_SIGNAL &&
|
|
4223
|
-
d->v.handle.tag <= SCR_DYNH_ABORT_CONTROLLER) || d->v.handle.tag == SCR_DYNH_ARRAY_BUFFER ||
|
|
4329
|
+
d->v.handle.tag <= SCR_DYNH_ABORT_CONTROLLER) || d->v.handle.tag == SCR_DYNH_ARRAY_BUFFER || d->v.handle.tag == SCR_DYNH_SHARED_ARRAY_BUFFER ||
|
|
4224
4330
|
d->v.handle.tag == SCR_DYNH_WEAK_MAP || d->v.handle.tag == SCR_DYNH_WEAK_SET ||
|
|
4225
4331
|
d->v.handle.tag == SCR_DYNH_SET || d->v.handle.tag == SCR_DYNH_MAP || d->v.handle.tag == SCR_DYNH_REGEXP ||
|
|
4226
4332
|
d->v.handle.tag == SCR_DYNH_DATE) {
|
|
@@ -4713,7 +4819,7 @@ ScrStr *scr_dyn_to_string(const ScrDyn *d, const ScrStr *enc) {
|
|
|
4713
4819
|
return out;
|
|
4714
4820
|
}
|
|
4715
4821
|
if ((d->v.handle.tag >= SCR_DYNH_ABORT_SIGNAL &&
|
|
4716
|
-
d->v.handle.tag <= SCR_DYNH_ABORT_CONTROLLER) || d->v.handle.tag == SCR_DYNH_ARRAY_BUFFER || d->v.handle.tag == SCR_DYNH_SET || d->v.handle.tag == SCR_DYNH_MAP) {
|
|
4822
|
+
d->v.handle.tag <= SCR_DYNH_ABORT_CONTROLLER) || d->v.handle.tag == SCR_DYNH_ARRAY_BUFFER || d->v.handle.tag == SCR_DYNH_SHARED_ARRAY_BUFFER || d->v.handle.tag == SCR_DYNH_SET || d->v.handle.tag == SCR_DYNH_MAP) {
|
|
4717
4823
|
ScrJsonBuf b;
|
|
4718
4824
|
scr_jb_init(&b);
|
|
4719
4825
|
scr_jb_puts(&b, "[object ");
|
|
@@ -6599,8 +6705,9 @@ static bool scr_json_omitted(const ScrDyn *value) {
|
|
|
6599
6705
|
|
|
6600
6706
|
static void scr_json_gap(ScrJsonBuf *buffer, const ScrStr *gap, size_t depth) {
|
|
6601
6707
|
if (!gap->len) return;
|
|
6602
|
-
|
|
6603
|
-
|
|
6708
|
+
const char *end = memchr(gap->data, 0, gap->len);
|
|
6709
|
+
size_t length = end ? (size_t)(end - gap->data) : gap->len;
|
|
6710
|
+
scr_jb_indent(buffer, gap->data, length, depth);
|
|
6604
6711
|
}
|
|
6605
6712
|
|
|
6606
6713
|
/* These primitive values cannot invoke toJSON or mutate a containing frame.
|
|
@@ -8639,6 +8746,14 @@ bool scr_array_buffer_is(const ScrDyn *value) {
|
|
|
8639
8746
|
return value->kind == SCR_DYN_HANDLE && value->v.handle.tag == SCR_DYNH_ARRAY_BUFFER;
|
|
8640
8747
|
}
|
|
8641
8748
|
|
|
8749
|
+
bool scr_shared_array_buffer_is(const ScrDyn *value) {
|
|
8750
|
+
return value->kind == SCR_DYN_HANDLE && value->v.handle.tag == SCR_DYNH_SHARED_ARRAY_BUFFER;
|
|
8751
|
+
}
|
|
8752
|
+
|
|
8753
|
+
bool scr_buffer_storage_is(const ScrDyn *value) {
|
|
8754
|
+
return scr_array_buffer_is(value) || scr_shared_array_buffer_is(value);
|
|
8755
|
+
}
|
|
8756
|
+
|
|
8642
8757
|
bool scr_array_buffer_is_view(const ScrDyn *value) {
|
|
8643
8758
|
return value->kind == SCR_DYN_BYTES;
|
|
8644
8759
|
}
|
|
@@ -8647,8 +8762,9 @@ static ScrDyn *scr_array_buffer_get(void *h, const char *key, size_t len) {
|
|
|
8647
8762
|
if ((len == 10 && memcmp(key, "byteLength", len) == 0) ||
|
|
8648
8763
|
(len == 13 && memcmp(key, "maxByteLength", len) == 0))
|
|
8649
8764
|
return scr_dyn_new_num(scr_bytes_byte_len(h));
|
|
8650
|
-
if (
|
|
8651
|
-
|
|
8765
|
+
if (len == 8 && !memcmp(key, "growable", len) && ((ScrBytes *)h)->shared) return scr_dyn_new_bool(false);
|
|
8766
|
+
if (!((ScrBytes *)h)->shared && ((len == 9 && memcmp(key, "resizable", len) == 0) ||
|
|
8767
|
+
(len == 8 && memcmp(key, "detached", len) == 0))) return scr_dyn_new_bool(false);
|
|
8652
8768
|
return NULL;
|
|
8653
8769
|
}
|
|
8654
8770
|
|
|
@@ -8667,6 +8783,7 @@ static ScrDyn *scr_array_buffer_invoke(void *h, ScrDyn *self, const char *method
|
|
|
8667
8783
|
ScrBytes *view = scr_bytes_buffer_view(h, SCR_BYTES_U8, 0, false, 0);
|
|
8668
8784
|
if (!view) return NULL;
|
|
8669
8785
|
ScrBytes *copy = scr_bytes_slice(view, start, end);
|
|
8786
|
+
if (((ScrBytes *)h)->shared) scr_bytes_make_shared(copy);
|
|
8670
8787
|
scr_bytes_release(view);
|
|
8671
8788
|
ScrDyn *result = scr_array_buffer_from_bytes(copy);
|
|
8672
8789
|
scr_bytes_release(copy);
|
|
@@ -8682,8 +8799,13 @@ ScrDyn *scr_array_buffer_from_bytes(ScrBytes *view) {
|
|
|
8682
8799
|
"ArrayBuffer", &scr_bytes_retain_v, &scr_bytes_release_v,
|
|
8683
8800
|
&scr_array_buffer_invoke, &scr_array_buffer_get, &scr_array_buffer_set, NULL,
|
|
8684
8801
|
};
|
|
8685
|
-
|
|
8686
|
-
|
|
8802
|
+
static const ScrDynHandleOps shared_ops = {
|
|
8803
|
+
"SharedArrayBuffer", &scr_bytes_retain_v, &scr_bytes_release_v,
|
|
8804
|
+
&scr_array_buffer_invoke, &scr_array_buffer_get, &scr_array_buffer_set, NULL,
|
|
8805
|
+
};
|
|
8806
|
+
ScrDynHandleTag tag = view->shared ? SCR_DYNH_SHARED_ARRAY_BUFFER : SCR_DYNH_ARRAY_BUFFER;
|
|
8807
|
+
scr_dyn_handle_install(tag, view->shared ? &shared_ops : &ops);
|
|
8808
|
+
return scr_dyn_new_handle(view->backing ? view->backing : view, tag);
|
|
8687
8809
|
}
|
|
8688
8810
|
|
|
8689
8811
|
static ScrDyn *scr_ffi_fail(const char *message) {
|
|
@@ -8714,7 +8836,8 @@ ScrDyn *scr_ffi_argument(ScrDyn *value, ScrStr *type) {
|
|
|
8714
8836
|
void *address = NULL;
|
|
8715
8837
|
bool converted = value->kind == SCR_DYN_NULL || value->kind == SCR_DYN_UNDEF;
|
|
8716
8838
|
ScrBytes *bytes = value->kind == SCR_DYN_BYTES ? value->v.bytes :
|
|
8717
|
-
|
|
8839
|
+
scr_buffer_storage_is(value) ? value->v.handle.ptr : NULL;
|
|
8840
|
+
if (bytes && bytes->shared) return scr_ffi_fail("Shared byte storage cannot expose an unmanaged native pointer");
|
|
8718
8841
|
if (bytes) { address = bytes->data; converted = true; }
|
|
8719
8842
|
if (value->kind == SCR_DYN_STR) {
|
|
8720
8843
|
if (memchr(value->v.str->data, 0, value->v.str->len)) {
|
|
@@ -8964,6 +9087,7 @@ static ScrDyn *scr_ffi_memory_call(ScrClosure *closure, ScrDyn *const *args, siz
|
|
|
8964
9087
|
scr_dyn_arg_type_fail("source", "an ArrayBuffer or ArrayBufferView", value);
|
|
8965
9088
|
return NULL;
|
|
8966
9089
|
}
|
|
9090
|
+
if (bytes->shared) return scr_ffi_fail("Shared byte storage cannot expose an unmanaged native pointer");
|
|
8967
9091
|
ScrBigInt *pointer = scr_bigint_from_pointer(bytes->data);
|
|
8968
9092
|
ScrDyn *result = scr_dyn_new_bigint(pointer);
|
|
8969
9093
|
scr_bigint_release(pointer);
|
|
@@ -9151,7 +9275,7 @@ static int scr_weak_key(const ScrDyn *key, void **ptr, unsigned *kind) {
|
|
|
9151
9275
|
*ptr = key->v.fn.class_obj ? (void *)key->v.fn.class_obj : (void *)key->v.fn.clo;
|
|
9152
9276
|
*kind = key->v.fn.class_obj ? 3 : 2; return 1;
|
|
9153
9277
|
case SCR_DYN_HANDLE:
|
|
9154
|
-
if (key->v.handle.tag != SCR_DYNH_ARRAY_BUFFER && key->v.handle.tag != SCR_DYNH_WEAK_MAP &&
|
|
9278
|
+
if (key->v.handle.tag != SCR_DYNH_ARRAY_BUFFER && key->v.handle.tag != SCR_DYNH_SHARED_ARRAY_BUFFER && key->v.handle.tag != SCR_DYNH_WEAK_MAP &&
|
|
9155
9279
|
key->v.handle.tag != SCR_DYNH_WEAK_SET && key->v.handle.tag != SCR_DYNH_STDIO &&
|
|
9156
9280
|
key->v.handle.tag != SCR_DYNH_FETCH_REQUEST && key->v.handle.tag != SCR_DYNH_FETCH_RESPONSE &&
|
|
9157
9281
|
key->v.handle.tag != SCR_DYNH_MAP && key->v.handle.tag != SCR_DYNH_SET) return -1;
|
|
@@ -9382,6 +9506,16 @@ ScrDyn *scr_array_buffer_new(ScrDyn *length) {
|
|
|
9382
9506
|
return result;
|
|
9383
9507
|
}
|
|
9384
9508
|
|
|
9509
|
+
ScrDyn *scr_shared_array_buffer_new(ScrDyn *length) {
|
|
9510
|
+
ScrDyn *buffer = scr_array_buffer_new(length);
|
|
9511
|
+
if (!buffer) return NULL;
|
|
9512
|
+
ScrBytes *storage = buffer->v.handle.ptr;
|
|
9513
|
+
scr_bytes_make_shared(storage);
|
|
9514
|
+
ScrDyn *result = scr_array_buffer_from_bytes(storage);
|
|
9515
|
+
scr_dyn_release(buffer);
|
|
9516
|
+
return result;
|
|
9517
|
+
}
|
|
9518
|
+
|
|
9385
9519
|
double scr_array_buffer_byte_length_getter(void) {
|
|
9386
9520
|
ScrDyn *receiver = scr_dyn_this_get();
|
|
9387
9521
|
if (!scr_array_buffer_is(receiver)) {
|
|
@@ -9408,7 +9542,7 @@ ScrDyn *scr_array_buffer_byte_length_descriptor(ScrDyn *getter) {
|
|
|
9408
9542
|
|
|
9409
9543
|
ScrBytes *scr_array_buffer_view(ScrBytesElem elem, const ScrDyn *buffer,
|
|
9410
9544
|
const ScrDyn *offset, const ScrDyn *length) {
|
|
9411
|
-
if (!
|
|
9545
|
+
if (!scr_buffer_storage_is(buffer)) {
|
|
9412
9546
|
// Non-buffer inputs use the length/iterable/array-like constructor.
|
|
9413
9547
|
// Their extra arguments are evaluated by the caller, but not coerced.
|
|
9414
9548
|
return scr_bytes_from_dyn(elem, buffer, false);
|
|
@@ -9443,7 +9577,7 @@ SCR_ARRAY_BUFFER_VIEW(f64, SCR_BYTES_F64)
|
|
|
9443
9577
|
#undef SCR_ARRAY_BUFFER_VIEW
|
|
9444
9578
|
|
|
9445
9579
|
ScrBytes *scr_array_buffer_view_dv(ScrDyn *buffer, ScrDyn *offset, ScrDyn *length) {
|
|
9446
|
-
if (!
|
|
9580
|
+
if (!scr_buffer_storage_is(buffer)) {
|
|
9447
9581
|
static const char msg[] = "First argument to DataView constructor must be an ArrayBuffer";
|
|
9448
9582
|
scr_throw_error_msg(SCR_ERR_TYPE, msg, sizeof msg - 1);
|
|
9449
9583
|
return NULL;
|
|
@@ -78,6 +78,21 @@ static void json_string_boundaries(void) {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
+
static void json_indent_ownership(void) {
|
|
82
|
+
const char compact[] = "{\"a\":[],\"b\":[1,{}]}";
|
|
83
|
+
const char expected[] = "{\n \"a\": [],\n \"b\": [\n 1,\n {}\n ]\n}";
|
|
84
|
+
ScrStr *input = scr_str_new(compact, sizeof compact - 1);
|
|
85
|
+
ScrStr *same = scr_json_indent(input, "", 0);
|
|
86
|
+
assert(same == input && input->rc == 2);
|
|
87
|
+
scr_str_release(same);
|
|
88
|
+
ScrStr *pretty = scr_json_indent(input, " ", 2);
|
|
89
|
+
assert(pretty->len == sizeof expected - 1);
|
|
90
|
+
assert(!memcmp(pretty->data, expected, sizeof expected - 1));
|
|
91
|
+
scr_str_release(input);
|
|
92
|
+
assert(!memcmp(pretty->data, expected, sizeof expected - 1));
|
|
93
|
+
scr_str_release(pretty);
|
|
94
|
+
}
|
|
95
|
+
|
|
81
96
|
static void checked_storage(void) {
|
|
82
97
|
/* Reuse after deletion, changing field order, embedded NUL and escaped
|
|
83
98
|
* duplicate names must leave independently owned keys and values. */
|
|
@@ -339,6 +354,7 @@ static void checked_number_storage(void) {
|
|
|
339
354
|
|
|
340
355
|
int main(void) {
|
|
341
356
|
json_string_boundaries();
|
|
357
|
+
json_indent_ownership();
|
|
342
358
|
scr_init();
|
|
343
359
|
checked_storage();
|
|
344
360
|
shared_property_keys();
|
|
@@ -16,10 +16,36 @@ static inline uint64_t scr_key_mix(uint64_t value) {
|
|
|
16
16
|
return value ^ (value >> 31);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
/* Pack at most eight bytes with fixed-size, unaligned loads. The overlapping
|
|
20
|
+
* ends cover every byte at lengths four through eight; the three selected
|
|
21
|
+
* bytes cover lengths one through three. No terminator or padding is read. */
|
|
22
|
+
static inline uint64_t scr_key_short_word(const char *bytes, size_t length) {
|
|
23
|
+
if (length >= 4) {
|
|
24
|
+
uint32_t first, last;
|
|
25
|
+
memcpy(&first, bytes, sizeof first);
|
|
26
|
+
memcpy(&last, bytes + length - sizeof last, sizeof last);
|
|
27
|
+
return ((uint64_t)first << 32) | last;
|
|
28
|
+
}
|
|
29
|
+
if (length == 0) return 0;
|
|
30
|
+
return ((uint64_t)(unsigned char)bytes[0] << 16) |
|
|
31
|
+
((uint64_t)(unsigned char)bytes[length / 2] << 8) |
|
|
32
|
+
(unsigned char)bytes[length - 1];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* Callers check equal lengths first. Short keys need no out-of-line memcmp;
|
|
36
|
+
* longer keys keep the platform's bulk comparison. */
|
|
37
|
+
static inline bool scr_key_equal(const char *a, const char *b, size_t length) {
|
|
38
|
+
if (a == b) return true;
|
|
39
|
+
if (length <= 8) return scr_key_short_word(a, length) == scr_key_short_word(b, length);
|
|
40
|
+
return memcmp(a, b, length) == 0;
|
|
41
|
+
}
|
|
42
|
+
|
|
19
43
|
/* Unaligned loads stay inside the input. Hashing is process-local, so host
|
|
20
|
-
* byte order is immaterial; equal byte strings always follow the same path.
|
|
44
|
+
* byte order is immaterial; equal byte strings always follow the same path.
|
|
45
|
+
* Short keys need one avalanche and no variable-size tail copy. */
|
|
21
46
|
static inline uint64_t scr_key_hash(const char *bytes, size_t length) {
|
|
22
47
|
uint64_t hash = UINT64_C(0x9e3779b97f4a7c15) ^ length;
|
|
48
|
+
if (length <= 8) return scr_key_mix(hash ^ scr_key_short_word(bytes, length));
|
|
23
49
|
size_t i = 0;
|
|
24
50
|
while (length - i >= sizeof(uint64_t)) {
|
|
25
51
|
uint64_t word;
|
|
@@ -27,9 +53,7 @@ static inline uint64_t scr_key_hash(const char *bytes, size_t length) {
|
|
|
27
53
|
hash = scr_key_mix(hash ^ word);
|
|
28
54
|
i += sizeof word;
|
|
29
55
|
}
|
|
30
|
-
|
|
31
|
-
if (i < length) memcpy(&tail, bytes + i, length - i);
|
|
32
|
-
return scr_key_mix(hash ^ tail);
|
|
56
|
+
return scr_key_mix(hash ^ scr_key_short_word(bytes + i, length - i));
|
|
33
57
|
}
|
|
34
58
|
|
|
35
59
|
static inline bool scr_key_array_index(const char *key, size_t length, uint32_t *out) {
|