synalog 2.2.0__tar.gz → 2.3.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.
- synalog-2.3.0/Cargo.lock +491 -0
- {synalog-2.2.0 → synalog-2.3.0}/Cargo.toml +5 -8
- {synalog-2.2.0 → synalog-2.3.0}/PKG-INFO +4 -1
- {synalog-2.2.0 → synalog-2.3.0}/README.md +3 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/cli.md +1 -1
- {synalog-2.2.0 → synalog-2.3.0}/docs/development.md +23 -3
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/aggregation.log +8 -8
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/directives.log +2 -2
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/functions.log +6 -6
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/functors.log +8 -8
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/getting_started.log +2 -2
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/knowledge_graphs.log +14 -14
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/recursion.log +4 -4
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/syntax.log +11 -11
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/temporal.log +8 -8
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/temporal_graph.log +11 -11
- {synalog-2.2.0 → synalog-2.3.0}/docs/language/functions.md +4 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/language/recursion.md +1 -1
- {synalog-2.2.0 → synalog-2.3.0}/docs/verification.md +29 -2
- {synalog-2.2.0 → synalog-2.3.0}/pyproject.toml +1 -1
- {synalog-2.2.0 → synalog-2.3.0}/python/synalog/__init__.py +2 -0
- {synalog-2.2.0 → synalog-2.3.0}/python/synalog/cli.py +1 -1
- {synalog-2.2.0 → synalog-2.3.0}/python/synalog/introspect.py +3 -3
- {synalog-2.2.0 → synalog-2.3.0}/python/synalog/runners.py +1 -1
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/SKILL.md +1 -1
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/annotations.rs +12 -9
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/annotations_test.rs +4 -4
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/dialects.rs +28 -27
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/expr_translate.rs +14 -7
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/expr_translate_test.rs +5 -5
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/functors.rs +28 -26
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/functors_test.rs +20 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/mod.rs +2 -4
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/rule_translate.rs +3 -3
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/rule_translate_test.rs +1 -1
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/type_inference/builder.rs +5 -5
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/type_inference/built_in.rs +14 -14
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/type_inference/edge.rs +9 -9
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/type_inference/inference.rs +1 -1
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/type_inference/mod.rs +2 -2
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/type_inference/types.rs +2 -2
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/universe.rs +92 -112
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/universe_test.rs +155 -132
- {synalog-2.2.0 → synalog-2.3.0}/src/errors.rs +4 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/parser/parse.rs +2 -2
- {synalog-2.2.0 → synalog-2.3.0}/src/parser/parse_test.rs +1 -1
- {synalog-2.2.0 → synalog-2.3.0}/src/python.rs +62 -14
- synalog-2.3.0/src/verifier/cast.rs +146 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/contradiction.rs +28 -26
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/mod.rs +10 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/positional.rs +5 -5
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/recursion.rs +9 -29
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/reserved.rs +1 -1
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/safety.rs +4 -4
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/stratification.rs +72 -122
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/vars.rs +8 -8
- {synalog-2.2.0 → synalog-2.3.0}/src/wasm.rs +3 -3
- synalog-2.3.0/uv.lock +3470 -0
- synalog-2.3.0/verified/Cargo.toml +18 -0
- synalog-2.3.0/verified/src/cast.rs +153 -0
- synalog-2.3.0/verified/src/contradiction.rs +220 -0
- synalog-2.3.0/verified/src/lib.rs +633 -0
- synalog-2.3.0/verified/src/page.rs +112 -0
- synalog-2.3.0/verified/src/plan.rs +707 -0
- synalog-2.3.0/verified/src/quote.rs +546 -0
- synalog-2.3.0/verified/src/types.rs +625 -0
- synalog-2.2.0/Cargo.lock +0 -3315
- synalog-2.2.0/src/compiler/concertina.rs +0 -787
- synalog-2.2.0/src/compiler/program.rs +0 -617
- synalog-2.2.0/src/compiler/program_test.rs +0 -519
- synalog-2.2.0/uv.lock +0 -2447
- {synalog-2.2.0 → synalog-2.3.0}/.gitignore +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/LICENSE +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/NOTICE +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/assertions.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/assets/synalog-dark.svg +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/assets/synalog-light.svg +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/assets/synalog_favicon.png +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/benchmark/results.json +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/benchmark/speedup_by_engine.png +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/benchmark/speedup_distribution.png +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/benchmark/summary.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/benchmark/summary.png +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/benchmark/time_comparison.png +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/benchmark/verify_by_engine.png +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/benchmark.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/differences-datalog.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/differences.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/engines.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/aggregation.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/directives.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/functions.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/functors.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/getting_started.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/knowledge_graphs.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/recursion.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/run.py +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/shop/concepts/customer.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/shop/concepts/order_status.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/shop/data/orders.csv +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/shop/layer.toml +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/shop/rules/customer_revenue.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/shop/rules/orders_by_status.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/shop/rules/top_customers.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/shop/tables/orders.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/shop.log +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/smoke/concepts/device.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/smoke/concepts/test_status.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/smoke/data/smoke_tests.csv +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/smoke/layer.toml +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/smoke/rules/failures_by_device.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/smoke/rules/runs_per_day.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/smoke/tables/smoke_tests.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/smoke.log +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/syntax.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/temporal.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/temporal_graph.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/verification.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/examples/verification.log +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/getting-started.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/index.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/javascripts/playground.js +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/javascripts/summarize.js +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/javascripts/synalog-highlight.js +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/knowledge-graphs.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/language/aggregation.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/language/directives.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/language/functors.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/language/index.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/language/syntax.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/language/temporal.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/playground/vendor/codemirror.js +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/playground.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/python-api.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/stylesheets/extra.css +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/docs/why.md +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/img/synalog-dark.svg +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/img/synalog-light.svg +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/python/synalog/__main__.py +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/python/synalog/checking.py +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/python/synalog/config.py +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/python/synalog/execution.py +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/python/synalog/project.py +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/company/concepts/department.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/company/concepts/person.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/company/concepts/works_in.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/company/data/departments.csv +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/company/data/employees.csv +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/company/layer.toml +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/company/rules/team_mate.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/company/tables/departments.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/company/tables/employees.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/org/concepts/all_managers.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/org/data/employees.csv +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/org/layer.toml +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/org/tables/employees.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/sales/concepts/region.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/sales/data/sales.csv +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/sales/layer.toml +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/sales/rules/monthly_sales.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/sales/rules/top_region.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/sales/rules/total_by_region.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/skills/synalog/examples/sales/tables/sales.l +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/assertion/mod.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/assertion/parse.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/assertion/report.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/assertion/translate.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/dialects_test.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/type_inference/expression.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/type_inference/graph.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/compiler/type_inference/intersection.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/lib.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/parser/json.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/parser/json_test.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/parser/mod.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/parser/names.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/parser/rewrite.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/parser/rewrite_test.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/parser/span.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/parser/span_test.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/parser/traverse.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/parser/traverse_test.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/arity.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/assertions.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/dependencies.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/directives.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/front_matter.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/functors.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/orderby.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/sqlexpr.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/src/verifier/undefined.rs +0 -0
- {synalog-2.2.0 → synalog-2.3.0}/zensical.toml +0 -0
synalog-2.3.0/Cargo.lock
ADDED
|
@@ -0,0 +1,491 @@
|
|
|
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.4"
|
|
8
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
|
+
checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
|
|
10
|
+
dependencies = [
|
|
11
|
+
"memchr",
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
[[package]]
|
|
15
|
+
name = "anyhow"
|
|
16
|
+
version = "1.0.102"
|
|
17
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
18
|
+
checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
|
|
19
|
+
|
|
20
|
+
[[package]]
|
|
21
|
+
name = "arraydeque"
|
|
22
|
+
version = "0.5.1"
|
|
23
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
24
|
+
checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236"
|
|
25
|
+
|
|
26
|
+
[[package]]
|
|
27
|
+
name = "bumpalo"
|
|
28
|
+
version = "3.20.2"
|
|
29
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
30
|
+
checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
|
|
31
|
+
|
|
32
|
+
[[package]]
|
|
33
|
+
name = "cfg-if"
|
|
34
|
+
version = "1.0.4"
|
|
35
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
36
|
+
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
|
37
|
+
|
|
38
|
+
[[package]]
|
|
39
|
+
name = "convert_case"
|
|
40
|
+
version = "0.4.0"
|
|
41
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
42
|
+
checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
|
|
43
|
+
|
|
44
|
+
[[package]]
|
|
45
|
+
name = "equivalent"
|
|
46
|
+
version = "1.0.2"
|
|
47
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
48
|
+
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
|
|
49
|
+
|
|
50
|
+
[[package]]
|
|
51
|
+
name = "foldhash"
|
|
52
|
+
version = "0.2.0"
|
|
53
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
54
|
+
checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
|
|
55
|
+
|
|
56
|
+
[[package]]
|
|
57
|
+
name = "hashbrown"
|
|
58
|
+
version = "0.16.1"
|
|
59
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
60
|
+
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
|
|
61
|
+
|
|
62
|
+
[[package]]
|
|
63
|
+
name = "hashbrown"
|
|
64
|
+
version = "0.17.1"
|
|
65
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
66
|
+
checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
|
|
67
|
+
dependencies = [
|
|
68
|
+
"foldhash",
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
[[package]]
|
|
72
|
+
name = "hashlink"
|
|
73
|
+
version = "0.12.2"
|
|
74
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
75
|
+
checksum = "a596f1b20ed2cc5ecac41a164aaebc7258057060f06c0cf7a2ba3991ee7990fb"
|
|
76
|
+
dependencies = [
|
|
77
|
+
"hashbrown 0.17.1",
|
|
78
|
+
]
|
|
79
|
+
|
|
80
|
+
[[package]]
|
|
81
|
+
name = "heck"
|
|
82
|
+
version = "0.5.0"
|
|
83
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
84
|
+
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
85
|
+
|
|
86
|
+
[[package]]
|
|
87
|
+
name = "indexmap"
|
|
88
|
+
version = "2.13.0"
|
|
89
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
90
|
+
checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017"
|
|
91
|
+
dependencies = [
|
|
92
|
+
"equivalent",
|
|
93
|
+
"hashbrown 0.16.1",
|
|
94
|
+
]
|
|
95
|
+
|
|
96
|
+
[[package]]
|
|
97
|
+
name = "itoa"
|
|
98
|
+
version = "1.0.17"
|
|
99
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
100
|
+
checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
|
|
101
|
+
|
|
102
|
+
[[package]]
|
|
103
|
+
name = "libc"
|
|
104
|
+
version = "0.2.191"
|
|
105
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
106
|
+
checksum = "65cd87c9a6d60536580b316ad985726104730a5151c99845f2490428ef91240a"
|
|
107
|
+
|
|
108
|
+
[[package]]
|
|
109
|
+
name = "memchr"
|
|
110
|
+
version = "2.8.0"
|
|
111
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
112
|
+
checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
|
|
113
|
+
|
|
114
|
+
[[package]]
|
|
115
|
+
name = "once_cell"
|
|
116
|
+
version = "1.21.3"
|
|
117
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
118
|
+
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
|
|
119
|
+
|
|
120
|
+
[[package]]
|
|
121
|
+
name = "portable-atomic"
|
|
122
|
+
version = "1.13.1"
|
|
123
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
124
|
+
checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
|
|
125
|
+
|
|
126
|
+
[[package]]
|
|
127
|
+
name = "proc-macro2"
|
|
128
|
+
version = "1.0.106"
|
|
129
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
130
|
+
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
|
131
|
+
dependencies = [
|
|
132
|
+
"unicode-ident",
|
|
133
|
+
]
|
|
134
|
+
|
|
135
|
+
[[package]]
|
|
136
|
+
name = "pyo3"
|
|
137
|
+
version = "0.29.0"
|
|
138
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
139
|
+
checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c"
|
|
140
|
+
dependencies = [
|
|
141
|
+
"libc",
|
|
142
|
+
"once_cell",
|
|
143
|
+
"portable-atomic",
|
|
144
|
+
"pyo3-build-config",
|
|
145
|
+
"pyo3-ffi",
|
|
146
|
+
"pyo3-macros",
|
|
147
|
+
]
|
|
148
|
+
|
|
149
|
+
[[package]]
|
|
150
|
+
name = "pyo3-build-config"
|
|
151
|
+
version = "0.29.0"
|
|
152
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
153
|
+
checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078"
|
|
154
|
+
dependencies = [
|
|
155
|
+
"target-lexicon",
|
|
156
|
+
]
|
|
157
|
+
|
|
158
|
+
[[package]]
|
|
159
|
+
name = "pyo3-ffi"
|
|
160
|
+
version = "0.29.0"
|
|
161
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
162
|
+
checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b"
|
|
163
|
+
dependencies = [
|
|
164
|
+
"libc",
|
|
165
|
+
"pyo3-build-config",
|
|
166
|
+
]
|
|
167
|
+
|
|
168
|
+
[[package]]
|
|
169
|
+
name = "pyo3-macros"
|
|
170
|
+
version = "0.29.0"
|
|
171
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
172
|
+
checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771"
|
|
173
|
+
dependencies = [
|
|
174
|
+
"proc-macro2",
|
|
175
|
+
"pyo3-macros-backend",
|
|
176
|
+
"quote",
|
|
177
|
+
"syn 2.0.117",
|
|
178
|
+
]
|
|
179
|
+
|
|
180
|
+
[[package]]
|
|
181
|
+
name = "pyo3-macros-backend"
|
|
182
|
+
version = "0.29.0"
|
|
183
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
184
|
+
checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362"
|
|
185
|
+
dependencies = [
|
|
186
|
+
"heck",
|
|
187
|
+
"proc-macro2",
|
|
188
|
+
"quote",
|
|
189
|
+
"syn 2.0.117",
|
|
190
|
+
]
|
|
191
|
+
|
|
192
|
+
[[package]]
|
|
193
|
+
name = "quote"
|
|
194
|
+
version = "1.0.45"
|
|
195
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
196
|
+
checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
|
|
197
|
+
dependencies = [
|
|
198
|
+
"proc-macro2",
|
|
199
|
+
]
|
|
200
|
+
|
|
201
|
+
[[package]]
|
|
202
|
+
name = "regex"
|
|
203
|
+
version = "1.12.3"
|
|
204
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
205
|
+
checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
|
|
206
|
+
dependencies = [
|
|
207
|
+
"aho-corasick",
|
|
208
|
+
"memchr",
|
|
209
|
+
"regex-automata",
|
|
210
|
+
"regex-syntax",
|
|
211
|
+
]
|
|
212
|
+
|
|
213
|
+
[[package]]
|
|
214
|
+
name = "regex-automata"
|
|
215
|
+
version = "0.4.14"
|
|
216
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
217
|
+
checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
|
|
218
|
+
dependencies = [
|
|
219
|
+
"aho-corasick",
|
|
220
|
+
"memchr",
|
|
221
|
+
"regex-syntax",
|
|
222
|
+
]
|
|
223
|
+
|
|
224
|
+
[[package]]
|
|
225
|
+
name = "regex-syntax"
|
|
226
|
+
version = "0.8.10"
|
|
227
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
228
|
+
checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
|
|
229
|
+
|
|
230
|
+
[[package]]
|
|
231
|
+
name = "rustversion"
|
|
232
|
+
version = "1.0.22"
|
|
233
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
234
|
+
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
|
|
235
|
+
|
|
236
|
+
[[package]]
|
|
237
|
+
name = "serde"
|
|
238
|
+
version = "1.0.228"
|
|
239
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
240
|
+
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
|
|
241
|
+
dependencies = [
|
|
242
|
+
"serde_core",
|
|
243
|
+
"serde_derive",
|
|
244
|
+
]
|
|
245
|
+
|
|
246
|
+
[[package]]
|
|
247
|
+
name = "serde_core"
|
|
248
|
+
version = "1.0.228"
|
|
249
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
250
|
+
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
|
|
251
|
+
dependencies = [
|
|
252
|
+
"serde_derive",
|
|
253
|
+
]
|
|
254
|
+
|
|
255
|
+
[[package]]
|
|
256
|
+
name = "serde_derive"
|
|
257
|
+
version = "1.0.228"
|
|
258
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
259
|
+
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
|
|
260
|
+
dependencies = [
|
|
261
|
+
"proc-macro2",
|
|
262
|
+
"quote",
|
|
263
|
+
"syn 2.0.117",
|
|
264
|
+
]
|
|
265
|
+
|
|
266
|
+
[[package]]
|
|
267
|
+
name = "serde_json"
|
|
268
|
+
version = "1.0.149"
|
|
269
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
270
|
+
checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
|
|
271
|
+
dependencies = [
|
|
272
|
+
"itoa",
|
|
273
|
+
"memchr",
|
|
274
|
+
"serde",
|
|
275
|
+
"serde_core",
|
|
276
|
+
"zmij",
|
|
277
|
+
]
|
|
278
|
+
|
|
279
|
+
[[package]]
|
|
280
|
+
name = "syn"
|
|
281
|
+
version = "2.0.117"
|
|
282
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
283
|
+
checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
|
|
284
|
+
dependencies = [
|
|
285
|
+
"proc-macro2",
|
|
286
|
+
"quote",
|
|
287
|
+
"unicode-ident",
|
|
288
|
+
]
|
|
289
|
+
|
|
290
|
+
[[package]]
|
|
291
|
+
name = "syn"
|
|
292
|
+
version = "3.0.9"
|
|
293
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
294
|
+
checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b"
|
|
295
|
+
dependencies = [
|
|
296
|
+
"proc-macro2",
|
|
297
|
+
"quote",
|
|
298
|
+
"unicode-ident",
|
|
299
|
+
]
|
|
300
|
+
|
|
301
|
+
[[package]]
|
|
302
|
+
name = "synalog"
|
|
303
|
+
version = "2.3.0"
|
|
304
|
+
dependencies = [
|
|
305
|
+
"anyhow",
|
|
306
|
+
"indexmap",
|
|
307
|
+
"pyo3",
|
|
308
|
+
"regex",
|
|
309
|
+
"serde",
|
|
310
|
+
"serde_json",
|
|
311
|
+
"synalog-verified",
|
|
312
|
+
"thiserror",
|
|
313
|
+
"wasm-bindgen",
|
|
314
|
+
"yaml-rust2",
|
|
315
|
+
]
|
|
316
|
+
|
|
317
|
+
[[package]]
|
|
318
|
+
name = "synalog-verified"
|
|
319
|
+
version = "2.3.0"
|
|
320
|
+
dependencies = [
|
|
321
|
+
"vstd",
|
|
322
|
+
]
|
|
323
|
+
|
|
324
|
+
[[package]]
|
|
325
|
+
name = "synstructure"
|
|
326
|
+
version = "0.13.2"
|
|
327
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
328
|
+
checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
|
|
329
|
+
dependencies = [
|
|
330
|
+
"proc-macro2",
|
|
331
|
+
"quote",
|
|
332
|
+
"syn 2.0.117",
|
|
333
|
+
]
|
|
334
|
+
|
|
335
|
+
[[package]]
|
|
336
|
+
name = "target-lexicon"
|
|
337
|
+
version = "0.13.5"
|
|
338
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
339
|
+
checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
|
|
340
|
+
|
|
341
|
+
[[package]]
|
|
342
|
+
name = "thiserror"
|
|
343
|
+
version = "2.0.18"
|
|
344
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
345
|
+
checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
|
|
346
|
+
dependencies = [
|
|
347
|
+
"thiserror-impl",
|
|
348
|
+
]
|
|
349
|
+
|
|
350
|
+
[[package]]
|
|
351
|
+
name = "thiserror-impl"
|
|
352
|
+
version = "2.0.18"
|
|
353
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
354
|
+
checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
|
|
355
|
+
dependencies = [
|
|
356
|
+
"proc-macro2",
|
|
357
|
+
"quote",
|
|
358
|
+
"syn 2.0.117",
|
|
359
|
+
]
|
|
360
|
+
|
|
361
|
+
[[package]]
|
|
362
|
+
name = "unicode-ident"
|
|
363
|
+
version = "1.0.24"
|
|
364
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
365
|
+
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
366
|
+
|
|
367
|
+
[[package]]
|
|
368
|
+
name = "verus_builtin"
|
|
369
|
+
version = "0.0.0-2026-10-11-0230"
|
|
370
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
371
|
+
checksum = "d2e5d0972903f31da5271f50645c402122804a4e5292e1694706977ce18cbe67"
|
|
372
|
+
|
|
373
|
+
[[package]]
|
|
374
|
+
name = "verus_builtin_macros"
|
|
375
|
+
version = "0.0.0-2026-10-18-0147"
|
|
376
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
377
|
+
checksum = "c420824c5f3528bc29892c12c9083c03e8abe09119456e0ffe98ec3fb16ee5b8"
|
|
378
|
+
dependencies = [
|
|
379
|
+
"convert_case",
|
|
380
|
+
"proc-macro2",
|
|
381
|
+
"quote",
|
|
382
|
+
"syn 2.0.117",
|
|
383
|
+
"synstructure",
|
|
384
|
+
"verus_prettyplease",
|
|
385
|
+
"verus_syn",
|
|
386
|
+
]
|
|
387
|
+
|
|
388
|
+
[[package]]
|
|
389
|
+
name = "verus_prettyplease"
|
|
390
|
+
version = "0.0.0-2026-09-06-0133"
|
|
391
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
392
|
+
checksum = "71956c0dcf55f57fd5a5335fff16981f7e0912d2e887914518c5a64fe36c063c"
|
|
393
|
+
dependencies = [
|
|
394
|
+
"proc-macro2",
|
|
395
|
+
"verus_syn",
|
|
396
|
+
]
|
|
397
|
+
|
|
398
|
+
[[package]]
|
|
399
|
+
name = "verus_state_machines_macros"
|
|
400
|
+
version = "0.0.0-2026-10-18-0147"
|
|
401
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
402
|
+
checksum = "999032b29d28518b813f7b474adbb958a2f41c606d72d84e986546309469eeef"
|
|
403
|
+
dependencies = [
|
|
404
|
+
"indexmap",
|
|
405
|
+
"proc-macro2",
|
|
406
|
+
"quote",
|
|
407
|
+
"verus_syn",
|
|
408
|
+
]
|
|
409
|
+
|
|
410
|
+
[[package]]
|
|
411
|
+
name = "verus_syn"
|
|
412
|
+
version = "0.0.0-2026-09-06-0133"
|
|
413
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
414
|
+
checksum = "7d8b53574934e1f608dfccd809ce17f3733d6eb99c14ce8220326121929e1637"
|
|
415
|
+
dependencies = [
|
|
416
|
+
"proc-macro2",
|
|
417
|
+
"quote",
|
|
418
|
+
"unicode-ident",
|
|
419
|
+
]
|
|
420
|
+
|
|
421
|
+
[[package]]
|
|
422
|
+
name = "vstd"
|
|
423
|
+
version = "0.0.0-2026-10-18-0147"
|
|
424
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
425
|
+
checksum = "eb200973a51d678d3432092ce692c110bf262e281d7ffd55ec028708be84d676"
|
|
426
|
+
dependencies = [
|
|
427
|
+
"verus_builtin",
|
|
428
|
+
"verus_builtin_macros",
|
|
429
|
+
"verus_state_machines_macros",
|
|
430
|
+
]
|
|
431
|
+
|
|
432
|
+
[[package]]
|
|
433
|
+
name = "wasm-bindgen"
|
|
434
|
+
version = "0.2.129"
|
|
435
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
436
|
+
checksum = "9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409"
|
|
437
|
+
dependencies = [
|
|
438
|
+
"cfg-if",
|
|
439
|
+
"once_cell",
|
|
440
|
+
"rustversion",
|
|
441
|
+
"wasm-bindgen-macro",
|
|
442
|
+
"wasm-bindgen-shared",
|
|
443
|
+
]
|
|
444
|
+
|
|
445
|
+
[[package]]
|
|
446
|
+
name = "wasm-bindgen-macro"
|
|
447
|
+
version = "0.2.129"
|
|
448
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
449
|
+
checksum = "2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535"
|
|
450
|
+
dependencies = [
|
|
451
|
+
"quote",
|
|
452
|
+
"wasm-bindgen-macro-support",
|
|
453
|
+
]
|
|
454
|
+
|
|
455
|
+
[[package]]
|
|
456
|
+
name = "wasm-bindgen-macro-support"
|
|
457
|
+
version = "0.2.129"
|
|
458
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
459
|
+
checksum = "6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7"
|
|
460
|
+
dependencies = [
|
|
461
|
+
"bumpalo",
|
|
462
|
+
"proc-macro2",
|
|
463
|
+
"quote",
|
|
464
|
+
"syn 3.0.9",
|
|
465
|
+
"wasm-bindgen-shared",
|
|
466
|
+
]
|
|
467
|
+
|
|
468
|
+
[[package]]
|
|
469
|
+
name = "wasm-bindgen-shared"
|
|
470
|
+
version = "0.2.129"
|
|
471
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
472
|
+
checksum = "23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6"
|
|
473
|
+
dependencies = [
|
|
474
|
+
"unicode-ident",
|
|
475
|
+
]
|
|
476
|
+
|
|
477
|
+
[[package]]
|
|
478
|
+
name = "yaml-rust2"
|
|
479
|
+
version = "0.13.0"
|
|
480
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
481
|
+
checksum = "57e5b818a27a4cd30884ea380857a5e56f7ec3ba24a3990a3cc0b95af3238e18"
|
|
482
|
+
dependencies = [
|
|
483
|
+
"arraydeque",
|
|
484
|
+
"hashlink",
|
|
485
|
+
]
|
|
486
|
+
|
|
487
|
+
[[package]]
|
|
488
|
+
name = "zmij"
|
|
489
|
+
version = "1.0.21"
|
|
490
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
491
|
+
checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "synalog"
|
|
3
|
-
version = "2.
|
|
3
|
+
version = "2.3.0"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
description = "Logic programming for AI agents: Datalog-family language compiling to optimized SQL"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -18,11 +18,12 @@ python = ["dep:pyo3"]
|
|
|
18
18
|
# Browser playground: compiles the parser + compiler to wasm via wasm-bindgen.
|
|
19
19
|
# Build with: --no-default-features --features wasm
|
|
20
20
|
wasm = ["dep:wasm-bindgen"]
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
|
|
22
|
+
[workspace]
|
|
23
|
+
members = ["verified"]
|
|
24
24
|
|
|
25
25
|
[dependencies]
|
|
26
|
+
synalog-verified = { path = "verified" }
|
|
26
27
|
indexmap = "2"
|
|
27
28
|
regex = "1.12.3"
|
|
28
29
|
serde = { version = "1", features = ["derive"] }
|
|
@@ -31,10 +32,6 @@ thiserror = "2"
|
|
|
31
32
|
anyhow = "1"
|
|
32
33
|
pyo3 = { version = "0.29", optional = true, features = ["extension-module", "abi3-py310"] }
|
|
33
34
|
wasm-bindgen = { version = "0.2", optional = true }
|
|
34
|
-
rusqlite = { version = "0.34", optional = true, features = ["bundled"] }
|
|
35
|
-
duckdb = { version = "1.2", optional = true, features = ["bundled"] }
|
|
36
|
-
postgres = { version = "0.19", optional = true }
|
|
37
|
-
reqwest = { version = "0.12", optional = true, features = ["blocking", "json"] }
|
|
38
35
|
yaml-rust2 = { version = "0.13.0", default-features = false }
|
|
39
36
|
|
|
40
37
|
[dev-dependencies]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: synalog
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Classifier: Programming Language :: Rust
|
|
5
5
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -605,6 +605,8 @@ Unlike Logica, which lets the database raise errors at execution time, Synalog e
|
|
|
605
605
|
| **Reserved names** | Rules that redefine a built-in library predicate (`Num`, `Str`, `ArgMin`, `Today`, `Now`, ...) |
|
|
606
606
|
| **Unsafe `SqlExpr`** | User rules that reach for the raw-SQL escape hatch |
|
|
607
607
|
|
|
608
|
+
The algorithms behind the stratification and recursion checks, the compiler's unfolding of mutual recursion, the order a compiled program's tables run in, the contradiction warning, pagination, the quoting of text into SQL and the `Cast` type-name check are proved correct with [Verus](https://github.com/verus-lang/verus). See [Verification](https://synalinks.github.io/synalog/verification/).
|
|
609
|
+
|
|
608
610
|
```python
|
|
609
611
|
errors, warnings = synalog.check(bad_source)
|
|
610
612
|
for e in errors:
|
|
@@ -654,6 +656,7 @@ cargo test --test compiler_tests # compiler golden tests (all engines)
|
|
|
654
656
|
cargo test --test parser_tests # parser golden tests (all engines)
|
|
655
657
|
cargo test --test verifier_tests # verifier tests (all engines)
|
|
656
658
|
cargo test --test search_tests # search feature tests (all engines)
|
|
659
|
+
cargo test --test verus_proofs # the Verus proofs of verified/ (shell/install-verus.sh installs Verus)
|
|
657
660
|
```
|
|
658
661
|
|
|
659
662
|
### Tests
|
|
@@ -563,6 +563,8 @@ Unlike Logica, which lets the database raise errors at execution time, Synalog e
|
|
|
563
563
|
| **Reserved names** | Rules that redefine a built-in library predicate (`Num`, `Str`, `ArgMin`, `Today`, `Now`, ...) |
|
|
564
564
|
| **Unsafe `SqlExpr`** | User rules that reach for the raw-SQL escape hatch |
|
|
565
565
|
|
|
566
|
+
The algorithms behind the stratification and recursion checks, the compiler's unfolding of mutual recursion, the order a compiled program's tables run in, the contradiction warning, pagination, the quoting of text into SQL and the `Cast` type-name check are proved correct with [Verus](https://github.com/verus-lang/verus). See [Verification](https://synalinks.github.io/synalog/verification/).
|
|
567
|
+
|
|
566
568
|
```python
|
|
567
569
|
errors, warnings = synalog.check(bad_source)
|
|
568
570
|
for e in errors:
|
|
@@ -612,6 +614,7 @@ cargo test --test compiler_tests # compiler golden tests (all engines)
|
|
|
612
614
|
cargo test --test parser_tests # parser golden tests (all engines)
|
|
613
615
|
cargo test --test verifier_tests # verifier tests (all engines)
|
|
614
616
|
cargo test --test search_tests # search feature tests (all engines)
|
|
617
|
+
cargo test --test verus_proofs # the Verus proofs of verified/ (shell/install-verus.sh installs Verus)
|
|
615
618
|
```
|
|
616
619
|
|
|
617
620
|
### Tests
|
|
@@ -13,7 +13,7 @@ uvx synalog program.l run Total # on duckdb, the default engine
|
|
|
13
13
|
|
|
14
14
|
## One-shot commands
|
|
15
15
|
|
|
16
|
-
The
|
|
16
|
+
The program file comes first, then the command.
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
19
|
synalog program.l print Predicate ... # print compiled SQL
|
|
@@ -26,8 +26,28 @@ cargo test --test compiler_tests # compiler golden tests (all engines)
|
|
|
26
26
|
cargo test --test parser_tests # parser golden tests (all engines)
|
|
27
27
|
cargo test --test verifier_tests # verifier tests (all engines)
|
|
28
28
|
cargo test --test search_tests # search feature tests (all engines)
|
|
29
|
+
cargo test --test verus_proofs # the Verus proofs of verified/
|
|
30
|
+
cargo test --test type_intersection # the type inference against the proved intersection
|
|
29
31
|
```
|
|
30
32
|
|
|
33
|
+
### Verified algorithms
|
|
34
|
+
|
|
35
|
+
The graph algorithms of the verifier and the compiler (which predicates are
|
|
36
|
+
recursive, which recursion goes through a negation, which predicate cuts a
|
|
37
|
+
mutual recursion, the order a program's tables and loops run in), the
|
|
38
|
+
contradiction warning, pagination, quoting and the `Cast` type-name check live in the `verified/` crate, written in
|
|
39
|
+
[Verus](https://github.com/verus-lang/verus): each function carries a
|
|
40
|
+
specification that Verus proves it meets. A plain `cargo build` erases the
|
|
41
|
+
proofs, so building synalog needs no Verus. Checking them does:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
shell/install-verus.sh # the Verus release, and the Rust toolchain it requires
|
|
45
|
+
export PATH="$HOME/.verus/verus-arm64-macos:$PATH" # the line the script prints
|
|
46
|
+
cargo test --test verus_proofs # or: cd verified && cargo verus verify
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
`cargo test` runs `verus_proofs`, so it fails without Verus installed.
|
|
50
|
+
|
|
31
51
|
The repository also ships a `shell/test.sh` orchestrator (run it from anywhere; it cd's to the repo root):
|
|
32
52
|
|
|
33
53
|
```bash
|
|
@@ -61,17 +81,16 @@ src/
|
|
|
61
81
|
errors.rs # Unified error types with help messages
|
|
62
82
|
python.rs # PyO3 bindings (the _synalog extension module)
|
|
63
83
|
parser/
|
|
64
|
-
parse.rs #
|
|
84
|
+
parse.rs # Synalog syntax -> JSON AST
|
|
65
85
|
rewrite.rs # AST rewrites (aggregation, multi-body)
|
|
66
86
|
json.rs # Custom JSON implementation
|
|
67
87
|
compiler/
|
|
68
|
-
universe.rs #
|
|
88
|
+
universe.rs # SynalogProgram: AST -> SQL compilation
|
|
69
89
|
annotations.rs # @OrderBy, @Limit, @Recursive, etc.
|
|
70
90
|
dialects.rs # Engine-specific SQL generation
|
|
71
91
|
expr_translate.rs # Expression -> SQL translation
|
|
72
92
|
rule_translate.rs # Rule -> SQL translation
|
|
73
93
|
functors.rs # Functor expansion (@Make)
|
|
74
|
-
concertina.rs # Multi-predicate execution orchestration
|
|
75
94
|
type_inference/ # Type checking subsystem
|
|
76
95
|
verifier/
|
|
77
96
|
mod.rs # Validation entry point
|
|
@@ -80,6 +99,7 @@ src/
|
|
|
80
99
|
arity.rs # Argument count consistency
|
|
81
100
|
recursion.rs # Recursion safety checks
|
|
82
101
|
reserved.rs # Reserved predicate name check
|
|
102
|
+
verified/ # Algorithms proved correct with Verus
|
|
83
103
|
python/
|
|
84
104
|
synalog/__init__.py # Python package wrapper
|
|
85
105
|
synalog/cli.py # The synalog command (one-shot + REPL)
|
|
@@ -3,9 +3,9 @@ No errors found.
|
|
|
3
3
|
|
|
4
4
|
$ synalog.compile('aggregation.l', 'Stats')
|
|
5
5
|
-- Initializing DuckDB environment.
|
|
6
|
-
create schema if not exists
|
|
6
|
+
create schema if not exists synalog_home;
|
|
7
7
|
-- Empty record, has to have a field by DuckDB syntax.
|
|
8
|
-
drop type if exists
|
|
8
|
+
drop type if exists synalogrecord893574736 cascade; create type synalogrecord893574736 as struct(nirvana numeric);
|
|
9
9
|
create sequence if not exists eternal_logical_sequence;
|
|
10
10
|
|
|
11
11
|
WITH t_0_Sales AS (SELECT * FROM (
|
|
@@ -62,9 +62,9 @@ GROUP BY Sales.category ORDER BY category;
|
|
|
62
62
|
|
|
63
63
|
$ synalog.compile('aggregation.l', 'PriceStats')
|
|
64
64
|
-- Initializing DuckDB environment.
|
|
65
|
-
create schema if not exists
|
|
65
|
+
create schema if not exists synalog_home;
|
|
66
66
|
-- Empty record, has to have a field by DuckDB syntax.
|
|
67
|
-
drop type if exists
|
|
67
|
+
drop type if exists synalogrecord893574736 cascade; create type synalogrecord893574736 as struct(nirvana numeric);
|
|
68
68
|
create sequence if not exists eternal_logical_sequence;
|
|
69
69
|
|
|
70
70
|
WITH t_0_Sales AS (SELECT * FROM (
|
|
@@ -122,9 +122,9 @@ GROUP BY Sales.category ORDER BY category;
|
|
|
122
122
|
|
|
123
123
|
$ synalog.compile('aggregation.l', 'UniqueRegions')
|
|
124
124
|
-- Initializing DuckDB environment.
|
|
125
|
-
create schema if not exists
|
|
125
|
+
create schema if not exists synalog_home;
|
|
126
126
|
-- Empty record, has to have a field by DuckDB syntax.
|
|
127
|
-
drop type if exists
|
|
127
|
+
drop type if exists synalogrecord893574736 cascade; create type synalogrecord893574736 as struct(nirvana numeric);
|
|
128
128
|
create sequence if not exists eternal_logical_sequence;
|
|
129
129
|
|
|
130
130
|
WITH t_0_Sales AS (SELECT * FROM (
|
|
@@ -180,9 +180,9 @@ GROUP BY Sales.category ORDER BY category;
|
|
|
180
180
|
|
|
181
181
|
$ synalog.compile('aggregation.l', 'TopSeller')
|
|
182
182
|
-- Initializing DuckDB environment.
|
|
183
|
-
create schema if not exists
|
|
183
|
+
create schema if not exists synalog_home;
|
|
184
184
|
-- Empty record, has to have a field by DuckDB syntax.
|
|
185
|
-
drop type if exists
|
|
185
|
+
drop type if exists synalogrecord893574736 cascade; create type synalogrecord893574736 as struct(nirvana numeric);
|
|
186
186
|
create sequence if not exists eternal_logical_sequence;
|
|
187
187
|
|
|
188
188
|
WITH t_2_Sales AS (SELECT * FROM (
|
|
@@ -3,9 +3,9 @@ No errors found.
|
|
|
3
3
|
|
|
4
4
|
$ synalog.compile('directives.l', 'TopCustomers')
|
|
5
5
|
-- Initializing DuckDB environment.
|
|
6
|
-
create schema if not exists
|
|
6
|
+
create schema if not exists synalog_home;
|
|
7
7
|
-- Empty record, has to have a field by DuckDB syntax.
|
|
8
|
-
drop type if exists
|
|
8
|
+
drop type if exists synalogrecord893574736 cascade; create type synalogrecord893574736 as struct(nirvana numeric);
|
|
9
9
|
create sequence if not exists eternal_logical_sequence;
|
|
10
10
|
|
|
11
11
|
WITH t_0_Orders AS (SELECT * FROM (
|