Repository navigation
Flutter port gaps: transpiler, runtime and Flutter API fixes from a real-world port - #6154
shai-almog wants to merge 166 commits into
Conversation
…tializer cascades, crash guards, super ==, symbols, shared case variables; dart:core members
…onvert encodings, io TLS exceptions
…patterns, constructor and static tear-offs
…tors, Future statics, typed reduce
…ews, converters and chunked sinks, Uri resolve, Symbol, regex named groups
… extensions and mixins, do-while, Symbol, object patterns on core types, clearer diagnostics
…dows, text decorations, dialog/sheet arguments, button variants, lifecycle observers
…tion, last-wins mixin members, read-only unmodifiable maps; Uint8List is a List<int>
… sheet handle/shape, forms/navigation/table widgets, intl compact formats, google_fonts families; club_hub covers the UI packages
… masks, blur filters, real date/time/range pickers, safe-area dialogs
…aces, private accessors, mixin on-type interfaces, multi-variable for loops, bare getters in extensions
…er, switcher, align, positioned, rotation, slide, text style, TweenAnimationBuilder); font variations, Cupertino dynamic colors, icon theme getters
…neric extensions with typed callbacks, exact extension selection
…edSize, switcher builders, overlay styles, TextInputType keyboards, path transforms
…arameters in function types, typed constructor tear-offs, empty records
…ent headers, overlap handles, draggable sheets, button/slider/bottom-nav themes, Float64List matrix storage; fix IconData tests
…every tear-off adapter; generic type-parameter binding at call sites
… const fromEnvironment, Uri.encodeFull/splitQueryString, interface getters from mixins
…king pinned/floating headers, overlay autocomplete, textScaler, horizontal grids; resync embedded material stub
…rs, FontFeature, MediaQuery text scaling fallback, SelectionChangedCause
…per parameters typed by position, named constructors on abstract classes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… handoff, RawAutocomplete with arrow and enter keys Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…reads, inherited interface getter bridges, discard temp only for fully parenthesized statements Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…omplete field and options view builders, key handling tests Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…comprehensions, switch pattern promotion, generic stub extensions; Autocomplete builder stubs Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…redicates, int stores into Float64List, Codec Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…is! exits, this in interpolation, conditional common supertypes, generic stub mixin getters Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…red case bodies and awaiting collection elements Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ic calls and loop variables Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nds, return context for awaiting collections Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t inference, Null runtime type; timer deadline after Display check Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nd Null constructor witnesses, record runtimeType; nanosecond timer deadlines Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ests and witnesses, dart:core Record Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… structural record casts, num operator dispatch Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sionByZeroException Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t names for renamed classes, pattern assignment, enum statics Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ambda inference, exact num compare, canonical const widgets Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…pe literals Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n types Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sures, function-type interning Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…edef type args, record function fields Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Compared 210 screenshots: 210 matched. Benchmark ResultsDetailed Performance Metrics
ParparVM vs HotSpot (JDK 25): Windows arm64Runner CPU: ARMv8 (64-bit) Family 8 Model D49 Revision 0, MICROSOFT CORPORATION (baseline Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
Result: no regression |
…e values, generic closure fields, generator element types Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…parameter narrowing Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…anonicalization Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…listener removal, canonical static views Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…, signed casts; mixin super keys Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ped literals and named-param typedefs Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nction bounds across nullability Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er static function view, Function-typed named calls Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… returns Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…onstructor and instantiated-generic tear-off identity Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…f type args from context Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Closes the gaps a real-world Flutter port into Codename One ran into: language features the transpiler mishandled, runtime crashes, missing Flutter API, stubs that were too shallow,
dart:*gaps, and weak diagnostics. A clean-room acceptance app,scripts/flutter-apps/club_hub, follows the same shape as that port: it pulls in async, collection, hive, http, markdown, source_span, stream_channel, string_scanner, table_calendar, web_socket_channel and more, 699 Dart files in all. It now transpiles and compiles with zero errors.field_notesandpet_adoptionare still accepted.What changed
Transpiler (
maven/dart-transpiler)fold/mapSet,ListorIterableonly throughimplements, beside a superclass, get live views, mixin forwarders and covariant-return pinsNevercall gets a closing throwrethrowand guardless if-case count as leaving the methodasync mainwaits for runningasync*bodiesString.runes, and lone surrogates in literals are escaped.Runtimes (
maven/dart-runtime,maven/flutter-runtime)Stream/StreamTransformervariance fixes, and typedFile.openRead.TweenAnimationBuilder,AlignmentGeometryonAlign/Stack/transitions,Scaffold.persistentFooterButtons, and a typedshowDateRangePicker.Tests
expect.txtcomes from a realdart run; Flutter-only fixes have flutter-runtime unit tests.Verification
installof dart-runtime, dart-transpiler and flutter-runtime withCN1_DART_TESTS_REQUIRED=1: 1,329 tests, 0 failures, 0 skipped, including 244 behaviour cases.@author,@since, ASCII and copyright gates are clean.Known limits
whereType<Relay<int>>()keeps aRelay<String>that Dart would drop.async*bodies still run on their own thread; a CPS state-machine lowering is separate work.Function.applywith named arguments is unsupported.🤖 Generated with Claude Code