forked from paiml/depyler
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
138 lines (118 loc) · 3.45 KB
/
Copy pathCargo.toml
File metadata and controls
138 lines (118 loc) · 3.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
[workspace]
members = [
"crates/depyler-core",
"crates/depyler-analyzer",
"crates/depyler-verify",
"crates/depyler-mcp",
"crates/depyler-annotations",
"crates/depyler-quality",
"crates/depyler",
"crates/depyler-wasm",
]
resolver = "2"
[workspace.metadata.quality]
max_tdg_score = 2.0
min_coverage = 85.0
max_cyclomatic_complexity = 15
required_documentation_coverage = 100.0
[workspace.package]
version = "0.3.1"
edition = "2021"
authors = ["Depyler Contributors"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/paiml/depyler"
homepage = "https://github.com/paiml/depyler"
documentation = "https://docs.rs/depyler"
description = "A Python-to-Rust transpiler focusing on energy-efficient, safe code generation with progressive verification"
keywords = ["python", "rust", "transpiler", "compiler", "verification"]
categories = ["compilers", "development-tools", "parser-implementations"]
readme = "README.md"
rust-version = "1.83"
[workspace.dependencies]
# Core dependencies
anyhow = "1.0"
thiserror = "1.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
# Python parsing
rustpython-parser = "0.3"
rustpython-ast = "0.3"
# Code generation
syn = { version = "2.0", features = ["full", "extra-traits", "visit-mut"] }
quote = "1.0"
proc-macro2 = "1.0"
# Analysis
petgraph = "0.6"
indexmap = "2.0"
smallvec = { version = "1.0", features = ["serde"] }
regex = "1.10"
# Testing and verification
quickcheck = "1.0"
quickcheck_macros = "1.0"
proptest = "1.0"
insta = "1.0"
tempfile = "3.14"
# CLI
clap = { version = "4.0", features = ["derive", "cargo"] }
indicatif = "0.17"
colored = "2.0"
dialoguer = "0.11"
# Async (for MCP)
tokio = { version = "1.0", features = ["full"] }
reqwest = { version = "0.11", default-features = false, features = ["json", "rustls-tls"] }
# Benchmarking
criterion = { version = "0.5", features = ["html_reports"] }
pprof = { version = "0.13", features = ["criterion", "flamegraph"] }
# WASM dependencies
wasm-bindgen = "0.2.100"
serde-wasm-bindgen = "0.6"
js-sys = "0.3"
web-sys = "0.3"
instant = { version = "0.1", features = ["wasm-bindgen"] }
toml = "0.8"
[profile.release]
opt-level = 3
lto = "fat"
codegen-units = 1
strip = true
panic = "abort"
# Size-optimized build for distribution
[profile.min-size]
inherits = "release"
opt-level = "z" # Optimize for size
lto = "fat" # Full link-time optimization
codegen-units = 1 # Single codegen unit
panic = "abort" # Remove panic unwinding
strip = true # Strip all symbols
# Fast development builds
[profile.dev-fast]
inherits = "dev"
opt-level = 1
incremental = true
codegen-units = 16
[profile.dev]
opt-level = 0
debug = true
incremental = true
[profile.bench]
inherits = "release"
debug = true # Keep debug info for profiling
strip = false # Keep symbols for flamegraphs
# WASM production build profile
[profile.wasm-production]
inherits = "release"
opt-level = "z" # Size optimization
lto = "fat" # Cross-crate inlining
codegen-units = 1 # Single compilation unit
strip = true # Remove debug symbols
panic = "abort" # No unwinding
incremental = false # Deterministic builds
# Optimize dependencies in all profiles
[profile.release.package."*"]
opt-level = 3
[profile.min-size.package."*"]
opt-level = "z"
[profile.dev-fast.package."*"]
opt-level = 1