usearch 2.9.2 → 2.10.1
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/README.md +39 -38
- package/javascript/{types → dist/cjs}/usearch.d.ts +90 -115
- package/javascript/dist/cjs/usearch.js +531 -0
- package/javascript/dist/esm/usearch.d.ts +212 -0
- package/javascript/{usearch.js → dist/esm/usearch.js} +199 -153
- package/package.json +25 -23
- package/prebuilds/darwin-arm64+x64/usearch.node +0 -0
- package/prebuilds/linux-arm64/usearch.node +0 -0
- package/prebuilds/linux-x64/usearch.node +0 -0
- package/prebuilds/win32-ia32/usearch.node +0 -0
- package/prebuilds/win32-x64/usearch.node +0 -0
- package/.clang-format +0 -10
- package/.clang-tidy +0 -60
- package/.cmake-format.py +0 -19
- package/.dockerignore +0 -93
- package/.gitattributes +0 -9
- package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -90
- package/.github/ISSUE_TEMPLATE/config.yml +0 -5
- package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -64
- package/.github/workflows/Dockerfile.libs +0 -36
- package/.github/workflows/prerelease.yml +0 -331
- package/.github/workflows/release.yml +0 -722
- package/.github/workflows/update_version.sh +0 -15
- package/.gitmodules +0 -9
- package/.releaserc +0 -90
- package/CITATION.cff +0 -11
- package/CMakeLists.txt +0 -324
- package/CODE_OF_CONDUCT.md +0 -128
- package/CONTRIBUTING.md +0 -361
- package/Cargo.toml +0 -19
- package/Dockerfile +0 -16
- package/VERSION +0 -1
- package/assets/unum.png +0 -0
- package/assets/usearch-approaches-transparent.png +0 -0
- package/assets/usearch-approaches-white.png +0 -0
- package/assets/usearch-neighbor-types.png +0 -0
- package/binding.gyp +0 -87
- package/build.gradle +0 -204
- package/build.rs +0 -18
- package/c/CMakeLists.txt +0 -25
- package/c/README.md +0 -34
- package/c/lib.cpp +0 -358
- package/c/test.c +0 -382
- package/c/usearch.h +0 -311
- package/cmake/clipp.cmake +0 -7
- package/cmake/config.cmake.in +0 -15
- package/cmake/emscripten.cmake +0 -8
- package/cmake/jemalloc.cmake +0 -62
- package/cmake/pkg-config.pc.in +0 -4
- package/cmake/usearchConfigVersion.cmake.in +0 -20
- package/conanfile.py +0 -26
- package/cpp/CMakeLists.txt +0 -14
- package/cpp/README.md +0 -161
- package/cpp/bench.cpp +0 -618
- package/cpp/test.cpp +0 -323
- package/fp16/CMakeLists.txt +0 -176
- package/fp16/LICENSE +0 -11
- package/fp16/README.md +0 -20
- package/fp16/bench/alt-element.cc +0 -89
- package/fp16/bench/from-alt-array.cc +0 -175
- package/fp16/bench/from-ieee-array.cc +0 -399
- package/fp16/bench/ieee-element.cc +0 -272
- package/fp16/bench/to-alt-array.cc +0 -91
- package/fp16/bench/to-ieee-array.cc +0 -303
- package/fp16/cmake/DownloadGoogleBenchmark.cmake +0 -15
- package/fp16/cmake/DownloadGoogleTest.cmake +0 -15
- package/fp16/cmake/DownloadPSimd.cmake +0 -15
- package/fp16/configure.py +0 -65
- package/fp16/confu.yaml +0 -8
- package/fp16/include/fp16/__init__.py +0 -0
- package/fp16/include/fp16/avx.py +0 -50
- package/fp16/include/fp16/avx2.py +0 -53
- package/fp16/include/fp16/bitcasts.h +0 -92
- package/fp16/include/fp16/fp16.h +0 -451
- package/fp16/include/fp16/psimd.h +0 -131
- package/fp16/include/fp16.h +0 -11
- package/fp16/jni/Android.mk +0 -6
- package/fp16/jni/Application.mk +0 -4
- package/fp16/test/alt-from-fp32-value.cc +0 -498
- package/fp16/test/alt-to-fp32-bits.cc +0 -263
- package/fp16/test/alt-to-fp32-psimd.cc +0 -145
- package/fp16/test/alt-to-fp32-value.cc +0 -348
- package/fp16/test/alt-to-fp32x2-psimd.cc +0 -245
- package/fp16/test/bitcasts.cc +0 -56
- package/fp16/test/ieee-from-fp32-value.cc +0 -523
- package/fp16/test/ieee-to-fp32-bits.cc +0 -333
- package/fp16/test/ieee-to-fp32-psimd.cc +0 -312
- package/fp16/test/ieee-to-fp32-value.cc +0 -420
- package/fp16/test/ieee-to-fp32x2-psimd.cc +0 -541
- package/fp16/test/peachpy/alt-xmm-to-fp32-xmm-avx.cc +0 -96
- package/fp16/test/peachpy/alt-xmm-to-fp32-ymm-avx2.cc +0 -96
- package/fp16/test/peachpy/stubs.py +0 -38
- package/fp16/test/tables.cc +0 -530
- package/fp16/test/tables.h +0 -13
- package/fp16/third-party/THHalf.h +0 -92
- package/fp16/third-party/eigen-half.h +0 -170
- package/fp16/third-party/float16-compressor.h +0 -80
- package/fp16/third-party/half.hpp +0 -2916
- package/fp16/third-party/npy-halffloat.h +0 -328
- package/include/usearch/index.hpp +0 -3836
- package/include/usearch/index_dense.hpp +0 -2004
- package/include/usearch/index_plugins.hpp +0 -2213
- package/javascript/lib.cpp +0 -341
- package/javascript/types/usearch.d.ts.map +0 -1
- package/javascript/usearch.test.js +0 -74
- package/package-ci.json +0 -10
- package/pyproject.toml +0 -51
- package/setup.py +0 -201
- package/simsimd/.releaserc +0 -86
- package/simsimd/CONTRIBUTING.md +0 -88
- package/simsimd/Cargo.lock +0 -709
- package/simsimd/Cargo.toml +0 -44
- package/simsimd/LICENSE +0 -201
- package/simsimd/README.md +0 -317
- package/simsimd/binding.gyp +0 -36
- package/simsimd/build.rs +0 -20
- package/simsimd/include/simsimd/binary.h +0 -245
- package/simsimd/include/simsimd/complex.h +0 -174
- package/simsimd/include/simsimd/probability.h +0 -548
- package/simsimd/include/simsimd/simsimd.h +0 -465
- package/simsimd/include/simsimd/spatial.h +0 -1267
- package/simsimd/include/simsimd/types.h +0 -208
- package/simsimd/javascript/bench.js +0 -127
- package/simsimd/javascript/fallback.ts +0 -193
- package/simsimd/javascript/lib.c +0 -102
- package/simsimd/javascript/node-gyp-build.d.ts +0 -1
- package/simsimd/javascript/simsimd.ts +0 -124
- package/simsimd/javascript/test.mjs +0 -153
- package/simsimd/javascript/tsconfig-base.json +0 -25
- package/simsimd/javascript/tsconfig-cjs.json +0 -8
- package/simsimd/javascript/tsconfig-esm.json +0 -8
- package/simsimd/package-lock.json +0 -1688
- package/simsimd/package.json +0 -61
- package/simsimd/rust/benches/cosine.rs +0 -27
- package/simsimd/rust/benches/native.rs +0 -30
- package/simsimd/rust/benches/sqeuclidean.rs +0 -27
- package/simsimd/rust/lib.c +0 -45
- package/simsimd/rust/lib.rs +0 -550
- package/sqlite/README.md +0 -178
- package/sqlite/lib.cpp +0 -325
- package/stringzilla/CONTRIBUTING.md +0 -446
- package/stringzilla/Cargo.lock +0 -25
- package/stringzilla/Cargo.toml +0 -26
- package/stringzilla/LICENSE +0 -201
- package/stringzilla/README.md +0 -1422
- package/stringzilla/VERSION +0 -1
- package/stringzilla/assets/cover-strinzilla.jpeg +0 -0
- package/stringzilla/assets/meme-stringzilla-v2.jpeg +0 -0
- package/stringzilla/assets/meme-stringzilla-v3.jpeg +0 -0
- package/stringzilla/binding.gyp +0 -16
- package/stringzilla/build.rs +0 -87
- package/stringzilla/c/lib.c +0 -337
- package/stringzilla/cli/README.md +0 -65
- package/stringzilla/cli/__init__.py +0 -0
- package/stringzilla/cli/split.py +0 -105
- package/stringzilla/cli/wc.py +0 -117
- package/stringzilla/include/stringzilla/experimental.h +0 -845
- package/stringzilla/include/stringzilla/module.modulemap +0 -9
- package/stringzilla/include/stringzilla/stringzilla.h +0 -5370
- package/stringzilla/include/stringzilla/stringzilla.hpp +0 -3838
- package/stringzilla/javascript/lib.c +0 -125
- package/stringzilla/javascript/stringzilla.js +0 -22
- package/stringzilla/package-ci.json +0 -10
- package/stringzilla/package.json +0 -32
- package/stringzilla/rust/lib.rs +0 -873
- package/stringzilla/swift/StringProtocol+StringZilla.swift +0 -280
- package/stringzilla/swift/Test.swift +0 -60
- package/tsconfig.json +0 -21
- package/wasmer.toml +0 -12
- package/winlibinstaller.bat +0 -42
- /package/{simsimd/javascript/dist-package-cjs.json → javascript/dist/cjs/package.json} +0 -0
- /package/{simsimd/javascript/dist-package-esm.json → javascript/dist/esm/package.json} +0 -0
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file lib.c
|
|
3
|
-
* @brief JavaScript bindings for StringZilla.
|
|
4
|
-
* @author Ash Vardanian
|
|
5
|
-
* @date September 18, 2023
|
|
6
|
-
*
|
|
7
|
-
* @copyright Copyright (c) 2023
|
|
8
|
-
* @see NodeJS docs: https://nodejs.org/api/n-api.html
|
|
9
|
-
*/
|
|
10
|
-
#include <stdio.h> // `printf` for debug builds
|
|
11
|
-
#include <stdlib.h> // `malloc` to export strings into UTF-8
|
|
12
|
-
|
|
13
|
-
#include <node_api.h> // `napi_*` functions
|
|
14
|
-
|
|
15
|
-
#include <stringzilla/stringzilla.h> // `sz_*` functions
|
|
16
|
-
|
|
17
|
-
napi_value indexOfAPI(napi_env env, napi_callback_info info) {
|
|
18
|
-
size_t argc = 2;
|
|
19
|
-
napi_value args[2];
|
|
20
|
-
napi_get_cb_info(env, info, &argc, args, NULL, NULL);
|
|
21
|
-
|
|
22
|
-
// Extract the C string from the JavaScript string for haystack and needle
|
|
23
|
-
sz_string_view_t haystack = {NULL, 0};
|
|
24
|
-
sz_string_view_t needle = {NULL, 0};
|
|
25
|
-
|
|
26
|
-
// For haystack
|
|
27
|
-
napi_get_value_string_utf8(env, args[0], NULL, 0, (size_t *)&haystack.length);
|
|
28
|
-
haystack.start = malloc(haystack.length + 1);
|
|
29
|
-
napi_get_value_string_utf8(env, args[0], (char *)haystack.start, haystack.length + 1, (size_t *)&haystack.length);
|
|
30
|
-
|
|
31
|
-
// For needle
|
|
32
|
-
napi_get_value_string_utf8(env, args[1], NULL, 0, (size_t *)&needle.length);
|
|
33
|
-
needle.start = malloc(needle.length + 1);
|
|
34
|
-
napi_get_value_string_utf8(env, args[1], (char *)needle.start, needle.length + 1, (size_t *)&needle.length);
|
|
35
|
-
|
|
36
|
-
// Convert the result to JavaScript BigInt and return
|
|
37
|
-
napi_value js_result;
|
|
38
|
-
if (needle.length == 0) { napi_create_bigint_int64(env, 0, &js_result); }
|
|
39
|
-
else {
|
|
40
|
-
sz_cptr_t result = sz_find(haystack.start, haystack.length, needle.start, needle.length);
|
|
41
|
-
|
|
42
|
-
// In JavaScript, if `indexOf` is unable to indexOf the specified value, then it should return -1
|
|
43
|
-
if (result == NULL) { napi_create_bigint_int64(env, -1, &js_result); }
|
|
44
|
-
else { napi_create_bigint_uint64(env, result - haystack.start, &js_result); }
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// Cleanup
|
|
48
|
-
free((void *)haystack.start);
|
|
49
|
-
free((void *)needle.start);
|
|
50
|
-
return js_result;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
napi_value countAPI(napi_env env, napi_callback_info info) {
|
|
54
|
-
size_t argc = 3;
|
|
55
|
-
napi_value args[3];
|
|
56
|
-
napi_get_cb_info(env, info, &argc, args, NULL, NULL);
|
|
57
|
-
|
|
58
|
-
// Extract the C string from the JavaScript string for haystack and needle
|
|
59
|
-
sz_string_view_t haystack = {NULL, 0};
|
|
60
|
-
sz_string_view_t needle = {NULL, 0};
|
|
61
|
-
|
|
62
|
-
// For haystack
|
|
63
|
-
napi_get_value_string_utf8(env, args[0], NULL, 0, (size_t *)&haystack.length);
|
|
64
|
-
haystack.start = malloc(haystack.length + 1);
|
|
65
|
-
napi_get_value_string_utf8(env, args[0], (char *)haystack.start, haystack.length + 1, (size_t *)&haystack.length);
|
|
66
|
-
|
|
67
|
-
// For needle
|
|
68
|
-
napi_get_value_string_utf8(env, args[1], NULL, 0, (size_t *)&needle.length);
|
|
69
|
-
needle.start = malloc(needle.length + 1);
|
|
70
|
-
napi_get_value_string_utf8(env, args[1], (char *)needle.start, needle.length + 1, (size_t *)&needle.length);
|
|
71
|
-
|
|
72
|
-
bool overlap = false;
|
|
73
|
-
if (argc > 2) { napi_get_value_bool(env, args[2], &overlap); }
|
|
74
|
-
|
|
75
|
-
void const *haystack_start = haystack.start, *needle_start = needle.start;
|
|
76
|
-
|
|
77
|
-
size_t count = 0;
|
|
78
|
-
if (needle.length == 0 || haystack.length == 0 || haystack.length < needle.length) { count = 0; }
|
|
79
|
-
else if (overlap) {
|
|
80
|
-
while (haystack.length) {
|
|
81
|
-
sz_cptr_t ptr = sz_find(haystack.start, haystack.length, needle.start, needle.length);
|
|
82
|
-
sz_bool_t found = ptr != NULL;
|
|
83
|
-
sz_size_t offset = found ? (sz_size_t)(ptr - haystack.start) : haystack.length;
|
|
84
|
-
count += found;
|
|
85
|
-
haystack.start += offset + found;
|
|
86
|
-
haystack.length -= offset + found;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
while (haystack.length) {
|
|
91
|
-
sz_cptr_t ptr = sz_find(haystack.start, haystack.length, needle.start, needle.length);
|
|
92
|
-
sz_bool_t found = ptr != NULL;
|
|
93
|
-
sz_size_t offset = found ? (sz_size_t)(ptr - haystack.start) : haystack.length;
|
|
94
|
-
count += found;
|
|
95
|
-
haystack.start += offset + needle.length;
|
|
96
|
-
haystack.length -= offset + needle.length * found;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// Cleanup
|
|
101
|
-
free((void *)haystack_start);
|
|
102
|
-
free((void *)needle_start);
|
|
103
|
-
|
|
104
|
-
// Convert the `count` to JavaScript `BigInt` and return
|
|
105
|
-
napi_value js_count;
|
|
106
|
-
napi_create_bigint_uint64(env, count, &js_count);
|
|
107
|
-
|
|
108
|
-
return js_count;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
napi_value Init(napi_env env, napi_value exports) {
|
|
112
|
-
|
|
113
|
-
// Define an array of property descriptors
|
|
114
|
-
napi_property_descriptor findDesc = {"indexOf", 0, indexOfAPI, 0, 0, 0, napi_default, 0};
|
|
115
|
-
napi_property_descriptor countDesc = {"count", 0, countAPI, 0, 0, 0, napi_default, 0};
|
|
116
|
-
napi_property_descriptor properties[] = {findDesc, countDesc};
|
|
117
|
-
|
|
118
|
-
// Define the properties on the `exports` object
|
|
119
|
-
size_t propertyCount = sizeof(properties) / sizeof(properties[0]);
|
|
120
|
-
napi_define_properties(env, exports, propertyCount, properties);
|
|
121
|
-
|
|
122
|
-
return exports;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
NAPI_MODULE(NODE_GYP_MODULE_NAME, Init)
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
const compiled = require('bindings')('stringzilla');
|
|
2
|
-
|
|
3
|
-
module.exports = {
|
|
4
|
-
/**
|
|
5
|
-
* Searches for a short string in a long one.
|
|
6
|
-
*
|
|
7
|
-
* @param {string} haystack
|
|
8
|
-
* @param {string} needle
|
|
9
|
-
* @returns {bigint}
|
|
10
|
-
*/
|
|
11
|
-
find: compiled.find,
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Searches for a substring in a larger string.
|
|
15
|
-
*
|
|
16
|
-
* @param {string} haystack
|
|
17
|
-
* @param {string} needle
|
|
18
|
-
* @param {boolean} overlap
|
|
19
|
-
* @returns {bigint}
|
|
20
|
-
*/
|
|
21
|
-
count: compiled.count
|
|
22
|
-
};
|
package/stringzilla/package.json
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "stringzilla",
|
|
3
|
-
"version": "3.5.0",
|
|
4
|
-
"description": "SIMD-accelerated string search, sort, hashes, fingerprints, & edit distances",
|
|
5
|
-
"author": "Ash Vardanian",
|
|
6
|
-
"license": "Apache 2.0",
|
|
7
|
-
"main": "javascript/stringzilla.js",
|
|
8
|
-
"type": "module",
|
|
9
|
-
"repository": {
|
|
10
|
-
"type": "git",
|
|
11
|
-
"url": "https://github.com/ashvardanian/stringzilla.git"
|
|
12
|
-
},
|
|
13
|
-
"gypfile": true,
|
|
14
|
-
"engines": {
|
|
15
|
-
"node": "~10 >=10.20 || >=12.17"
|
|
16
|
-
},
|
|
17
|
-
"dependencies": {
|
|
18
|
-
"@types/node": "^20.4.5",
|
|
19
|
-
"bindings": "~1.2.1",
|
|
20
|
-
"node-addon-api": "^3.0.0"
|
|
21
|
-
},
|
|
22
|
-
"scripts": {
|
|
23
|
-
"test": "node --test ./scripts/test.js"
|
|
24
|
-
},
|
|
25
|
-
"devDependencies": {
|
|
26
|
-
"@semantic-release/exec": "^6.0.3",
|
|
27
|
-
"@semantic-release/git": "^10.0.1",
|
|
28
|
-
"conventional-changelog-eslint": "^3.0.9",
|
|
29
|
-
"semantic-release": "^21.1.2",
|
|
30
|
-
"typescript": "^5.1.6"
|
|
31
|
-
}
|
|
32
|
-
}
|