feat: rebuild Dart ORM with standalone typed layers and native drivers - #485
Merged
Merged
Conversation
This was referenced Sep 20, 2026
Closed
This was referenced Sep 20, 2026
Closed
Closed
Closed
Closed
Closed
Closed
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changes
Replaces the retired Prisma-engine implementation with one native Dart 3.13 product package. Applications declare immutable Dart classes once; generated CRUD returns those classes, while typed selections and relationships retain explicit result shapes and query counts.
orm.config.dartplus offlineinit/generate/ migration creation, human output by default and explicit JSON reports.Important
This is an intentionally breaking development restart. There is no compatibility reader for previous JSON histories or Prisma APIs, and no package publication is included. MySQL/MariaDB DDL is non-atomic; unsupported exact Decimal operations, streaming and cancellation are rejected explicitly. SQLite cancellation/deadlines and bounded retries depend on the native asset: the default Linux sqlite3 3.6.0 build does not export interruption and rejects those operations before SQL. See
docs/mysql.md,docs/mysql-migrations.mdanddocs/capabilities.md.Validation
78dcf149dda92aca804666a0efa5cb7e380e582a: 1141 native tests passed, 41 explicit capability skips, with real SQLite, PostgreSQL 18, MySQL 8.4 and MariaDB 11.8. Formatting, analysis and committed Web asset integrity also pass.research/validation/standalone-redesign.mdand its structured reports retain exact platform source revisions, corrected earlier failures and platform limitations. Default Linux SQLite interruption remains unavailable; unsupported requests are explicitly rejected and only capability-dependent cases are skipped. Safari, Firefox, physical devices and Apple Flutter platforms are not certified.netlify.tomlskips the retired VitePress build for this package-only repository, preserving the existing published site. No replacement website or package publication is included.Source-grounded design decisions and engine-specific boundaries are documented in
research/standalone-orm-redesign.md,research/prisma-v8-reassessment.mdandresearch/mysql-precision-boundaries.md.Review scope
The PR includes the earlier local implementation history as well as the final standalone-layer redesign. Public entrypoints are in
lib/; session correctness is inlib/src/runtime/, query compilation inlib/src/, schema generation inlib/src/generate/, and migration recovery inlib/src/migrate/. Generated fixtures and hashed SQLite Web resources are checked in for reproducibility.Refs #479
Refs #482
These issues remain open: their earlier proposals include other schema approaches and SQL Server, outside this accepted implementation scope.