fuzzgpu 0.1.6__tar.gz → 0.1.7__tar.gz
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.
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/Cargo.lock +2 -2
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/PKG-INFO +39 -23
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/README.md +38 -22
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/Cargo.toml +1 -1
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/shaders/jaro.wgsl +12 -3
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/shaders/jaro_matrix.wgsl +13 -3
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-python/Cargo.toml +2 -2
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-wasm/Cargo.toml +1 -1
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-wasm/src/lib.rs +4 -4
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/pyproject.toml +1 -1
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/Cargo.toml +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/LICENSE +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/assets/logo.png +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/benches/bench.rs +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/damerau.rs +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/fuzz.rs +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/gpu.rs +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/jaro.rs +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/levenshtein.rs +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/lib.rs +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/needleman.rs +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/shaders/damerau.wgsl +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/shaders/damerau_matrix.wgsl +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/shaders/levenshtein.wgsl +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/shaders/levenshtein_cdist_myers.wgsl +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/shaders/levenshtein_matrix.wgsl +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/shaders/levenshtein_myers.wgsl +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/shaders/levenshtein_short.wgsl +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/shaders/needleman_affine.wgsl +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/shaders/needleman_wavefront.wgsl +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/simd.rs +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/tests/differential.proptest-regressions +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/tests/differential.rs +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/tests/fixtures/broken.wgsl +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/tests/kernel_registration.rs +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-python/src/lib.rs +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-wasm/tests/differential_harness.js +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-wasm/tests/js_api.test.cjs +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/__init__.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/__init__.pyi +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/distance/DamerauLevenshtein.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/distance/Hamming.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/distance/Indel.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/distance/Jaro.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/distance/JaroWinkler.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/distance/LCSseq.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/distance/Levenshtein.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/distance/OSA.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/distance/Postfix.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/distance/Prefix.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/distance/__init__.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/distance/__init__.pyi +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/distance/_common.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/fuzz.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/fuzz.pyi +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/process.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/python/fuzzgpu/process.pyi +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/tests/test_api_signatures.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/tests/test_basic.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/tests/test_concurrency.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/tests/test_edge_cases.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/tests/test_invariants.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/tests/test_out_buffers.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/tests/test_rapidfuzz_compat.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/tests/test_stress.py +0 -0
- {fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/tests/wasm_python_differential.py +0 -0
|
@@ -372,7 +372,7 @@ dependencies = [
|
|
|
372
372
|
|
|
373
373
|
[[package]]
|
|
374
374
|
name = "fuzzgpu-core"
|
|
375
|
-
version = "0.1.
|
|
375
|
+
version = "0.1.7"
|
|
376
376
|
dependencies = [
|
|
377
377
|
"bytemuck",
|
|
378
378
|
"criterion",
|
|
@@ -386,7 +386,7 @@ dependencies = [
|
|
|
386
386
|
|
|
387
387
|
[[package]]
|
|
388
388
|
name = "fuzzgpu-python"
|
|
389
|
-
version = "0.1.
|
|
389
|
+
version = "0.1.7"
|
|
390
390
|
dependencies = [
|
|
391
391
|
"fuzzgpu-core",
|
|
392
392
|
"log",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fuzzgpu
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Classifier: Development Status :: 4 - Beta
|
|
5
5
|
Classifier: Intended Audience :: Developers
|
|
6
6
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -37,7 +37,7 @@ Project-URL: Repository, https://github.com/kuntal-devrat/fuzzgpu
|
|
|
37
37
|
|
|
38
38
|
*Cross-platform GPU compute via WebGPU (`wgpu`) & Multi-Core CPU parallelism with Rayon. Zero CUDA dependencies.*
|
|
39
39
|
|
|
40
|
-
[](https://pypi.org/project/fuzzgpu/)
|
|
41
41
|
[](https://opensource.org/licenses/MIT)
|
|
42
42
|
[](https://www.rust-lang.org)
|
|
43
43
|
[](https://github.com/kuntal-devrat/fuzzgpu)
|
|
@@ -60,34 +60,50 @@ No NVIDIA CUDA drivers or complex toolkits required.
|
|
|
60
60
|
|
|
61
61
|
---
|
|
62
62
|
|
|
63
|
-
## What's New in v0.1.
|
|
63
|
+
## What's New in v0.1.7
|
|
64
|
+
|
|
65
|
+
### Bug fixes (Windows DX12 / Jaro shader)
|
|
66
|
+
- **Jaro GPU shader FXC crash fixed** — `jaro.wgsl` and `jaro_matrix.wgsl` used dynamic vector
|
|
67
|
+
component writes (`v[j >> 5u] = ...`) in `bit_set()`. FXC (the DX12 HLSL compiler) cannot
|
|
68
|
+
emit a dynamic register-indexed store for a non-constant index, causing a hard compile failure
|
|
69
|
+
with `X3550`/`X3511` on every Windows DX12 runner — all 11 Jaro GPU tests were panicking.
|
|
70
|
+
Fixed by rewriting `bit_set` with `select()`-based static construction, which compiles
|
|
71
|
+
identically on all backends (Vulkan, Metal, DX12).
|
|
72
|
+
|
|
73
|
+
### Bug fixes (arity mismatch — wasm & fuzz crates)
|
|
74
|
+
- **`fuzzgpu-wasm`** — `partial_ratio`, `token_sort_ratio`, `token_set_ratio`, `wratio` gained
|
|
75
|
+
a `score_cutoff: f64` parameter in the v0.1.6 Rust core rewrite for rapidfuzz parity, but
|
|
76
|
+
the WASM bindings were not updated, causing 4 `E0061` compile errors. Fixed by passing
|
|
77
|
+
`0.0` as the cutoff (no cutoff — identical to the previous behaviour).
|
|
78
|
+
- **`fuzzgpu-fuzz`** — same four callsites in `fuzz/src/lib.rs` had the same arity mismatch.
|
|
79
|
+
Fixed identically.
|
|
80
|
+
|
|
81
|
+
### Includes all v0.1.6 features
|
|
82
|
+
All features from v0.1.6 are included — see the v0.1.6 changelog below.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
<details>
|
|
87
|
+
<summary><b>Previous (v0.1.6)</b></summary>
|
|
64
88
|
|
|
65
89
|
### Drop-in rapidfuzz parity (Python)
|
|
66
90
|
The full Python layer is now byte-identical to rapidfuzz 3.14.5 over a 169,744-pair differential harness across `ratio`, `partial_ratio`, `token_sort_ratio`, `token_set_ratio`, `token_ratio`, `WRatio`, `QRatio`, `partial_token_*`, `jaro`, `jaro_winkler`, `levenshtein`, `indel`, `hamming`, `osa` — **0 mismatches**.
|
|
67
91
|
|
|
68
92
|
### Bug fixes (Rust core, float parity)
|
|
69
|
-
- **`ratio` / `partial_ratio` cutoff imprecision** — port of rapidfuzz's load-bearing `NormSim_to_NormDist = min(1, 1 - cutoff/100 + 1e-5)` term.
|
|
70
|
-
- **`ratio` score formula** — switched from `((len-dist)/len)*100` to `(1 - dist/len)*100` to match rapidfuzz C++'s exact ulp order
|
|
93
|
+
- **`ratio` / `partial_ratio` cutoff imprecision** — port of rapidfuzz's load-bearing `NormSim_to_NormDist = min(1, 1 - cutoff/100 + 1e-5)` term.
|
|
94
|
+
- **`ratio` score formula** — switched from `((len-dist)/len)*100` to `(1 - dist/len)*100` to match rapidfuzz C++'s exact ulp order.
|
|
71
95
|
|
|
72
96
|
### New features (Python distance layer)
|
|
73
|
-
- **`Editops` / `Opcodes` / `Editop` / `Opcode` / `MatchingBlock` / `ScoreAlignment`** classes (rapidfuzz-compatible
|
|
74
|
-
- **`Levenshtein.editops` / `.opcodes
|
|
75
|
-
- **`
|
|
76
|
-
- **`
|
|
77
|
-
-
|
|
78
|
-
- **`Indel.editops` / `.opcodes`** — delegates to `LCSseq` (matching rapidfuzz C++).
|
|
79
|
-
- **`fuzz.partial_ratio_alignment`** now returns `ScoreAlignment(score, src_start, src_end, dest_start, dest_end)` — drop-in compatible with rapidfuzz.
|
|
80
|
-
- **`process.extract` / `extractOne` / `cdist`** default to `WRatio` (matches rapidfuzz 3.14.5).
|
|
81
|
-
- **`token_ratio` / `partial_token_ratio`** exposed at top level (`fuzzgpu.token_ratio`, `fuzzgpu.partial_token_ratio`).
|
|
82
|
-
- All alignment types re-exported at the package root (`fuzzgpu.Editop`, `fuzzgpu.Editops`, etc.).
|
|
83
|
-
|
|
84
|
-
### Type stubs
|
|
85
|
-
- `__init__.pyi`, `fuzz.pyi`, `process.pyi`, `distance/__init__.pyi` updated for the new APIs.
|
|
97
|
+
- **`Editops` / `Opcodes` / `Editop` / `Opcode` / `MatchingBlock` / `ScoreAlignment`** classes (rapidfuzz-compatible).
|
|
98
|
+
- **`Levenshtein.editops` / `.opcodes`**, **`LCSseq`**, **`Prefix`**, **`Postfix`**, **`Hamming.editops`**, **`Indel.editops`** modules.
|
|
99
|
+
- **`fuzz.partial_ratio_alignment`** returns `ScoreAlignment` (rapidfuzz-compatible).
|
|
100
|
+
- **`process.extract` / `extractOne` / `cdist`** default to `WRatio`.
|
|
101
|
+
- All alignment types re-exported at the package root.
|
|
86
102
|
|
|
87
|
-
|
|
103
|
+
</details>
|
|
88
104
|
|
|
89
105
|
<details>
|
|
90
|
-
<summary><b>Previous (v0.1.5</b
|
|
106
|
+
<summary><b>Previous (v0.1.5)</b></summary>
|
|
91
107
|
|
|
92
108
|
### Bug fixes
|
|
93
109
|
- **Damerau-Levenshtein safety gate** now fires in release builds (`assert!` not `debug_assert!`) — non-ASCII inputs no longer silently produce wrong distances in production wheels
|
|
@@ -147,7 +163,7 @@ pip install fuzzgpu
|
|
|
147
163
|
```toml
|
|
148
164
|
# Rust
|
|
149
165
|
[dependencies]
|
|
150
|
-
fuzzgpu-core = "0.1.
|
|
166
|
+
fuzzgpu-core = "0.1.7"
|
|
151
167
|
```
|
|
152
168
|
|
|
153
169
|
---
|
|
@@ -243,8 +259,8 @@ fuzzgpu.set_cpu_only(True) # force CPU-only mode
|
|
|
243
259
|
|
|
244
260
|
```toml
|
|
245
261
|
[dependencies]
|
|
246
|
-
fuzzgpu-core = "0.1.
|
|
247
|
-
# fuzzgpu-core = { version = "0.1.
|
|
262
|
+
fuzzgpu-core = "0.1.7" # GPU + CPU fallback
|
|
263
|
+
# fuzzgpu-core = { version = "0.1.7", default-features = false } # CPU-only
|
|
248
264
|
```
|
|
249
265
|
|
|
250
266
|
```rust
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
*Cross-platform GPU compute via WebGPU (`wgpu`) & Multi-Core CPU parallelism with Rayon. Zero CUDA dependencies.*
|
|
10
10
|
|
|
11
|
-
[](https://pypi.org/project/fuzzgpu/)
|
|
12
12
|
[](https://opensource.org/licenses/MIT)
|
|
13
13
|
[](https://www.rust-lang.org)
|
|
14
14
|
[](https://github.com/kuntal-devrat/fuzzgpu)
|
|
@@ -31,34 +31,50 @@ No NVIDIA CUDA drivers or complex toolkits required.
|
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
-
## What's New in v0.1.
|
|
34
|
+
## What's New in v0.1.7
|
|
35
|
+
|
|
36
|
+
### Bug fixes (Windows DX12 / Jaro shader)
|
|
37
|
+
- **Jaro GPU shader FXC crash fixed** — `jaro.wgsl` and `jaro_matrix.wgsl` used dynamic vector
|
|
38
|
+
component writes (`v[j >> 5u] = ...`) in `bit_set()`. FXC (the DX12 HLSL compiler) cannot
|
|
39
|
+
emit a dynamic register-indexed store for a non-constant index, causing a hard compile failure
|
|
40
|
+
with `X3550`/`X3511` on every Windows DX12 runner — all 11 Jaro GPU tests were panicking.
|
|
41
|
+
Fixed by rewriting `bit_set` with `select()`-based static construction, which compiles
|
|
42
|
+
identically on all backends (Vulkan, Metal, DX12).
|
|
43
|
+
|
|
44
|
+
### Bug fixes (arity mismatch — wasm & fuzz crates)
|
|
45
|
+
- **`fuzzgpu-wasm`** — `partial_ratio`, `token_sort_ratio`, `token_set_ratio`, `wratio` gained
|
|
46
|
+
a `score_cutoff: f64` parameter in the v0.1.6 Rust core rewrite for rapidfuzz parity, but
|
|
47
|
+
the WASM bindings were not updated, causing 4 `E0061` compile errors. Fixed by passing
|
|
48
|
+
`0.0` as the cutoff (no cutoff — identical to the previous behaviour).
|
|
49
|
+
- **`fuzzgpu-fuzz`** — same four callsites in `fuzz/src/lib.rs` had the same arity mismatch.
|
|
50
|
+
Fixed identically.
|
|
51
|
+
|
|
52
|
+
### Includes all v0.1.6 features
|
|
53
|
+
All features from v0.1.6 are included — see the v0.1.6 changelog below.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
<details>
|
|
58
|
+
<summary><b>Previous (v0.1.6)</b></summary>
|
|
35
59
|
|
|
36
60
|
### Drop-in rapidfuzz parity (Python)
|
|
37
61
|
The full Python layer is now byte-identical to rapidfuzz 3.14.5 over a 169,744-pair differential harness across `ratio`, `partial_ratio`, `token_sort_ratio`, `token_set_ratio`, `token_ratio`, `WRatio`, `QRatio`, `partial_token_*`, `jaro`, `jaro_winkler`, `levenshtein`, `indel`, `hamming`, `osa` — **0 mismatches**.
|
|
38
62
|
|
|
39
63
|
### Bug fixes (Rust core, float parity)
|
|
40
|
-
- **`ratio` / `partial_ratio` cutoff imprecision** — port of rapidfuzz's load-bearing `NormSim_to_NormDist = min(1, 1 - cutoff/100 + 1e-5)` term.
|
|
41
|
-
- **`ratio` score formula** — switched from `((len-dist)/len)*100` to `(1 - dist/len)*100` to match rapidfuzz C++'s exact ulp order
|
|
64
|
+
- **`ratio` / `partial_ratio` cutoff imprecision** — port of rapidfuzz's load-bearing `NormSim_to_NormDist = min(1, 1 - cutoff/100 + 1e-5)` term.
|
|
65
|
+
- **`ratio` score formula** — switched from `((len-dist)/len)*100` to `(1 - dist/len)*100` to match rapidfuzz C++'s exact ulp order.
|
|
42
66
|
|
|
43
67
|
### New features (Python distance layer)
|
|
44
|
-
- **`Editops` / `Opcodes` / `Editop` / `Opcode` / `MatchingBlock` / `ScoreAlignment`** classes (rapidfuzz-compatible
|
|
45
|
-
- **`Levenshtein.editops` / `.opcodes
|
|
46
|
-
- **`
|
|
47
|
-
- **`
|
|
48
|
-
-
|
|
49
|
-
- **`Indel.editops` / `.opcodes`** — delegates to `LCSseq` (matching rapidfuzz C++).
|
|
50
|
-
- **`fuzz.partial_ratio_alignment`** now returns `ScoreAlignment(score, src_start, src_end, dest_start, dest_end)` — drop-in compatible with rapidfuzz.
|
|
51
|
-
- **`process.extract` / `extractOne` / `cdist`** default to `WRatio` (matches rapidfuzz 3.14.5).
|
|
52
|
-
- **`token_ratio` / `partial_token_ratio`** exposed at top level (`fuzzgpu.token_ratio`, `fuzzgpu.partial_token_ratio`).
|
|
53
|
-
- All alignment types re-exported at the package root (`fuzzgpu.Editop`, `fuzzgpu.Editops`, etc.).
|
|
54
|
-
|
|
55
|
-
### Type stubs
|
|
56
|
-
- `__init__.pyi`, `fuzz.pyi`, `process.pyi`, `distance/__init__.pyi` updated for the new APIs.
|
|
68
|
+
- **`Editops` / `Opcodes` / `Editop` / `Opcode` / `MatchingBlock` / `ScoreAlignment`** classes (rapidfuzz-compatible).
|
|
69
|
+
- **`Levenshtein.editops` / `.opcodes`**, **`LCSseq`**, **`Prefix`**, **`Postfix`**, **`Hamming.editops`**, **`Indel.editops`** modules.
|
|
70
|
+
- **`fuzz.partial_ratio_alignment`** returns `ScoreAlignment` (rapidfuzz-compatible).
|
|
71
|
+
- **`process.extract` / `extractOne` / `cdist`** default to `WRatio`.
|
|
72
|
+
- All alignment types re-exported at the package root.
|
|
57
73
|
|
|
58
|
-
|
|
74
|
+
</details>
|
|
59
75
|
|
|
60
76
|
<details>
|
|
61
|
-
<summary><b>Previous (v0.1.5</b
|
|
77
|
+
<summary><b>Previous (v0.1.5)</b></summary>
|
|
62
78
|
|
|
63
79
|
### Bug fixes
|
|
64
80
|
- **Damerau-Levenshtein safety gate** now fires in release builds (`assert!` not `debug_assert!`) — non-ASCII inputs no longer silently produce wrong distances in production wheels
|
|
@@ -118,7 +134,7 @@ pip install fuzzgpu
|
|
|
118
134
|
```toml
|
|
119
135
|
# Rust
|
|
120
136
|
[dependencies]
|
|
121
|
-
fuzzgpu-core = "0.1.
|
|
137
|
+
fuzzgpu-core = "0.1.7"
|
|
122
138
|
```
|
|
123
139
|
|
|
124
140
|
---
|
|
@@ -214,8 +230,8 @@ fuzzgpu.set_cpu_only(True) # force CPU-only mode
|
|
|
214
230
|
|
|
215
231
|
```toml
|
|
216
232
|
[dependencies]
|
|
217
|
-
fuzzgpu-core = "0.1.
|
|
218
|
-
# fuzzgpu-core = { version = "0.1.
|
|
233
|
+
fuzzgpu-core = "0.1.7" # GPU + CPU fallback
|
|
234
|
+
# fuzzgpu-core = { version = "0.1.7", default-features = false } # CPU-only
|
|
219
235
|
```
|
|
220
236
|
|
|
221
237
|
```rust
|
|
@@ -51,10 +51,19 @@ fn bit_test(mb: vec4<u32>, j: u32) -> bool {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
// Return the bitmap with bit j set.
|
|
54
|
+
// Uses select() instead of dynamic vector l-value indexing (v[expr] = ...)
|
|
55
|
+
// because FXC (DX12 HLSL compiler) does not support dynamic vector component
|
|
56
|
+
// writes — it cannot emit a register-indexed store for a non-constant index
|
|
57
|
+
// and fails with X3550/X3511 when it tries to unroll around it.
|
|
54
58
|
fn bit_set(mb: vec4<u32>, j: u32) -> vec4<u32> {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
return
|
|
59
|
+
let word = j >> 5u;
|
|
60
|
+
let bit = 1u << (j & 31u);
|
|
61
|
+
return vec4<u32>(
|
|
62
|
+
mb.x | select(0u, bit, word == 0u),
|
|
63
|
+
mb.y | select(0u, bit, word == 1u),
|
|
64
|
+
mb.z | select(0u, bit, word == 2u),
|
|
65
|
+
mb.w | select(0u, bit, word == 3u),
|
|
66
|
+
);
|
|
58
67
|
}
|
|
59
68
|
|
|
60
69
|
@compute @workgroup_size(64)
|
|
@@ -25,10 +25,20 @@ fn bit_test(mb: vec4<u32>, j: u32) -> bool {
|
|
|
25
25
|
return ((mb[j >> 5u] >> (j & 31u)) & 1u) != 0u;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
// Return the bitmap with bit j set.
|
|
29
|
+
// Uses select() instead of dynamic vector l-value indexing (v[expr] = ...)
|
|
30
|
+
// because FXC (DX12 HLSL compiler) does not support dynamic vector component
|
|
31
|
+
// writes — it cannot emit a register-indexed store for a non-constant index
|
|
32
|
+
// and fails with X3550/X3511 when it tries to unroll around it.
|
|
28
33
|
fn bit_set(mb: vec4<u32>, j: u32) -> vec4<u32> {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return
|
|
34
|
+
let word = j >> 5u;
|
|
35
|
+
let bit = 1u << (j & 31u);
|
|
36
|
+
return vec4<u32>(
|
|
37
|
+
mb.x | select(0u, bit, word == 0u),
|
|
38
|
+
mb.y | select(0u, bit, word == 1u),
|
|
39
|
+
mb.z | select(0u, bit, word == 2u),
|
|
40
|
+
mb.w | select(0u, bit, word == 3u),
|
|
41
|
+
);
|
|
32
42
|
}
|
|
33
43
|
|
|
34
44
|
@compute @workgroup_size(16, 16)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "fuzzgpu-python"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.7"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
description = "Python bindings for FuzzGPU: GPU-accelerated fuzzy string matching engine"
|
|
6
6
|
license = "MIT"
|
|
@@ -17,7 +17,7 @@ default = ["gpu"]
|
|
|
17
17
|
gpu = ["fuzzgpu-core/gpu"]
|
|
18
18
|
|
|
19
19
|
[dependencies]
|
|
20
|
-
fuzzgpu-core = { path = "../fuzzgpu-core", version = "0.1.
|
|
20
|
+
fuzzgpu-core = { path = "../fuzzgpu-core", version = "0.1.7", default-features = false }
|
|
21
21
|
pyo3 = { workspace = true, features = ["abi3-py310"] }
|
|
22
22
|
numpy = "0.23"
|
|
23
23
|
pollster = { workspace = true }
|
|
@@ -57,22 +57,22 @@ pub fn ratio(a: &str, b: &str) -> f64 {
|
|
|
57
57
|
|
|
58
58
|
#[wasm_bindgen]
|
|
59
59
|
pub fn partial_ratio(a: &str, b: &str) -> f64 {
|
|
60
|
-
fuzzgpu_core::partial_ratio(a, b)
|
|
60
|
+
fuzzgpu_core::partial_ratio(a, b, 0.0)
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
#[wasm_bindgen]
|
|
64
64
|
pub fn token_sort_ratio(a: &str, b: &str) -> f64 {
|
|
65
|
-
fuzzgpu_core::token_sort_ratio(a, b)
|
|
65
|
+
fuzzgpu_core::token_sort_ratio(a, b, 0.0)
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
#[wasm_bindgen]
|
|
69
69
|
pub fn token_set_ratio(a: &str, b: &str) -> f64 {
|
|
70
|
-
fuzzgpu_core::token_set_ratio(a, b)
|
|
70
|
+
fuzzgpu_core::token_set_ratio(a, b, 0.0)
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
#[wasm_bindgen]
|
|
74
74
|
pub fn wratio(a: &str, b: &str) -> f64 {
|
|
75
|
-
fuzzgpu_core::wratio(a, b)
|
|
75
|
+
fuzzgpu_core::wratio(a, b, 0.0)
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
#[wasm_bindgen]
|
|
@@ -4,7 +4,7 @@ build-backend = "maturin"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "fuzzgpu"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.7"
|
|
8
8
|
description = "Hardware-accelerated fuzzy string matching & sequence alignment — cross-platform, no CUDA required"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fuzzgpu-0.1.6 → fuzzgpu-0.1.7}/crates/fuzzgpu-core/src/shaders/levenshtein_cdist_myers.wgsl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|