usearch 2.8.7 → 2.8.9

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.
Files changed (113) hide show
  1. package/CITATION.cff +1 -1
  2. package/CMakeLists.txt +3 -3
  3. package/CONTRIBUTING.md +26 -3
  4. package/Cargo.toml +1 -1
  5. package/Dockerfile +16 -0
  6. package/README.md +41 -38
  7. package/VERSION +1 -0
  8. package/binding.gyp +57 -8
  9. package/conanfile.py +1 -1
  10. package/include/usearch/index.hpp +1 -1
  11. package/include/usearch/index_plugins.hpp +28 -24
  12. package/javascript/README.md +64 -12
  13. package/javascript/lib.cpp +11 -3
  14. package/javascript/usearch.js +4 -2
  15. package/javascript/usearch.test.js +15 -0
  16. package/package.json +1 -2
  17. package/setup.py +76 -15
  18. package/simsimd/README.md +14 -13
  19. package/simsimd/include/simsimd/probability.h +2 -2
  20. package/simsimd/package.json +1 -1
  21. package/wasmer.toml +1 -1
  22. package/. npmignore +0 -14
  23. package/.gitignore +0 -95
  24. package/.vscode/launch.json +0 -181
  25. package/.vscode/settings.json +0 -180
  26. package/.vscode/tasks.json +0 -71
  27. package/Package.swift +0 -41
  28. package/csharp/.editorconfig +0 -361
  29. package/csharp/Cloud.Unum.USearch.sln +0 -34
  30. package/csharp/DEV_SETUP.md +0 -51
  31. package/csharp/Directory.Build.props +0 -29
  32. package/csharp/README.md +0 -74
  33. package/csharp/build_and_test.cmd +0 -31
  34. package/csharp/build_and_test.sh +0 -30
  35. package/csharp/nuget/nuget-package.props +0 -33
  36. package/csharp/pack.sh +0 -56
  37. package/csharp/src/Cloud.Unum.USearch.Tests/Cloud.Unum.USearch.Tests.csproj +0 -39
  38. package/csharp/src/Cloud.Unum.USearch.Tests/USearchIndexTests.cs +0 -1013
  39. package/csharp/src/Cloud.Unum.USearch.Tests/Usings.cs +0 -1
  40. package/docs/_static/custom.css +0 -26
  41. package/docs/_static/custom.js +0 -7
  42. package/docs/benchmarks.md +0 -245
  43. package/docs/benchmarks.rst +0 -5
  44. package/docs/c/index.rst +0 -11
  45. package/docs/c/reference.rst +0 -7
  46. package/docs/conf.dox +0 -2668
  47. package/docs/conf.py +0 -53
  48. package/docs/contributing.rst +0 -5
  49. package/docs/cpp/index.rst +0 -11
  50. package/docs/cpp/reference.rst +0 -17
  51. package/docs/csharp/index.rst +0 -6
  52. package/docs/format.md +0 -86
  53. package/docs/format.rst +0 -5
  54. package/docs/golang/index.rst +0 -6
  55. package/docs/index.rst +0 -33
  56. package/docs/java/index.rst +0 -11
  57. package/docs/java/reference.rst +0 -7
  58. package/docs/javascript/index.rst +0 -11
  59. package/docs/javascript/reference.rst +0 -12
  60. package/docs/python/index.rst +0 -11
  61. package/docs/python/reference.rst +0 -42
  62. package/docs/rust/index.rst +0 -6
  63. package/docs/swift/index.rst +0 -6
  64. package/docs/wolfram/index.rst +0 -6
  65. package/golang/README.md +0 -95
  66. package/golang/go.mod +0 -3
  67. package/golang/lib.go +0 -379
  68. package/golang/lib_test.go +0 -108
  69. package/java/README.md +0 -22
  70. package/java/cloud/unum/usearch/Index.java +0 -337
  71. package/java/cloud/unum/usearch/cloud_unum_usearch_Index.cpp +0 -197
  72. package/java/cloud/unum/usearch/cloud_unum_usearch_Index.h +0 -125
  73. package/java/test/IndexTest.java +0 -30
  74. package/objc/USearchObjective.mm +0 -299
  75. package/objc/include/USearchObjective.h +0 -154
  76. package/python/README.md +0 -292
  77. package/python/lib.cpp +0 -1216
  78. package/python/scripts/bench.ipynb +0 -193
  79. package/python/scripts/bench.py +0 -137
  80. package/python/scripts/bench_exact.py +0 -44
  81. package/python/scripts/cluster.ipynb +0 -160
  82. package/python/scripts/index_faiss.py +0 -100
  83. package/python/scripts/join.py +0 -155
  84. package/python/scripts/test_index.py +0 -247
  85. package/python/scripts/test_jit.py +0 -231
  86. package/python/scripts/test_sparse.py +0 -32
  87. package/python/scripts/test_tooling.py +0 -133
  88. package/python/usearch/__init__.py +0 -0
  89. package/python/usearch/client.py +0 -124
  90. package/python/usearch/eval.py +0 -470
  91. package/python/usearch/index.py +0 -1401
  92. package/python/usearch/io.py +0 -113
  93. package/python/usearch/numba.py +0 -121
  94. package/python/usearch/server.py +0 -137
  95. package/rust/README.md +0 -66
  96. package/rust/lib.cpp +0 -136
  97. package/rust/lib.hpp +0 -69
  98. package/rust/lib.rs +0 -610
  99. package/simsimd/CMakeLists.txt +0 -67
  100. package/simsimd/cpp/bench.cxx +0 -206
  101. package/simsimd/package-ci.json +0 -10
  102. package/simsimd/setup.py +0 -86
  103. package/swift/Index+Sugar.swift +0 -153
  104. package/swift/README.md +0 -48
  105. package/swift/Test.swift +0 -37
  106. package/swift/USearch.swift +0 -8
  107. package/wasm/CMakeLists.txt +0 -7
  108. package/wasm/README.md +0 -13
  109. package/wasm/lib.cpp +0 -5
  110. package/wolfram/CMakeLists.txt +0 -18
  111. package/wolfram/README.md +0 -13
  112. package/wolfram/lib.cpp +0 -160
  113. package/wolfram/test.wls +0 -27
package/wolfram/lib.cpp DELETED
@@ -1,160 +0,0 @@
1
- #include "WolframLibrary.h"
2
- #include <usearch/index_dense.hpp>
3
-
4
- using namespace unum::usearch;
5
-
6
- using distance_t = distance_punned_t;
7
- using index_t = index_dense_t;
8
- using vector_view_t = span_gt<float>;
9
-
10
- using add_result_t = typename index_t::add_result_t;
11
- using search_result_t = typename index_t::search_result_t;
12
- using vector_key_t = typename index_t::vector_key_t;
13
-
14
- EXTERN_C DLLEXPORT int WolframLibrary_initialize(WolframLibraryData libData) { return LIBRARY_NO_ERROR; }
15
- EXTERN_C DLLEXPORT void WolframLibrary_uninitialize(WolframLibraryData libData) { return; }
16
-
17
- EXTERN_C DLLEXPORT int IndexCreate(WolframLibraryData libData, mint Argc, MArgument* Args, MArgument Res) {
18
- index_config_t config;
19
- char* quantization_cstr = nullptr;
20
- char* metric_cstr = nullptr;
21
- try {
22
- quantization_cstr = MArgument_getUTF8String(Args[1]);
23
- metric_cstr = MArgument_getUTF8String(Args[0]);
24
- std::size_t dimensions = static_cast<std::size_t>(MArgument_getInteger(Args[2]));
25
- std::size_t capacity = static_cast<std::size_t>(MArgument_getInteger(Args[3]));
26
- config.connectivity = static_cast<std::size_t>(MArgument_getInteger(Args[4]));
27
- config.expansion_add = static_cast<std::size_t>(MArgument_getInteger(Args[5]));
28
- config.expansion_search = static_cast<std::size_t>(MArgument_getInteger(Args[6]));
29
-
30
- scalar_kind_t quantization = scalar_kind_from_name(quantization_cstr, std::strlen(quantization_cstr));
31
- metric_kind_t metric_kind = metric_from_name(metric_cstr, std::strlen(metric_cstr));
32
- index_t index = make_punned<index_t>(metric_kind, dimensions, quantization, config);
33
- index.reserve(capacity);
34
-
35
- index_t* result_ptr = new index_t(std::move(index));
36
- MArgument_setInteger(Res, (long)result_ptr);
37
-
38
- } catch (...) {
39
- return LIBRARY_FUNCTION_ERROR;
40
- }
41
-
42
- libData->UTF8String_disown(quantization_cstr);
43
- libData->UTF8String_disown(metric_cstr);
44
- return LIBRARY_NO_ERROR;
45
- }
46
-
47
- EXTERN_C DLLEXPORT int IndexSave(WolframLibraryData libData, mint Argc, MArgument* Args, MArgument Res) {
48
- char* path_cstr = nullptr;
49
- index_t* c_ptr = (index_t*)MArgument_getUTF8String(Args[0]);
50
- try {
51
- path_cstr = MArgument_getUTF8String(Args[1]);
52
- c_ptr->save(path_cstr);
53
- } catch (...) {
54
- return LIBRARY_FUNCTION_ERROR;
55
- }
56
- libData->UTF8String_disown(path_cstr);
57
- return LIBRARY_NO_ERROR;
58
- }
59
-
60
- EXTERN_C DLLEXPORT int IndexLoad(WolframLibraryData libData, mint Argc, MArgument* Args, MArgument Res) {
61
- char* path_cstr = nullptr;
62
- index_t* c_ptr = (index_t*)MArgument_getUTF8String(Args[0]);
63
- try {
64
- path_cstr = MArgument_getUTF8String(Args[1]);
65
- c_ptr->load(path_cstr);
66
- } catch (...) {
67
- return LIBRARY_FUNCTION_ERROR;
68
- }
69
- libData->UTF8String_disown(path_cstr);
70
- return LIBRARY_NO_ERROR;
71
- }
72
-
73
- EXTERN_C DLLEXPORT int IndexView(WolframLibraryData libData, mint Argc, MArgument* Args, MArgument Res) {
74
- char* path_cstr = nullptr;
75
- index_t* c_ptr = (index_t*)MArgument_getUTF8String(Args[0]);
76
- try {
77
- path_cstr = MArgument_getUTF8String(Args[1]);
78
- c_ptr->view(path_cstr);
79
- } catch (...) {
80
- return LIBRARY_FUNCTION_ERROR;
81
- }
82
- libData->UTF8String_disown(path_cstr);
83
- return LIBRARY_NO_ERROR;
84
- }
85
-
86
- EXTERN_C DLLEXPORT int IndexDestroy(WolframLibraryData libData, mint Argc, MArgument* Args, MArgument Res) {
87
- delete (index_t*)MArgument_getUTF8String(Args[0]);
88
- return LIBRARY_NO_ERROR;
89
- }
90
-
91
- EXTERN_C DLLEXPORT int IndexSize(WolframLibraryData libData, mint Argc, MArgument* Args, MArgument Res) {
92
- std::size_t res = ((index_t*)MArgument_getUTF8String(Args[0]))->size();
93
- MArgument_setInteger(Res, res);
94
- return LIBRARY_NO_ERROR;
95
- }
96
-
97
- EXTERN_C DLLEXPORT int IndexConnectivity(WolframLibraryData libData, mint Argc, MArgument* Args, MArgument Res) {
98
- std::size_t res = ((index_t*)MArgument_getUTF8String(Args[0]))->connectivity();
99
- MArgument_setInteger(Res, res);
100
- return LIBRARY_NO_ERROR;
101
- }
102
-
103
- EXTERN_C DLLEXPORT int IndexDimensions(WolframLibraryData libData, mint Argc, MArgument* Args, MArgument Res) {
104
- std::size_t res = ((index_t*)MArgument_getUTF8String(Args[0]))->dimensions();
105
- MArgument_setInteger(Res, res);
106
- return LIBRARY_NO_ERROR;
107
- }
108
-
109
- EXTERN_C DLLEXPORT int IndexCapacity(WolframLibraryData libData, mint Argc, MArgument* Args, MArgument Res) {
110
- std::size_t res = ((index_t*)MArgument_getUTF8String(Args[0]))->capacity();
111
- MArgument_setInteger(Res, res);
112
- return LIBRARY_NO_ERROR;
113
- }
114
-
115
- EXTERN_C DLLEXPORT int IndexAdd(WolframLibraryData libData, mint Argc, MArgument* Args, MArgument Res) {
116
- char* path_cstr = nullptr;
117
- index_t* c_ptr = (index_t*)MArgument_getUTF8String(Args[0]);
118
- float* vector_data = nullptr;
119
- try {
120
- int key = MArgument_getInteger(Args[1]);
121
- MTensor tens = MArgument_getMTensor(Args[2]);
122
- std::size_t len = libData->MTensor_getFlattenedLength(tens);
123
- vector_data = (float*)libData->MTensor_getRealData(tens);
124
- vector_view_t vector_span = vector_view_t{vector_data, len};
125
- c_ptr->add(key, vector_span);
126
- } catch (...) {
127
- return LIBRARY_FUNCTION_ERROR;
128
- }
129
- return LIBRARY_NO_ERROR;
130
- }
131
-
132
- EXTERN_C DLLEXPORT int IndexSearch(WolframLibraryData libData, mint Argc, MArgument* Args, MArgument Res) {
133
- index_t* c_ptr = (index_t*)MArgument_getUTF8String(Args[0]);
134
- MTensor matches;
135
- mint dims[] = {1};
136
- int wanted = MArgument_getInteger(Args[2]);
137
- float* vector_data = nullptr;
138
- int* matches_data = nullptr;
139
- std::size_t found = 0;
140
-
141
- try {
142
- libData->MTensor_new(MType_Integer, 1, dims, &matches);
143
-
144
- MTensor tens = MArgument_getMTensor(Args[1]);
145
- std::size_t len = libData->MTensor_getFlattenedLength(tens);
146
- vector_data = (float*)libData->MTensor_getRealData(tens);
147
- vector_view_t vector_span = vector_view_t{vector_data, len};
148
-
149
- matches_data = (int*)std::malloc(sizeof(int) * wanted);
150
- found = c_ptr->search(vector_span, static_cast<std::size_t>(wanted), matches_data, nullptr);
151
- for (mint i = 0; i < found; i++)
152
- libData->MTensor_setInteger(matches, &i, matches_data[i]);
153
-
154
- MArgument_setMTensor(Res, matches);
155
- } catch (...) {
156
- return LIBRARY_FUNCTION_ERROR;
157
- }
158
- std::free(matches_data);
159
- return LIBRARY_NO_ERROR;
160
- }
package/wolfram/test.wls DELETED
@@ -1,27 +0,0 @@
1
- #!/usr/bin/env wolframscript
2
-
3
- IndexCreate = LibraryFunctionLoad["wolfram/usearchWFM.so", "IndexCreate", {"UTF8String", "UTF8String", Integer, Integer, Integer, Integer, Integer}, Integer]
4
- IndexSave = LibraryFunctionLoad["wolfram/usearchWFM.so", "IndexSave", {Integer, "UTF8String"}, "Void"]
5
- IndexLoad = LibraryFunctionLoad["wolfram/usearchWFM.so", "IndexLoad", {Integer, "UTF8String"}, "Void"]
6
- IndexView = LibraryFunctionLoad["wolfram/usearchWFM.so", "IndexView", {Integer, "UTF8String"}, "Void"]
7
- IndexDestroy = LibraryFunctionLoad["wolfram/usearchWFM.so", "IndexDestroy", {Integer}, "Void"]
8
- IndexSize = LibraryFunctionLoad["wolfram/usearchWFM.so", "IndexSize", {Integer}, Integer]
9
- IndexConnectivity = LibraryFunctionLoad["wolfram/usearchWFM.so", "IndexConnectivity", {Integer}, Integer]
10
- IndexDimensions = LibraryFunctionLoad["wolfram/usearchWFM.so", "IndexDimensions", {Integer}, Integer]
11
- IndexCapacity = LibraryFunctionLoad["wolfram/usearchWFM.so", "IndexCapacity", {Integer}, Integer]
12
- IndexAdd = LibraryFunctionLoad["wolfram/usearchWFM.so", "IndexAdd", {Integer, Integer, {Real, 1}}, "Void"]
13
- IndexSearch = LibraryFunctionLoad["wolfram/usearchWFM.so", "IndexSearch", {Integer, {Real, 1}, Integer}, {Integer, 1}]
14
- Print["Functions Loaded"]
15
-
16
- $index = IndexCreate["cos", "f16", 10, 10, 10, 10, 10]
17
- Print["New Index Address: ", $index]
18
- Print["Index Size: ", IndexSize[$index]]
19
- Print["Index Capacity: ", IndexCapacity[$index]]
20
- Print["Index Connectivity: ", IndexConnectivity[$index]]
21
- $arr = {1.0, 2.0, 3.0, 4.0, 5.0};
22
- IndexAdd[$index, 42, $arr]
23
- Print["Added Array: ", $arr]
24
- $res = IndexSearch[$index, $arr, 42]
25
- Print["Searched: ", $res]
26
- IndexDestroy[$index]
27
- Print["Index Destroyed"]