cobra-mba 0.4.0__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.
- cobra_mba-0.4.0/CHANGELOG.md +175 -0
- cobra_mba-0.4.0/Cargo.lock +533 -0
- cobra_mba-0.4.0/Cargo.toml +123 -0
- cobra_mba-0.4.0/LICENSE +191 -0
- cobra_mba-0.4.0/PKG-INFO +189 -0
- cobra_mba-0.4.0/README.md +226 -0
- cobra_mba-0.4.0/cobra_mba/__init__.py +240 -0
- cobra_mba-0.4.0/cobra_mba/_native.pyi +363 -0
- cobra_mba-0.4.0/cobra_mba/py.typed +0 -0
- cobra_mba-0.4.0/crates/cobra/src/lib.rs +103 -0
- cobra_mba-0.4.0/crates/cobra-cli/src/main.rs +232 -0
- cobra_mba-0.4.0/crates/cobra-core/src/arith.rs +226 -0
- cobra_mba-0.4.0/crates/cobra-core/src/classification.rs +185 -0
- cobra_mba-0.4.0/crates/cobra-core/src/compiled.rs +495 -0
- cobra_mba-0.4.0/crates/cobra-core/src/evaluator.rs +406 -0
- cobra_mba-0.4.0/crates/cobra-core/src/expr.rs +486 -0
- cobra_mba-0.4.0/crates/cobra-core/src/expr_cost.rs +263 -0
- cobra_mba-0.4.0/crates/cobra-core/src/expr_rewrite.rs +593 -0
- cobra_mba-0.4.0/crates/cobra-core/src/expr_utils.rs +180 -0
- cobra_mba-0.4.0/crates/cobra-core/src/lib.rs +77 -0
- cobra_mba-0.4.0/crates/cobra-core/src/pass_contract.rs +387 -0
- cobra_mba-0.4.0/crates/cobra-core/src/profile.rs +65 -0
- cobra_mba-0.4.0/crates/cobra-core/src/result.rs +74 -0
- cobra_mba-0.4.0/crates/cobra-core/src/signature_eval.rs +208 -0
- cobra_mba-0.4.0/crates/cobra-core/src/signature_eval_stats.rs +40 -0
- cobra_mba-0.4.0/crates/cobra-core/src/signature_simplifier.rs +67 -0
- cobra_mba-0.4.0/crates/cobra-core/src/simplify_outcome.rs +177 -0
- cobra_mba-0.4.0/crates/cobra-core/src/spot_check.rs +849 -0
- cobra_mba-0.4.0/crates/cobra-core/src/trace.rs +41 -0
- cobra_mba-0.4.0/crates/cobra-core/src/width.rs +234 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/anf_cleanup.rs +687 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/anf_transform.rs +144 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/arithmetic_lowering.rs +163 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/basis_transform.rs +125 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/coeff_interpolator.rs +158 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/coefficient_splitter.rs +299 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/dynamic_mask.rs +146 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/lib.rs +78 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/masked_atom_reconstructor.rs +204 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/math_utils.rs +241 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/mono.rs +209 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/multivar_poly_recovery.rs +560 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/null_poly_generator.rs +232 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/packed_anf.rs +161 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/poly.rs +170 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/poly_expr_builder.rs +174 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/poly_normalizer.rs +73 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/semilinear.rs +537 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/semilinear_normalizer.rs +561 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/semilinear_signature.rs +299 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/singleton_power.rs +112 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/singleton_power_recovery.rs +203 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/structure_recovery.rs +617 -0
- cobra_mba-0.4.0/crates/cobra-ir/src/term_refiner.rs +412 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/attempt_cache.rs +104 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/competition.rs +444 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/context.rs +197 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/continuation.rs +217 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/entry.rs +547 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/enums.rs +220 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/fingerprint.rs +423 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/join.rs +256 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/lib.rs +78 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/main_loop.rs +756 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/ranker.rs +167 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/registry.rs +76 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/scheduler.rs +677 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/state.rs +272 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/stubs.rs +84 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/work_item.rs +280 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/src/worklist.rs +250 -0
- cobra_mba-0.4.0/crates/cobra-orchestrator/tests/main_loop.rs +567 -0
- cobra_mba-0.4.0/crates/cobra-parser/src/ast.rs +329 -0
- cobra_mba-0.4.0/crates/cobra-parser/src/eval.rs +338 -0
- cobra_mba-0.4.0/crates/cobra-parser/src/lib.rs +17 -0
- cobra_mba-0.4.0/crates/cobra-parser/src/postfix.rs +236 -0
- cobra_mba-0.4.0/crates/cobra-parser/src/token.rs +341 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/atom_identity_rewrite.rs +809 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/atom_simplifier.rs +674 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/aux_var.rs +297 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/bit_partitioner.rs +195 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/bitwise_decomposer.rs +288 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/build_signature_state.rs +303 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/candidate_normalize.rs +187 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/classifier.rs +346 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/classify_ast.rs +112 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/cob_expr_builder.rs +275 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/decomposition_engine.rs +380 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/decomposition_helpers.rs +266 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/entry.rs +703 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/extract_poly_core.rs +201 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/extract_product_core.rs +199 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/extract_template_core.rs +62 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/ghost_basis.rs +113 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/ghost_residual_solver.rs +372 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/hybrid_decomposer.rs +112 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/lib.rs +358 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/lift_arithmetic_atoms.rs +232 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/lift_repeated_subexpressions.rs +227 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/lifting.rs +411 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/lower_not_over_arith.rs +291 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/mapped_evaluator.rs +82 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/mixed_product_rewriter.rs +276 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/not_over_arith.rs +163 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/npn4_canonical.rs +1134 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/npn4_table.rs +393262 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/operand_simplify.rs +286 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/pattern_matcher.rs +1989 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/prepare_coeff_model.rs +226 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/prepare_direct_remainder.rs +126 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/prepare_lifted_outer_solve.rs +220 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/prepare_remainder_from_core.rs +254 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/product_identity_collapse.rs +372 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/proof_coverage.rs +1363 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/residual_common.rs +166 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/residual_factored_ghost.rs +152 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/residual_ghost.rs +110 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/residual_poly_recovery.rs +112 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/residual_supported.rs +234 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/residual_template.rs +86 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/resolve_competition.rs +1437 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/seed.rs +305 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/self_check.rs +145 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/semilinear_check.rs +94 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/semilinear_normalize.rs +152 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/semilinear_reconstruct.rs +188 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/semilinear_rewrite.rs +113 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/signature_anf.rs +312 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/signature_bitwise_decompose.rs +361 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/signature_cob_candidate.rs +269 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/signature_hybrid_decompose.rs +300 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/signature_multivar_poly_recovery.rs +259 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/signature_pattern_match.rs +278 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/signature_singleton_poly_recovery.rs +465 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/singleton_power_expr_builder.rs +175 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/spot_check.rs +9 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/template_decomposer.rs +1356 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/verify_candidate.rs +332 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/weighted_poly_fit.rs +598 -0
- cobra_mba-0.4.0/crates/cobra-passes/src/xor_lowering.rs +216 -0
- cobra_mba-0.4.0/crates/cobra-passes/tests/adversarial_corpus.rs +339 -0
- cobra_mba-0.4.0/crates/cobra-passes/tests/generated_lean_replay.rs +4950 -0
- cobra_mba-0.4.0/crates/cobra-passes/tests/pipeline.rs +373 -0
- cobra_mba-0.4.0/crates/cobra-passes/tests/upstream_simplifier.rs +813 -0
- cobra_mba-0.4.0/crates/cobra-simd/src/lib.rs +290 -0
- cobra_mba-0.4.0/crates/cobra-testkit/src/bin/allocprobe.rs +91 -0
- cobra_mba-0.4.0/crates/cobra-testkit/src/bin/sweep.rs +172 -0
- cobra_mba-0.4.0/crates/cobra-testkit/src/lib.rs +380 -0
- cobra_mba-0.4.0/crates/cobra-testkit/tests/batch_throughput.rs +74 -0
- cobra_mba-0.4.0/crates/cobra-testkit/tests/datasets.rs +102 -0
- cobra_mba-0.4.0/crates/cobra-testkit/tests/phasebench.rs +70 -0
- cobra_mba-0.4.0/crates/cobra-verify/src/lean_cert.rs +1742 -0
- cobra_mba-0.4.0/crates/cobra-verify/src/lean_emit.rs +943 -0
- cobra_mba-0.4.0/crates/cobra-verify/src/lean_match.rs +316 -0
- cobra_mba-0.4.0/crates/cobra-verify/src/lib.rs +147 -0
- cobra_mba-0.4.0/crates/cobra-verify/src/null.rs +51 -0
- cobra_mba-0.4.0/crates/cobra-verify/src/z3_backend.rs +292 -0
- cobra_mba-0.4.0/pyproject.toml +62 -0
- cobra_mba-0.4.0/python/Cargo.lock +480 -0
- cobra_mba-0.4.0/python/Cargo.toml +30 -0
- cobra_mba-0.4.0/python/README.md +166 -0
- cobra_mba-0.4.0/python/examples/README.md +65 -0
- cobra_mba-0.4.0/python/examples/binaryninja_simplify.py +208 -0
- cobra_mba-0.4.0/python/examples/bulk_evaluate.py +110 -0
- cobra_mba-0.4.0/python/examples/idapython_simplify.py +214 -0
- cobra_mba-0.4.0/python/examples/simplify_corpus.py +138 -0
- cobra_mba-0.4.0/python/src/batch.rs +209 -0
- cobra_mba-0.4.0/python/src/enums.rs +340 -0
- cobra_mba-0.4.0/python/src/errors.rs +192 -0
- cobra_mba-0.4.0/python/src/expr.rs +1273 -0
- cobra_mba-0.4.0/python/src/flags.rs +83 -0
- cobra_mba-0.4.0/python/src/lib.rs +83 -0
- cobra_mba-0.4.0/python/src/options.rs +185 -0
- cobra_mba-0.4.0/python/src/outcome.rs +354 -0
- cobra_mba-0.4.0/python/src/worker.rs +54 -0
- cobra_mba-0.4.0/python/tests/conftest.py +121 -0
- cobra_mba-0.4.0/python/tests/test_batch.py +133 -0
- cobra_mba-0.4.0/python/tests/test_bulk_eval.py +148 -0
- cobra_mba-0.4.0/python/tests/test_cli_parity.py +58 -0
- cobra_mba-0.4.0/python/tests/test_datasets.py +139 -0
- cobra_mba-0.4.0/python/tests/test_errors.py +111 -0
- cobra_mba-0.4.0/python/tests/test_examples.py +116 -0
- cobra_mba-0.4.0/python/tests/test_expr.py +329 -0
- cobra_mba-0.4.0/python/tests/test_simplify.py +153 -0
- cobra_mba-0.4.0/python/tests/test_threads.py +84 -0
- cobra_mba-0.4.0/tools/parity/rust_main.rs +718 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.4.0] - 2026-09-02
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Python bindings, in `python/`: a `cobra-mba` PyPI package built on PyO3 and
|
|
15
|
+
maturin, importable as `cobra_mba`. It exposes the parser, an immutable
|
|
16
|
+
`Expr` tree with Python operators, the simplifier, its options, and the full
|
|
17
|
+
diagnostic and telemetry bundle. Wheels target CPython 3.10 and newer through
|
|
18
|
+
the stable ABI, so one wheel per platform serves every supported interpreter.
|
|
19
|
+
The binding is a separate Cargo package with `publish = false`, so the
|
|
20
|
+
crates.io publish set is unchanged.
|
|
21
|
+
- `cobra_mba.simplify_many`: simplifies a batch on a pool of worker threads,
|
|
22
|
+
about four times faster than a Python loop on six cores. Results keep input
|
|
23
|
+
order, and `on_error="none"` leaves `None` in place of an item that failed to
|
|
24
|
+
parse rather than losing the batch.
|
|
25
|
+
- `Expr.evaluate_many`: evaluates one expression at many points in a single
|
|
26
|
+
call, 7x faster than a Python loop with list columns and 25x with bytes in
|
|
27
|
+
and out. Columns are sequences of integers or bytes holding little-endian
|
|
28
|
+
64-bit values, which is the shape `numpy.ndarray.tobytes()` produces and
|
|
29
|
+
`numpy.frombuffer` reads back. There is no zero-copy buffer path because
|
|
30
|
+
Python only added the buffer protocol to its stable ABI in 3.11 and the
|
|
31
|
+
wheels target 3.10.
|
|
32
|
+
- Example scripts under `python/examples/`: a batch corpus sweep and a bulk
|
|
33
|
+
evaluation benchmark, both exercised by the test suite, plus IDAPython and
|
|
34
|
+
Binary Ninja templates that translate decompiler output into the
|
|
35
|
+
simplifier's syntax.
|
|
36
|
+
- `outcome_expr_in_original_space`: maps a finished `SimplifyOutcome`'s
|
|
37
|
+
expression back into the caller's variable namespace. A result that dropped
|
|
38
|
+
variables is indexed against `real_vars`, so rendering it against the
|
|
39
|
+
caller's table without this step prints the wrong names. `cobra-cli` and the
|
|
40
|
+
Python bindings now share this one helper, and a parity suite compares their
|
|
41
|
+
rendered output byte for byte.
|
|
42
|
+
- `tools/check_locks.py`, run in CI: the Python binding has its own
|
|
43
|
+
`Cargo.lock`, and this fails the build if any crate common to both locks
|
|
44
|
+
resolves to a different version. The exact `ahash` pin exists so fixed-seed
|
|
45
|
+
hashing matches across builds, and a binding that drifted from it would
|
|
46
|
+
produce different signatures from the same input.
|
|
47
|
+
|
|
48
|
+
## [0.3.0] - 2026-08-24
|
|
49
|
+
|
|
50
|
+
### Added
|
|
51
|
+
|
|
52
|
+
- Width-generic Lean theorem pack. Every rewrite the certificate machinery
|
|
53
|
+
recognizes now has a `_w` counterpart proved at an arbitrary `BitVec w`, so
|
|
54
|
+
certificates exist at every bitwidth in `1..=64`, not just 64. The bitwise
|
|
55
|
+
and ring identities are proved directly; the arithmetic MBA family
|
|
56
|
+
(`xor_eq_add_sub_two_mul_and` and relatives) is derived from a single carry
|
|
57
|
+
identity, `(a &&& b) + (a ||| b) = a + b`, proved by induction on binary
|
|
58
|
+
digits — no decision procedure, which is what makes it width-generic.
|
|
59
|
+
- Mixed-width Lean layer (`formal/lean/Cobra/Mixed.lean`): an `MExpr` model
|
|
60
|
+
mirroring the full expression `Kind` (casts and `Concat` included) with an
|
|
61
|
+
evaluator matching the compiled Rust evaluator arm for arm, width-generic
|
|
62
|
+
cast-rewrite theorems, and a context-congruence theorem. Certificates can
|
|
63
|
+
now be issued and replayed for cast-bearing (non-uniform-width) trees.
|
|
64
|
+
- A proved carry bridge (`ofExpr`, `evalW_ofExpr`, `semEqW_of_semEq`) embedding
|
|
65
|
+
the uniform `BitVec w` world into the mixed evaluator, so a mixed-chain step
|
|
66
|
+
on a cast-free redex cites the named uniform theorem rather than falling back
|
|
67
|
+
to a decision procedure.
|
|
68
|
+
- `try_compile` and `Evaluator::try_from_expr`: fallible compilation that
|
|
69
|
+
rejects trees whose node widths do not validate, instead of silently
|
|
70
|
+
producing a program that evaluates to zero everywhere.
|
|
71
|
+
- `Options::require_lean_certificate` (default `true`): when set, a
|
|
72
|
+
simplification is discarded unless a replayable certificate covers its exact
|
|
73
|
+
output. Turning it off accepts probe-only assurance and raises the
|
|
74
|
+
simplification rate on non-adversarial input.
|
|
75
|
+
|
|
76
|
+
### Fixed
|
|
77
|
+
|
|
78
|
+
- Closed a soundness hole in the eval-side acceptance gate: probe derivation
|
|
79
|
+
now includes the original's constants and their pairwise products, catching
|
|
80
|
+
trap candidates that differ from the original only at an unprobed point, and
|
|
81
|
+
no longer truncates away high-magnitude probes.
|
|
82
|
+
- Corrected cast width validation and Z3 cast lowering (narrowing casts were
|
|
83
|
+
silently no-ops), unified three tree-walking evaluators onto the compiled
|
|
84
|
+
evaluator so casts use one width model, and replaced a degenerate `ValMap`
|
|
85
|
+
identity key that made the all-ones atom invisible.
|
|
86
|
+
- Balanced competition-handle accounting across clone, fan-out, and resolve;
|
|
87
|
+
revalidated stale mask pairings; made `AtomId` assignment deterministic;
|
|
88
|
+
stopped counting associative chains against the expression-depth budget (the
|
|
89
|
+
sole dataset error case now completes).
|
|
90
|
+
- Added absorption, complement, and constant-reassociation rewrites with their
|
|
91
|
+
Lean theorems, so `x & (x | y)`, `x & ~x`, `(a | b) & a` and similar simplify
|
|
92
|
+
with a replayable certificate.
|
|
93
|
+
|
|
94
|
+
### Changed
|
|
95
|
+
|
|
96
|
+
- Certificate generation is no longer gated to 64-bit: multi-step certified
|
|
97
|
+
chains are produced at every width.
|
|
98
|
+
- The `require_lean_certificate` gate replaces the previous unconditional
|
|
99
|
+
discard of uncertified rewrites; see **Added**.
|
|
100
|
+
|
|
101
|
+
### Performance
|
|
102
|
+
|
|
103
|
+
- Batch throughput for repeated `simplify_expr` calls improved ~25% on trivial
|
|
104
|
+
input via identity fast paths (equal-endpoint certificates, skipped probing
|
|
105
|
+
of unchanged candidates), a candidate-normalization memo, and per-bitwidth
|
|
106
|
+
caching of the singleton-recovery degree table.
|
|
107
|
+
- Cut redundant work in the pipeline: deferred phase-2 verification past its
|
|
108
|
+
loop nest, dropped a whole-tree replay re-scan, carried a width stack through
|
|
109
|
+
`compile`, capped the inner-composition table, and collapsed a redundant
|
|
110
|
+
interpolation-table dimension.
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
## [0.2.0] - 2026-08-24
|
|
114
|
+
|
|
115
|
+
### Fixed
|
|
116
|
+
|
|
117
|
+
- `full_width_check_eval` now derives its probe points from the original's
|
|
118
|
+
constants as well as the candidate's. It previously passed `None` for the
|
|
119
|
+
original, so a candidate differing from the original only at a constant that
|
|
120
|
+
appears solely in the original was accepted. Three rewrite sites use this
|
|
121
|
+
check as their only acceptance gate. The original's constants are recovered
|
|
122
|
+
from its compiled program via the new
|
|
123
|
+
`Evaluator::collect_constants_and_shifts`.
|
|
124
|
+
|
|
125
|
+
### Changed
|
|
126
|
+
|
|
127
|
+
- `clap` is now an optional dependency behind the new `cli` feature, which is
|
|
128
|
+
off by default. The library's default dependency graph no longer contains
|
|
129
|
+
`clap`, `clap_derive`, or their transitive crates.
|
|
130
|
+
- The `cobra-cli` and `cobra-sweep` binaries declare
|
|
131
|
+
`required-features = ["cli"]`. Building, testing, or installing them now needs
|
|
132
|
+
`--features cli`, for example
|
|
133
|
+
`cargo install cobra-mba --bin cobra-cli --features cli`.
|
|
134
|
+
|
|
135
|
+
## [0.1.0] - 2026-07-19
|
|
136
|
+
|
|
137
|
+
### Added
|
|
138
|
+
|
|
139
|
+
- Initial public `cobra-mba` library and `cobra-cli`/`cobra-sweep` binaries in
|
|
140
|
+
one Cargo package.
|
|
141
|
+
- Rust `rlib` and `dylib` outputs, selectable with `-C prefer-dynamic`.
|
|
142
|
+
- MBA parsing, simplification, diagnostics, and optional Z3 verification.
|
|
143
|
+
- Lean certificate generation, replay tests, and proof-coverage checks.
|
|
144
|
+
- In-process Rust/C++ semantic-parity and stage-timing harness with exhaustive
|
|
145
|
+
Boolean signatures, deterministic full-width probes, and reproducible
|
|
146
|
+
comparison manifests.
|
|
147
|
+
- C++ v1.3 compatibility and performance report with exact baselines,
|
|
148
|
+
validation policy, and explicit whole-product exclusions.
|
|
149
|
+
|
|
150
|
+
### Changed
|
|
151
|
+
|
|
152
|
+
- Synchronized the targeted core simplifier changes from upstream C++ v1.3,
|
|
153
|
+
including inclusion-exclusion recovery, XOR self-cancellation,
|
|
154
|
+
target-derived template constants, the single-product guard, and the global
|
|
155
|
+
output-cost gate.
|
|
156
|
+
- Aligned polynomial and signature hot paths with v1.3: stronger modular-inverse
|
|
157
|
+
seeding, block Möbius interpolation, incremental grid reuse, and odd-factorial
|
|
158
|
+
precomputation.
|
|
159
|
+
- Made masked-atom reconstruction order deterministic across randomized map
|
|
160
|
+
layouts.
|
|
161
|
+
- Clarified the supported core-parity scope and the dynamic-linking and Z3 CLI
|
|
162
|
+
commands in the README.
|
|
163
|
+
|
|
164
|
+
### Fixed
|
|
165
|
+
|
|
166
|
+
- Kept full-width-live variables during auxiliary-variable elimination by
|
|
167
|
+
aligning the deterministic 64-probe liveness check with upstream.
|
|
168
|
+
- Preserved the candidate signature and structured `CostRejected` diagnostic
|
|
169
|
+
when the global size guard declines a pathological expansion.
|
|
170
|
+
|
|
171
|
+
[Unreleased]: https://github.com/binsnake/cobra/compare/v0.4.0...HEAD
|
|
172
|
+
[0.4.0]: https://github.com/binsnake/cobra/compare/v0.3.0...v0.4.0
|
|
173
|
+
[0.3.0]: https://github.com/binsnake/cobra/compare/v0.2.0...v0.3.0
|
|
174
|
+
[0.2.0]: https://github.com/binsnake/cobra/compare/v0.1.0...v0.2.0
|
|
175
|
+
[0.1.0]: https://github.com/binsnake/cobra/releases/tag/v0.1.0
|
|
@@ -0,0 +1,533 @@
|
|
|
1
|
+
# This file is automatically @generated by Cargo.
|
|
2
|
+
# It is not intended for manual editing.
|
|
3
|
+
version = 4
|
|
4
|
+
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "ahash"
|
|
7
|
+
version = "0.8.11"
|
|
8
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
|
+
checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
|
|
10
|
+
dependencies = [
|
|
11
|
+
"cfg-if",
|
|
12
|
+
"getrandom",
|
|
13
|
+
"once_cell",
|
|
14
|
+
"version_check",
|
|
15
|
+
"zerocopy",
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
[[package]]
|
|
19
|
+
name = "aho-corasick"
|
|
20
|
+
version = "1.1.4"
|
|
21
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
22
|
+
checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
|
|
23
|
+
dependencies = [
|
|
24
|
+
"memchr",
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
[[package]]
|
|
28
|
+
name = "allocator-api2"
|
|
29
|
+
version = "0.2.21"
|
|
30
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
31
|
+
checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
|
|
32
|
+
|
|
33
|
+
[[package]]
|
|
34
|
+
name = "anstream"
|
|
35
|
+
version = "1.0.0"
|
|
36
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
37
|
+
checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
|
|
38
|
+
dependencies = [
|
|
39
|
+
"anstyle",
|
|
40
|
+
"anstyle-parse",
|
|
41
|
+
"anstyle-query",
|
|
42
|
+
"anstyle-wincon",
|
|
43
|
+
"colorchoice",
|
|
44
|
+
"is_terminal_polyfill",
|
|
45
|
+
"utf8parse",
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
[[package]]
|
|
49
|
+
name = "anstyle"
|
|
50
|
+
version = "1.0.14"
|
|
51
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
52
|
+
checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
|
|
53
|
+
|
|
54
|
+
[[package]]
|
|
55
|
+
name = "anstyle-parse"
|
|
56
|
+
version = "1.0.0"
|
|
57
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
58
|
+
checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
|
|
59
|
+
dependencies = [
|
|
60
|
+
"utf8parse",
|
|
61
|
+
]
|
|
62
|
+
|
|
63
|
+
[[package]]
|
|
64
|
+
name = "anstyle-query"
|
|
65
|
+
version = "1.1.5"
|
|
66
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
67
|
+
checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
|
|
68
|
+
dependencies = [
|
|
69
|
+
"windows-sys",
|
|
70
|
+
]
|
|
71
|
+
|
|
72
|
+
[[package]]
|
|
73
|
+
name = "anstyle-wincon"
|
|
74
|
+
version = "3.0.11"
|
|
75
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
76
|
+
checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
|
|
77
|
+
dependencies = [
|
|
78
|
+
"anstyle",
|
|
79
|
+
"once_cell_polyfill",
|
|
80
|
+
"windows-sys",
|
|
81
|
+
]
|
|
82
|
+
|
|
83
|
+
[[package]]
|
|
84
|
+
name = "bindgen"
|
|
85
|
+
version = "0.66.1"
|
|
86
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
87
|
+
checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7"
|
|
88
|
+
dependencies = [
|
|
89
|
+
"bitflags",
|
|
90
|
+
"cexpr",
|
|
91
|
+
"clang-sys",
|
|
92
|
+
"lazy_static",
|
|
93
|
+
"lazycell",
|
|
94
|
+
"peeking_take_while",
|
|
95
|
+
"proc-macro2",
|
|
96
|
+
"quote",
|
|
97
|
+
"regex",
|
|
98
|
+
"rustc-hash",
|
|
99
|
+
"shlex",
|
|
100
|
+
"syn",
|
|
101
|
+
]
|
|
102
|
+
|
|
103
|
+
[[package]]
|
|
104
|
+
name = "bitflags"
|
|
105
|
+
version = "2.11.1"
|
|
106
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
107
|
+
checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3"
|
|
108
|
+
|
|
109
|
+
[[package]]
|
|
110
|
+
name = "bytemuck"
|
|
111
|
+
version = "1.25.0"
|
|
112
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
113
|
+
checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec"
|
|
114
|
+
|
|
115
|
+
[[package]]
|
|
116
|
+
name = "cexpr"
|
|
117
|
+
version = "0.6.0"
|
|
118
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
119
|
+
checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
|
|
120
|
+
dependencies = [
|
|
121
|
+
"nom",
|
|
122
|
+
]
|
|
123
|
+
|
|
124
|
+
[[package]]
|
|
125
|
+
name = "cfg-if"
|
|
126
|
+
version = "1.0.4"
|
|
127
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
128
|
+
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
|
129
|
+
|
|
130
|
+
[[package]]
|
|
131
|
+
name = "clang-sys"
|
|
132
|
+
version = "1.8.1"
|
|
133
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
134
|
+
checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
|
|
135
|
+
dependencies = [
|
|
136
|
+
"glob",
|
|
137
|
+
"libc",
|
|
138
|
+
"libloading",
|
|
139
|
+
]
|
|
140
|
+
|
|
141
|
+
[[package]]
|
|
142
|
+
name = "clap"
|
|
143
|
+
version = "4.6.1"
|
|
144
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
145
|
+
checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51"
|
|
146
|
+
dependencies = [
|
|
147
|
+
"clap_builder",
|
|
148
|
+
"clap_derive",
|
|
149
|
+
]
|
|
150
|
+
|
|
151
|
+
[[package]]
|
|
152
|
+
name = "clap_builder"
|
|
153
|
+
version = "4.6.0"
|
|
154
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
155
|
+
checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f"
|
|
156
|
+
dependencies = [
|
|
157
|
+
"anstream",
|
|
158
|
+
"anstyle",
|
|
159
|
+
"clap_lex",
|
|
160
|
+
"strsim",
|
|
161
|
+
]
|
|
162
|
+
|
|
163
|
+
[[package]]
|
|
164
|
+
name = "clap_derive"
|
|
165
|
+
version = "4.6.1"
|
|
166
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
167
|
+
checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9"
|
|
168
|
+
dependencies = [
|
|
169
|
+
"heck",
|
|
170
|
+
"proc-macro2",
|
|
171
|
+
"quote",
|
|
172
|
+
"syn",
|
|
173
|
+
]
|
|
174
|
+
|
|
175
|
+
[[package]]
|
|
176
|
+
name = "clap_lex"
|
|
177
|
+
version = "1.1.0"
|
|
178
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
179
|
+
checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
|
|
180
|
+
|
|
181
|
+
[[package]]
|
|
182
|
+
name = "cobra-mba"
|
|
183
|
+
version = "0.4.0"
|
|
184
|
+
dependencies = [
|
|
185
|
+
"ahash",
|
|
186
|
+
"clap",
|
|
187
|
+
"hashbrown 0.14.5",
|
|
188
|
+
"indexmap",
|
|
189
|
+
"smallvec",
|
|
190
|
+
"thiserror",
|
|
191
|
+
"wide",
|
|
192
|
+
"z3",
|
|
193
|
+
]
|
|
194
|
+
|
|
195
|
+
[[package]]
|
|
196
|
+
name = "colorchoice"
|
|
197
|
+
version = "1.0.5"
|
|
198
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
199
|
+
checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
|
|
200
|
+
|
|
201
|
+
[[package]]
|
|
202
|
+
name = "equivalent"
|
|
203
|
+
version = "1.0.2"
|
|
204
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
205
|
+
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
|
|
206
|
+
|
|
207
|
+
[[package]]
|
|
208
|
+
name = "getrandom"
|
|
209
|
+
version = "0.2.17"
|
|
210
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
211
|
+
checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
|
|
212
|
+
dependencies = [
|
|
213
|
+
"cfg-if",
|
|
214
|
+
"libc",
|
|
215
|
+
"wasi",
|
|
216
|
+
]
|
|
217
|
+
|
|
218
|
+
[[package]]
|
|
219
|
+
name = "glob"
|
|
220
|
+
version = "0.3.3"
|
|
221
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
222
|
+
checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
|
|
223
|
+
|
|
224
|
+
[[package]]
|
|
225
|
+
name = "hashbrown"
|
|
226
|
+
version = "0.14.5"
|
|
227
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
228
|
+
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
|
|
229
|
+
dependencies = [
|
|
230
|
+
"ahash",
|
|
231
|
+
"allocator-api2",
|
|
232
|
+
]
|
|
233
|
+
|
|
234
|
+
[[package]]
|
|
235
|
+
name = "hashbrown"
|
|
236
|
+
version = "0.17.0"
|
|
237
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
238
|
+
checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51"
|
|
239
|
+
|
|
240
|
+
[[package]]
|
|
241
|
+
name = "heck"
|
|
242
|
+
version = "0.5.0"
|
|
243
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
244
|
+
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
245
|
+
|
|
246
|
+
[[package]]
|
|
247
|
+
name = "indexmap"
|
|
248
|
+
version = "2.14.0"
|
|
249
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
250
|
+
checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
|
|
251
|
+
dependencies = [
|
|
252
|
+
"equivalent",
|
|
253
|
+
"hashbrown 0.17.0",
|
|
254
|
+
]
|
|
255
|
+
|
|
256
|
+
[[package]]
|
|
257
|
+
name = "is_terminal_polyfill"
|
|
258
|
+
version = "1.70.2"
|
|
259
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
260
|
+
checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
|
|
261
|
+
|
|
262
|
+
[[package]]
|
|
263
|
+
name = "lazy_static"
|
|
264
|
+
version = "1.5.0"
|
|
265
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
266
|
+
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
|
267
|
+
|
|
268
|
+
[[package]]
|
|
269
|
+
name = "lazycell"
|
|
270
|
+
version = "1.3.0"
|
|
271
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
272
|
+
checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
|
|
273
|
+
|
|
274
|
+
[[package]]
|
|
275
|
+
name = "libc"
|
|
276
|
+
version = "0.2.185"
|
|
277
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
278
|
+
checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f"
|
|
279
|
+
|
|
280
|
+
[[package]]
|
|
281
|
+
name = "libloading"
|
|
282
|
+
version = "0.8.9"
|
|
283
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
284
|
+
checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
|
|
285
|
+
dependencies = [
|
|
286
|
+
"cfg-if",
|
|
287
|
+
"windows-link",
|
|
288
|
+
]
|
|
289
|
+
|
|
290
|
+
[[package]]
|
|
291
|
+
name = "log"
|
|
292
|
+
version = "0.4.29"
|
|
293
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
294
|
+
checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
|
|
295
|
+
|
|
296
|
+
[[package]]
|
|
297
|
+
name = "memchr"
|
|
298
|
+
version = "2.8.0"
|
|
299
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
300
|
+
checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
|
|
301
|
+
|
|
302
|
+
[[package]]
|
|
303
|
+
name = "minimal-lexical"
|
|
304
|
+
version = "0.2.1"
|
|
305
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
306
|
+
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
|
307
|
+
|
|
308
|
+
[[package]]
|
|
309
|
+
name = "nom"
|
|
310
|
+
version = "7.1.3"
|
|
311
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
312
|
+
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
|
|
313
|
+
dependencies = [
|
|
314
|
+
"memchr",
|
|
315
|
+
"minimal-lexical",
|
|
316
|
+
]
|
|
317
|
+
|
|
318
|
+
[[package]]
|
|
319
|
+
name = "once_cell"
|
|
320
|
+
version = "1.21.4"
|
|
321
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
322
|
+
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
|
323
|
+
|
|
324
|
+
[[package]]
|
|
325
|
+
name = "once_cell_polyfill"
|
|
326
|
+
version = "1.70.2"
|
|
327
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
328
|
+
checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
|
|
329
|
+
|
|
330
|
+
[[package]]
|
|
331
|
+
name = "peeking_take_while"
|
|
332
|
+
version = "0.1.2"
|
|
333
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
334
|
+
checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
|
|
335
|
+
|
|
336
|
+
[[package]]
|
|
337
|
+
name = "proc-macro2"
|
|
338
|
+
version = "1.0.106"
|
|
339
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
340
|
+
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
|
341
|
+
dependencies = [
|
|
342
|
+
"unicode-ident",
|
|
343
|
+
]
|
|
344
|
+
|
|
345
|
+
[[package]]
|
|
346
|
+
name = "quote"
|
|
347
|
+
version = "1.0.45"
|
|
348
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
349
|
+
checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
|
|
350
|
+
dependencies = [
|
|
351
|
+
"proc-macro2",
|
|
352
|
+
]
|
|
353
|
+
|
|
354
|
+
[[package]]
|
|
355
|
+
name = "regex"
|
|
356
|
+
version = "1.12.3"
|
|
357
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
358
|
+
checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
|
|
359
|
+
dependencies = [
|
|
360
|
+
"aho-corasick",
|
|
361
|
+
"memchr",
|
|
362
|
+
"regex-automata",
|
|
363
|
+
"regex-syntax",
|
|
364
|
+
]
|
|
365
|
+
|
|
366
|
+
[[package]]
|
|
367
|
+
name = "regex-automata"
|
|
368
|
+
version = "0.4.14"
|
|
369
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
370
|
+
checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
|
|
371
|
+
dependencies = [
|
|
372
|
+
"aho-corasick",
|
|
373
|
+
"memchr",
|
|
374
|
+
"regex-syntax",
|
|
375
|
+
]
|
|
376
|
+
|
|
377
|
+
[[package]]
|
|
378
|
+
name = "regex-syntax"
|
|
379
|
+
version = "0.8.10"
|
|
380
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
381
|
+
checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
|
|
382
|
+
|
|
383
|
+
[[package]]
|
|
384
|
+
name = "rustc-hash"
|
|
385
|
+
version = "1.1.0"
|
|
386
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
387
|
+
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
|
|
388
|
+
|
|
389
|
+
[[package]]
|
|
390
|
+
name = "safe_arch"
|
|
391
|
+
version = "0.7.4"
|
|
392
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
393
|
+
checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323"
|
|
394
|
+
dependencies = [
|
|
395
|
+
"bytemuck",
|
|
396
|
+
]
|
|
397
|
+
|
|
398
|
+
[[package]]
|
|
399
|
+
name = "shlex"
|
|
400
|
+
version = "1.3.0"
|
|
401
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
402
|
+
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
|
403
|
+
|
|
404
|
+
[[package]]
|
|
405
|
+
name = "smallvec"
|
|
406
|
+
version = "1.15.1"
|
|
407
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
408
|
+
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
|
|
409
|
+
|
|
410
|
+
[[package]]
|
|
411
|
+
name = "strsim"
|
|
412
|
+
version = "0.11.1"
|
|
413
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
414
|
+
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
|
415
|
+
|
|
416
|
+
[[package]]
|
|
417
|
+
name = "syn"
|
|
418
|
+
version = "2.0.117"
|
|
419
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
420
|
+
checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
|
|
421
|
+
dependencies = [
|
|
422
|
+
"proc-macro2",
|
|
423
|
+
"quote",
|
|
424
|
+
"unicode-ident",
|
|
425
|
+
]
|
|
426
|
+
|
|
427
|
+
[[package]]
|
|
428
|
+
name = "thiserror"
|
|
429
|
+
version = "1.0.69"
|
|
430
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
431
|
+
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
|
|
432
|
+
dependencies = [
|
|
433
|
+
"thiserror-impl",
|
|
434
|
+
]
|
|
435
|
+
|
|
436
|
+
[[package]]
|
|
437
|
+
name = "thiserror-impl"
|
|
438
|
+
version = "1.0.69"
|
|
439
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
440
|
+
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
|
|
441
|
+
dependencies = [
|
|
442
|
+
"proc-macro2",
|
|
443
|
+
"quote",
|
|
444
|
+
"syn",
|
|
445
|
+
]
|
|
446
|
+
|
|
447
|
+
[[package]]
|
|
448
|
+
name = "unicode-ident"
|
|
449
|
+
version = "1.0.24"
|
|
450
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
451
|
+
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
452
|
+
|
|
453
|
+
[[package]]
|
|
454
|
+
name = "utf8parse"
|
|
455
|
+
version = "0.2.2"
|
|
456
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
457
|
+
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
|
|
458
|
+
|
|
459
|
+
[[package]]
|
|
460
|
+
name = "version_check"
|
|
461
|
+
version = "0.9.5"
|
|
462
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
463
|
+
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
|
|
464
|
+
|
|
465
|
+
[[package]]
|
|
466
|
+
name = "wasi"
|
|
467
|
+
version = "0.11.1+wasi-snapshot-preview1"
|
|
468
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
469
|
+
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
|
470
|
+
|
|
471
|
+
[[package]]
|
|
472
|
+
name = "wide"
|
|
473
|
+
version = "0.7.33"
|
|
474
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
475
|
+
checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03"
|
|
476
|
+
dependencies = [
|
|
477
|
+
"bytemuck",
|
|
478
|
+
"safe_arch",
|
|
479
|
+
]
|
|
480
|
+
|
|
481
|
+
[[package]]
|
|
482
|
+
name = "windows-link"
|
|
483
|
+
version = "0.2.1"
|
|
484
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
485
|
+
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
|
|
486
|
+
|
|
487
|
+
[[package]]
|
|
488
|
+
name = "windows-sys"
|
|
489
|
+
version = "0.61.2"
|
|
490
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
491
|
+
checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
|
|
492
|
+
dependencies = [
|
|
493
|
+
"windows-link",
|
|
494
|
+
]
|
|
495
|
+
|
|
496
|
+
[[package]]
|
|
497
|
+
name = "z3"
|
|
498
|
+
version = "0.12.1"
|
|
499
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
500
|
+
checksum = "4a7ff5718c079e7b813378d67a5bed32ccc2086f151d6185074a7e24f4a565e8"
|
|
501
|
+
dependencies = [
|
|
502
|
+
"log",
|
|
503
|
+
"z3-sys",
|
|
504
|
+
]
|
|
505
|
+
|
|
506
|
+
[[package]]
|
|
507
|
+
name = "z3-sys"
|
|
508
|
+
version = "0.8.1"
|
|
509
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
510
|
+
checksum = "d7cf70fdbc0de3f42b404f49b0d4686a82562254ea29ff0a155eef2f5430f4b0"
|
|
511
|
+
dependencies = [
|
|
512
|
+
"bindgen",
|
|
513
|
+
]
|
|
514
|
+
|
|
515
|
+
[[package]]
|
|
516
|
+
name = "zerocopy"
|
|
517
|
+
version = "0.7.35"
|
|
518
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
519
|
+
checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
|
|
520
|
+
dependencies = [
|
|
521
|
+
"zerocopy-derive",
|
|
522
|
+
]
|
|
523
|
+
|
|
524
|
+
[[package]]
|
|
525
|
+
name = "zerocopy-derive"
|
|
526
|
+
version = "0.7.35"
|
|
527
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
528
|
+
checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
|
|
529
|
+
dependencies = [
|
|
530
|
+
"proc-macro2",
|
|
531
|
+
"quote",
|
|
532
|
+
"syn",
|
|
533
|
+
]
|