spellkit 0.1.1 → 0.2.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.
Files changed (24) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +26 -3
  3. data/ext/spellkit/Cargo.toml +1 -1
  4. data/lib/spellkit/version.rb +1 -1
  5. data/lib/spellkit.rb +9 -2
  6. metadata +7 -28
  7. data/ext/spellkit/Cargo.lock +0 -345
  8. data/ext/spellkit/target/debug/build/clang-sys-051521a65ca8f402/out/common.rs +0 -355
  9. data/ext/spellkit/target/debug/build/clang-sys-051521a65ca8f402/out/dynamic.rs +0 -276
  10. data/ext/spellkit/target/debug/build/clang-sys-051521a65ca8f402/out/macros.rs +0 -49
  11. data/ext/spellkit/target/debug/build/rb-sys-4cf7db3819c4a6ed/out/bindings-0.9.117-mri-arm64-darwin24-3.3.0.rs +0 -8902
  12. data/ext/spellkit/target/debug/build/rb-sys-ead65721880de65e/out/bindings-0.9.117-mri-arm64-darwin24-3.3.0.rs +0 -8902
  13. data/ext/spellkit/target/debug/build/serde-b1b39c86cf577219/out/private.rs +0 -6
  14. data/ext/spellkit/target/debug/build/serde_core-7a7752261f0e4007/out/private.rs +0 -5
  15. data/ext/spellkit/target/debug/incremental/spellkit-07yduakb6espe/s-hbic3f250f-1cel1lt.lock +0 -0
  16. data/ext/spellkit/target/debug/incremental/spellkit-10n1yon0n2c8v/s-hbha7isu2i-02ly2uq.lock +0 -0
  17. data/ext/spellkit/target/debug/incremental/spellkit-1d3zzknqc98bj/s-hbic3f250l-011iykk.lock +0 -0
  18. data/ext/spellkit/target/debug/incremental/spellkit-1pt6om2w642b5/s-hbihepi6zy-1r3p88g.lock +0 -0
  19. data/ext/spellkit/target/debug/incremental/spellkit-2jusczkp089xp/s-hbhcyx6yob-0pqrnyt.lock +0 -0
  20. data/ext/spellkit/target/debug/incremental/spellkit-39nm03wp54lxw/s-hbhcyx6ynq-08lhwc0.lock +0 -0
  21. data/ext/spellkit/target/release/build/clang-sys-523e86284ef4dd76/out/common.rs +0 -355
  22. data/ext/spellkit/target/release/build/clang-sys-523e86284ef4dd76/out/dynamic.rs +0 -276
  23. data/ext/spellkit/target/release/build/clang-sys-523e86284ef4dd76/out/macros.rs +0 -49
  24. data/ext/spellkit/target/release/build/rb-sys-7d03ffe964952311/out/bindings-0.9.117-mri-arm64-darwin24-3.3.0.rs +0 -8902
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6e690fa50208d003679afff3117b6f00664e6938e7feb992eff6a6544fad279e
4
- data.tar.gz: 17d41414cbd48e093913cfa8765aac063f1cb17283df13414ad801fdf0aa79ae
3
+ metadata.gz: adf2357fd18c80d025496b5b2b1f5feee5dbf1a1f1daf5cae12d5e6029b56675
4
+ data.tar.gz: f0a4d4ca9f73de174e05adf1a979c82d7d03f669d9aca9dec20f416241316e45
5
5
  SHA512:
6
- metadata.gz: '0989bcacde87e9405c99f8674c681be65844a381cac11a00f8f05dd2f1a54312ce9d1799ca6317688255ee5fad454f4670845163b87e6a9541a981fff8685b35'
7
- data.tar.gz: f12c69803c39ee74083a2090c85aac7bdfe7c39ac81995a95c09ad8c1e70df35cfb8d332de287413accf99aa4b6960e9e0c5f77ccd39b37d4ae092b06d8ea2d4
6
+ metadata.gz: 132842b6389fda2ed263f5b127733e10bf21835c5c5d817aa108a9286f663475cea7f0201c51960e61ee989208efb07aed9dba35a98dfe752b95419c1a4c6511
7
+ data.tar.gz: dfa5789feab1ba0b88df7a34a8410f628a251a403ea859c8343fc1a2c7b478d849158f1292e879a2f7911f4d044142900ebcfcec005e336903c55217f05f7229
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <img src="/docs/assets/spellkit-wide.png" alt="spellkit" height="160px">
2
2
 
3
- Fast, safe typo correction for search-term extraction, wrapping the SymSpell algorithm in Rust via Magnus.
3
+ Fast, safe typo correction for search-term extraction. A Ruby gem with a native Rust implementation of the SymSpell algorithm.
4
4
 
5
5
  SpellKit provides:
6
6
  - **Fast correction** using SymSpell with configurable edit distance (1 or 2)
@@ -9,6 +9,8 @@ SpellKit provides:
9
9
  - **Sub-millisecond latency** - p95 < 2µs on small dictionaries
10
10
  - **Thread-safe** - built with Rust's Arc<RwLock> for safe concurrent access
11
11
 
12
+ **Why a custom implementation?** Existing Rust SymSpell crates require lowercase dictionary entries, but SpellKit preserves canonical forms (NASA stays NASA, iPhone stays iPhone). We also needed domain-specific guards, hot-reload, and Aspell-style skip patterns - features not available in existing implementations.
13
+
12
14
  ## Why SpellKit?
13
15
 
14
16
  ### No Runtime Dependencies
@@ -542,7 +544,7 @@ end
542
544
 
543
545
  ## Performance
544
546
 
545
- ### SpellKit Standalone (M1 MacBook Pro, Ruby 3.3.0, 80k dictionary)
547
+ ### SpellKit Standalone (M4 Max MacBook Pro, Ruby 3.3.0, 80k dictionary)
546
548
 
547
549
  **Single Word Suggestions:**
548
550
  - 3,345 i/s (298.96 μs/i) with max: 1 suggestion
@@ -572,6 +574,27 @@ end
572
574
  3. **High Throughput**: Over 16k operations per second with 80k word dictionary
573
575
  4. **Scales Well**: Minimal performance difference between 1 vs 10 suggestions
574
576
 
577
+ ### Comparison with Aspell
578
+
579
+ SpellKit vs Aspell (M4 Max MacBook Pro, Ruby 3.3.0, 80k dictionary):
580
+
581
+ **Suggestion Performance (13 misspelled words):**
582
+ - SpellKit: 3,162 i/s (316μs per batch)
583
+ - Aspell: 433 i/s (2.31ms per batch)
584
+ - **SpellKit is 7.3x faster**
585
+
586
+ **Spell Checking (correct? on 26 words):**
587
+ - SpellKit: 263,279 i/s (3.8μs per batch)
588
+ - Aspell: 72,099 i/s (13.9μs per batch)
589
+ - **SpellKit is 3.65x faster**
590
+
591
+ **Latency Distribution (10,000 single-word suggestions):**
592
+ - SpellKit: p50=63μs, p95=69μs, p99=98μs
593
+ - Aspell: p50=105μs, p95=121μs, p99=182μs
594
+ - **SpellKit is 1.7x faster at p50, 1.75x faster at p95**
595
+
596
+ Both libraries provide high-quality spell checking, but SpellKit's SymSpell algorithm (O(1) lookup) offers significant performance advantages over Aspell's statistical approach, especially for high-throughput applications.
597
+
575
598
  ## Benchmarks
576
599
 
577
600
  SpellKit includes comprehensive benchmarks to measure performance and compare with other spell checkers.
@@ -671,4 +694,4 @@ Bug reports and pull requests are welcome at https://github.com/scientist-labs/s
671
694
 
672
695
  ## License
673
696
 
674
- MIT License - see [LICENSE](LICENSE) file for details.
697
+ MIT License - see [LICENSE](LICENSE.txt) file for details.
@@ -16,4 +16,4 @@ hashbrown = "0.15"
16
16
  unicode-normalization = "0.1"
17
17
  regex = "1.11"
18
18
 
19
- [dev-dependencies]
19
+ [dev-dependencies]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SpellKit
4
- VERSION = "0.1.1"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/spellkit.rb CHANGED
@@ -4,10 +4,17 @@ require "net/http"
4
4
  require "openssl"
5
5
  require "fileutils"
6
6
 
7
+ # Load the compiled Rust extension. Precompiled (platform) gems install it into a
8
+ # Ruby-ABI-versioned subdir (lib/spellkit/<major.minor>/spellkit.{so,bundle}) so a
9
+ # single fat gem can carry a binary per Ruby version; source/dev builds place it flat
10
+ # at lib/spellkit/spellkit.{so,bundle}. Try the versioned path first, fall back to the
11
+ # flat one. Resolution goes through $LOAD_PATH (`require`, never `require_relative`)
12
+ # because RubyGems installs native extensions outside the gem's lib/ dir.
7
13
  begin
8
- require "spellkit/spellkit"
14
+ RUBY_VERSION =~ /(\d+\.\d+)/
15
+ require "spellkit/#{Regexp.last_match(1)}/spellkit"
9
16
  rescue LoadError
10
- require "spellkit.bundle"
17
+ require "spellkit/spellkit"
11
18
  end
12
19
 
13
20
  module SpellKit
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spellkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Petersen
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2025-09-27 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rb_sys
@@ -150,8 +149,8 @@ dependencies:
150
149
  - - ">="
151
150
  - !ruby/object:Gem::Version
152
151
  version: '0'
153
- description: A Ruby gem that provides fast typo correction using SymSpell algorithm,
154
- with domain-specific term protection
152
+ description: A Ruby gem with a native Rust implementation of the SymSpell algorithm
153
+ for fast typo correction with domain-specific term protection
155
154
  email:
156
155
  - chris@petersen.io
157
156
  executables: []
@@ -160,29 +159,11 @@ extensions:
160
159
  extra_rdoc_files: []
161
160
  files:
162
161
  - README.md
163
- - ext/spellkit/Cargo.lock
164
162
  - ext/spellkit/Cargo.toml
165
163
  - ext/spellkit/extconf.rb
166
164
  - ext/spellkit/src/guards.rs
167
165
  - ext/spellkit/src/lib.rs
168
166
  - ext/spellkit/src/symspell.rs
169
- - ext/spellkit/target/debug/build/clang-sys-051521a65ca8f402/out/common.rs
170
- - ext/spellkit/target/debug/build/clang-sys-051521a65ca8f402/out/dynamic.rs
171
- - ext/spellkit/target/debug/build/clang-sys-051521a65ca8f402/out/macros.rs
172
- - ext/spellkit/target/debug/build/rb-sys-4cf7db3819c4a6ed/out/bindings-0.9.117-mri-arm64-darwin24-3.3.0.rs
173
- - ext/spellkit/target/debug/build/rb-sys-ead65721880de65e/out/bindings-0.9.117-mri-arm64-darwin24-3.3.0.rs
174
- - ext/spellkit/target/debug/build/serde-b1b39c86cf577219/out/private.rs
175
- - ext/spellkit/target/debug/build/serde_core-7a7752261f0e4007/out/private.rs
176
- - ext/spellkit/target/debug/incremental/spellkit-07yduakb6espe/s-hbic3f250f-1cel1lt.lock
177
- - ext/spellkit/target/debug/incremental/spellkit-10n1yon0n2c8v/s-hbha7isu2i-02ly2uq.lock
178
- - ext/spellkit/target/debug/incremental/spellkit-1d3zzknqc98bj/s-hbic3f250l-011iykk.lock
179
- - ext/spellkit/target/debug/incremental/spellkit-1pt6om2w642b5/s-hbihepi6zy-1r3p88g.lock
180
- - ext/spellkit/target/debug/incremental/spellkit-2jusczkp089xp/s-hbhcyx6yob-0pqrnyt.lock
181
- - ext/spellkit/target/debug/incremental/spellkit-39nm03wp54lxw/s-hbhcyx6ynq-08lhwc0.lock
182
- - ext/spellkit/target/release/build/clang-sys-523e86284ef4dd76/out/common.rs
183
- - ext/spellkit/target/release/build/clang-sys-523e86284ef4dd76/out/dynamic.rs
184
- - ext/spellkit/target/release/build/clang-sys-523e86284ef4dd76/out/macros.rs
185
- - ext/spellkit/target/release/build/rb-sys-7d03ffe964952311/out/bindings-0.9.117-mri-arm64-darwin24-3.3.0.rs
186
167
  - lib/spellkit.rb
187
168
  - lib/spellkit/version.rb
188
169
  homepage: https://github.com/scientist-labs/spellkit
@@ -191,8 +172,6 @@ licenses:
191
172
  metadata:
192
173
  homepage_uri: https://github.com/scientist-labs/spellkit
193
174
  source_code_uri: https://github.com/scientist-labs/spellkit
194
- changelog_uri: https://github.com/scientist-labs/spellkit/blob/main/CHANGELOG.md
195
- post_install_message:
196
175
  rdoc_options: []
197
176
  require_paths:
198
177
  - lib
@@ -206,9 +185,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
206
185
  - - ">="
207
186
  - !ruby/object:Gem::Version
208
187
  version: '0'
209
- requirements: []
210
- rubygems_version: 3.5.3
211
- signing_key:
188
+ requirements:
189
+ - Rust >= 1.85
190
+ rubygems_version: 3.6.9
212
191
  specification_version: 4
213
192
  summary: Fast, safe typo correction for search-term extraction
214
193
  test_files: []
@@ -1,345 +0,0 @@
1
- # This file is automatically @generated by Cargo.
2
- # It is not intended for manual editing.
3
- version = 4
4
-
5
- [[package]]
6
- name = "aho-corasick"
7
- version = "1.1.3"
8
- source = "registry+https://github.com/rust-lang/crates.io-index"
9
- checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
10
- dependencies = [
11
- "memchr",
12
- ]
13
-
14
- [[package]]
15
- name = "allocator-api2"
16
- version = "0.2.21"
17
- source = "registry+https://github.com/rust-lang/crates.io-index"
18
- checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
19
-
20
- [[package]]
21
- name = "bindgen"
22
- version = "0.69.5"
23
- source = "registry+https://github.com/rust-lang/crates.io-index"
24
- checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088"
25
- dependencies = [
26
- "bitflags",
27
- "cexpr",
28
- "clang-sys",
29
- "itertools",
30
- "lazy_static",
31
- "lazycell",
32
- "proc-macro2",
33
- "quote",
34
- "regex",
35
- "rustc-hash",
36
- "shlex",
37
- "syn",
38
- ]
39
-
40
- [[package]]
41
- name = "bitflags"
42
- version = "2.9.4"
43
- source = "registry+https://github.com/rust-lang/crates.io-index"
44
- checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394"
45
-
46
- [[package]]
47
- name = "cexpr"
48
- version = "0.6.0"
49
- source = "registry+https://github.com/rust-lang/crates.io-index"
50
- checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
51
- dependencies = [
52
- "nom",
53
- ]
54
-
55
- [[package]]
56
- name = "cfg-if"
57
- version = "1.0.3"
58
- source = "registry+https://github.com/rust-lang/crates.io-index"
59
- checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9"
60
-
61
- [[package]]
62
- name = "clang-sys"
63
- version = "1.8.1"
64
- source = "registry+https://github.com/rust-lang/crates.io-index"
65
- checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
66
- dependencies = [
67
- "glob",
68
- "libc",
69
- "libloading",
70
- ]
71
-
72
- [[package]]
73
- name = "either"
74
- version = "1.15.0"
75
- source = "registry+https://github.com/rust-lang/crates.io-index"
76
- checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
77
-
78
- [[package]]
79
- name = "equivalent"
80
- version = "1.0.2"
81
- source = "registry+https://github.com/rust-lang/crates.io-index"
82
- checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
83
-
84
- [[package]]
85
- name = "foldhash"
86
- version = "0.1.5"
87
- source = "registry+https://github.com/rust-lang/crates.io-index"
88
- checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
89
-
90
- [[package]]
91
- name = "glob"
92
- version = "0.3.3"
93
- source = "registry+https://github.com/rust-lang/crates.io-index"
94
- checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
95
-
96
- [[package]]
97
- name = "hashbrown"
98
- version = "0.15.5"
99
- source = "registry+https://github.com/rust-lang/crates.io-index"
100
- checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
101
- dependencies = [
102
- "allocator-api2",
103
- "equivalent",
104
- "foldhash",
105
- ]
106
-
107
- [[package]]
108
- name = "itertools"
109
- version = "0.12.1"
110
- source = "registry+https://github.com/rust-lang/crates.io-index"
111
- checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
112
- dependencies = [
113
- "either",
114
- ]
115
-
116
- [[package]]
117
- name = "lazy_static"
118
- version = "1.5.0"
119
- source = "registry+https://github.com/rust-lang/crates.io-index"
120
- checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
121
-
122
- [[package]]
123
- name = "lazycell"
124
- version = "1.3.0"
125
- source = "registry+https://github.com/rust-lang/crates.io-index"
126
- checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
127
-
128
- [[package]]
129
- name = "libc"
130
- version = "0.2.176"
131
- source = "registry+https://github.com/rust-lang/crates.io-index"
132
- checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174"
133
-
134
- [[package]]
135
- name = "libloading"
136
- version = "0.8.9"
137
- source = "registry+https://github.com/rust-lang/crates.io-index"
138
- checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
139
- dependencies = [
140
- "cfg-if",
141
- "windows-link",
142
- ]
143
-
144
- [[package]]
145
- name = "magnus"
146
- version = "0.7.1"
147
- source = "registry+https://github.com/rust-lang/crates.io-index"
148
- checksum = "3d87ae53030f3a22e83879e666cb94e58a7bdf31706878a0ba48752994146dab"
149
- dependencies = [
150
- "magnus-macros",
151
- "rb-sys",
152
- "rb-sys-env",
153
- "seq-macro",
154
- ]
155
-
156
- [[package]]
157
- name = "magnus-macros"
158
- version = "0.6.0"
159
- source = "registry+https://github.com/rust-lang/crates.io-index"
160
- checksum = "5968c820e2960565f647819f5928a42d6e874551cab9d88d75e3e0660d7f71e3"
161
- dependencies = [
162
- "proc-macro2",
163
- "quote",
164
- "syn",
165
- ]
166
-
167
- [[package]]
168
- name = "memchr"
169
- version = "2.7.6"
170
- source = "registry+https://github.com/rust-lang/crates.io-index"
171
- checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
172
-
173
- [[package]]
174
- name = "minimal-lexical"
175
- version = "0.2.1"
176
- source = "registry+https://github.com/rust-lang/crates.io-index"
177
- checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
178
-
179
- [[package]]
180
- name = "nom"
181
- version = "7.1.3"
182
- source = "registry+https://github.com/rust-lang/crates.io-index"
183
- checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
184
- dependencies = [
185
- "memchr",
186
- "minimal-lexical",
187
- ]
188
-
189
- [[package]]
190
- name = "proc-macro2"
191
- version = "1.0.101"
192
- source = "registry+https://github.com/rust-lang/crates.io-index"
193
- checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de"
194
- dependencies = [
195
- "unicode-ident",
196
- ]
197
-
198
- [[package]]
199
- name = "quote"
200
- version = "1.0.40"
201
- source = "registry+https://github.com/rust-lang/crates.io-index"
202
- checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
203
- dependencies = [
204
- "proc-macro2",
205
- ]
206
-
207
- [[package]]
208
- name = "rb-sys"
209
- version = "0.9.117"
210
- source = "registry+https://github.com/rust-lang/crates.io-index"
211
- checksum = "f900d1ce4629a2ebffaf5de74bd8f9c1188d4c5ed406df02f97e22f77a006f44"
212
- dependencies = [
213
- "rb-sys-build",
214
- ]
215
-
216
- [[package]]
217
- name = "rb-sys-build"
218
- version = "0.9.117"
219
- source = "registry+https://github.com/rust-lang/crates.io-index"
220
- checksum = "ef1e9c857028f631056bcd6d88cec390c751e343ce2223ddb26d23eb4a151d59"
221
- dependencies = [
222
- "bindgen",
223
- "lazy_static",
224
- "proc-macro2",
225
- "quote",
226
- "regex",
227
- "shell-words",
228
- "syn",
229
- ]
230
-
231
- [[package]]
232
- name = "rb-sys-env"
233
- version = "0.1.2"
234
- source = "registry+https://github.com/rust-lang/crates.io-index"
235
- checksum = "a35802679f07360454b418a5d1735c89716bde01d35b1560fc953c1415a0b3bb"
236
-
237
- [[package]]
238
- name = "regex"
239
- version = "1.11.3"
240
- source = "registry+https://github.com/rust-lang/crates.io-index"
241
- checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c"
242
- dependencies = [
243
- "aho-corasick",
244
- "memchr",
245
- "regex-automata",
246
- "regex-syntax",
247
- ]
248
-
249
- [[package]]
250
- name = "regex-automata"
251
- version = "0.4.11"
252
- source = "registry+https://github.com/rust-lang/crates.io-index"
253
- checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad"
254
- dependencies = [
255
- "aho-corasick",
256
- "memchr",
257
- "regex-syntax",
258
- ]
259
-
260
- [[package]]
261
- name = "regex-syntax"
262
- version = "0.8.6"
263
- source = "registry+https://github.com/rust-lang/crates.io-index"
264
- checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001"
265
-
266
- [[package]]
267
- name = "rustc-hash"
268
- version = "1.1.0"
269
- source = "registry+https://github.com/rust-lang/crates.io-index"
270
- checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
271
-
272
- [[package]]
273
- name = "seq-macro"
274
- version = "0.3.6"
275
- source = "registry+https://github.com/rust-lang/crates.io-index"
276
- checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc"
277
-
278
- [[package]]
279
- name = "shell-words"
280
- version = "1.1.0"
281
- source = "registry+https://github.com/rust-lang/crates.io-index"
282
- checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
283
-
284
- [[package]]
285
- name = "shlex"
286
- version = "1.3.0"
287
- source = "registry+https://github.com/rust-lang/crates.io-index"
288
- checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
289
-
290
- [[package]]
291
- name = "spellkit"
292
- version = "0.1.0"
293
- dependencies = [
294
- "hashbrown",
295
- "magnus",
296
- "regex",
297
- "unicode-normalization",
298
- ]
299
-
300
- [[package]]
301
- name = "syn"
302
- version = "2.0.106"
303
- source = "registry+https://github.com/rust-lang/crates.io-index"
304
- checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6"
305
- dependencies = [
306
- "proc-macro2",
307
- "quote",
308
- "unicode-ident",
309
- ]
310
-
311
- [[package]]
312
- name = "tinyvec"
313
- version = "1.10.0"
314
- source = "registry+https://github.com/rust-lang/crates.io-index"
315
- checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
316
- dependencies = [
317
- "tinyvec_macros",
318
- ]
319
-
320
- [[package]]
321
- name = "tinyvec_macros"
322
- version = "0.1.1"
323
- source = "registry+https://github.com/rust-lang/crates.io-index"
324
- checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
325
-
326
- [[package]]
327
- name = "unicode-ident"
328
- version = "1.0.19"
329
- source = "registry+https://github.com/rust-lang/crates.io-index"
330
- checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d"
331
-
332
- [[package]]
333
- name = "unicode-normalization"
334
- version = "0.1.24"
335
- source = "registry+https://github.com/rust-lang/crates.io-index"
336
- checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956"
337
- dependencies = [
338
- "tinyvec",
339
- ]
340
-
341
- [[package]]
342
- name = "windows-link"
343
- version = "0.2.0"
344
- source = "registry+https://github.com/rust-lang/crates.io-index"
345
- checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65"