@scriptc/cli-darwin-arm64 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-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_copying.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_copying.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_copying.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_copying.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_copying.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/scr_util_compare.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_copying.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/scr_util_compare.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 +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
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
#include "scr_runtime.h"
|
|
2
2
|
#include <assert.h>
|
|
3
|
+
#include <math.h>
|
|
3
4
|
#include <stdio.h>
|
|
5
|
+
#include <string.h>
|
|
6
|
+
|
|
7
|
+
#ifdef SCR_RC_AUDIT
|
|
8
|
+
long scr_str_live_count(void);
|
|
9
|
+
long scr_dyn_key_live_count(void);
|
|
10
|
+
#endif
|
|
4
11
|
|
|
5
12
|
static void put(ScrDyn *map, ScrDyn *key, ScrDyn *value) {
|
|
6
13
|
ScrDyn *args[] = {key, value};
|
|
@@ -20,8 +27,339 @@ static ScrDyn *nothing(ScrClosure *closure, ScrDyn *const *args, size_t argc) {
|
|
|
20
27
|
return scr_dyn_retain(scr_dyn_undefined());
|
|
21
28
|
}
|
|
22
29
|
|
|
30
|
+
static void json_string_boundaries(void) {
|
|
31
|
+
/* Every escape/control at every word alignment, followed by raw UTF-8.
|
|
32
|
+
* ASan also checks short tails that cannot supply a complete word. */
|
|
33
|
+
const char suffix[] = "tail\xF0\x9F\x99\x82\xE9\x9B\xAA";
|
|
34
|
+
for (size_t prefix = 0; prefix < 64; prefix++) {
|
|
35
|
+
for (unsigned special = 0; special < 34; special++) {
|
|
36
|
+
char bytes[96];
|
|
37
|
+
memset(bytes, 'a', prefix);
|
|
38
|
+
bytes[prefix] = special < 32 ? (char)special : special == 32 ? '"' : '\\';
|
|
39
|
+
memcpy(bytes + prefix + 1, suffix, sizeof suffix - 1);
|
|
40
|
+
size_t length = prefix + sizeof suffix;
|
|
41
|
+
ScrStr *original = scr_str_new(bytes, length);
|
|
42
|
+
ScrJsonBuf buffer;
|
|
43
|
+
scr_jb_init(&buffer);
|
|
44
|
+
scr_jb_put_json_str(&buffer, original);
|
|
45
|
+
ScrStr *encoded = scr_jb_finish(&buffer);
|
|
46
|
+
ScrDyn *parsed = scr_json_parse(encoded);
|
|
47
|
+
assert(parsed && parsed->kind == SCR_DYN_STR && !scr_exc_pending());
|
|
48
|
+
assert(scr_str_eq(original, parsed->v.str));
|
|
49
|
+
scr_dyn_release(parsed);
|
|
50
|
+
scr_str_release(encoded);
|
|
51
|
+
scr_str_release(original);
|
|
52
|
+
|
|
53
|
+
if (special < 32) {
|
|
54
|
+
char invalid[68];
|
|
55
|
+
invalid[0] = '"';
|
|
56
|
+
memset(invalid + 1, 'a', prefix);
|
|
57
|
+
invalid[prefix + 1] = (char)special;
|
|
58
|
+
invalid[prefix + 2] = '"';
|
|
59
|
+
ScrStr *input = scr_str_new(invalid, prefix + 3);
|
|
60
|
+
assert(!scr_json_parse(input) && scr_exc_pending());
|
|
61
|
+
scr_exc_clear();
|
|
62
|
+
scr_str_release(input);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
char plain[68];
|
|
66
|
+
plain[0] = '"';
|
|
67
|
+
memset(plain + 1, 'z', prefix);
|
|
68
|
+
plain[prefix + 1] = '"';
|
|
69
|
+
ScrStr *input = scr_str_new(plain, prefix + 2);
|
|
70
|
+
ScrDyn *parsed = scr_json_parse(input);
|
|
71
|
+
assert(parsed && parsed->v.str->len == prefix && !scr_exc_pending());
|
|
72
|
+
scr_dyn_release(parsed);
|
|
73
|
+
scr_str_release(input);
|
|
74
|
+
input = scr_str_new(plain, prefix + 1);
|
|
75
|
+
assert(!scr_json_parse(input) && scr_exc_pending());
|
|
76
|
+
scr_exc_clear();
|
|
77
|
+
scr_str_release(input);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
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
|
+
|
|
96
|
+
static void checked_storage(void) {
|
|
97
|
+
/* Reuse after deletion, changing field order, embedded NUL and escaped
|
|
98
|
+
* duplicate names must leave independently owned keys and values. */
|
|
99
|
+
for (int round = 0; round < 100; round++) {
|
|
100
|
+
const char *text = round % 2 ? "{\"alpha\":1,\"beta\":2,\"gamma\":3}"
|
|
101
|
+
: "{\"gamma\":3,\"alpha\":0,\"\\u0061lpha\":1,\"beta\":2}";
|
|
102
|
+
ScrStr *input = scr_str_new(text, strlen(text));
|
|
103
|
+
ScrDyn *object = scr_json_parse(input);
|
|
104
|
+
scr_str_release(input);
|
|
105
|
+
assert(object && object->v.obj.len == 3);
|
|
106
|
+
assert(scr_dyn_obj_get(object, "alpha", 5)->v.num == 1);
|
|
107
|
+
ScrStr *key = scr_str_new("beta", 4);
|
|
108
|
+
scr_dyn_key_delete(object, key, true);
|
|
109
|
+
scr_str_release(key);
|
|
110
|
+
assert(!scr_dyn_obj_get(object, "beta", 4));
|
|
111
|
+
assert(scr_dyn_obj_get(object, "gamma", 5)->v.num == 3);
|
|
112
|
+
char mutable_key[] = "new\0key";
|
|
113
|
+
scr_dyn_obj_set(object, mutable_key, sizeof mutable_key - 1, scr_dyn_new_num(4));
|
|
114
|
+
mutable_key[0] = 'x';
|
|
115
|
+
assert(scr_dyn_obj_get(object, "new\0key", 7)->v.num == 4);
|
|
116
|
+
scr_dyn_release(object);
|
|
117
|
+
}
|
|
118
|
+
/* Larger objects and long names leave no stale pooled tail keys when a
|
|
119
|
+
* later small object grows through the same capacity. */
|
|
120
|
+
for (int round = 0; round < 4; round++) {
|
|
121
|
+
ScrDyn *object = scr_dyn_new_obj();
|
|
122
|
+
for (int i = 0; i < 80; i++) {
|
|
123
|
+
char key[160];
|
|
124
|
+
memset(key, 'a' + i % 20, sizeof key);
|
|
125
|
+
int prefix = snprintf(key, sizeof key, "%d:", i);
|
|
126
|
+
memset(key + prefix, 'a' + i % 20, sizeof key - (size_t)prefix);
|
|
127
|
+
scr_dyn_obj_set(object, key, sizeof key, scr_dyn_new_num(i));
|
|
128
|
+
assert(scr_dyn_obj_get(object, key, sizeof key)->v.num == i);
|
|
129
|
+
}
|
|
130
|
+
scr_dyn_release(object);
|
|
131
|
+
}
|
|
132
|
+
/* Cross index growth boundaries, invalidate moved entry positions, then
|
|
133
|
+
* recreate the index from survivors. Repeat after pool reuse. */
|
|
134
|
+
for (int round = 0; round < 4; round++) {
|
|
135
|
+
ScrDyn *object = scr_dyn_new_obj();
|
|
136
|
+
assert(!object->v.obj.index);
|
|
137
|
+
for (int i = 0; i < 129; i++) {
|
|
138
|
+
char key[16];
|
|
139
|
+
int length = snprintf(key, sizeof key, "key-%d", i);
|
|
140
|
+
scr_dyn_obj_set(object, key, (size_t)length, scr_dyn_new_num(i));
|
|
141
|
+
assert((object->v.obj.index != NULL) == (i >= 31));
|
|
142
|
+
}
|
|
143
|
+
for (int i = 0; i < 129; i++) {
|
|
144
|
+
char key[16];
|
|
145
|
+
int length = snprintf(key, sizeof key, "key-%d", i);
|
|
146
|
+
assert(scr_dyn_obj_get(object, key, (size_t)length)->v.num == i);
|
|
147
|
+
if (i % 3 == 0) {
|
|
148
|
+
ScrStr *name = scr_str_new(key, (size_t)length);
|
|
149
|
+
scr_dyn_key_delete(object, name, true);
|
|
150
|
+
scr_str_release(name);
|
|
151
|
+
assert(!scr_dyn_obj_get(object, key, (size_t)length));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
scr_dyn_obj_set(object, "last", 4, scr_dyn_new_num(129));
|
|
155
|
+
assert(object->v.obj.index);
|
|
156
|
+
for (int i = 0; i < 129; i++) {
|
|
157
|
+
char key[16];
|
|
158
|
+
int length = snprintf(key, sizeof key, "key-%d", i);
|
|
159
|
+
ScrDyn *value = scr_dyn_obj_get(object, key, (size_t)length);
|
|
160
|
+
assert(i % 3 == 0 ? value == NULL : value && value->v.num == i);
|
|
161
|
+
}
|
|
162
|
+
scr_dyn_obj_set(object, "key-128", 7, scr_dyn_new_num(900));
|
|
163
|
+
assert(object->v.obj.len == 87);
|
|
164
|
+
assert(scr_dyn_obj_get(object, "key-128", 7)->v.num == 900);
|
|
165
|
+
scr_dyn_release(object);
|
|
166
|
+
}
|
|
167
|
+
/* A direct step is authorized only by the captured builtin method. */
|
|
168
|
+
ScrDyn *source = scr_dyn_new_arr();
|
|
169
|
+
scr_dyn_arr_push(source, scr_dyn_new_num(7));
|
|
170
|
+
scr_dyn_arr_push(source, scr_dyn_retain(scr_dyn_undefined()));
|
|
171
|
+
ScrStr *spell = scr_str_new("source", 6);
|
|
172
|
+
ScrDyn *iterator = scr_dyn_iterator(source, spell);
|
|
173
|
+
scr_str_release(spell);
|
|
174
|
+
ScrDyn *next = scr_dyn_handle_ops_of(iterator)->get(iterator->v.handle.ptr, "next", 4);
|
|
175
|
+
assert(scr_dyn_iterator_can_step(iterator, next));
|
|
176
|
+
assert(!scr_dyn_iterator_can_step(source, next));
|
|
177
|
+
assert(!scr_dyn_iterator_can_step(iterator, scr_dyn_undefined()));
|
|
178
|
+
ScrDyn *item = scr_dyn_iterator_step(iterator);
|
|
179
|
+
assert(item->v.num == 7 && !scr_dyn_iterator_step_done(iterator));
|
|
180
|
+
scr_dyn_release(item);
|
|
181
|
+
item = scr_dyn_iterator_step(iterator);
|
|
182
|
+
assert(item->kind == SCR_DYN_UNDEF && !scr_dyn_iterator_step_done(iterator));
|
|
183
|
+
scr_dyn_release(item);
|
|
184
|
+
scr_dyn_arr_push(source, scr_dyn_new_num(9));
|
|
185
|
+
item = scr_dyn_iterator_step(iterator);
|
|
186
|
+
assert(item->v.num == 9 && !scr_dyn_iterator_step_done(iterator));
|
|
187
|
+
scr_dyn_release(item);
|
|
188
|
+
item = scr_dyn_iterator_step(iterator);
|
|
189
|
+
assert(item->kind == SCR_DYN_UNDEF && scr_dyn_iterator_step_done(iterator));
|
|
190
|
+
scr_dyn_release(item);
|
|
191
|
+
scr_dyn_arr_push(source, scr_dyn_new_num(11));
|
|
192
|
+
item = scr_dyn_iterator_step(iterator);
|
|
193
|
+
assert(item->kind == SCR_DYN_UNDEF && scr_dyn_iterator_step_done(iterator));
|
|
194
|
+
scr_dyn_release(item);
|
|
195
|
+
scr_dyn_release(next);
|
|
196
|
+
scr_dyn_release(iterator);
|
|
197
|
+
scr_dyn_release(source);
|
|
198
|
+
assert(!scr_exc_pending());
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
static void shared_property_keys(void) {
|
|
202
|
+
#ifdef SCR_RC_AUDIT
|
|
203
|
+
long before = scr_dyn_key_live_count();
|
|
204
|
+
#endif
|
|
205
|
+
/* Distinct objects share bytes, not values or property attributes. Key
|
|
206
|
+
* deletion, a collected owner and a caller-owned input cannot invalidate
|
|
207
|
+
* the surviving entry. */
|
|
208
|
+
ScrDyn *first = scr_dyn_new_obj(), *second = scr_dyn_new_obj();
|
|
209
|
+
char key[] = "shared\0name";
|
|
210
|
+
scr_dyn_obj_set(first, key, sizeof key - 1, scr_dyn_new_num(1));
|
|
211
|
+
scr_dyn_obj_set(second, key, sizeof key - 1, scr_dyn_new_num(2));
|
|
212
|
+
assert(first->v.obj.entries[0].key == second->v.obj.entries[0].key);
|
|
213
|
+
key[0] = 'x';
|
|
214
|
+
ScrStr *name = scr_str_new("shared\0name", sizeof key - 1);
|
|
215
|
+
scr_dyn_key_delete(first, name, true);
|
|
216
|
+
scr_str_release(name);
|
|
217
|
+
assert(scr_dyn_obj_get(second, "shared\0name", sizeof key - 1)->v.num == 2);
|
|
218
|
+
scr_dyn_obj_set(first, "shared\0name", sizeof key - 1, scr_dyn_new_num(3));
|
|
219
|
+
scr_dyn_obj_set(first, "self", 4, scr_dyn_retain(first));
|
|
220
|
+
scr_dyn_release(first);
|
|
221
|
+
scr_collect_cycles();
|
|
222
|
+
assert(scr_dyn_obj_get(second, "shared\0name", sizeof key - 1)->v.num == 2);
|
|
223
|
+
scr_dyn_release(second);
|
|
224
|
+
|
|
225
|
+
/* More distinct live names than weak slots force collisions. Releasing
|
|
226
|
+
* an evicted owner must not clear or free the replacement's storage. */
|
|
227
|
+
ScrDyn *objects[600];
|
|
228
|
+
for (int round = 0; round < 2; round++) {
|
|
229
|
+
for (int i = 0; i < 600; i++) {
|
|
230
|
+
char bytes[32];
|
|
231
|
+
int length = snprintf(bytes, sizeof bytes, "field-%d", i);
|
|
232
|
+
objects[i] = scr_dyn_new_obj();
|
|
233
|
+
scr_dyn_obj_set(objects[i], bytes, (size_t)length, scr_dyn_new_num(i));
|
|
234
|
+
}
|
|
235
|
+
for (int i = 0; i < 600; i++) {
|
|
236
|
+
char bytes[32];
|
|
237
|
+
int length = snprintf(bytes, sizeof bytes, "field-%d", i);
|
|
238
|
+
assert(scr_dyn_obj_get(objects[i], bytes, (size_t)length)->v.num == i);
|
|
239
|
+
scr_dyn_release(objects[i]);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
#ifdef SCR_RC_AUDIT
|
|
243
|
+
assert(scr_dyn_key_live_count() == before);
|
|
244
|
+
#endif
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
static void checked_leaf_cycles(void) {
|
|
248
|
+
/* Object properties omit primitives from trial deletion, while arrays and
|
|
249
|
+
* captured unknown values still trace them. Exercise shared leaves through
|
|
250
|
+
* both edge kinds, with and without an external owner, in either generation. */
|
|
251
|
+
for (int old = 0; old < 2; old++) {
|
|
252
|
+
for (int external = 0; external < 2; external++) {
|
|
253
|
+
#ifdef SCR_RC_AUDIT
|
|
254
|
+
long before_dyns = scr_dyn_live_count();
|
|
255
|
+
long before_strings = scr_str_live_count();
|
|
256
|
+
#endif
|
|
257
|
+
ScrStr *text = scr_str_new("survives either edge", 20);
|
|
258
|
+
ScrDyn *leaf = scr_dyn_new_str(text);
|
|
259
|
+
scr_str_release(text);
|
|
260
|
+
if (old) scr_cyc_hdr(leaf)->gen = SCR_CYC_MATURE;
|
|
261
|
+
ScrDyn *first = scr_dyn_new_obj(), *second = scr_dyn_new_obj();
|
|
262
|
+
ScrDyn *array = scr_dyn_new_arr();
|
|
263
|
+
ScrClosure *closure = scr_closure_new(NULL, 1);
|
|
264
|
+
closure->caps[0] = scr_box_new_obj(scr_dyn_retain_v, scr_dyn_release_v, scr_dyn_trace_v);
|
|
265
|
+
scr_box_set_ref(closure->caps[0], scr_dyn_retain(leaf));
|
|
266
|
+
scr_dyn_obj_set(first, "callback", 8, scr_dyn_new_func(closure, nothing, 0, "func()=>dyn", "leaf"));
|
|
267
|
+
scr_dyn_obj_set(first, "leaf", 4, scr_dyn_retain(leaf));
|
|
268
|
+
scr_dyn_obj_set(second, "leaf", 4, scr_dyn_retain(leaf));
|
|
269
|
+
scr_dyn_obj_set(second, "number", 6, scr_dyn_new_num(42));
|
|
270
|
+
scr_dyn_obj_set(second, "empty", 5, scr_dyn_new_null());
|
|
271
|
+
scr_dyn_obj_set(second, "missing", 7, scr_dyn_retain(scr_dyn_undefined()));
|
|
272
|
+
scr_dyn_arr_push(array, scr_dyn_retain(leaf));
|
|
273
|
+
scr_dyn_arr_push(array, scr_dyn_retain(first));
|
|
274
|
+
scr_dyn_obj_set(first, "next", 4, scr_dyn_retain(second));
|
|
275
|
+
scr_dyn_obj_set(second, "back", 4, scr_dyn_retain(first));
|
|
276
|
+
scr_dyn_obj_set(second, "array", 5, array);
|
|
277
|
+
if (!external) scr_dyn_release(leaf);
|
|
278
|
+
scr_dyn_release(first);
|
|
279
|
+
scr_dyn_release(second);
|
|
280
|
+
scr_cyc_collect_scheduled();
|
|
281
|
+
scr_collect_cycles();
|
|
282
|
+
if (external) {
|
|
283
|
+
assert(leaf->rc == 1 && leaf->v.str->len == 20);
|
|
284
|
+
scr_dyn_release(leaf);
|
|
285
|
+
}
|
|
286
|
+
#ifdef SCR_RC_AUDIT
|
|
287
|
+
assert(scr_dyn_live_count() == before_dyns);
|
|
288
|
+
assert(scr_str_live_count() == before_strings);
|
|
289
|
+
#endif
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/* A previous trace snapshot must not survive a property mutation: the
|
|
294
|
+
* next collection must trace a new object edge or release a new leaf. */
|
|
295
|
+
for (int leaf_after = 0; leaf_after < 2; leaf_after++) {
|
|
296
|
+
#ifdef SCR_RC_AUDIT
|
|
297
|
+
long before = scr_dyn_live_count();
|
|
298
|
+
#endif
|
|
299
|
+
ScrDyn *object = scr_dyn_new_obj(), *child = scr_dyn_new_obj();
|
|
300
|
+
scr_dyn_obj_set(object, "self", 4, scr_dyn_retain(object));
|
|
301
|
+
scr_dyn_obj_set(object, "value", 5, leaf_after ? scr_dyn_retain(child) : scr_dyn_new_num(1));
|
|
302
|
+
scr_dyn_release(scr_dyn_retain(object));
|
|
303
|
+
scr_collect_cycles();
|
|
304
|
+
scr_dyn_obj_set(object, "value", 5, leaf_after ? scr_dyn_new_num(2) : scr_dyn_retain(child));
|
|
305
|
+
scr_dyn_obj_set(child, "parent", 6, scr_dyn_retain(object));
|
|
306
|
+
scr_dyn_release(child);
|
|
307
|
+
scr_dyn_release(object);
|
|
308
|
+
scr_collect_cycles();
|
|
309
|
+
#ifdef SCR_RC_AUDIT
|
|
310
|
+
assert(scr_dyn_live_count() == before);
|
|
311
|
+
#endif
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
static void checked_number_storage(void) {
|
|
316
|
+
#ifdef SCR_RC_AUDIT
|
|
317
|
+
long before = scr_dyn_live_count();
|
|
318
|
+
#endif
|
|
319
|
+
for (int value = -130; value < 258; value++) {
|
|
320
|
+
ScrDyn *first = scr_dyn_new_num(value), *second = scr_dyn_new_num(value);
|
|
321
|
+
assert(first->kind == SCR_DYN_NUM && first->v.num == value);
|
|
322
|
+
assert(scr_dyn_strict_eq(first, second));
|
|
323
|
+
if (value >= -128 && value <= 255) assert(first == second && first->rc == SIZE_MAX);
|
|
324
|
+
ScrDyn *array = scr_dyn_new_arr();
|
|
325
|
+
scr_dyn_arr_push(array, first);
|
|
326
|
+
scr_dyn_arr_push(array, second);
|
|
327
|
+
scr_dyn_arr_push(array, scr_dyn_retain(array));
|
|
328
|
+
scr_dyn_release(array);
|
|
329
|
+
scr_collect_cycles();
|
|
330
|
+
}
|
|
331
|
+
const double special[] = {-0.0, 0.5, -0.5, NAN, INFINITY, -INFINITY, 9007199254740991.0};
|
|
332
|
+
for (size_t i = 0; i < sizeof special / sizeof special[0]; i++) {
|
|
333
|
+
ScrDyn *value = scr_dyn_new_num(special[i]);
|
|
334
|
+
assert(value->rc != SIZE_MAX);
|
|
335
|
+
assert(isnan(special[i]) ? isnan(value->v.num) : value->v.num == special[i]);
|
|
336
|
+
if (special[i] == 0) assert(signbit(value->v.num));
|
|
337
|
+
scr_dyn_release(value);
|
|
338
|
+
}
|
|
339
|
+
const char raw[] = "[-0,0,1.0,1e2,-128,255,256,1e400]";
|
|
340
|
+
ScrStr *input = scr_str_new(raw, sizeof raw - 1);
|
|
341
|
+
ScrDyn *parsed = scr_json_parse(input);
|
|
342
|
+
assert(parsed && parsed->v.arr.len == 8);
|
|
343
|
+
assert(signbit(parsed->v.arr.items[0]->v.num));
|
|
344
|
+
assert(!signbit(parsed->v.arr.items[1]->v.num));
|
|
345
|
+
assert(parsed->v.arr.items[2] == scr_dyn_new_num(1));
|
|
346
|
+
assert(parsed->v.arr.items[3] == scr_dyn_new_num(100));
|
|
347
|
+
assert(isinf(parsed->v.arr.items[7]->v.num));
|
|
348
|
+
scr_dyn_release(parsed);
|
|
349
|
+
scr_str_release(input);
|
|
350
|
+
#ifdef SCR_RC_AUDIT
|
|
351
|
+
assert(scr_dyn_live_count() == before);
|
|
352
|
+
#endif
|
|
353
|
+
}
|
|
354
|
+
|
|
23
355
|
int main(void) {
|
|
356
|
+
json_string_boundaries();
|
|
357
|
+
json_indent_ownership();
|
|
24
358
|
scr_init();
|
|
359
|
+
checked_storage();
|
|
360
|
+
shared_property_keys();
|
|
361
|
+
checked_leaf_cycles();
|
|
362
|
+
checked_number_storage();
|
|
25
363
|
/* Native Set boxes may own headerless scalar/string maps. Collecting an
|
|
26
364
|
* enclosing cycle must neither trace those leaves nor skip their release. */
|
|
27
365
|
for (int i = 0; i < 2000; i++) {
|
|
@@ -177,6 +515,6 @@ int main(void) {
|
|
|
177
515
|
scr_dyn_release(key);
|
|
178
516
|
scr_dyn_release(first);
|
|
179
517
|
assert(!scr_exc_pending());
|
|
180
|
-
puts("weak metadata lifetime checks passed");
|
|
518
|
+
puts("checked storage and weak metadata lifetime checks passed");
|
|
181
519
|
return 0;
|
|
182
520
|
}
|
|
@@ -7,28 +7,62 @@ import { expect, test } from "vitest";
|
|
|
7
7
|
|
|
8
8
|
const exec = promisify(execFile);
|
|
9
9
|
|
|
10
|
-
test.each([false, true])(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
10
|
+
test.each([false, true])(
|
|
11
|
+
"checked storage and weak metadata preserve ownership (audit=%s)",
|
|
12
|
+
async (audit) => {
|
|
13
|
+
const scratch = await mkdtemp(join(tmpdir(), "scriptc-weak-map-"));
|
|
14
|
+
const src = import.meta.dirname;
|
|
15
|
+
const binary = join(scratch, "weak-map");
|
|
16
|
+
try {
|
|
17
|
+
await exec("clang", [
|
|
18
|
+
"-std=c11",
|
|
19
|
+
"-O1",
|
|
20
|
+
"-Wall",
|
|
21
|
+
"-Wextra",
|
|
22
|
+
"-fsanitize=address,undefined",
|
|
23
|
+
...(audit ? ["-DSCR_RC_AUDIT"] : []),
|
|
24
|
+
"-I",
|
|
25
|
+
src,
|
|
26
|
+
"-o",
|
|
27
|
+
binary,
|
|
28
|
+
...[
|
|
29
|
+
"scr_json.test.c",
|
|
30
|
+
"scr_json.c",
|
|
31
|
+
"scr_string.c",
|
|
32
|
+
"scr_array.c",
|
|
33
|
+
"scr_map.c",
|
|
34
|
+
"scr_exception.c",
|
|
35
|
+
"scr_error.c",
|
|
36
|
+
"scr_number.c",
|
|
37
|
+
"scr_console.c",
|
|
38
|
+
"scr_closure.c",
|
|
39
|
+
"scr_object.c",
|
|
40
|
+
"scr_union.c",
|
|
41
|
+
"scr_cycle.c",
|
|
42
|
+
"scr_lib.c",
|
|
43
|
+
"scr_bytes.c",
|
|
44
|
+
"scr_shared.c",
|
|
45
|
+
"scr_bigint.c",
|
|
46
|
+
"scr_url.c",
|
|
47
|
+
"scr_url_params.c",
|
|
48
|
+
"scr_path.c",
|
|
49
|
+
].map((file) => join(src, file)),
|
|
50
|
+
...(process.platform === "linux" ? ["-D_GNU_SOURCE", "-lm"] : []),
|
|
51
|
+
]);
|
|
52
|
+
for (const threshold of ["1", "7", "256"]) {
|
|
53
|
+
const result = await exec(binary, [], {
|
|
54
|
+
env: {
|
|
55
|
+
...process.env,
|
|
56
|
+
SCR_CYCLE_THRESHOLD: threshold,
|
|
57
|
+
ASAN_OPTIONS: "detect_leaks=0:halt_on_error=1",
|
|
58
|
+
UBSAN_OPTIONS: "halt_on_error=1",
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
expect(result.stdout).toBe("checked storage and weak metadata lifetime checks passed\n");
|
|
62
|
+
expect(result.stderr).toBe("");
|
|
63
|
+
}
|
|
64
|
+
} finally {
|
|
65
|
+
await rm(scratch, { recursive: true, force: true });
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
);
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/* Internal key hashing and canonical array-index ordering shared by native
|
|
2
|
+
* maps and checked objects. Hashes never escape into JavaScript values. */
|
|
3
|
+
#ifndef SCR_KEY_H
|
|
4
|
+
#define SCR_KEY_H
|
|
5
|
+
#include <stdbool.h>
|
|
6
|
+
#include <stddef.h>
|
|
7
|
+
#include <stdint.h>
|
|
8
|
+
#include <stdlib.h>
|
|
9
|
+
#include <string.h>
|
|
10
|
+
|
|
11
|
+
static inline uint64_t scr_key_mix(uint64_t value) {
|
|
12
|
+
value ^= value >> 30;
|
|
13
|
+
value *= UINT64_C(0xbf58476d1ce4e5b9);
|
|
14
|
+
value ^= value >> 27;
|
|
15
|
+
value *= UINT64_C(0x94d049bb133111eb);
|
|
16
|
+
return value ^ (value >> 31);
|
|
17
|
+
}
|
|
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
|
+
|
|
43
|
+
/* Unaligned loads stay inside the input. Hashing is process-local, so host
|
|
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. */
|
|
46
|
+
static inline uint64_t scr_key_hash(const char *bytes, size_t length) {
|
|
47
|
+
uint64_t hash = UINT64_C(0x9e3779b97f4a7c15) ^ length;
|
|
48
|
+
if (length <= 8) return scr_key_mix(hash ^ scr_key_short_word(bytes, length));
|
|
49
|
+
size_t i = 0;
|
|
50
|
+
while (length - i >= sizeof(uint64_t)) {
|
|
51
|
+
uint64_t word;
|
|
52
|
+
memcpy(&word, bytes + i, sizeof word);
|
|
53
|
+
hash = scr_key_mix(hash ^ word);
|
|
54
|
+
i += sizeof word;
|
|
55
|
+
}
|
|
56
|
+
return scr_key_mix(hash ^ scr_key_short_word(bytes + i, length - i));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
static inline bool scr_key_array_index(const char *key, size_t length, uint32_t *out) {
|
|
60
|
+
if (length == 0 || length > 10 || (length > 1 && key[0] == '0')) return false;
|
|
61
|
+
uint64_t value = 0;
|
|
62
|
+
for (size_t i = 0; i < length; i++) {
|
|
63
|
+
if (key[i] < '0' || key[i] > '9') return false;
|
|
64
|
+
value = value * 10 + (unsigned)(key[i] - '0');
|
|
65
|
+
}
|
|
66
|
+
if (value >= UINT32_MAX) return false;
|
|
67
|
+
*out = (uint32_t)value;
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
typedef struct {
|
|
72
|
+
uint32_t index;
|
|
73
|
+
size_t entry;
|
|
74
|
+
} ScrKeyIndex;
|
|
75
|
+
|
|
76
|
+
static inline int scr_key_index_compare(const void *left, const void *right) {
|
|
77
|
+
uint32_t a = ((const ScrKeyIndex *)left)->index;
|
|
78
|
+
uint32_t b = ((const ScrKeyIndex *)right)->index;
|
|
79
|
+
return (a > b) - (a < b);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* Keys are unique. Already ordered inputs need no sort, while arbitrary
|
|
83
|
+
* numeric property insertion must not require quadratic enumeration. */
|
|
84
|
+
static inline void scr_key_index_sort(ScrKeyIndex *keys, size_t count) {
|
|
85
|
+
for (size_t i = 1; i < count; i++) {
|
|
86
|
+
if (keys[i - 1].index > keys[i].index) {
|
|
87
|
+
qsort(keys, count, sizeof *keys, scr_key_index_compare);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
#endif
|