Skip to content

Drupal 11 core port to TypeScript + Rust/WASM - #5

Open
ruvnet wants to merge 2 commits into
mainfrom
drupaljs-ts-rust-port
Open

Drupal 11 core port to TypeScript + Rust/WASM#5
ruvnet wants to merge 2 commits into
mainfrom
drupaljs-ts-rust-port

Conversation

@ruvnet

@ruvnet ruvnet commented Jun 3, 2026

Copy link
Copy Markdown
Owner

Ports Drupal 11 core to TypeScript with Rust→WASM for complex/perf-critical algorithms. Built TDD-first (London school) by a multi-agent swarm.

Stats

  • 90 TypeScript packages (@drupaljs/*) · 9 Rust/WASM crates (drupaljs-*)
  • 2,499 TS tests (Vitest, 330 files) + 268 Rust tests (cargo test --workspace) — all green
  • 43/43 core modules ported

What's included

  • Kernel: DI container, event dispatcher, hook/module system, plugin API, config, cache (+tags/contexts), routing, render, http-kernel, theme, entity, database, typed-data, util, form, access, session, logger, queue/cron/lock/state, language/translation, …
  • Field layer: field API + text/options/link/datetime field types, path-alias, filter, editor, locale, content-translation.
  • Modules (module-*): system, user, node, taxonomy, comment, block, menu, file, image, media, views, jsonapi, rest, layout_builder, migrate, content_moderation, workspaces, … (full list in port/README.md).
  • Rust/WASM crates: graph (topo-sort/SCC), diff (Myers), xss-html (filter automaton), cache-checksum, crypt, password-hash (phpass), route-matcher, transliteration, uuid.

Architecture & process

  • ADR-0014…0018 (docs/adr/): monorepo, Rust/WASM, TDD-London, one-directory-per-agent swarm ownership, kernel-first phasing. Supersedes ADR-0007 (Strapi), resolves ADR-0013.
  • Full Drupal 11 source mapped into a semantic vector DB (drupal-rvf/, 16,151 files / 1.78M LOC) to ground the port.
  • CI: .github/workflows/port-ci.yml (tsc + vitest + cargo + wasm-pack).

Scope honesty

A faithful, test-backed port of Drupal core's architecture and subsystem contracts — not a drop-in replacement for a production Drupal site. Several subsystems (notably views, migrate, entity/field) are minimal-but-correct vertical slices with documented TODOs. The legacy rc1 admin-UI clone is retained at the repo root.

Tracking epic: #4

90 @drupaljs/* packages + 9 drupaljs-* Rust/WASM crates porting Drupal core's kernel, field layer, and all 43 core modules. 2,499 TS tests + 268 Rust tests, all passing. TDD London-school throughout; complex algos (Myers diff, XSS/HTML filter automaton, dependency-graph topo-sort/SCC, route matcher, transliteration, crypt, phpass password hashing, cache-tag checksum, uuid) implemented in Rust compiled to WASM.

Adds ADR-0014..0018 (port architecture) and updates the ADR index; supersedes ADR-0007, resolves ADR-0013. Root README now leads with the port. Legacy rc1 admin-UI clone retained at repo root. Tracking epic: #4.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant