Skip to content

docs: Rust core port plan — decompose #6 into actionable sub-issues - #31

Merged
LeslieOA merged 3 commits into
developfrom
docs/rust-core-port-plan
Oct 4, 2026
Merged

LeslieOA merged 3 commits into
developfrom
docs/rust-core-port-plan

Conversation

@LeslieOA

@LeslieOA LeslieOA commented May 23, 2026 •

Copy link
Copy Markdown
Member

Summary

Adds docs/rust-core-port-plan.md: a plan for #6, with six open questions and a proposed split into 14 sub-issues. It is not a commitment to start; nothing is filed until the questions are answered.

The six open questions

# Question Recommendation
1 Rollout: big-bang, parallel behind a flag, or per function? Parallel behind a flag
2 Native FFI tooling: UniFFI, JSI direct, or Turbo Modules? UniFFI, with JSI direct as the fallback
3 Web WASM loading: separate file or inline base64? Separate file
4 Port markdown rendering too? No
5 Timing Open
6 Rust expertise Open

Changed in review

Verification

Docs only. npm test, npm run typecheck and npm run lint pass.

Refs #6

🤖 Generated with Claude Code

since the initial audit. Daunting to start in that shape — anyone
picking it up has to make a dozen architectural decisions before
writing any code.

This commit adds docs/rust-core-port-plan.md with:

- Scope (what ships in Rust, what stays in TS)
- Rollout decision options (big-bang vs parallel-with-flag vs
  per-function migration) with a recommendation
- FFI tooling decision options for native (UniFFI vs JSI direct vs
  Turbo Modules) and for web (wasm-bindgen as the de facto choice)
- Cross-impl conformance testing strategy — re-use the 168 tests
  from #16 against both impls as the safety net
- Native build integration sketch (Expo config plugin + react-native
  fallback for bare RN consumers)
- A decomposition into 14 sub-issues (2 L, 5 M, 7 S) in rough
  dependency order, with brief scope per sub-issue
- Six open architectural questions for the maintainer to decide
  before any of the sub-issues get filed
- What was deliberately NOT included (bytecode cache, streaming
  parse, persistent storage, multi-canvas state — all real ideas,
  none belonging in #6)

Once the maintainer signs off on the open questions, the 14
sub-issues land on the project board and #6 becomes an umbrella
tracker. Until then, this doc is the conversation starter — not a
commitment to start coding.

README's Development section gains a brief "Strategic direction"
subsection pointing at the plan and the umbrella issue, so anyone
landing on the README sees the trajectory without having to dig.

No code changes. Library checks (38/38 tests, typecheck clean, lint
exit 0) pass on this branch as expected.

Refs: #6

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@LeslieOA
LeslieOA force-pushed the docs/rust-core-port-plan branch from 895300a to bca9292 Compare October 4, 2026 20:10
LeslieOA and others added 2 commits October 4, 2026 23:04
Review of #31 before landing. The plan dates from May:

- It counted "168 tests" added by #29 as the contract. #29 was closed;
  the conformance tests landed as #67, #68 and #82, and only the
  src/core suites test code the port would replace.
- It predates src/gtk. The GTK renderer stays TypeScript too, and would
  load the wasm build, as the README paragraph already says.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ered

Leslie's call: land the plan document, but don't announce a Rust
direction in the README while the plan itself calls it undecided.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@LeslieOA
LeslieOA merged commit c395b97 into develop Oct 4, 2026
1 check passed
@LeslieOA
LeslieOA deleted the docs/rust-core-port-plan branch October 4, 2026 21:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant