Skip to content

Commit cac7983

Browse files
artizclaude
andcommitted
docs: "migration in numbers" — LOC comparison + timeline in MIGRATION.md
Head-of-file summary table: upstream Python (docling 2.114.0 via its docling-slim code wheel, 70,132 lines / 242 files + docling-core 2.87.1, 30,888 / 103 = 101,020 total) vs docling.rs (51,766 lines / 132 files, split into the port proper at 41,228 and the beyond-upstream extras — serve/RAG/bindings — at 10,538), with the caveats that make the ratio honest in both directions. Timeline: 2026-06-27 → 2026-07-23, 26 days, ~570 commits. Refs #80 Signed-off-by: artiz <artem.kustikov@gmail.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT
1 parent bf6489a commit cac7983

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

docs/MIGRATION.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,32 @@ Rust. This document is the **current status**: what is migrated, how it compares
55
to upstream docling, and what is intentionally not done yet. (The original
66
phased plan is kept at the end as history.)
77

8+
## The migration in numbers
9+
10+
| | Lines of code | Files |
11+
|---|---|---|
12+
| Upstream Python: `docling` 2.114.0 (code wheel `docling-slim`) | 70,132 | 242 |
13+
| Upstream Python: `docling-core` 2.87.1 (document model, serializers, chunkers) | 30,888 | 103 |
14+
| **Upstream total** | **101,020** | **345** |
15+
| docling.rs — the port itself (`docling-core`, `docling`, `docling-pdf`, `docling-asr`, `docling-cli`) | 41,228 ||
16+
| docling.rs — beyond upstream's packages (HTTP API, RAG, Python/Node/wasm bindings) | 10,538 ||
17+
| **docling.rs total (`crates/*/**.rs`)** | **51,766** | **132** |
18+
19+
Roughly **half the line count for the same behavior** — despite Rust carrying
20+
type/lifetime annotations Python doesn't — because the port reimplements from
21+
observed behavior rather than translating structure, and because byte-for-byte
22+
conformance testing against live docling (not code review) is what pins
23+
correctness. The Python side also leans on compiled dependencies that the Rust
24+
side had to re-port or re-integrate natively (docling-parse's C++ PDF text
25+
extraction became `textparse.rs`; HF `transformers` inference became hand-rolled
26+
ONNX pipelines), so the scope ratio understates the ported surface.
27+
28+
**Timeline:** the first commit landed **2026-06-27**; the migration — every
29+
input format including PDF/ML, ASR and video, plus the serve/RAG/bindings
30+
extras — was done by **2026-07-23**: **26 days**, ~570 commits, migrated by
31+
[artiz](https://github.com/artiz) + Claude (Anthropic's Claude Code, doing the
32+
bulk of the porting under review).
33+
834
> **Status: the format migration is complete.** Every document format in
935
> docling's pipeline is supported — including **audio/ASR** (Whisper via ONNX,
1036
> in `docling-asr`) — plus Markdown (legacy + a Rust-only *strict* mode),

0 commit comments

Comments
 (0)