Squashed 'vendor/ruvector/' content from commit b64c2172
git-subtree-dir: vendor/ruvector git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
This commit is contained in:
57
npm/packages/rvf-wasm/pkg/rvf_wasm.d.ts
vendored
Normal file
57
npm/packages/rvf-wasm/pkg/rvf_wasm.d.ts
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
/**
|
||||
* Type declarations for the RVF WASM microkernel exports.
|
||||
*/
|
||||
|
||||
export interface RvfWasmExports {
|
||||
memory: WebAssembly.Memory;
|
||||
|
||||
// Memory management
|
||||
rvf_alloc(size: number): number;
|
||||
rvf_free(ptr: number, size: number): void;
|
||||
|
||||
// Core query path
|
||||
rvf_init(config_ptr: number): number;
|
||||
rvf_load_query(query_ptr: number, dim: number): number;
|
||||
rvf_load_block(block_ptr: number, count: number, dtype: number): number;
|
||||
rvf_distances(metric: number, result_ptr: number): number;
|
||||
rvf_topk_merge(dist_ptr: number, id_ptr: number, count: number, k: number): number;
|
||||
rvf_topk_read(out_ptr: number): number;
|
||||
|
||||
// Quantization
|
||||
rvf_load_sq_params(params_ptr: number, dim: number): number;
|
||||
rvf_dequant_i8(src_ptr: number, dst_ptr: number, count: number): number;
|
||||
rvf_load_pq_codebook(codebook_ptr: number, m: number, k: number): number;
|
||||
rvf_pq_distances(codes_ptr: number, count: number, result_ptr: number): number;
|
||||
|
||||
// HNSW navigation
|
||||
rvf_load_neighbors(node_id: bigint, layer: number, out_ptr: number): number;
|
||||
rvf_greedy_step(current_id: bigint, layer: number): bigint;
|
||||
|
||||
// Segment verification
|
||||
rvf_verify_header(header_ptr: number): number;
|
||||
rvf_crc32c(data_ptr: number, len: number): number;
|
||||
rvf_verify_checksum(buf_ptr: number, buf_len: number): number;
|
||||
|
||||
// In-memory store
|
||||
rvf_store_create(dim: number, metric: number): number;
|
||||
rvf_store_open(buf_ptr: number, buf_len: number): number;
|
||||
rvf_store_ingest(handle: number, vecs_ptr: number, ids_ptr: number, count: number): number;
|
||||
rvf_store_query(handle: number, query_ptr: number, k: number, metric: number, out_ptr: number): number;
|
||||
rvf_store_delete(handle: number, ids_ptr: number, count: number): number;
|
||||
rvf_store_count(handle: number): number;
|
||||
rvf_store_dimension(handle: number): number;
|
||||
rvf_store_status(handle: number, out_ptr: number): number;
|
||||
rvf_store_export(handle: number, out_ptr: number, out_len: number): number;
|
||||
rvf_store_close(handle: number): number;
|
||||
|
||||
// Segment parsing
|
||||
rvf_parse_header(buf_ptr: number, buf_len: number, out_ptr: number): number;
|
||||
rvf_segment_count(buf_ptr: number, buf_len: number): number;
|
||||
rvf_segment_info(buf_ptr: number, buf_len: number, idx: number, out_ptr: number): number;
|
||||
|
||||
// Witness chain
|
||||
rvf_witness_verify(chain_ptr: number, chain_len: number): number;
|
||||
rvf_witness_count(chain_len: number): number;
|
||||
}
|
||||
|
||||
export default function init(input?: ArrayBuffer | Uint8Array | WebAssembly.Module): Promise<RvfWasmExports>;
|
||||
72
npm/packages/rvf-wasm/pkg/rvf_wasm.js
Normal file
72
npm/packages/rvf-wasm/pkg/rvf_wasm.js
Normal file
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* @ruvector/rvf-wasm — JS glue for the RVF WASM microkernel.
|
||||
*
|
||||
* Loads the .wasm binary and re-exports all C-ABI functions plus the
|
||||
* WASM linear memory object.
|
||||
*
|
||||
* Works in Node.js (CJS/ESM) and browsers.
|
||||
*/
|
||||
|
||||
var wasmInstance = null;
|
||||
|
||||
var _isNode = typeof process !== 'undefined' &&
|
||||
typeof process.versions !== 'undefined' &&
|
||||
typeof process.versions.node === 'string';
|
||||
|
||||
/**
|
||||
* Initialize the WASM module.
|
||||
* Returns the exports object with all rvf_* functions and `memory`.
|
||||
*
|
||||
* @param {ArrayBuffer|BufferSource|WebAssembly.Module|string} [input]
|
||||
* Optional pre-loaded bytes, Module, or file path override.
|
||||
*/
|
||||
async function init(input) {
|
||||
if (wasmInstance) return wasmInstance;
|
||||
|
||||
var wasmBytes;
|
||||
|
||||
if (input instanceof ArrayBuffer || ArrayBuffer.isView(input)) {
|
||||
wasmBytes = input;
|
||||
} else if (typeof WebAssembly !== 'undefined' && input instanceof WebAssembly.Module) {
|
||||
var inst = await WebAssembly.instantiate(input, {});
|
||||
wasmInstance = inst.exports;
|
||||
return wasmInstance;
|
||||
} else if (_isNode) {
|
||||
// Node.js: always use readFile (fetch on file:// is unreliable)
|
||||
var fs = await import('node:fs/promises');
|
||||
var url = await import('node:url');
|
||||
var path = await import('node:path');
|
||||
var wasmPath;
|
||||
if (typeof input === 'string') {
|
||||
wasmPath = input;
|
||||
} else if (typeof __dirname !== 'undefined') {
|
||||
// CJS context
|
||||
wasmPath = path.default.join(__dirname, 'rvf_wasm_bg.wasm');
|
||||
} else {
|
||||
// ESM context — import.meta.url available
|
||||
var thisDir = path.default.dirname(url.default.fileURLToPath(import.meta.url));
|
||||
wasmPath = path.default.join(thisDir, 'rvf_wasm_bg.wasm');
|
||||
}
|
||||
wasmBytes = await fs.default.readFile(wasmPath);
|
||||
} else {
|
||||
// Browser: use fetch + instantiateStreaming
|
||||
var wasmUrl = new URL('rvf_wasm_bg.wasm', import.meta.url);
|
||||
if (typeof WebAssembly.instantiateStreaming === 'function') {
|
||||
var resp = await fetch(wasmUrl);
|
||||
var result = await WebAssembly.instantiateStreaming(resp, {});
|
||||
wasmInstance = result.instance.exports;
|
||||
return wasmInstance;
|
||||
}
|
||||
var resp2 = await fetch(wasmUrl);
|
||||
wasmBytes = await resp2.arrayBuffer();
|
||||
}
|
||||
|
||||
var compiled = await WebAssembly.instantiate(wasmBytes, {});
|
||||
wasmInstance = compiled.instance.exports;
|
||||
return wasmInstance;
|
||||
}
|
||||
|
||||
// Support both ESM (export default) and CJS (module.exports)
|
||||
init.default = init;
|
||||
if (typeof module !== 'undefined') module.exports = init;
|
||||
export default init;
|
||||
6
npm/packages/rvf-wasm/pkg/rvf_wasm.mjs
Normal file
6
npm/packages/rvf-wasm/pkg/rvf_wasm.mjs
Normal file
@@ -0,0 +1,6 @@
|
||||
/**
|
||||
* @ruvector/rvf-wasm ESM entry point.
|
||||
* Re-exports the init function from the CJS-compatible module.
|
||||
*/
|
||||
import init from './rvf_wasm.js';
|
||||
export default init;
|
||||
BIN
npm/packages/rvf-wasm/pkg/rvf_wasm_bg.wasm
Normal file
BIN
npm/packages/rvf-wasm/pkg/rvf_wasm_bg.wasm
Normal file
Binary file not shown.
Reference in New Issue
Block a user