You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
DX7: Java, .NET, C++, mobile (Swift and Dart), and the tier-3 kit #18
yo.hpp, header-only over the C ABI, YO_SHAPE and &User::score
yo-kit: the generator, 7 emitted items, 10 named templates
The agent conformance suite, roughly 40 tasks, published including the failures
The full 2300-case conformance corpus green in all six tier-1 languages
Mobile, tier 2
Swift and Dart were tier-3 templates. dx/14-swift.md and dx/15-dart.md promote them to tier 2 on one argument: mobile is the only place where "no server" is a constraint rather than a preference, so an embedded typed database fits a phone better than it fits a server — and a template maintained by nobody is not a mobile story, it is a checkbox. Tier 2 and not tier 1 because the API may lag one minor, which is what keeps the release-train barrier affordable when Apple or Flutter ships in a release week.
libyo.xcframework as a .binaryTarget with a SHA-256 SwiftPM verifies itself
Key paths are the typed surface.\.score is a KeyPath<User, Double>; order(by:) and the comparison operators are checked by the compiler with no macro, no string, no generated constant. The strongest realisation of P3 in the tree
@Document / @Value / @ID / @Index macros, emitting only what a key path cannot: the canonical shape description and the field-index map
swift-macro-testing snapshots for every expansion and every diagnostic, with fix-its. Swift's trybuild
Typed throws: throws(YoError), Code generated and deliberately not @frozen
Sendability stated per type; Transaction is ~Copyable so consuming func commit() makes use-after-commit a compile error
Span/RawSpan for the borrowed view — the reason the floor is Swift 6.2
Async only where the cost class admits unbounded work, on a dedicated TaskExecutor, never blanket-async
Swift 6 language mode only, -strict-concurrency=complete, warnings as errors
iOS, and it is the point
File protection set to completeUntilFirstUserAuthentication at creation. NSFileProtectionComplete + mmap is a SIGBUS, not an error, so protection: .complete disables mmap instead of crashing
Checkpoint on background inside a beginBackgroundTask window; release cache on memory warning; opt-out, not opt-in
PrivacyInfo.xcprivacy declaring FileTimestamp (C617.1) and DiskSpace (E174.1). A wrong manifest is an App Store rejection for the user's app caused by our package. CI diffs it against a symbol scan
Static linking only; no JIT anywhere, asserted at build time
Size budget as a hard gate: <= 1.6 MB KV+docs, <= 3.2 MB default, per thinned arm64 slice
Binaries vendored, not downloaded at build time. ~30 MB package, accepted under P9. A post-install download is the top reason a Flutter native plugin fails in CI or behind a proxy
build_runner + source_gen shapes. Dart has no macros — the proposal was cancelled — so the shape is a part file and the spec says so instead of claiming parity
yodb_lint custom-lint so an un-generated @YoDocument gets one sentence naming the command, not an analyzer riddle
@Native(isLeaf: true) on every O(1) function, marked from the cost class in api.model.json. ~10 ns overhead is what makes a synchronous get on the UI isolate defensible
One long-lived worker isolate per Db, not Isolate.run per query. Scans never touch the root isolate, and that is not configurable
sealed class YoException for exhaustive switch; NativeFinalizer + Yo.use closure + a debug leak detector, because Dart has no scoping construct
Android: API 24, arm64-v8a and x86_64 only. armeabi-v7a dropped — a 32-bit address space caps a mapped .yo file, and silent failure past a size is worse than absence
16 KB page alignment and extractNativeLibs=false, CI-checked: a misaligned .so is a Play Console rejection for the user's app
Web via the wasm build, conditional export, labelled tier 3 on every web-only member
Flutter frame-budget test: 60 fps over a 100,000-row scan, as a release gate
Shared
Static libs for aarch64-apple-ios, -ios-sim, x86_64-apple-ios, aarch64-linux-android, x86_64-linux-android in the release matrix
Corpus per PR on desktop, per merge on the simulator and emulator, weekly on physical devices
dx/01 snippet budgets: Swift 14 lines, Dart 16
Predictions registered under Y26: Swift 200 ns, Dart 250 ns
On publishing failures
The agent suite publishes tasks agents get wrong. That is the point of it. A suite that only shows successes measures nothing, and the failures are the list of things to fix in the next release.
Exit
Six-language interop green across all 30 ordered pairs, and a .yo file written in Rust read correctly from Swift and from Dart. Mobile size budgets and the Flutter frame-budget test pass. The agent suite baseline is published, failures included.
changed the title [-]DX7: Java, .NET, C++, and the tier-3 kit[/-][+]DX7: Java, .NET, C++, mobile (Swift and Dart), and the tier-3 kit[/+]on Aug 28, 2026
Lands with M8. The last of the tier-1 set, plus the tier-2, mobile and tier-3 machinery.
Scope
yo-java, Java 25 LTS with FFM,Arena.ofConfined(),Linker.Option.critical(true)chosen per function fromapi.model.json--enable-native-accessdetected atDb.openwith a message that says exactly what to add to the command lineyo-dotnet,net10.0,[LibraryImport],SuppressGCTransition, NativeAOTyo.hpp, header-only over the C ABI,YO_SHAPEand&User::scoreyo-kit: the generator, 7 emitted items, 10 named templatesMobile, tier 2
Swift and Dart were tier-3 templates.
dx/14-swift.mdanddx/15-dart.mdpromote them to tier 2 on one argument: mobile is the only place where "no server" is a constraint rather than a preference, so an embedded typed database fits a phone better than it fits a server — and a template maintained by nobody is not a mobile story, it is a checkbox. Tier 2 and not tier 1 because the API may lag one minor, which is what keeps the release-train barrier affordable when Apple or Flutter ships in a release week.Swift (
tamnd/yo-swift)CYosystem/binary target,Yodbidiom layer,YodbMacroslibyo.xcframeworkas a.binaryTargetwith a SHA-256 SwiftPM verifies itself\.scoreis aKeyPath<User, Double>;order(by:)and the comparison operators are checked by the compiler with no macro, no string, no generated constant. The strongest realisation of P3 in the tree@Document/@Value/@ID/@Indexmacros, emitting only what a key path cannot: the canonical shape description and the field-index mapswift-macro-testingsnapshots for every expansion and every diagnostic, with fix-its. Swift'strybuildthrows(YoError),Codegenerated and deliberately not@frozenTransactionis~Copyablesoconsuming func commit()makes use-after-commit a compile errorSpan/RawSpanfor the borrowed view — the reason the floor is Swift 6.2TaskExecutor, never blanket-async-strict-concurrency=complete, warnings as errorsiOS, and it is the point
completeUntilFirstUserAuthenticationat creation.NSFileProtectionComplete+ mmap is aSIGBUS, not an error, soprotection: .completedisables mmap instead of crashingbeginBackgroundTaskwindow; release cache on memory warning; opt-out, not opt-inPrivacyInfo.xcprivacydeclaringFileTimestamp(C617.1) andDiskSpace(E174.1). A wrong manifest is an App Store rejection for the user's app caused by our package. CI diffs it against a symbol scanDart / Flutter (
tamnd/yo-dart)build_runner+source_genshapes. Dart has no macros — the proposal was cancelled — so the shape is apartfile and the spec says so instead of claiming parityyodb_lintcustom-lint so an un-generated@YoDocumentgets one sentence naming the command, not an analyzer riddle@Native(isLeaf: true)on everyO(1)function, marked from the cost class inapi.model.json. ~10 ns overhead is what makes a synchronousgeton the UI isolate defensibleDb, notIsolate.runper query. Scans never touch the root isolate, and that is not configurablesealed class YoExceptionfor exhaustiveswitch;NativeFinalizer+Yo.useclosure + a debug leak detector, because Dart has no scoping constructarm64-v8aandx86_64only.armeabi-v7adropped — a 32-bit address space caps a mapped.yofile, and silent failure past a size is worse than absenceextractNativeLibs=false, CI-checked: a misaligned.sois a Play Console rejection for the user's appShared
aarch64-apple-ios,-ios-sim,x86_64-apple-ios,aarch64-linux-android,x86_64-linux-androidin the release matrixdx/01snippet budgets: Swift 14 lines, Dart 16On publishing failures
The agent suite publishes tasks agents get wrong. That is the point of it. A suite that only shows successes measures nothing, and the failures are the list of things to fix in the next release.
Exit
Six-language
interopgreen across all 30 ordered pairs, and a.yofile written in Rust read correctly from Swift and from Dart. Mobile size budgets and the Flutter frame-budget test pass. The agent suite baseline is published, failures included.Reference:
dx/08-jvm-and-dotnet.md,dx/09-c-and-tier3.md,dx/10-agent-dx.mdsection 6,dx/14-swift.md,dx/15-dart.md.