Skip to content

Commit b64e285

Browse files
noahgiftclaude
andcommitted
[RELEASE] Depyler v4.1.0: 100% convergence milestone
Version bump 3.25.0 → 4.1.0 with: - 100% transpile+compile on evaluation corpora (278/278) - 97.4% on 1,410-file internal corpus - Workspace crate extraction (depyler-hir, depyler-lambda, depyler-analysis, depyler-tooling) - Container element type inference for unparameterized generics - expr_methods.rs refactoring (complexity 101 → 25) - 1,469 workspace tests passing (0 failures) Also removes hardcoded version constraints from internal path deps and updates TDD book + CHANGELOG. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent cebf768 commit b64e285

File tree

17 files changed

+89
-35
lines changed

17 files changed

+89
-35
lines changed

CHANGELOG.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,59 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [4.1.0] - 2026-02-12
6+
7+
### 99MODE-S9: 100% Convergence Milestone
8+
9+
**Perfect transpilation convergence achieved across all test corpora.**
10+
11+
| Corpus | Compile Rate | Previous | Improvement |
12+
|--------|--------------|----------|-------------|
13+
| hard_wave3 (100 files) | 100% | N/A | New corpus |
14+
| semantic tests (178 files) | 100% | 97.4% | +2.6 pp |
15+
| Internal corpus (1410 files) | 97.4% | 80% | +17.4 pp |
16+
17+
351 commits of sustained convergence engineering since v3.25.0.
18+
19+
### Architecture: Workspace Crate Extraction
20+
21+
Extracted 4 new crates from `depyler-core` for better modularity:
22+
23+
- **depyler-hir** - HIR types, error types, decision trace
24+
- **depyler-lambda** - Lambda codegen, errors, inference, optimizer, testing, types
25+
- **depyler-analysis** - Type analysis, borrowing, inference, optimization, container element inference
26+
- **depyler-tooling** - Chaos, debug, doctest, documentation, hunt mode, IDE, infrastructure, library mapping
27+
28+
### Container Element Type Inference
29+
30+
New inference pass resolves `DepylerValue` for unparameterized generics:
31+
- `def f(numbers: list)` now infers `Vec<i32>` from usage patterns (e.g., `n > 0` in loop body)
32+
- Covers for-loop element usage, `.append()` arguments, `sum()`/`max()`/`join()` builtins, dict value assignment
33+
- Delegates to existing `infer_param_type_from_body` for loop variable inference
34+
35+
### Code Quality: expr_methods.rs Refactoring
36+
37+
Reduced `convert_method_call` cognitive complexity from 101 to ~25:
38+
- Extracted 9 module handler methods (`try_convert_{sys,re,colorsys,base64,hashlib,json,math,random,time}_method`)
39+
- Extracted `convert_instance_method` for list/set/string/dict dispatch
40+
- 9 additional `re`-module helpers and `make_hashlib_expr`
41+
- 1718 lines reduced to 1647 with zero behavior change
42+
43+
### Test Suite
44+
45+
- **1,469 workspace tests passing** (0 failures)
46+
- Fixed 5 stale test assertions for `In`/`NotIn` operators and array multiplication
47+
- 28 tests ignored (feature-gated)
48+
49+
### Convergence Campaign Highlights (99MODE-S9)
50+
51+
- 1,410+ corpus files across security, compilers, databases, ML, distributed systems, science, competitive programming
52+
- Fixed module-vs-variable name collision in method routing
53+
- Added `random.triangular` and fixed `itertools.groupby` arity
54+
- Fixed `contains_key` heuristic for set variables
55+
- Propagated typed local annotations to `param_types` for tuple codegen
56+
- Fixed `DepylerValue::Str` E0308 missing `.to_string()`
57+
558
## [3.25.0] - 2026-02-02
659

760
### 🎯 Multi-Corpus Convergence Milestone

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ max_cyclomatic_complexity = 15
4141
required_documentation_coverage = 100.0
4242

4343
[workspace.package]
44-
version = "3.25.0"
44+
version = "4.1.0"
4545
edition = "2021"
4646
authors = ["Depyler Contributors"]
4747
license = "MIT OR Apache-2.0"

crates/depyler-analysis/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ rustpython-parser.workspace = true
2424
rustpython-ast.workspace = true
2525
colored.workspace = true
2626
tracing.workspace = true
27-
depyler-annotations = { version = "3.25.0", path = "../depyler-annotations" }
28-
depyler-hir = { version = "3.25.0", path = "../depyler-hir" }
27+
depyler-annotations = { path = "../depyler-annotations" }
28+
depyler-hir = { path = "../depyler-hir" }
2929

3030
[features]
3131
default = []

crates/depyler-analyzer/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ categories.workspace = true
1313
rust-version.workspace = true
1414

1515
[dependencies]
16-
depyler-core = { version = "3.19.18", path = "../depyler-core" }
17-
depyler-annotations = { version = "3.19.18", path = "../depyler-annotations" }
16+
depyler-core = { path = "../depyler-core" }
17+
depyler-annotations = { path = "../depyler-annotations" }
1818
anyhow.workspace = true
1919
serde.workspace = true
2020
serde_json.workspace = true

crates/depyler-core/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ quote.workspace = true
2525
proc-macro2.workspace = true
2626
indexmap.workspace = true
2727
smallvec.workspace = true
28-
depyler-annotations = { version = "3.19.18", path = "../depyler-annotations" }
28+
depyler-annotations = { path = "../depyler-annotations" }
2929
depyler-hir = { path = "../depyler-hir" }
3030
depyler-lambda = { path = "../depyler-lambda" }
3131
depyler-analysis = { path = "../depyler-analysis" }
@@ -36,7 +36,7 @@ tempfile.workspace = true
3636
toml.workspace = true
3737

3838
# DEPYLER-1112: Sovereign Type Database integration (optional)
39-
depyler-knowledge = { path = "../depyler-knowledge", version = "3.25.0", optional = true }
39+
depyler-knowledge = { path = "../depyler-knowledge", optional = true }
4040

4141
[features]
4242
default = []

crates/depyler-graph/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ keywords = ["python", "rust", "transpiler", "graph", "analysis"]
1010
categories = ["development-tools", "compilers"]
1111

1212
[dependencies]
13-
depyler-core = { version = "3.25.0", path = "../depyler-core" }
13+
depyler-core = { path = "../depyler-core" }
1414
petgraph.workspace = true
1515
serde.workspace = true
1616
serde_json.workspace = true

crates/depyler-hir/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ thiserror.workspace = true
1919
anyhow.workspace = true
2020
serde_json.workspace = true
2121
fnv.workspace = true
22-
depyler-annotations = { version = "3.25.0", path = "../depyler-annotations" }
22+
depyler-annotations = { path = "../depyler-annotations" }
2323

2424
[dependencies.rmp-serde]
2525
version = "1.1"

crates/depyler-lambda/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,4 @@ serde.workspace = true
1919
serde_json.workspace = true
2020
rustpython-parser.workspace = true
2121
rustpython-ast.workspace = true
22-
depyler-annotations = { version = "3.25.0", path = "../depyler-annotations" }
22+
depyler-annotations = { path = "../depyler-annotations" }

crates/depyler-mcp/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ categories.workspace = true
1313
rust-version.workspace = true
1414

1515
[dependencies]
16-
depyler-core = { version = "3.19.18", path = "../depyler-core" }
16+
depyler-core = { path = "../depyler-core" }
1717
anyhow.workspace = true
1818
thiserror.workspace = true
1919
serde.workspace = true

crates/depyler-oracle/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ api-fallback = [] # HTTP API fallback for hybrid transpiler (requires ureq dep
1818

1919
[dependencies]
2020
# Depyler core for error types
21-
depyler-core = { version = "3.25.0", path = "../depyler-core" }
21+
depyler-core = { path = "../depyler-core" }
2222

2323
# ML models from aprender
2424
# Features: parallel (rayon), gpu (wgpu via trueno)

0 commit comments

Comments
 (0)