usearch 0.20.0 → 0.22.0
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/.github/workflows/prerelease.yml +46 -0
- package/.github/workflows/release.yml +28 -0
- package/.github/workflows/update_version.sh +2 -1
- package/CMakeLists.txt +4 -0
- package/Cargo.toml +1 -1
- package/README.md +93 -585
- package/c/lib.cpp +19 -15
- package/c/usearch.h +26 -23
- package/cmake/emscripten.cmake +8 -0
- package/conanfile.py +1 -1
- package/cpp/CMakeLists.txt +6 -2
- package/cpp/README.md +88 -0
- package/cpp/bench.cpp +72 -44
- package/cpp/test.cpp +13 -7
- package/docs/benchmarks.md +14 -12
- package/docs/golang/index.rst +6 -0
- package/docs/index.rst +5 -2
- package/docs/python/reference.rst +9 -2
- package/docs/rust/index.rst +6 -0
- package/docs/swift/index.rst +6 -0
- package/golang/README.md +28 -0
- package/include/usearch/index.hpp +668 -123
- package/include/usearch/index_punned_dense.hpp +305 -93
- package/include/usearch/index_punned_helpers.hpp +28 -3
- package/java/README.md +22 -0
- package/javascript/README.md +27 -0
- package/javascript/lib.cpp +1 -1
- package/package.json +1 -1
- package/python/README.md +283 -0
- package/python/lib.cpp +118 -16
- package/python/scripts/join.py +155 -0
- package/python/scripts/test.py +45 -241
- package/python/scripts/test_jit.py +244 -0
- package/python/usearch/eval.py +11 -3
- package/python/usearch/index.py +207 -26
- package/rust/README.md +67 -0
- package/swift/README.md +20 -0
- package/wasm/CMakeLists.txt +15 -0
- package/wasm/lib.cpp +5 -0
- package/wasmer.toml +8 -0
- package/python/usearch/join.py +0 -98
|
@@ -17,6 +17,33 @@ permissions:
|
|
|
17
17
|
|
|
18
18
|
jobs:
|
|
19
19
|
|
|
20
|
+
build_test:
|
|
21
|
+
name: Test USearch
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
steps:
|
|
24
|
+
- uses: actions/checkout@v3
|
|
25
|
+
with:
|
|
26
|
+
ref: main-dev
|
|
27
|
+
- run: git submodule update --init --recursive
|
|
28
|
+
- name: Prepare Environment
|
|
29
|
+
run: |
|
|
30
|
+
sudo apt update &&
|
|
31
|
+
sudo apt install -y cmake g++-12 build-essential libjemalloc-dev
|
|
32
|
+
- name: Build
|
|
33
|
+
run: |
|
|
34
|
+
cmake -B ./build_release \
|
|
35
|
+
-DCMAKE_CXX_COMPILER="g++-12" \
|
|
36
|
+
-DCMAKE_BUILD_TYPE=Release \
|
|
37
|
+
-DUSEARCH_BUILD_TEST=1 \
|
|
38
|
+
-DUSEARCH_USE_OPENMP=1 \
|
|
39
|
+
-DUSEARCH_USE_SIMSIMD=1 \
|
|
40
|
+
-DUSEARCH_USE_JEMALLOC=1 \
|
|
41
|
+
-DUSEARCH_BUILD_BENCHMARK=0 &&
|
|
42
|
+
make -C ./build_release -j
|
|
43
|
+
- name: Run tests
|
|
44
|
+
run: ./build_release/test
|
|
45
|
+
|
|
46
|
+
|
|
20
47
|
test_python_311:
|
|
21
48
|
name: Test Python
|
|
22
49
|
runs-on: ${{ matrix.os }}
|
|
@@ -121,6 +148,25 @@ jobs:
|
|
|
121
148
|
- name: Run tests
|
|
122
149
|
run: swift test
|
|
123
150
|
|
|
151
|
+
test_wasm:
|
|
152
|
+
name: Test WASM
|
|
153
|
+
runs-on: ubuntu-latest
|
|
154
|
+
steps:
|
|
155
|
+
- uses: actions/checkout@v3
|
|
156
|
+
- run: git submodule update --init --recursive
|
|
157
|
+
- name: Prepare WASM Environment
|
|
158
|
+
run: |
|
|
159
|
+
sudo apt update &&
|
|
160
|
+
sudo apt install -y nodejs
|
|
161
|
+
git clone https://github.com/emscripten-core/emsdk.git
|
|
162
|
+
./emsdk/emsdk install latest
|
|
163
|
+
- name: Build USearch by Emscripten
|
|
164
|
+
run: |
|
|
165
|
+
./emsdk/emsdk activate latest && source ./emsdk/emsdk_env.sh
|
|
166
|
+
emcmake cmake -B ./build -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -s TOTAL_MEMORY=64MB" && emmake make -C ./build
|
|
167
|
+
- name: Run tests
|
|
168
|
+
run: node ./build/test.js
|
|
169
|
+
|
|
124
170
|
build_docker:
|
|
125
171
|
name: Test Docker Image
|
|
126
172
|
runs-on: ubuntu-latest
|
|
@@ -270,6 +270,34 @@ jobs:
|
|
|
270
270
|
push: true
|
|
271
271
|
tags: ${{ steps.meta.outputs.tags }}
|
|
272
272
|
labels: ${{ steps.meta.outputs.labels }}
|
|
273
|
+
|
|
274
|
+
build_publish_wasm:
|
|
275
|
+
name: WASM Build
|
|
276
|
+
runs-on: ubuntu-latest
|
|
277
|
+
steps:
|
|
278
|
+
- uses: actions/checkout@v3
|
|
279
|
+
- run: git submodule update --init --recursive
|
|
280
|
+
|
|
281
|
+
- name: Prepare WASM Environment
|
|
282
|
+
run: |
|
|
283
|
+
git clone https://github.com/emscripten-core/emsdk.git
|
|
284
|
+
./emsdk/emsdk install latest
|
|
285
|
+
|
|
286
|
+
- name: Build USearch WASM by Emscripten
|
|
287
|
+
run: |
|
|
288
|
+
./emsdk/emsdk activate latest && source ./emsdk/emsdk_env.sh
|
|
289
|
+
emcmake cmake -DUSEARCH_BUILD_TEST=0 -DUSEARCH_BUILD_BENCHMARK=0 -DUSEARCH_BUILD_WASM=1 -B ./build && emmake make -C ./build
|
|
290
|
+
|
|
291
|
+
- name: Install wasmer cli
|
|
292
|
+
run: |
|
|
293
|
+
curl https://get.wasmer.io -sSfL | sh
|
|
294
|
+
source ~/.wasmer/wasmer.sh
|
|
295
|
+
|
|
296
|
+
- name: Login Wasmer.io
|
|
297
|
+
run: wasmer login --token "${{ secrets.WASMER_TOKEN }}"
|
|
298
|
+
|
|
299
|
+
- name: Publish binary to Wasmer.io
|
|
300
|
+
run: wasmer publish
|
|
273
301
|
|
|
274
302
|
|
|
275
303
|
build_docs:
|
|
@@ -9,4 +9,5 @@ echo $1 > VERSION &&
|
|
|
9
9
|
sed -i "s/^\(#define USEARCH_VERSION_MINOR \).*/\1$(echo "$1" | cut -d. -f2)/" ./include/usearch/index.hpp &&
|
|
10
10
|
sed -i "s/^\(#define USEARCH_VERSION_PATCH \).*/\1$(echo "$1" | cut -d. -f3)/" ./include/usearch/index.hpp &&
|
|
11
11
|
sed -i "s/<version>[0-9]\+\.[0-9]\+\.[0-9]\+/<version>$1/" README.md &&
|
|
12
|
-
sed -i "s/version = {0\.[0-9]\+\.[0-9]\+}/version = {$1}/" README.md
|
|
12
|
+
sed -i "s/version = {0\.[0-9]\+\.[0-9]\+}/version = {$1}/" README.md &&
|
|
13
|
+
sed -i "s/version=\".*\"/version=\"$1\"/" wasmer.toml
|
package/CMakeLists.txt
CHANGED
package/Cargo.toml
CHANGED