ballistics-engine 0.36.0 → 0.36.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f2879a18b72e21e57061c85dcbe920e5457590522135f7b0285a14902b842498
4
- data.tar.gz: 47be0e871d522917fe87eaf49167388b7824204114d9149144ae7151e82de179
3
+ metadata.gz: 036f045d7aaf59cdd2a57806ec673d59279eec399890aaf07a8b1c1d780ac15f
4
+ data.tar.gz: 0c4d08fdb64ed34827dbf470dfee8f853c7f28eaa24b944e6c136d2ce54506ed
5
5
  SHA512:
6
- metadata.gz: b7742cc9824f85e478f4484e2ce7cbda7e8019ac4112ea436304b65f471d9e19944134d69dbe681a18a91651e822fca50fef767cad6af8a1d4da42e3501febd9
7
- data.tar.gz: 3373dfd90aa6d1d08f03a34b977f56e01746e9373d9f96e199bd5e10a84ccb59dbbd6fd935e319b227a3779a49400749c9456fda7ddaaebcba71f938712de8e0
6
+ metadata.gz: d2f270f6b07c6b84aeb8acfa80b436d16c90d89bf8c6527586f6412038e3b15c5a513259f7929e89346591164ce16b672cee7868eac1fc325c7d0cc81186c2d1
7
+ data.tar.gz: a30bb944d9bb30da39c3fc4e13de29de683ab48750d0827171b3ffabde887b700d91ceaf9d9b97dd1395aaed82bd714e47931da0701a563eb796b10c866a3980
data/Cargo.lock CHANGED
@@ -2,17 +2,11 @@
2
2
  # It is not intended for manual editing.
3
3
  version = 4
4
4
 
5
- [[package]]
6
- name = "adler2"
7
- version = "2.0.1"
8
- source = "registry+https://github.com/rust-lang/crates.io-index"
9
- checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
10
-
11
5
  [[package]]
12
6
  name = "aho-corasick"
13
- version = "1.1.4"
7
+ version = "1.1.5"
14
8
  source = "registry+https://github.com/rust-lang/crates.io-index"
15
- checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
9
+ checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba"
16
10
  dependencies = [
17
11
  "memchr",
18
12
  ]
@@ -37,15 +31,15 @@ dependencies = [
37
31
 
38
32
  [[package]]
39
33
  name = "autocfg"
40
- version = "1.5.0"
34
+ version = "1.5.1"
41
35
  source = "registry+https://github.com/rust-lang/crates.io-index"
42
- checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
36
+ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
43
37
 
44
38
  [[package]]
45
39
  name = "ballistics-engine"
46
- version = "0.36.0"
40
+ version = "0.36.3"
47
41
  source = "registry+https://github.com/rust-lang/crates.io-index"
48
- checksum = "23568cd57f14599a74cb75d839836007a5ec9659c29e583897a378275e630976"
42
+ checksum = "4940614335c0e254b79c8ef6145c9860b107c257550a73d69021c7608b886a36"
49
43
  dependencies = [
50
44
  "getrandom",
51
45
  "js-sys",
@@ -65,7 +59,7 @@ dependencies = [
65
59
 
66
60
  [[package]]
67
61
  name = "ballistics_engine_rb"
68
- version = "0.36.0"
62
+ version = "0.36.3"
69
63
  dependencies = [
70
64
  "ballistics-engine",
71
65
  "magnus",
@@ -86,35 +80,26 @@ dependencies = [
86
80
  "regex",
87
81
  "rustc-hash",
88
82
  "shlex",
89
- "syn",
83
+ "syn 2.0.119",
90
84
  ]
91
85
 
92
86
  [[package]]
93
87
  name = "bitflags"
94
- version = "2.10.0"
88
+ version = "2.13.1"
95
89
  source = "registry+https://github.com/rust-lang/crates.io-index"
96
- checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
97
-
98
- [[package]]
99
- name = "block-buffer"
100
- version = "0.10.4"
101
- source = "registry+https://github.com/rust-lang/crates.io-index"
102
- checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
103
- dependencies = [
104
- "generic-array",
105
- ]
90
+ checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
106
91
 
107
92
  [[package]]
108
93
  name = "bumpalo"
109
- version = "3.19.1"
94
+ version = "3.20.3"
110
95
  source = "registry+https://github.com/rust-lang/crates.io-index"
111
- checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510"
96
+ checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
112
97
 
113
98
  [[package]]
114
99
  name = "bytemuck"
115
- version = "1.24.0"
100
+ version = "1.25.2"
116
101
  source = "registry+https://github.com/rust-lang/crates.io-index"
117
- checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4"
102
+ checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797"
118
103
 
119
104
  [[package]]
120
105
  name = "byteorder"
@@ -139,20 +124,20 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
139
124
 
140
125
  [[package]]
141
126
  name = "chacha20"
142
- version = "0.10.1"
127
+ version = "0.10.2"
143
128
  source = "registry+https://github.com/rust-lang/crates.io-index"
144
- checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81"
129
+ checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06"
145
130
  dependencies = [
146
131
  "cfg-if",
147
- "cpufeatures 0.3.0",
132
+ "cpufeatures",
148
133
  "rand_core",
149
134
  ]
150
135
 
151
136
  [[package]]
152
137
  name = "clang-sys"
153
- version = "1.8.1"
138
+ version = "1.9.1"
154
139
  source = "registry+https://github.com/rust-lang/crates.io-index"
155
- checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
140
+ checksum = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a"
156
141
  dependencies = [
157
142
  "glob",
158
143
  "libc",
@@ -161,41 +146,22 @@ dependencies = [
161
146
 
162
147
  [[package]]
163
148
  name = "cpufeatures"
164
- version = "0.2.17"
149
+ version = "0.3.1"
165
150
  source = "registry+https://github.com/rust-lang/crates.io-index"
166
- checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
167
- dependencies = [
168
- "libc",
169
- ]
170
-
171
- [[package]]
172
- name = "cpufeatures"
173
- version = "0.3.0"
174
- source = "registry+https://github.com/rust-lang/crates.io-index"
175
- checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201"
151
+ checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566"
176
152
  dependencies = [
177
153
  "libc",
178
154
  ]
179
155
 
180
156
  [[package]]
181
157
  name = "crc32fast"
182
- version = "1.5.0"
158
+ version = "1.5.1"
183
159
  source = "registry+https://github.com/rust-lang/crates.io-index"
184
- checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
160
+ checksum = "8498c871161e1742aaa9d52551b2d6ebdd4c3d45a3be423e3728f33b955be550"
185
161
  dependencies = [
186
162
  "cfg-if",
187
163
  ]
188
164
 
189
- [[package]]
190
- name = "crypto-common"
191
- version = "0.1.7"
192
- source = "registry+https://github.com/rust-lang/crates.io-index"
193
- checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
194
- dependencies = [
195
- "generic-array",
196
- "typenum",
197
- ]
198
-
199
165
  [[package]]
200
166
  name = "derive_arbitrary"
201
167
  version = "1.4.2"
@@ -204,24 +170,14 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a"
204
170
  dependencies = [
205
171
  "proc-macro2",
206
172
  "quote",
207
- "syn",
208
- ]
209
-
210
- [[package]]
211
- name = "digest"
212
- version = "0.10.7"
213
- source = "registry+https://github.com/rust-lang/crates.io-index"
214
- checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
215
- dependencies = [
216
- "block-buffer",
217
- "crypto-common",
173
+ "syn 2.0.119",
218
174
  ]
219
175
 
220
176
  [[package]]
221
177
  name = "either"
222
- version = "1.15.0"
178
+ version = "1.18.0"
223
179
  source = "registry+https://github.com/rust-lang/crates.io-index"
224
- checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
180
+ checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34"
225
181
 
226
182
  [[package]]
227
183
  name = "equivalent"
@@ -231,50 +187,37 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
231
187
 
232
188
  [[package]]
233
189
  name = "flate2"
234
- version = "1.1.8"
190
+ version = "1.1.10"
235
191
  source = "registry+https://github.com/rust-lang/crates.io-index"
236
- checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369"
192
+ checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb"
237
193
  dependencies = [
238
- "crc32fast",
239
- "miniz_oxide",
240
194
  "zlib-rs",
241
195
  ]
242
196
 
243
197
  [[package]]
244
198
  name = "futures-core"
245
- version = "0.3.31"
199
+ version = "0.3.34"
246
200
  source = "registry+https://github.com/rust-lang/crates.io-index"
247
- checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
201
+ checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e"
248
202
 
249
203
  [[package]]
250
204
  name = "futures-task"
251
- version = "0.3.31"
205
+ version = "0.3.34"
252
206
  source = "registry+https://github.com/rust-lang/crates.io-index"
253
- checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
207
+ checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd"
254
208
 
255
209
  [[package]]
256
210
  name = "futures-util"
257
- version = "0.3.31"
211
+ version = "0.3.34"
258
212
  source = "registry+https://github.com/rust-lang/crates.io-index"
259
- checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
213
+ checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc"
260
214
  dependencies = [
261
215
  "futures-core",
262
216
  "futures-task",
263
217
  "pin-project-lite",
264
- "pin-utils",
265
218
  "slab",
266
219
  ]
267
220
 
268
- [[package]]
269
- name = "generic-array"
270
- version = "0.14.7"
271
- source = "registry+https://github.com/rust-lang/crates.io-index"
272
- checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
273
- dependencies = [
274
- "typenum",
275
- "version_check",
276
- ]
277
-
278
221
  [[package]]
279
222
  name = "getrandom"
280
223
  version = "0.4.3"
@@ -309,15 +252,15 @@ checksum = "f70749695b063ecbf6b62949ccccde2e733ec3ecbbd71d467dca4e5c6c97cca0"
309
252
 
310
253
  [[package]]
311
254
  name = "glam"
312
- version = "0.33.2"
255
+ version = "0.33.6"
313
256
  source = "registry+https://github.com/rust-lang/crates.io-index"
314
- checksum = "7f22fb22f065b308be0d8724e3706c7fa3fc2a6c7d6899df4cad7860e7a75436"
257
+ checksum = "21fef0953c54fd3de2f44b743fbf77e044c81a25faee03636dfccc0d35135e23"
315
258
 
316
259
  [[package]]
317
260
  name = "glob"
318
- version = "0.3.3"
261
+ version = "0.3.4"
319
262
  source = "registry+https://github.com/rust-lang/crates.io-index"
320
- checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
263
+ checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b"
321
264
 
322
265
  [[package]]
323
266
  name = "hashbrown"
@@ -327,9 +270,9 @@ checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
327
270
 
328
271
  [[package]]
329
272
  name = "indexmap"
330
- version = "2.14.0"
273
+ version = "2.14.1"
331
274
  source = "registry+https://github.com/rust-lang/crates.io-index"
332
- checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
275
+ checksum = "07aa2048142242915a31d35844fb311e0e53fcca590c3a0a40dcf1b841fa09eb"
333
276
  dependencies = [
334
277
  "equivalent",
335
278
  "hashbrown",
@@ -337,26 +280,27 @@ dependencies = [
337
280
 
338
281
  [[package]]
339
282
  name = "itertools"
340
- version = "0.12.1"
283
+ version = "0.13.0"
341
284
  source = "registry+https://github.com/rust-lang/crates.io-index"
342
- checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
285
+ checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
343
286
  dependencies = [
344
287
  "either",
345
288
  ]
346
289
 
347
290
  [[package]]
348
291
  name = "itoa"
349
- version = "1.0.17"
292
+ version = "1.0.18"
350
293
  source = "registry+https://github.com/rust-lang/crates.io-index"
351
- checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
294
+ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
352
295
 
353
296
  [[package]]
354
297
  name = "js-sys"
355
- version = "0.3.85"
298
+ version = "0.3.104"
356
299
  source = "registry+https://github.com/rust-lang/crates.io-index"
357
- checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3"
300
+ checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a"
358
301
  dependencies = [
359
- "once_cell",
302
+ "cfg-if",
303
+ "futures-util",
360
304
  "wasm-bindgen",
361
305
  ]
362
306
 
@@ -368,9 +312,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
368
312
 
369
313
  [[package]]
370
314
  name = "libc"
371
- version = "0.2.180"
315
+ version = "0.2.189"
372
316
  source = "registry+https://github.com/rust-lang/crates.io-index"
373
- checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc"
317
+ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
374
318
 
375
319
  [[package]]
376
320
  name = "libloading"
@@ -390,9 +334,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
390
334
 
391
335
  [[package]]
392
336
  name = "log"
393
- version = "0.4.33"
337
+ version = "0.4.34"
394
338
  source = "registry+https://github.com/rust-lang/crates.io-index"
395
- checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
339
+ checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6"
396
340
 
397
341
  [[package]]
398
342
  name = "magnus"
@@ -414,14 +358,14 @@ checksum = "47607461fd8e1513cb4f2076c197d8092d921a1ea75bd08af97398f593751892"
414
358
  dependencies = [
415
359
  "proc-macro2",
416
360
  "quote",
417
- "syn",
361
+ "syn 2.0.119",
418
362
  ]
419
363
 
420
364
  [[package]]
421
365
  name = "matrixmultiply"
422
- version = "0.3.10"
366
+ version = "0.3.11"
423
367
  source = "registry+https://github.com/rust-lang/crates.io-index"
424
- checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08"
368
+ checksum = "3f607c237553f086e7043417a51df26b2eb899d3caff94e6a67592ff992fedc7"
425
369
  dependencies = [
426
370
  "autocfg",
427
371
  "rawpointer",
@@ -429,9 +373,9 @@ dependencies = [
429
373
 
430
374
  [[package]]
431
375
  name = "memchr"
432
- version = "2.7.6"
376
+ version = "2.8.3"
433
377
  source = "registry+https://github.com/rust-lang/crates.io-index"
434
- checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
378
+ checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
435
379
 
436
380
  [[package]]
437
381
  name = "minimal-lexical"
@@ -439,16 +383,6 @@ version = "0.2.1"
439
383
  source = "registry+https://github.com/rust-lang/crates.io-index"
440
384
  checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
441
385
 
442
- [[package]]
443
- name = "miniz_oxide"
444
- version = "0.8.9"
445
- source = "registry+https://github.com/rust-lang/crates.io-index"
446
- checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
447
- dependencies = [
448
- "adler2",
449
- "simd-adler32",
450
- ]
451
-
452
386
  [[package]]
453
387
  name = "nalgebra"
454
388
  version = "0.35.0"
@@ -459,7 +393,7 @@ dependencies = [
459
393
  "glam 0.30.10",
460
394
  "glam 0.31.1",
461
395
  "glam 0.32.1",
462
- "glam 0.33.2",
396
+ "glam 0.33.6",
463
397
  "matrixmultiply",
464
398
  "nalgebra-macros",
465
399
  "num-complex",
@@ -477,7 +411,7 @@ checksum = "973e7178a678cfd059ccec50887658d482ce16b0aa9da3888ddeab5cd5eb4889"
477
411
  dependencies = [
478
412
  "proc-macro2",
479
413
  "quote",
480
- "syn",
414
+ "syn 2.0.119",
481
415
  ]
482
416
 
483
417
  [[package]]
@@ -521,9 +455,9 @@ dependencies = [
521
455
 
522
456
  [[package]]
523
457
  name = "num-bigint"
524
- version = "0.4.6"
458
+ version = "0.4.8"
525
459
  source = "registry+https://github.com/rust-lang/crates.io-index"
526
- checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
460
+ checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367"
527
461
  dependencies = [
528
462
  "num-integer",
529
463
  "num-traits",
@@ -540,9 +474,9 @@ dependencies = [
540
474
 
541
475
  [[package]]
542
476
  name = "num-integer"
543
- version = "0.1.46"
477
+ version = "0.1.47"
544
478
  source = "registry+https://github.com/rust-lang/crates.io-index"
545
- checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
479
+ checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b"
546
480
  dependencies = [
547
481
  "num-traits",
548
482
  ]
@@ -570,15 +504,15 @@ dependencies = [
570
504
 
571
505
  [[package]]
572
506
  name = "once_cell"
573
- version = "1.21.3"
507
+ version = "1.21.4"
574
508
  source = "registry+https://github.com/rust-lang/crates.io-index"
575
- checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
509
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
576
510
 
577
511
  [[package]]
578
512
  name = "pest"
579
- version = "2.8.5"
513
+ version = "2.9.0"
580
514
  source = "registry+https://github.com/rust-lang/crates.io-index"
581
- checksum = "2c9eb05c21a464ea704b53158d358a31e6425db2f63a1a7312268b05fe2b75f7"
515
+ checksum = "5a07a60cc7a4d00c91f95c685609d1d2f79050e6804b70ebedd7650f0b839bcf"
582
516
  dependencies = [
583
517
  "memchr",
584
518
  "ucd-trie",
@@ -586,9 +520,9 @@ dependencies = [
586
520
 
587
521
  [[package]]
588
522
  name = "pest_derive"
589
- version = "2.8.5"
523
+ version = "2.9.0"
590
524
  source = "registry+https://github.com/rust-lang/crates.io-index"
591
- checksum = "68f9dbced329c441fa79d80472764b1a2c7e57123553b8519b36663a2fb234ed"
525
+ checksum = "b3a83744a5c8455b8b3e0dc5031362780a347c878bdd11584d1a8984228cc88d"
592
526
  dependencies = [
593
527
  "pest",
594
528
  "pest_generator",
@@ -596,44 +530,37 @@ dependencies = [
596
530
 
597
531
  [[package]]
598
532
  name = "pest_generator"
599
- version = "2.8.5"
533
+ version = "2.9.0"
600
534
  source = "registry+https://github.com/rust-lang/crates.io-index"
601
- checksum = "3bb96d5051a78f44f43c8f712d8e810adb0ebf923fc9ed2655a7f66f63ba8ee5"
535
+ checksum = "e0cd3451aa3de60d4b9a1e736885e4dea6b31617598026f12256ad566d63304a"
602
536
  dependencies = [
603
537
  "pest",
604
538
  "pest_meta",
605
539
  "proc-macro2",
606
540
  "quote",
607
- "syn",
541
+ "syn 2.0.119",
608
542
  ]
609
543
 
610
544
  [[package]]
611
545
  name = "pest_meta"
612
- version = "2.8.5"
546
+ version = "2.9.0"
613
547
  source = "registry+https://github.com/rust-lang/crates.io-index"
614
- checksum = "602113b5b5e8621770cfd490cfd90b9f84ab29bd2b0e49ad83eb6d186cef2365"
548
+ checksum = "e04d3a0849e241d7dfce834c83b1c5edc8622009e8dd51a12ba1927c32f05496"
615
549
  dependencies = [
616
550
  "pest",
617
- "sha2",
618
551
  ]
619
552
 
620
553
  [[package]]
621
554
  name = "pin-project-lite"
622
- version = "0.2.16"
623
- source = "registry+https://github.com/rust-lang/crates.io-index"
624
- checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
625
-
626
- [[package]]
627
- name = "pin-utils"
628
- version = "0.1.0"
555
+ version = "0.2.17"
629
556
  source = "registry+https://github.com/rust-lang/crates.io-index"
630
- checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
557
+ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
631
558
 
632
559
  [[package]]
633
560
  name = "portable-atomic"
634
- version = "1.13.1"
561
+ version = "1.15.0"
635
562
  source = "registry+https://github.com/rust-lang/crates.io-index"
636
- checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
563
+ checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
637
564
 
638
565
  [[package]]
639
566
  name = "portable-atomic-util"
@@ -646,9 +573,9 @@ dependencies = [
646
573
 
647
574
  [[package]]
648
575
  name = "proc-macro2"
649
- version = "1.0.106"
576
+ version = "1.0.107"
650
577
  source = "registry+https://github.com/rust-lang/crates.io-index"
651
- checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
578
+ checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
652
579
  dependencies = [
653
580
  "unicode-ident",
654
581
  ]
@@ -668,9 +595,9 @@ dependencies = [
668
595
 
669
596
  [[package]]
670
597
  name = "quote"
671
- version = "1.0.44"
598
+ version = "1.0.47"
672
599
  source = "registry+https://github.com/rust-lang/crates.io-index"
673
- checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
600
+ checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
674
601
  dependencies = [
675
602
  "proc-macro2",
676
603
  ]
@@ -716,18 +643,18 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
716
643
 
717
644
  [[package]]
718
645
  name = "rb-sys"
719
- version = "0.9.128"
646
+ version = "0.9.130"
720
647
  source = "registry+https://github.com/rust-lang/crates.io-index"
721
- checksum = "45ca28513560e56cfb79a62b1fce363c73af170a182024ce880c77ee9429920a"
648
+ checksum = "02faf625bb10ba893e3ae620f19c9fb1b5f8fcae0fe4eb86bb3f2230fad75edb"
722
649
  dependencies = [
723
650
  "rb-sys-build",
724
651
  ]
725
652
 
726
653
  [[package]]
727
654
  name = "rb-sys-build"
728
- version = "0.9.128"
655
+ version = "0.9.130"
729
656
  source = "registry+https://github.com/rust-lang/crates.io-index"
730
- checksum = "ce04b2c55eff3a21aaa623fcc655d94373238e72cac6b3e1a3641ff31649f99a"
657
+ checksum = "05be6f9c86fe5482808162826f6c047d093b3670582296c770de1d94f8066694"
731
658
  dependencies = [
732
659
  "bindgen",
733
660
  "lazy_static",
@@ -735,7 +662,7 @@ dependencies = [
735
662
  "quote",
736
663
  "regex",
737
664
  "shell-words",
738
- "syn",
665
+ "syn 2.0.119",
739
666
  ]
740
667
 
741
668
  [[package]]
@@ -746,9 +673,9 @@ checksum = "cca7ad6a7e21e72151d56fe2495a259b5670e204c3adac41ee7ef676ea08117a"
746
673
 
747
674
  [[package]]
748
675
  name = "regex"
749
- version = "1.12.2"
676
+ version = "1.13.1"
750
677
  source = "registry+https://github.com/rust-lang/crates.io-index"
751
- checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
678
+ checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d"
752
679
  dependencies = [
753
680
  "aho-corasick",
754
681
  "memchr",
@@ -758,9 +685,9 @@ dependencies = [
758
685
 
759
686
  [[package]]
760
687
  name = "regex-automata"
761
- version = "0.4.13"
688
+ version = "0.4.18"
762
689
  source = "registry+https://github.com/rust-lang/crates.io-index"
763
- checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
690
+ checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2"
764
691
  dependencies = [
765
692
  "aho-corasick",
766
693
  "memchr",
@@ -769,27 +696,27 @@ dependencies = [
769
696
 
770
697
  [[package]]
771
698
  name = "regex-syntax"
772
- version = "0.8.8"
699
+ version = "0.8.11"
773
700
  source = "registry+https://github.com/rust-lang/crates.io-index"
774
- checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
701
+ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
775
702
 
776
703
  [[package]]
777
704
  name = "rustc-hash"
778
- version = "2.1.2"
705
+ version = "2.1.3"
779
706
  source = "registry+https://github.com/rust-lang/crates.io-index"
780
- checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
707
+ checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d"
781
708
 
782
709
  [[package]]
783
710
  name = "rustversion"
784
- version = "1.0.22"
711
+ version = "1.0.23"
785
712
  source = "registry+https://github.com/rust-lang/crates.io-index"
786
- checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
713
+ checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
787
714
 
788
715
  [[package]]
789
716
  name = "safe_arch"
790
- version = "1.0.0"
717
+ version = "1.2.0"
791
718
  source = "registry+https://github.com/rust-lang/crates.io-index"
792
- checksum = "1f7caad094bd561859bcd467734a720c3c1f5d1f338995351fefe2190c45efed"
719
+ checksum = "42c6efa15875e6ecb39ca61fb0b0c1a40b84fac5a5ffe71eef7d1000c8eb3f5f"
793
720
  dependencies = [
794
721
  "bytemuck",
795
722
  ]
@@ -802,9 +729,9 @@ checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc"
802
729
 
803
730
  [[package]]
804
731
  name = "serde"
805
- version = "1.0.228"
732
+ version = "1.0.229"
806
733
  source = "registry+https://github.com/rust-lang/crates.io-index"
807
- checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
734
+ checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
808
735
  dependencies = [
809
736
  "serde_core",
810
737
  "serde_derive",
@@ -823,29 +750,29 @@ dependencies = [
823
750
 
824
751
  [[package]]
825
752
  name = "serde_core"
826
- version = "1.0.228"
753
+ version = "1.0.229"
827
754
  source = "registry+https://github.com/rust-lang/crates.io-index"
828
- checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
755
+ checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
829
756
  dependencies = [
830
757
  "serde_derive",
831
758
  ]
832
759
 
833
760
  [[package]]
834
761
  name = "serde_derive"
835
- version = "1.0.228"
762
+ version = "1.0.229"
836
763
  source = "registry+https://github.com/rust-lang/crates.io-index"
837
- checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
764
+ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
838
765
  dependencies = [
839
766
  "proc-macro2",
840
767
  "quote",
841
- "syn",
768
+ "syn 3.0.4",
842
769
  ]
843
770
 
844
771
  [[package]]
845
772
  name = "serde_json"
846
- version = "1.0.149"
773
+ version = "1.0.151"
847
774
  source = "registry+https://github.com/rust-lang/crates.io-index"
848
- checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
775
+ checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
849
776
  dependencies = [
850
777
  "itoa",
851
778
  "memchr",
@@ -854,17 +781,6 @@ dependencies = [
854
781
  "zmij",
855
782
  ]
856
783
 
857
- [[package]]
858
- name = "sha2"
859
- version = "0.10.9"
860
- source = "registry+https://github.com/rust-lang/crates.io-index"
861
- checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
862
- dependencies = [
863
- "cfg-if",
864
- "cpufeatures 0.2.17",
865
- "digest",
866
- ]
867
-
868
784
  [[package]]
869
785
  name = "shell-words"
870
786
  version = "1.1.1"
@@ -879,9 +795,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
879
795
 
880
796
  [[package]]
881
797
  name = "simba"
882
- version = "0.10.0"
798
+ version = "0.10.2"
883
799
  source = "registry+https://github.com/rust-lang/crates.io-index"
884
- checksum = "8f45c644a9f3a386f9288625d9f0c1e999e1acf07a37df35d0516c7f199d9cb2"
800
+ checksum = "f1a7200d82ff1c7b4235efd12f11e2537a402c91cf83a5cb97ce80eef787fde7"
885
801
  dependencies = [
886
802
  "approx",
887
803
  "num-complex",
@@ -891,21 +807,32 @@ dependencies = [
891
807
 
892
808
  [[package]]
893
809
  name = "simd-adler32"
894
- version = "0.3.8"
810
+ version = "0.3.10"
895
811
  source = "registry+https://github.com/rust-lang/crates.io-index"
896
- checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2"
812
+ checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea"
897
813
 
898
814
  [[package]]
899
815
  name = "slab"
900
- version = "0.4.11"
816
+ version = "0.4.12"
901
817
  source = "registry+https://github.com/rust-lang/crates.io-index"
902
- checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
818
+ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
903
819
 
904
820
  [[package]]
905
821
  name = "syn"
906
- version = "2.0.114"
822
+ version = "2.0.119"
907
823
  source = "registry+https://github.com/rust-lang/crates.io-index"
908
- checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a"
824
+ checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
825
+ dependencies = [
826
+ "proc-macro2",
827
+ "quote",
828
+ "unicode-ident",
829
+ ]
830
+
831
+ [[package]]
832
+ name = "syn"
833
+ version = "3.0.4"
834
+ source = "registry+https://github.com/rust-lang/crates.io-index"
835
+ checksum = "e6275cddf4610d1775e6d1fe9469b2e77d0f39fd98fb7450901b821e0c53649f"
909
836
  dependencies = [
910
837
  "proc-macro2",
911
838
  "quote",
@@ -914,29 +841,29 @@ dependencies = [
914
841
 
915
842
  [[package]]
916
843
  name = "thiserror"
917
- version = "2.0.18"
844
+ version = "2.0.20"
918
845
  source = "registry+https://github.com/rust-lang/crates.io-index"
919
- checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
846
+ checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f"
920
847
  dependencies = [
921
848
  "thiserror-impl",
922
849
  ]
923
850
 
924
851
  [[package]]
925
852
  name = "thiserror-impl"
926
- version = "2.0.18"
853
+ version = "2.0.20"
927
854
  source = "registry+https://github.com/rust-lang/crates.io-index"
928
- checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
855
+ checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
929
856
  dependencies = [
930
857
  "proc-macro2",
931
858
  "quote",
932
- "syn",
859
+ "syn 3.0.4",
933
860
  ]
934
861
 
935
862
  [[package]]
936
863
  name = "typenum"
937
- version = "1.19.0"
864
+ version = "1.20.1"
938
865
  source = "registry+https://github.com/rust-lang/crates.io-index"
939
- checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
866
+ checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
940
867
 
941
868
  [[package]]
942
869
  name = "ucd-trie"
@@ -946,21 +873,15 @@ checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
946
873
 
947
874
  [[package]]
948
875
  name = "unicode-ident"
949
- version = "1.0.22"
950
- source = "registry+https://github.com/rust-lang/crates.io-index"
951
- checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
952
-
953
- [[package]]
954
- name = "version_check"
955
- version = "0.9.5"
876
+ version = "1.0.24"
956
877
  source = "registry+https://github.com/rust-lang/crates.io-index"
957
- checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
878
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
958
879
 
959
880
  [[package]]
960
881
  name = "wasm-bindgen"
961
- version = "0.2.108"
882
+ version = "0.2.127"
962
883
  source = "registry+https://github.com/rust-lang/crates.io-index"
963
- checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566"
884
+ checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70"
964
885
  dependencies = [
965
886
  "cfg-if",
966
887
  "once_cell",
@@ -971,23 +892,19 @@ dependencies = [
971
892
 
972
893
  [[package]]
973
894
  name = "wasm-bindgen-futures"
974
- version = "0.4.58"
895
+ version = "0.4.77"
975
896
  source = "registry+https://github.com/rust-lang/crates.io-index"
976
- checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f"
897
+ checksum = "6b7777d5cc23d0e91404e53ce2d5e8ec7acae3026b16233dba62cd3246457950"
977
898
  dependencies = [
978
- "cfg-if",
979
- "futures-util",
980
899
  "js-sys",
981
- "once_cell",
982
900
  "wasm-bindgen",
983
- "web-sys",
984
901
  ]
985
902
 
986
903
  [[package]]
987
904
  name = "wasm-bindgen-macro"
988
- version = "0.2.108"
905
+ version = "0.2.127"
989
906
  source = "registry+https://github.com/rust-lang/crates.io-index"
990
- checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608"
907
+ checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1"
991
908
  dependencies = [
992
909
  "quote",
993
910
  "wasm-bindgen-macro-support",
@@ -995,31 +912,31 @@ dependencies = [
995
912
 
996
913
  [[package]]
997
914
  name = "wasm-bindgen-macro-support"
998
- version = "0.2.108"
915
+ version = "0.2.127"
999
916
  source = "registry+https://github.com/rust-lang/crates.io-index"
1000
- checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55"
917
+ checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284"
1001
918
  dependencies = [
1002
919
  "bumpalo",
1003
920
  "proc-macro2",
1004
921
  "quote",
1005
- "syn",
922
+ "syn 2.0.119",
1006
923
  "wasm-bindgen-shared",
1007
924
  ]
1008
925
 
1009
926
  [[package]]
1010
927
  name = "wasm-bindgen-shared"
1011
- version = "0.2.108"
928
+ version = "0.2.127"
1012
929
  source = "registry+https://github.com/rust-lang/crates.io-index"
1013
- checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12"
930
+ checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf"
1014
931
  dependencies = [
1015
932
  "unicode-ident",
1016
933
  ]
1017
934
 
1018
935
  [[package]]
1019
936
  name = "web-sys"
1020
- version = "0.3.85"
937
+ version = "0.3.104"
1021
938
  source = "registry+https://github.com/rust-lang/crates.io-index"
1022
- checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598"
939
+ checksum = "c435338968042f4f59a557f690a253676d47ce13ceb55d70100e7facf6620a30"
1023
940
  dependencies = [
1024
941
  "js-sys",
1025
942
  "wasm-bindgen",
@@ -1027,9 +944,9 @@ dependencies = [
1027
944
 
1028
945
  [[package]]
1029
946
  name = "wide"
1030
- version = "1.5.0"
947
+ version = "1.7.0"
1031
948
  source = "registry+https://github.com/rust-lang/crates.io-index"
1032
- checksum = "dfdfe6a32973f2d1b268b8895845a8a96cac2f0191e72c27cc929036060dbf89"
949
+ checksum = "8cf05ca94c9fba0c51316899caa1d1e74a064fc310a5efa7375e614343d415be"
1033
950
  dependencies = [
1034
951
  "bytemuck",
1035
952
  "safe_arch",
@@ -1057,15 +974,15 @@ dependencies = [
1057
974
 
1058
975
  [[package]]
1059
976
  name = "zlib-rs"
1060
- version = "0.5.5"
977
+ version = "0.6.7"
1061
978
  source = "registry+https://github.com/rust-lang/crates.io-index"
1062
- checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3"
979
+ checksum = "34b31d188d9d685a4f9c7b46d6e36631b07058d2cfe190267adce54dc230bf12"
1063
980
 
1064
981
  [[package]]
1065
982
  name = "zmij"
1066
- version = "1.0.16"
983
+ version = "1.0.23"
1067
984
  source = "registry+https://github.com/rust-lang/crates.io-index"
1068
- checksum = "dfcd145825aace48cff44a8844de64bf75feec3080e0aa5cdbde72961ae51a65"
985
+ checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
1069
986
 
1070
987
  [[package]]
1071
988
  name = "zopfli"
data/Cargo.toml CHANGED
@@ -3,7 +3,7 @@
3
3
  # rake-compiler/rb-sys cargo-metadata lookup resolves (newer rb-sys does not
4
4
  # normalize hyphens). The published gem name is set in the gemspec, independent.
5
5
  name = "ballistics_engine_rb"
6
- version = "0.36.0"
6
+ version = "0.36.3"
7
7
  edition = "2021"
8
8
  authors = ["Alex Jokela <email@tinycomputers.io>"]
9
9
  description = "Ruby bindings for ballistics-engine"
@@ -15,7 +15,10 @@ name = "ballistics_engine_rb"
15
15
  crate-type = ["cdylib"]
16
16
 
17
17
  [dependencies]
18
- ballistics-engine = { version = "0.36.0", default-features = false }
18
+ # `bridge` exposes ballistics_engine::bridge::bridge_call the versioned JSON command
19
+ # bridge that reaches every engine command from one string-in/string-out entry point.
20
+ # It is pure serde/serde_json (already core engine deps), so it adds no new dependencies.
21
+ ballistics-engine = { version = "0.36.3", default-features = false, features = ["bridge"] }
19
22
  magnus = "0.8"
20
23
 
21
24
  [profile.release]
data/README.md CHANGED
@@ -10,6 +10,8 @@ High-performance ballistics calculations library for Ruby, powered by Rust.
10
10
  - **Atmospheric Effects** - Temperature, pressure, humidity, and altitude compensation
11
11
  - **Unit Conversion** - Automatic handling of imperial/metric conversions
12
12
  - **High Performance** - Rust-based calculations for maximum speed
13
+ - **JSON Command Bridge** - `bridge_call` reaches every engine command (solve, dope
14
+ cards, profiles, truing) through one versioned JSON envelope
13
15
 
14
16
  ## Installation
15
17
 
@@ -133,6 +135,62 @@ keys** in imperial units. Unknown keys are ignored; only the seven marked requir
133
135
  y=drop, z=windage, in yards). Present when enabled: `sampled_points`, `aerodynamic_jump`,
134
136
  `angular_state`, `max_yaw_angle_rad`, `max_precession_angle_rad`, `min_pitch_damping`, `transonic_mach`.
135
137
 
138
+ ### `BallisticsEngine.bridge_call(request_json) => String`
139
+
140
+ Raw pass-through to the engine's versioned JSON command bridge: one full request
141
+ envelope in as a String, one full response envelope out as a String. Nothing is parsed
142
+ and nothing is raised — the bridge never panics and reports every failure in band as
143
+ `{"ok":false,"error":{...}}`, so the caller owns the envelope.
144
+
145
+ ```ruby
146
+ require "json"
147
+
148
+ def bridge(command, request)
149
+ JSON.parse(BallisticsEngine.bridge_call(
150
+ JSON.generate("api_version" => 1, "command" => command, "request" => request)
151
+ ))
152
+ end
153
+
154
+ bridge("meta.version", {})
155
+ # => {"ok"=>true, "api_version"=>1, "engine_version"=>"0.36.3",
156
+ # "command"=>"meta.version", "result"=>{"engine_version"=>"0.36.3"}}
157
+
158
+ # Every command reachable in this build:
159
+ bridge("meta.capabilities", {})["result"]["commands"]
160
+ # => ["meta.capabilities", "meta.version", "solve", "card.come_ups", "card.range_table",
161
+ # "card.wind", "profile.validate", "profile.normalize", "true.fit", "true.wind",
162
+ # "true.tall_target", "true.dsf", "true.plan", "true.dial_plan", "bc5d.info"]
163
+ ```
164
+
165
+ `command` is one of the names `meta.capabilities` reports; `request` is that command's
166
+ own document. `solve` takes a [solve-json v1](https://github.com/ajokela/ballistics-engine/blob/main/docs/SOLVE_JSON_V1.md)
167
+ document — strict SI units, unknown fields rejected with a JSON path — and is the only
168
+ way to reach fields the hash API above has no key for, such as
169
+ `atmosphere.pressure_reference` (QNH altimeter settings) and
170
+ `corrections.bc5d_table_path`:
171
+
172
+ ```ruby
173
+ r = bridge("solve", {
174
+ "schema_version" => 1,
175
+ "projectile" => { "mass_kg" => 0.01134, "diameter_m" => 0.00782,
176
+ "drag_model" => "G7", "ballistic_coefficient" => 0.243 },
177
+ "rifle" => { "muzzle_velocity_mps" => 823.0, "sight_height_m" => 0.05 },
178
+ "shot" => { "max_range_m" => 1000.0, "zero_distance_m" => 100.0 },
179
+ "atmosphere" => { "altitude_m" => 1200.0, "pressure_pa" => 101_325.0,
180
+ "pressure_reference" => "qnh" },
181
+ "wind" => { "speed_mps" => 4.4704, "direction_from_rad" => Math::PI / 2 },
182
+ "solver" => { "method" => "rk45" },
183
+ "effects" => { "wind_shear_model" => "power_law" },
184
+ "sampling" => { "interval_m" => 100.0 }
185
+ })
186
+ r["ok"] # => true
187
+ r["result"]["samples"].last["windage_m"] # => -2.7677...
188
+ ```
189
+
190
+ The `pdf` / `card.pdf` and `profile.import_a7p` commands are compiled out of this gem
191
+ (it builds the engine with `default-features = false`); `meta.capabilities` lists only
192
+ what this build can actually run.
193
+
136
194
  ### `BallisticsEngine.calculate_zero_angle(hash) => hash`
137
195
 
138
196
  Same bullet keys as `solve`, plus **required** `target_distance_yards` (and optional
@@ -4,7 +4,7 @@ require "ballistics_engine_rb"
4
4
 
5
5
  # Top-level module for the BallisticsEngine gem
6
6
  module BallisticsEngine
7
- VERSION = "0.36.0"
7
+ VERSION = "0.36.3"
8
8
 
9
9
  class Error < StandardError; end
10
10
  end
data/src/lib.rs CHANGED
@@ -416,11 +416,38 @@ fn monte_carlo(ruby: &magnus::Ruby, h: RHash) -> Result<RHash, Error> {
416
416
  Ok(out)
417
417
  }
418
418
 
419
+ /// Raw pass-through to the engine's versioned JSON command bridge.
420
+ ///
421
+ /// One string in (a full request envelope), one string out (a full response envelope).
422
+ /// This is deliberately NOT a typed wrapper: `ballistics_engine::bridge::bridge_call`
423
+ /// dispatches every bridge command — `meta.capabilities`, `meta.version`, `solve`,
424
+ /// the `card.*` family, `profile.*`, the `true.*` truing family, `bc5d.info` — from
425
+ /// one entry point, so mirroring the per-command DTOs here would be a large surface
426
+ /// that goes stale on every engine release. `solve` in particular is this binding's
427
+ /// only route to `corrections.bc5d_table_path` and `atmosphere.pressure_reference`,
428
+ /// neither of which the hash-based `solve` above reaches; it also reaches
429
+ /// `effects.wind_shear_model` as a validated enum (the hash surface has its own
430
+ /// `enable_wind_shear` / `wind_shear_model` pair, which accepts any string and maps
431
+ /// an unrecognized one to the power law rather than reporting it).
432
+ ///
433
+ /// Failures are IN BAND: the bridge is `catch_unwind`-guarded, never panics, and
434
+ /// reports every error as `{"ok":false,"error":{...}}` inside the returned JSON.
435
+ /// So this raises nothing and parses nothing — the caller owns the envelope and
436
+ /// decides whether to `JSON.parse` it.
437
+ ///
438
+ /// env = { api_version: 1, command: "meta.version", request: {} }
439
+ /// JSON.parse(BallisticsEngine.bridge_call(JSON.generate(env)))
440
+ /// # => {"ok"=>true, "api_version"=>1, "engine_version"=>"0.36.3", ...}
441
+ fn bridge_call(request_json: String) -> String {
442
+ ballistics_engine::bridge::bridge_call(&request_json)
443
+ }
444
+
419
445
  #[magnus::init]
420
446
  fn init(ruby: &magnus::Ruby) -> Result<(), Error> {
421
447
  let module = ruby.define_module("BallisticsEngine")?;
422
448
  module.define_module_function("solve", function!(solve_trajectory, 1))?;
423
449
  module.define_module_function("calculate_zero_angle", function!(calculate_zero_angle, 1))?;
424
450
  module.define_module_function("monte_carlo", function!(monte_carlo, 1))?;
451
+ module.define_module_function("bridge_call", function!(bridge_call, 1))?;
425
452
  Ok(())
426
453
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ballistics-engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.36.0
4
+ version: 0.36.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Jokela
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-08-31 00:00:00.000000000 Z
11
+ date: 2026-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rb_sys