@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
|
@@ -147,10 +147,14 @@ static void scr_arr_grow_dense(ScrArr *a, size_t need) {
|
|
|
147
147
|
cap *= 2;
|
|
148
148
|
}
|
|
149
149
|
if (cap > SCR_ARR_DENSE_LIMIT) cap = SCR_ARR_DENSE_LIMIT;
|
|
150
|
-
|
|
150
|
+
/* Values and states share one allocation. Move the old states before
|
|
151
|
+
* publishing the larger capacity: their previous location is now part
|
|
152
|
+
* of the value area. Existing data and state pointers keep their ABI. */
|
|
153
|
+
if (cap > SIZE_MAX / (sizeof(uint64_t) + sizeof(uint8_t))) scr_arr_oom();
|
|
154
|
+
uint64_t *data = realloc(a->data, cap * (sizeof(uint64_t) + sizeof(uint8_t)));
|
|
151
155
|
if (!data) scr_arr_oom();
|
|
152
|
-
uint8_t *present =
|
|
153
|
-
if (
|
|
156
|
+
uint8_t *present = (uint8_t *)(data + cap);
|
|
157
|
+
if (a->cap) memmove(present, (uint8_t *)(data + a->cap), a->cap);
|
|
154
158
|
memset(present + a->cap, 0, cap - a->cap);
|
|
155
159
|
a->data = data;
|
|
156
160
|
a->present = present;
|
|
@@ -397,11 +401,58 @@ static ScrArrStorage scr_arr_take_storage(ScrArr *a) {
|
|
|
397
401
|
|
|
398
402
|
static void scr_arr_free_storage(ScrArrStorage *s) {
|
|
399
403
|
free(s->data);
|
|
400
|
-
free(s->present);
|
|
401
404
|
free(s->sparse);
|
|
402
405
|
memset(s, 0, sizeof(*s));
|
|
403
406
|
}
|
|
404
407
|
|
|
408
|
+
/* Dense storage may still contain holes and explicit undefined. These
|
|
409
|
+
* operations move ownership with the slots and move the states alongside
|
|
410
|
+
* them; they never inspect an uninitialized hole payload. */
|
|
411
|
+
static bool scr_arr_is_dense(const ScrArr *a) {
|
|
412
|
+
return a->len <= a->cap && a->sparse_len == 0;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
static void scr_arr_move_dense(ScrArr *a, size_t to, size_t from, size_t count) {
|
|
416
|
+
if (count == 0) return;
|
|
417
|
+
memmove(a->data + to, a->data + from, count * sizeof(*a->data));
|
|
418
|
+
memmove(a->present + to, a->present + from, count);
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
static void scr_arr_clear_dense(ScrArr *a, size_t from, size_t count) {
|
|
422
|
+
if (count == 0) return;
|
|
423
|
+
memset(a->present + from, SCR_ARR_HOLE, count);
|
|
424
|
+
memset(a->data + from, 0, count * sizeof(*a->data));
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/* The destination owns no values in this range. Only retain adapters run
|
|
428
|
+
* while copying references: no release can collect an intermediate copy.
|
|
429
|
+
* Self-appends use disjoint ranges after reserving capacity. */
|
|
430
|
+
static void scr_arr_copy_dense(ScrArr *dst, size_t to, const ScrArr *src,
|
|
431
|
+
size_t from, size_t count, bool reverse,
|
|
432
|
+
bool materialize_holes) {
|
|
433
|
+
if (count == 0) return;
|
|
434
|
+
if (!reverse) {
|
|
435
|
+
memcpy(dst->data + to, src->data + from, count * sizeof(*dst->data));
|
|
436
|
+
memcpy(dst->present + to, src->present + from, count);
|
|
437
|
+
} else {
|
|
438
|
+
for (size_t i = 0; i < count; i++) {
|
|
439
|
+
size_t source = from + count - i - 1;
|
|
440
|
+
memcpy(dst->data + to + i, src->data + source, sizeof(*dst->data));
|
|
441
|
+
dst->present[to + i] = src->present[source];
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
bool refs = scr_elem_is_ref(src->elem);
|
|
445
|
+
if (!refs && !materialize_holes) return;
|
|
446
|
+
for (size_t i = to; i < to + count; i++) {
|
|
447
|
+
if (dst->present[i] == SCR_ARR_VALUE) {
|
|
448
|
+
if (refs) dst->data[i] = scr_elem_retain_slot(src, dst->data[i]);
|
|
449
|
+
} else if (materialize_holes && dst->present[i] == SCR_ARR_HOLE) {
|
|
450
|
+
dst->data[i] = 0;
|
|
451
|
+
dst->present[i] = SCR_ARR_UNDEFINED;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
|
|
405
456
|
ScrArr *scr_arr_new(ScrElemKind elem, size_t initial_cap) {
|
|
406
457
|
ScrArr *a = malloc(sizeof(ScrArr));
|
|
407
458
|
if (!a) scr_arr_oom();
|
|
@@ -455,7 +506,6 @@ void scr_arr_trace_v(void *a0, ScrTraceVisit visit, void *ctx) {
|
|
|
455
506
|
static void scr_arr_gc_free(void *a0) {
|
|
456
507
|
ScrArr *a = (ScrArr *)a0;
|
|
457
508
|
free(a->data);
|
|
458
|
-
free(a->present);
|
|
459
509
|
free(a->sparse);
|
|
460
510
|
for (size_t i = 0; i < a->prop_len; i++) free(a->props[i].key);
|
|
461
511
|
free(a->props);
|
|
@@ -498,52 +548,56 @@ ScrArr *scr_arr_new_ref(void *(*elem_retain)(void *),
|
|
|
498
548
|
return a;
|
|
499
549
|
}
|
|
500
550
|
|
|
501
|
-
void
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
a->
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
a->present[i] = 0;
|
|
513
|
-
a->data[i] = 0;
|
|
514
|
-
if (state == SCR_ARR_VALUE) scr_elem_release(a, old);
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
while (a->sparse_len > 0) {
|
|
518
|
-
size_t i = a->sparse_len - 1;
|
|
519
|
-
uint64_t old = a->sparse[i].slot;
|
|
520
|
-
uint8_t state = a->sparse[i].state;
|
|
521
|
-
a->sparse_len = i;
|
|
522
|
-
if (state == SCR_ARR_VALUE) scr_elem_release(a, old);
|
|
523
|
-
}
|
|
524
|
-
while (a->prop_len > 0) {
|
|
525
|
-
size_t i = a->prop_len - 1;
|
|
526
|
-
uint64_t old = a->props[i].slot;
|
|
527
|
-
uint8_t state = a->props[i].state;
|
|
528
|
-
free(a->props[i].key);
|
|
529
|
-
a->prop_len = i;
|
|
551
|
+
static void scr_arr_destroy(void *object) {
|
|
552
|
+
ScrArr *a = object;
|
|
553
|
+
scr_dyn_release(a->metadata);
|
|
554
|
+
a->metadata = NULL;
|
|
555
|
+
if (scr_elem_is_ref(a->elem)) {
|
|
556
|
+
for (size_t i = 0, end = a->len < a->cap ? a->len : a->cap; i < end; i++) {
|
|
557
|
+
if (a->present[i] != SCR_ARR_HOLE) {
|
|
558
|
+
uint64_t old = a->data[i];
|
|
559
|
+
uint8_t state = a->present[i];
|
|
560
|
+
a->present[i] = 0;
|
|
561
|
+
a->data[i] = 0;
|
|
530
562
|
if (state == SCR_ARR_VALUE) scr_elem_release(a, old);
|
|
531
563
|
}
|
|
532
564
|
}
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
565
|
+
while (a->sparse_len > 0) {
|
|
566
|
+
size_t i = a->sparse_len - 1;
|
|
567
|
+
uint64_t old = a->sparse[i].slot;
|
|
568
|
+
uint8_t state = a->sparse[i].state;
|
|
569
|
+
a->sparse_len = i;
|
|
570
|
+
if (state == SCR_ARR_VALUE) scr_elem_release(a, old);
|
|
571
|
+
}
|
|
572
|
+
while (a->prop_len > 0) {
|
|
573
|
+
size_t i = a->prop_len - 1;
|
|
574
|
+
uint64_t old = a->props[i].slot;
|
|
575
|
+
uint8_t state = a->props[i].state;
|
|
576
|
+
free(a->props[i].key);
|
|
577
|
+
a->prop_len = i;
|
|
578
|
+
if (state == SCR_ARR_VALUE) scr_elem_release(a, old);
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
if (a->elem_trace) {
|
|
582
|
+
scr_arr_gc_free(a);
|
|
583
|
+
} else {
|
|
584
|
+
free(a->data);
|
|
585
|
+
free(a->sparse);
|
|
586
|
+
for (size_t i = 0; i < a->prop_len; i++) free(a->props[i].key);
|
|
587
|
+
free(a->props);
|
|
541
588
|
#ifdef SCR_RC_AUDIT
|
|
542
|
-
|
|
589
|
+
scr_live_arrays--;
|
|
543
590
|
#endif
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
591
|
+
scr_weak_dispose(a);
|
|
592
|
+
free(a);
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
void scr_arr_release(ScrArr *a) {
|
|
597
|
+
if (!a || a->rc == SIZE_MAX) return; /* NULL: an uninitialized `let` local */
|
|
598
|
+
if (--a->rc == 0) {
|
|
599
|
+
if (a->elem_trace) scr_cyc_on_dead(a);
|
|
600
|
+
scr_rc_destroy(a, scr_arr_destroy);
|
|
547
601
|
} else if (a->elem_trace) {
|
|
548
602
|
scr_cyc_on_release(a); /* possible cycle root; may collect */
|
|
549
603
|
}
|
|
@@ -649,6 +703,16 @@ void scr_arr_copy_range_ex(ScrArr *dst, size_t dst_start, const ScrArr *src,
|
|
|
649
703
|
size_t src_start, size_t count, bool reverse,
|
|
650
704
|
bool materialize_holes) {
|
|
651
705
|
if (count == 0) return;
|
|
706
|
+
if (src != dst && src_start <= src->cap && count <= src->cap - src_start &&
|
|
707
|
+
dst_start <= dst->cap && count <= dst->cap - dst_start) {
|
|
708
|
+
size_t empty = 0;
|
|
709
|
+
while (empty < count && dst->present[dst_start + empty] == SCR_ARR_HOLE) empty++;
|
|
710
|
+
if (empty == count) {
|
|
711
|
+
scr_arr_copy_dense(dst, dst_start, src, src_start, count, reverse,
|
|
712
|
+
materialize_holes);
|
|
713
|
+
return;
|
|
714
|
+
}
|
|
715
|
+
}
|
|
652
716
|
size_t end = src_start + count;
|
|
653
717
|
size_t dense_start = src_start < src->cap ? src_start : src->cap;
|
|
654
718
|
size_t dense_end = end < src->cap ? end : src->cap;
|
|
@@ -678,6 +742,76 @@ void scr_arr_copy_range_ex(ScrArr *dst, size_t dst_start, const ScrArr *src,
|
|
|
678
742
|
}
|
|
679
743
|
}
|
|
680
744
|
|
|
745
|
+
static size_t scr_arr_relative_index(double value, size_t length) {
|
|
746
|
+
double integer = isnan(value) ? 0 : trunc(value);
|
|
747
|
+
if (integer < 0) integer += (double)length;
|
|
748
|
+
return integer <= 0 ? 0 : integer >= (double)length ? length : (size_t)integer;
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
ScrArr *scr_arr_copy_within(ScrArr *a, double target, double start, double end) {
|
|
752
|
+
size_t to = scr_arr_relative_index(target, a->len);
|
|
753
|
+
size_t from = scr_arr_relative_index(start, a->len);
|
|
754
|
+
size_t last = scr_arr_relative_index(end, a->len);
|
|
755
|
+
size_t count = last > from ? last - from : 0;
|
|
756
|
+
if (count > a->len - to) count = a->len - to;
|
|
757
|
+
if (count == 0 || from == to) return scr_arr_retain(a);
|
|
758
|
+
if (!scr_elem_is_ref(a->elem) && from < a->cap && count <= a->cap - from &&
|
|
759
|
+
to < a->cap && count <= a->cap - to) {
|
|
760
|
+
scr_arr_move_dense(a, to, from, count);
|
|
761
|
+
return scr_arr_retain(a);
|
|
762
|
+
}
|
|
763
|
+
bool backwards = from < to && to - from < count;
|
|
764
|
+
for (size_t i = 0; i < count; i++) {
|
|
765
|
+
size_t offset = backwards ? count - i - 1 : i;
|
|
766
|
+
uint64_t slot = 0;
|
|
767
|
+
uint8_t state = scr_arr_state_at(a, from + offset, &slot);
|
|
768
|
+
if (state == SCR_ARR_HOLE) {
|
|
769
|
+
scr_arr_delete(a, (double)(to + offset));
|
|
770
|
+
} else {
|
|
771
|
+
if (state == SCR_ARR_VALUE) slot = scr_elem_retain_slot(a, slot);
|
|
772
|
+
/* Each replacement publishes its edge before releasing the previous
|
|
773
|
+
* owner; cycle collection can run between successive positions. */
|
|
774
|
+
scr_arr_replace_state_owned(a, to + offset, slot, state);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
return scr_arr_retain(a);
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
static ScrArr *scr_arr_fill_slot(ScrArr *a, uint64_t slot, uint8_t state,
|
|
781
|
+
double start, double end) {
|
|
782
|
+
size_t from = scr_arr_relative_index(start, a->len);
|
|
783
|
+
size_t until = scr_arr_relative_index(end, a->len);
|
|
784
|
+
if (from >= until) return scr_arr_retain(a);
|
|
785
|
+
bool refs = scr_elem_is_ref(a->elem);
|
|
786
|
+
if (!refs && until <= SCR_ARR_DENSE_LIMIT) {
|
|
787
|
+
scr_arr_grow_dense(a, until);
|
|
788
|
+
for (size_t i = from; i < until; i++) a->data[i] = slot;
|
|
789
|
+
memset(a->present + from, state, until - from);
|
|
790
|
+
} else {
|
|
791
|
+
for (size_t i = from; i < until; i++) {
|
|
792
|
+
uint64_t value = refs && state == SCR_ARR_VALUE ? scr_elem_retain_slot(a, slot) : slot;
|
|
793
|
+
scr_arr_replace_state_owned(a, i, value, state);
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
return scr_arr_retain(a);
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
ScrArr *scr_arr_fill_f64(ScrArr *a, double value, double start, double end) {
|
|
800
|
+
return scr_arr_fill_slot(a, scr_slot_from_f64(value), SCR_ARR_VALUE, start, end);
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
ScrArr *scr_arr_fill_bool(ScrArr *a, bool value, double start, double end) {
|
|
804
|
+
return scr_arr_fill_slot(a, value ? 1 : 0, SCR_ARR_VALUE, start, end);
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
ScrArr *scr_arr_fill_ref(ScrArr *a, void *value, double start, double end) {
|
|
808
|
+
return scr_arr_fill_slot(a, scr_slot_from_ptr(value), SCR_ARR_VALUE, start, end);
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
ScrArr *scr_arr_fill_undefined(ScrArr *a, double start, double end) {
|
|
812
|
+
return scr_arr_fill_slot(a, 0, SCR_ARR_UNDEFINED, start, end);
|
|
813
|
+
}
|
|
814
|
+
|
|
681
815
|
/* ── Math.max/min over one spread number[] ─────────────────────────────
|
|
682
816
|
* The JS fold exactly (ECMA Math.max/min applied to the elements): any
|
|
683
817
|
* NaN poisons the result, +0 beats -0 for max (the reverse for min), and
|
|
@@ -854,6 +988,10 @@ void *scr_arr_get_ref(ScrArr *a, double i) {
|
|
|
854
988
|
return p;
|
|
855
989
|
}
|
|
856
990
|
|
|
991
|
+
void *scr_arr_borrow_ref(ScrArr *a, double i) {
|
|
992
|
+
return scr_slot_to_ptr(scr_arr_require_slot(a, i));
|
|
993
|
+
}
|
|
994
|
+
|
|
857
995
|
/* ── writes: i == len appends ──────────────────────────────────────────── */
|
|
858
996
|
|
|
859
997
|
static void scr_arr_set_slot(ScrArr *a, double i, uint64_t slot) {
|
|
@@ -924,10 +1062,33 @@ double scr_arr_push_ref(ScrArr *a, void *v) {
|
|
|
924
1062
|
return scr_arr_push_slot(a, scr_slot_from_ptr(v));
|
|
925
1063
|
}
|
|
926
1064
|
|
|
1065
|
+
double scr_arr_push_many(ScrArr *a, size_t count, const uint64_t *slots) {
|
|
1066
|
+
if (count > SCR_ARR_MAX_LENGTH - a->len) scr_arr_oom();
|
|
1067
|
+
size_t from = a->len, next = from + count;
|
|
1068
|
+
if (next <= SCR_ARR_DENSE_LIMIT) {
|
|
1069
|
+
scr_arr_grow_dense(a, next);
|
|
1070
|
+
if (count) {
|
|
1071
|
+
memcpy(a->data + from, slots, count * sizeof(*slots));
|
|
1072
|
+
memset(a->present + from, SCR_ARR_VALUE, count);
|
|
1073
|
+
}
|
|
1074
|
+
} else {
|
|
1075
|
+
for (size_t i = 0; i < count; i++) scr_arr_store_owned(a, from + i, slots[i]);
|
|
1076
|
+
}
|
|
1077
|
+
a->len = next;
|
|
1078
|
+
return (double)next;
|
|
1079
|
+
}
|
|
1080
|
+
|
|
927
1081
|
double scr_arr_push_spread(ScrArr *a, const ScrArr *src) {
|
|
928
1082
|
size_t old_len = a->len;
|
|
929
1083
|
size_t add = src->len;
|
|
930
1084
|
if (add > SCR_ARR_MAX_LENGTH - old_len) scr_arr_oom();
|
|
1085
|
+
if (scr_arr_is_dense(a) && scr_arr_is_dense(src) &&
|
|
1086
|
+
old_len + add <= SCR_ARR_DENSE_LIMIT) {
|
|
1087
|
+
scr_arr_grow_dense(a, old_len + add);
|
|
1088
|
+
scr_arr_copy_dense(a, old_len, src, 0, add, false, true);
|
|
1089
|
+
a->len += add;
|
|
1090
|
+
return (double)a->len;
|
|
1091
|
+
}
|
|
931
1092
|
if (src == a) {
|
|
932
1093
|
ScrArrStorage old = scr_arr_take_storage(a);
|
|
933
1094
|
a->len = 0;
|
|
@@ -962,6 +1123,13 @@ double scr_arr_concat_copy(ScrArr *a, const ScrArr *src) {
|
|
|
962
1123
|
size_t old_len = a->len;
|
|
963
1124
|
size_t add = src->len;
|
|
964
1125
|
if (add > SCR_ARR_MAX_LENGTH - old_len) scr_arr_oom();
|
|
1126
|
+
if (scr_arr_is_dense(a) && scr_arr_is_dense(src) &&
|
|
1127
|
+
old_len + add <= SCR_ARR_DENSE_LIMIT) {
|
|
1128
|
+
scr_arr_grow_dense(a, old_len + add);
|
|
1129
|
+
scr_arr_copy_dense(a, old_len, src, 0, add, false, false);
|
|
1130
|
+
a->len += add;
|
|
1131
|
+
return (double)a->len;
|
|
1132
|
+
}
|
|
965
1133
|
if (src == a) {
|
|
966
1134
|
ScrArrStorage old = scr_arr_take_storage(a);
|
|
967
1135
|
a->len = 0;
|
|
@@ -1003,6 +1171,14 @@ static double scr_arr_unshift_slot(ScrArr *a, uint64_t slot) {
|
|
|
1003
1171
|
scr_arr_trap_oob((double)a->len, a->len);
|
|
1004
1172
|
}
|
|
1005
1173
|
size_t old_len = a->len;
|
|
1174
|
+
if (scr_arr_is_dense(a) && old_len < SCR_ARR_DENSE_LIMIT) {
|
|
1175
|
+
scr_arr_grow_dense(a, old_len + 1);
|
|
1176
|
+
scr_arr_move_dense(a, 1, 0, old_len);
|
|
1177
|
+
a->data[0] = slot;
|
|
1178
|
+
a->present[0] = SCR_ARR_VALUE;
|
|
1179
|
+
a->len++;
|
|
1180
|
+
return (double)a->len;
|
|
1181
|
+
}
|
|
1006
1182
|
ScrArrStorage old = scr_arr_take_storage(a);
|
|
1007
1183
|
a->len = 0;
|
|
1008
1184
|
scr_arr_store_owned(a, 0, slot);
|
|
@@ -1030,11 +1206,46 @@ double scr_arr_unshift_ref(ScrArr *a, void *v) {
|
|
|
1030
1206
|
return scr_arr_unshift_slot(a, scr_slot_from_ptr(v));
|
|
1031
1207
|
}
|
|
1032
1208
|
|
|
1209
|
+
double scr_arr_unshift_many(ScrArr *a, size_t count, const uint64_t *slots) {
|
|
1210
|
+
size_t old_len = a->len;
|
|
1211
|
+
if (count == 0) return (double)old_len;
|
|
1212
|
+
if (count > SCR_ARR_MAX_LENGTH - old_len) scr_arr_oom();
|
|
1213
|
+
if (scr_arr_is_dense(a) && old_len + count <= SCR_ARR_DENSE_LIMIT) {
|
|
1214
|
+
scr_arr_grow_dense(a, old_len + count);
|
|
1215
|
+
scr_arr_move_dense(a, count, 0, old_len);
|
|
1216
|
+
memcpy(a->data, slots, count * sizeof(*slots));
|
|
1217
|
+
memset(a->present, SCR_ARR_VALUE, count);
|
|
1218
|
+
} else {
|
|
1219
|
+
ScrArrStorage old = scr_arr_take_storage(a);
|
|
1220
|
+
for (size_t i = 0; i < count; i++) scr_arr_store_owned(a, i, slots[i]);
|
|
1221
|
+
for (size_t i = 0; i < old.cap; i++) {
|
|
1222
|
+
if (old.present[i] != SCR_ARR_HOLE)
|
|
1223
|
+
scr_arr_store_state_owned(a, i + count, old.data[i], old.present[i]);
|
|
1224
|
+
}
|
|
1225
|
+
for (size_t i = 0; i < old.sparse_len; i++) {
|
|
1226
|
+
scr_arr_store_state_owned(a, old.sparse[i].index + count,
|
|
1227
|
+
old.sparse[i].slot, old.sparse[i].state);
|
|
1228
|
+
}
|
|
1229
|
+
scr_arr_free_storage(&old);
|
|
1230
|
+
}
|
|
1231
|
+
a->len = old_len + count;
|
|
1232
|
+
return (double)a->len;
|
|
1233
|
+
}
|
|
1234
|
+
|
|
1033
1235
|
double scr_arr_unshift_spread(ScrArr *a, const ScrArr *src) {
|
|
1034
1236
|
size_t old_len = a->len;
|
|
1035
1237
|
size_t add = src->len;
|
|
1036
1238
|
if (add == 0) return (double)old_len;
|
|
1037
1239
|
if (add > SCR_ARR_MAX_LENGTH - old_len) scr_arr_oom();
|
|
1240
|
+
if (scr_arr_is_dense(a) && scr_arr_is_dense(src) &&
|
|
1241
|
+
old_len + add <= SCR_ARR_DENSE_LIMIT) {
|
|
1242
|
+
scr_arr_grow_dense(a, old_len + add);
|
|
1243
|
+
scr_arr_move_dense(a, add, 0, old_len);
|
|
1244
|
+
/* A self-spread reads the original values at their moved location. */
|
|
1245
|
+
scr_arr_copy_dense(a, 0, src, src == a ? add : 0, add, false, true);
|
|
1246
|
+
a->len += add;
|
|
1247
|
+
return (double)a->len;
|
|
1248
|
+
}
|
|
1038
1249
|
ScrArrStorage old = scr_arr_take_storage(a);
|
|
1039
1250
|
a->len = 0;
|
|
1040
1251
|
for (size_t i = 0; i < add; i++) {
|
|
@@ -1064,6 +1275,19 @@ double scr_arr_unshift_spread(ScrArr *a, const ScrArr *src) {
|
|
|
1064
1275
|
|
|
1065
1276
|
ScrArr *scr_arr_reverse(ScrArr *a) {
|
|
1066
1277
|
size_t len = a->len;
|
|
1278
|
+
if (scr_arr_is_dense(a)) {
|
|
1279
|
+
for (size_t i = 0; i < len / 2; i++) {
|
|
1280
|
+
size_t j = len - i - 1;
|
|
1281
|
+
uint64_t slot;
|
|
1282
|
+
memcpy(&slot, a->data + i, sizeof slot);
|
|
1283
|
+
memcpy(a->data + i, a->data + j, sizeof slot);
|
|
1284
|
+
memcpy(a->data + j, &slot, sizeof slot);
|
|
1285
|
+
uint8_t state = a->present[i];
|
|
1286
|
+
a->present[i] = a->present[j];
|
|
1287
|
+
a->present[j] = state;
|
|
1288
|
+
}
|
|
1289
|
+
return scr_arr_retain(a);
|
|
1290
|
+
}
|
|
1067
1291
|
ScrArrStorage old = scr_arr_take_storage(a);
|
|
1068
1292
|
a->len = len;
|
|
1069
1293
|
for (size_t i = 0; i < old.cap; i++) {
|
|
@@ -1113,6 +1337,14 @@ uint8_t scr_arr_shift_state(ScrArr *a, uint64_t *slot_out) {
|
|
|
1113
1337
|
if (slot_out) *slot_out = 0;
|
|
1114
1338
|
if (a->len == 0) return SCR_ARR_HOLE;
|
|
1115
1339
|
size_t old_len = a->len;
|
|
1340
|
+
if (scr_arr_is_dense(a)) {
|
|
1341
|
+
uint8_t state = a->present[0];
|
|
1342
|
+
if (slot_out && state == SCR_ARR_VALUE) *slot_out = a->data[0];
|
|
1343
|
+
scr_arr_move_dense(a, 0, 1, old_len - 1);
|
|
1344
|
+
scr_arr_clear_dense(a, old_len - 1, 1);
|
|
1345
|
+
a->len--;
|
|
1346
|
+
return state;
|
|
1347
|
+
}
|
|
1116
1348
|
ScrArrStorage old = scr_arr_take_storage(a);
|
|
1117
1349
|
uint64_t s = 0;
|
|
1118
1350
|
uint8_t state = scr_arr_state_at_storage(&old, 0, &s);
|
|
@@ -1169,6 +1401,16 @@ ScrArr *scr_arr_splice(ScrArr *a, double start, double deleteCount) {
|
|
|
1169
1401
|
: scr_arr_new(a->elem, n ? n : 1);
|
|
1170
1402
|
out->len = n;
|
|
1171
1403
|
size_t old_len = a->len;
|
|
1404
|
+
if (scr_arr_is_dense(a)) {
|
|
1405
|
+
if (n) {
|
|
1406
|
+
memcpy(out->data, a->data + from, n * sizeof(*a->data));
|
|
1407
|
+
memcpy(out->present, a->present + from, n);
|
|
1408
|
+
}
|
|
1409
|
+
scr_arr_move_dense(a, from, from + n, old_len - from - n);
|
|
1410
|
+
scr_arr_clear_dense(a, old_len - n, n);
|
|
1411
|
+
a->len -= n;
|
|
1412
|
+
return out;
|
|
1413
|
+
}
|
|
1172
1414
|
ScrArrStorage old = scr_arr_take_storage(a);
|
|
1173
1415
|
a->len = 0;
|
|
1174
1416
|
for (size_t i = 0; i < old.cap; i++) {
|
|
@@ -1215,6 +1457,30 @@ ScrArr *scr_arr_splice_insert(ScrArr *a, double start, double deleteCount,
|
|
|
1215
1457
|
double d0 = isnan(deleteCount) ? 0 : trunc(deleteCount);
|
|
1216
1458
|
size_t n = d0 <= 0 ? 0 : d0 >= avail ? (size_t)avail : (size_t)d0;
|
|
1217
1459
|
if (items->len > SCR_ARR_MAX_LENGTH - (a->len - n)) scr_arr_oom();
|
|
1460
|
+
size_t add = items->len, next_len = a->len - n + add;
|
|
1461
|
+
if (scr_arr_is_dense(a) && scr_arr_is_dense(items) &&
|
|
1462
|
+
next_len <= SCR_ARR_DENSE_LIMIT) {
|
|
1463
|
+
/* Snapshot an aliased argument before changing the receiver. Ordinary
|
|
1464
|
+
* callers have already materialized variadic arguments, so this copy
|
|
1465
|
+
* is needed only by direct self-spread runtime callers. */
|
|
1466
|
+
ScrArr *snapshot = items == a ? scr_arr_slice(a, 0, INFINITY) : NULL;
|
|
1467
|
+
if (snapshot) items = snapshot;
|
|
1468
|
+
ScrArr *removed = a->elem == SCR_ELEM_REF
|
|
1469
|
+
? scr_arr_new_ref(a->elem_retain, a->elem_release, a->elem_trace, n)
|
|
1470
|
+
: scr_arr_new(a->elem, n);
|
|
1471
|
+
if (n) {
|
|
1472
|
+
memcpy(removed->data, a->data + from, n * sizeof(*a->data));
|
|
1473
|
+
memcpy(removed->present, a->present + from, n);
|
|
1474
|
+
}
|
|
1475
|
+
removed->len = n;
|
|
1476
|
+
scr_arr_grow_dense(a, next_len);
|
|
1477
|
+
scr_arr_move_dense(a, from + add, from + n, a->len - from - n);
|
|
1478
|
+
scr_arr_copy_dense(a, from, items, 0, add, false, true);
|
|
1479
|
+
if (next_len < a->len) scr_arr_clear_dense(a, next_len, a->len - next_len);
|
|
1480
|
+
a->len = next_len;
|
|
1481
|
+
scr_arr_release(snapshot);
|
|
1482
|
+
return removed;
|
|
1483
|
+
}
|
|
1218
1484
|
ScrArr *removed = scr_arr_splice(a, start, deleteCount);
|
|
1219
1485
|
ScrArr *tail = scr_arr_splice(a, (double)from, INFINITY);
|
|
1220
1486
|
scr_arr_push_spread(a, items);
|
|
@@ -1377,6 +1643,10 @@ ScrArr *scr_arr_slice(ScrArr *a, double start, double end) {
|
|
|
1377
1643
|
? scr_arr_new_ref(a->elem_retain, a->elem_release, a->elem_trace, n ? n : 1)
|
|
1378
1644
|
: scr_arr_new(a->elem, n ? n : 1);
|
|
1379
1645
|
out->len = n;
|
|
1646
|
+
if (to <= a->cap) {
|
|
1647
|
+
scr_arr_copy_dense(out, 0, a, from, n, false, false);
|
|
1648
|
+
return out;
|
|
1649
|
+
}
|
|
1380
1650
|
for (size_t i = 0; i < a->cap && i < to; i++) {
|
|
1381
1651
|
if (i < from || a->present[i] == SCR_ARR_HOLE) continue;
|
|
1382
1652
|
uint8_t state = a->present[i];
|
|
@@ -1396,6 +1666,169 @@ ScrArr *scr_arr_slice(ScrArr *a, double start, double end) {
|
|
|
1396
1666
|
return out;
|
|
1397
1667
|
}
|
|
1398
1668
|
|
|
1669
|
+
/* Default ordering of primitive arrays cannot call user code. Keep each
|
|
1670
|
+
* payload owned by its source while sorting raw slots, then publish the
|
|
1671
|
+
* complete permutation without per-comparison retains or releases. */
|
|
1672
|
+
typedef struct {
|
|
1673
|
+
uint64_t value;
|
|
1674
|
+
char text[32];
|
|
1675
|
+
} ScrNumberSortKey;
|
|
1676
|
+
|
|
1677
|
+
typedef struct {
|
|
1678
|
+
ScrElemKind kind;
|
|
1679
|
+
const ScrNumberSortKey *numbers;
|
|
1680
|
+
} ScrPrimitiveOrder;
|
|
1681
|
+
|
|
1682
|
+
static int scr_arr_primitive_compare(uint64_t left, uint64_t right,
|
|
1683
|
+
const ScrPrimitiveOrder *order) {
|
|
1684
|
+
if (order->kind == SCR_ELEM_STR)
|
|
1685
|
+
return scr_str_cmp_u16(scr_slot_to_ptr(left), scr_slot_to_ptr(right));
|
|
1686
|
+
if (order->kind == SCR_ELEM_BOOL) return (left > right) - (left < right);
|
|
1687
|
+
return strcmp(order->numbers[left].text, order->numbers[right].text);
|
|
1688
|
+
}
|
|
1689
|
+
|
|
1690
|
+
/* Natural runs preserve ordered inputs. Reverse strictly descending runs
|
|
1691
|
+
* only, insert after ties, and merge from the left on equality. Allocate
|
|
1692
|
+
* scratch only when there is more than one completed run. */
|
|
1693
|
+
static void scr_arr_primitive_order(uint64_t *values, size_t count,
|
|
1694
|
+
const ScrPrimitiveOrder *order) {
|
|
1695
|
+
if (count < 2) return;
|
|
1696
|
+
size_t local_runs[64], *runs = local_runs, run_cap = 64, run_count = 1;
|
|
1697
|
+
runs[0] = 0;
|
|
1698
|
+
for (size_t start = 0; start < count;) {
|
|
1699
|
+
size_t end = start + 1;
|
|
1700
|
+
if (end < count) {
|
|
1701
|
+
bool descending = scr_arr_primitive_compare(values[start], values[end], order) > 0;
|
|
1702
|
+
end++;
|
|
1703
|
+
while (end < count &&
|
|
1704
|
+
(scr_arr_primitive_compare(values[end - 1], values[end], order) > 0) == descending)
|
|
1705
|
+
end++;
|
|
1706
|
+
if (descending) {
|
|
1707
|
+
for (size_t left = start, right = end - 1; left < right; left++, right--) {
|
|
1708
|
+
uint64_t value = values[left];
|
|
1709
|
+
values[left] = values[right];
|
|
1710
|
+
values[right] = value;
|
|
1711
|
+
}
|
|
1712
|
+
}
|
|
1713
|
+
}
|
|
1714
|
+
size_t limit = count - start < 16 ? count : start + 16;
|
|
1715
|
+
while (end < limit) {
|
|
1716
|
+
uint64_t value = values[end];
|
|
1717
|
+
size_t low = start, high = end;
|
|
1718
|
+
while (low < high) {
|
|
1719
|
+
size_t mid = low + (high - low) / 2;
|
|
1720
|
+
if (scr_arr_primitive_compare(values[mid], value, order) > 0) high = mid;
|
|
1721
|
+
else low = mid + 1;
|
|
1722
|
+
}
|
|
1723
|
+
memmove(values + low + 1, values + low, (end - low) * sizeof(*values));
|
|
1724
|
+
values[low] = value;
|
|
1725
|
+
end++;
|
|
1726
|
+
}
|
|
1727
|
+
if (run_count == run_cap) {
|
|
1728
|
+
if (run_cap > SIZE_MAX / 2 / sizeof(*runs)) scr_arr_oom();
|
|
1729
|
+
size_t *next = malloc(run_cap * 2 * sizeof(*runs));
|
|
1730
|
+
if (!next) scr_arr_oom();
|
|
1731
|
+
memcpy(next, runs, run_count * sizeof(*runs));
|
|
1732
|
+
if (runs != local_runs) free(runs);
|
|
1733
|
+
runs = next;
|
|
1734
|
+
run_cap *= 2;
|
|
1735
|
+
}
|
|
1736
|
+
runs[run_count++] = end;
|
|
1737
|
+
start = end;
|
|
1738
|
+
}
|
|
1739
|
+
if (run_count > 2) {
|
|
1740
|
+
if (count > SIZE_MAX / sizeof(*values)) scr_arr_oom();
|
|
1741
|
+
uint64_t *scratch = malloc(count * sizeof(*scratch));
|
|
1742
|
+
if (!scratch) scr_arr_oom();
|
|
1743
|
+
uint64_t *src = values, *dst = scratch;
|
|
1744
|
+
while (run_count > 2) {
|
|
1745
|
+
size_t next_run = 1;
|
|
1746
|
+
for (size_t run = 0; run + 1 < run_count; run += 2) {
|
|
1747
|
+
size_t start = runs[run], mid = runs[run + 1];
|
|
1748
|
+
size_t end = run + 2 < run_count ? runs[run + 2] : count;
|
|
1749
|
+
if (mid == end || scr_arr_primitive_compare(src[mid - 1], src[mid], order) <= 0) {
|
|
1750
|
+
memcpy(dst + start, src + start, (end - start) * sizeof(*dst));
|
|
1751
|
+
} else {
|
|
1752
|
+
size_t left = start, right = mid, out = start;
|
|
1753
|
+
while (left < mid && right < end) {
|
|
1754
|
+
dst[out++] = scr_arr_primitive_compare(src[left], src[right], order) > 0
|
|
1755
|
+
? src[right++] : src[left++];
|
|
1756
|
+
}
|
|
1757
|
+
if (left < mid) memcpy(dst + out, src + left, (mid - left) * sizeof(*dst));
|
|
1758
|
+
else if (right < end) memcpy(dst + out, src + right, (end - right) * sizeof(*dst));
|
|
1759
|
+
}
|
|
1760
|
+
runs[next_run++] = end;
|
|
1761
|
+
}
|
|
1762
|
+
run_count = next_run;
|
|
1763
|
+
uint64_t *swap = src; src = dst; dst = swap;
|
|
1764
|
+
}
|
|
1765
|
+
if (src != values) memcpy(values, src, count * sizeof(*values));
|
|
1766
|
+
free(scratch);
|
|
1767
|
+
}
|
|
1768
|
+
if (runs != local_runs) free(runs);
|
|
1769
|
+
}
|
|
1770
|
+
|
|
1771
|
+
ScrArr *scr_arr_sort_primitive(ScrArr *a, bool copy) {
|
|
1772
|
+
if (a->elem != SCR_ELEM_STR && a->elem != SCR_ELEM_F64 && a->elem != SCR_ELEM_BOOL)
|
|
1773
|
+
scr_trap("scriptc: invalid primitive array ordering\n");
|
|
1774
|
+
if (a->len == 0) return copy ? scr_arr_new(a->elem, 0) : scr_arr_retain(a);
|
|
1775
|
+
size_t dense = a->len < a->cap ? a->len : a->cap;
|
|
1776
|
+
size_t count = 0, undefined_count = 0;
|
|
1777
|
+
for (size_t i = 0; i < dense; i++) {
|
|
1778
|
+
count += a->present[i] == SCR_ARR_VALUE;
|
|
1779
|
+
undefined_count += a->present[i] == SCR_ARR_UNDEFINED;
|
|
1780
|
+
}
|
|
1781
|
+
for (size_t i = 0; i < a->sparse_len; i++) {
|
|
1782
|
+
count += a->sparse[i].state == SCR_ARR_VALUE;
|
|
1783
|
+
undefined_count += a->sparse[i].state == SCR_ARR_UNDEFINED;
|
|
1784
|
+
}
|
|
1785
|
+
if (count > SIZE_MAX / sizeof(uint64_t)) scr_arr_oom();
|
|
1786
|
+
uint64_t *values = count ? malloc(count * sizeof(*values)) : NULL;
|
|
1787
|
+
if (count && !values) scr_arr_oom();
|
|
1788
|
+
size_t used = 0;
|
|
1789
|
+
for (size_t i = 0; i < dense; i++)
|
|
1790
|
+
if (a->present[i] == SCR_ARR_VALUE) values[used++] = a->data[i];
|
|
1791
|
+
for (size_t i = 0; i < a->sparse_len; i++)
|
|
1792
|
+
if (a->sparse[i].state == SCR_ARR_VALUE) values[used++] = a->sparse[i].slot;
|
|
1793
|
+
ScrNumberSortKey *numbers = NULL;
|
|
1794
|
+
if (a->elem == SCR_ELEM_F64 && count > 1) {
|
|
1795
|
+
if (count > SIZE_MAX / sizeof(*numbers)) scr_arr_oom();
|
|
1796
|
+
numbers = malloc(count * sizeof(*numbers));
|
|
1797
|
+
if (!numbers) scr_arr_oom();
|
|
1798
|
+
for (size_t i = 0; i < count; i++) {
|
|
1799
|
+
numbers[i].value = values[i];
|
|
1800
|
+
scr_f64_to_str(scr_slot_to_f64(values[i]), numbers[i].text);
|
|
1801
|
+
values[i] = i;
|
|
1802
|
+
}
|
|
1803
|
+
}
|
|
1804
|
+
ScrPrimitiveOrder order = {a->elem, numbers};
|
|
1805
|
+
scr_arr_primitive_order(values, count, &order);
|
|
1806
|
+
if (numbers) {
|
|
1807
|
+
for (size_t i = 0; i < count; i++) values[i] = numbers[values[i]].value;
|
|
1808
|
+
free(numbers);
|
|
1809
|
+
}
|
|
1810
|
+
size_t present = copy ? a->len : count + undefined_count;
|
|
1811
|
+
ScrArr *out = copy ? scr_arr_new(a->elem, present) : a;
|
|
1812
|
+
if (copy) out->len = a->len;
|
|
1813
|
+
if (!copy && scr_arr_is_dense(a)) {
|
|
1814
|
+
if (count) memcpy(a->data, values, count * sizeof(*values));
|
|
1815
|
+
memset(a->present, SCR_ARR_VALUE, count);
|
|
1816
|
+
memset(a->present + count, SCR_ARR_UNDEFINED, undefined_count);
|
|
1817
|
+
scr_arr_clear_dense(a, count + undefined_count, a->len - count - undefined_count);
|
|
1818
|
+
if (undefined_count) memset(a->data + count, 0, undefined_count * sizeof(*a->data));
|
|
1819
|
+
} else {
|
|
1820
|
+
ScrArrStorage old = {0};
|
|
1821
|
+
if (!copy) old = scr_arr_take_storage(a);
|
|
1822
|
+
for (size_t i = 0; i < count; i++)
|
|
1823
|
+
scr_arr_store_owned(out, i, copy ? scr_elem_retain_slot(a, values[i]) : values[i]);
|
|
1824
|
+
for (size_t i = count; i < present; i++)
|
|
1825
|
+
scr_arr_store_state_owned(out, i, 0, SCR_ARR_UNDEFINED);
|
|
1826
|
+
if (!copy) scr_arr_free_storage(&old);
|
|
1827
|
+
}
|
|
1828
|
+
free(values);
|
|
1829
|
+
return copy ? out : scr_arr_retain(a);
|
|
1830
|
+
}
|
|
1831
|
+
|
|
1399
1832
|
ScrStr *scr_arr_join(ScrArr *a, ScrStr *sep) {
|
|
1400
1833
|
size_t cap = 64;
|
|
1401
1834
|
/* String widths are already known. Size once to avoid growth and copying
|
|
@@ -361,6 +361,7 @@ void scr_assert_deep_result(bool equal, bool negated, ScrStr *msg, bool has_msg)
|
|
|
361
361
|
* by construction (the frontend's same-static-type gate), but the elem
|
|
362
362
|
* check stays: a defensive answer beats a miscompare. */
|
|
363
363
|
static bool scr_assert_bytes_content_eq(const ScrBytes *a, const ScrBytes *b) {
|
|
364
|
+
SCR_SHARED_GUARD(a, b);
|
|
364
365
|
if (a->elem != b->elem || a->len != b->len) return false;
|
|
365
366
|
size_t nbytes = a->len * scr_bytes_elem_size(a->elem);
|
|
366
367
|
return nbytes == 0 || memcmp(a->data, b->data, nbytes) == 0;
|
|
@@ -542,8 +543,7 @@ static bool scr_assert_dyn_deep_eq(const ScrDyn *a, const ScrDyn *b) {
|
|
|
542
543
|
if (a->buffer != b->buffer) return false; /* the prototype gate */
|
|
543
544
|
const ScrBytes *x = a->v.bytes, *y = b->v.bytes;
|
|
544
545
|
if (x->elem != y->elem || x->len != y->len) return false;
|
|
545
|
-
|
|
546
|
-
return nbytes == 0 || memcmp(x->data, y->data, nbytes) == 0;
|
|
546
|
+
return scr_assert_bytes_content_eq(x, y);
|
|
547
547
|
}
|
|
548
548
|
case SCR_DYN_ARR: {
|
|
549
549
|
if (a->v.arr.len != b->v.arr.len) return false;
|
|
@@ -712,7 +712,7 @@ static void scr_assert_cf_value(ScrAssertBuf *b, const ScrDyn *d, size_t indent,
|
|
|
712
712
|
ab_char(b, '\n');
|
|
713
713
|
scr_assert_cf_pad(b, indent + 2);
|
|
714
714
|
char tmp[40];
|
|
715
|
-
size_t n = scr_assert_inspect_f64((double)
|
|
715
|
+
size_t n = scr_assert_inspect_f64(scr_bytes_get(bs, (double)i), tmp);
|
|
716
716
|
ab_bytes(b, tmp, n);
|
|
717
717
|
if (i + 1 < bs->len) ab_char(b, ',');
|
|
718
718
|
}
|