Skip to content

Conversation

@eyebrowsoffire
Copy link
Contributor

@eyebrowsoffire eyebrowsoffire commented Jan 11, 2024

This implements dual compile via the newly available flutter.js bootstrapping APIs for intelligent build fallback.

  • Users can now use the FlutterLoader.load API from flutter.js
  • Flutter tool injects build info into the index.html of the user so that the bootstrapper knows which build variants are available to bootstrap
  • The semantics of the --wasm flag for flutter build web have changed:
    • Instead of producing a separate build/web_wasm directory, the output goes to the build/web directory like a normal web build
    • Produces a dual build that contains two build variants: dart2wasm+skwasm and dart2js+CanvasKit. The dart2wasm+skwasm will only work on Chrome in a cross-origin isolated context, all other environments will fall back to dart2js+CanvasKit.
    • --wasm and --web-renderer are now mutually exclusive. Since there are multiple build variants with --wasm, the web renderer cannot be expressed via a single command-line flag. For now, we are hard coding what build variants are produced with the --wasm flag, but I plan on making this more customizable in the future.
  • Build targets now can optionally provide a "build key" which can uniquely identify any specific parameterization of that build target. This way, the build target can invalidate itself by changing its build key. This works a bit better than just stuffing everything into the environment defines because (a) it doesn't invalidate the entire build, just the targets which are affected and (b) settings for multiple build variants don't translate well to the flat map of environment defines.

@github-actions github-actions bot added the tool Affects the "flutter" command-line tool. See also t: labels. label Jan 11, 2024
@kevmoo kevmoo added platform-web Web applications specifically team-web Owned by Web platform team labels Jan 24, 2024
@github-actions github-actions bot removed the platform-web Web applications specifically label Jan 25, 2024
@eyebrowsoffire eyebrowsoffire marked this pull request as ready for review January 25, 2024 19:50
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 2, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 3, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 3, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 4, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 4, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 5, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 5, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 5, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 5, 2024
tarrinneal pushed a commit to flutter/packages that referenced this pull request Feb 5, 2024
Manual roll Flutter from e02e207 to 0b5cd50 (46 revisions)

Manual roll requested by tarrinneal@google.com

flutter/flutter@e02e207...0b5cd50

2024-02-05 124896814+BiskupMaik@users.noreply.github.com fix AppBar docs
for backgroundColor & foregroundColor (flutter/flutter#142430)
2024-02-04 98614782+auto-submit[bot]@users.noreply.github.com Reverts
"Update gradle lockfiles template" (flutter/flutter#142889)
2024-02-04 barpac02@gmail.com Update gradle lockfiles template
(flutter/flutter#140115)
2024-02-04 engine-flutter-autoroll@skia.org Roll Flutter Engine from
20742e37e54e to f34c658b9600 (1 revision) (flutter/flutter#142876)
2024-02-03 engine-flutter-autoroll@skia.org Roll Flutter Engine from
23763db72272 to 20742e37e54e (1 revision) (flutter/flutter#142850)
2024-02-03 engine-flutter-autoroll@skia.org Roll Flutter Engine from
fee02145da8c to 23763db72272 (3 revisions) (flutter/flutter#142848)
2024-02-03 engine-flutter-autoroll@skia.org Roll Flutter Engine from
9869d47a2736 to fee02145da8c (2 revisions) (flutter/flutter#142847)
2024-02-03 engine-flutter-autoroll@skia.org Roll Flutter Engine from
78c63d3c2c68 to 9869d47a2736 (1 revision) (flutter/flutter#142842)
2024-02-02 engine-flutter-autoroll@skia.org Roll Flutter Engine from
266d5d0b5588 to 78c63d3c2c68 (1 revision) (flutter/flutter#142836)
2024-02-02 49699333+dependabot[bot]@users.noreply.github.com Bump
github/codeql-action from 3.23.2 to 3.24.0 (flutter/flutter#142839)
2024-02-02 49699333+dependabot[bot]@users.noreply.github.com Bump
codecov/codecov-action from 3.1.6 to 4.0.1 (flutter/flutter#142838)
2024-02-02 jmccandless@google.com Update TextSelectionOverlay
(flutter/flutter#142463)
2024-02-02 engine-flutter-autoroll@skia.org Roll Flutter Engine from
e29263212bfd to 266d5d0b5588 (5 revisions) (flutter/flutter#142832)
2024-02-02 luccas.clezar@gmail.com Fix CupertinoTextSelectionToolbar
clipping (flutter/flutter#138195)
2024-02-02 barpac02@gmail.com Reland "Add support for Gradle Kotlin DSL
(#140744)" (flutter/flutter#142752)
2024-02-02 jmccandless@google.com Support navigation during a Cupertino
back gesture (flutter/flutter#142248)
2024-02-02 chingjun@google.com Avoid depending on files from
build_system/targets other than from top level entrypoints in
flutter_tools. (flutter/flutter#142760)
2024-02-02 engine-flutter-autoroll@skia.org Roll Packages from
5b48c44 to d37fb0a (14 revisions) (flutter/flutter#142812)
2024-02-02 32242716+ricardoamador@users.noreply.github.com Add a link
the different possible Android virtual device configs
(flutter/flutter#142765)
2024-02-02 15619084+vashworth@users.noreply.github.com Allow all iOS
tests to use either iOS 16 or 17 (flutter/flutter#142714)
2024-02-02 engine-flutter-autoroll@skia.org Roll Flutter Engine from
b35153d00b2e to e29263212bfd (2 revisions) (flutter/flutter#142799)
2024-02-02 engine-flutter-autoroll@skia.org Roll Flutter Engine from
dd4c79a6c864 to b35153d00b2e (10 revisions) (flutter/flutter#142783)
2024-02-02 jacksongardner@google.com Wasm/JS Dual Compile with the
flutter tool (flutter/flutter#141396)
2024-02-02 hans.muller@gmail.com Reland: Added
ButtonStyle.foregroundBuilder and ButtonStyle.backgroundBuilder
(flutter/flutter#142762)
2024-02-01 32242716+ricardoamador@users.noreply.github.com Use proto
name for emulator version and show cipd package version
(flutter/flutter#142262)
2024-02-01 xilaizhang@google.com [github actions] ping actor of workflow
on cherry pick pr creation (flutter/flutter#142676)
2024-02-01 fluttergithubbot@gmail.com Marks Linux_android_emu android
views to be unflaky (flutter/flutter#142590)
2024-02-01 nathan.wilson1232@gmail.com Implement `switch` expressions in
`lib/src/material/` (flutter/flutter#142634)
2024-02-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from
9beb7e82e081 to dd4c79a6c864 (1 revision) (flutter/flutter#142749)
2024-02-01 pateltirth454@gmail.com Write Tests for API Example of
`form.0.dart` (flutter/flutter#142635)
2024-02-01 polinach@google.com Make leak_tracking bots sticked to the
left even if bot thinks they are non-flacky. (flutter/flutter#142744)
2024-02-01 15619084+vashworth@users.noreply.github.com Upload
DerivedData logs in CI (flutter/flutter#142643)
2024-02-01 magder@google.com Test codesigning xcframeworks in artifacts
(flutter/flutter#142666)
2024-02-01 davidmartos96@gmail.com Fix gen_defaults test randomness
(flutter/flutter#142743)
2024-02-01 98614782+auto-submit[bot]@users.noreply.github.com Reverts
"Added ButtonStyle.foregroundBuilder and ButtonStyle.backgroundBuilder"
(flutter/flutter#142748)
2024-02-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from
39415c3eed42 to 9beb7e82e081 (5 revisions) (flutter/flutter#142745)
2024-02-01 magder@google.com Remove unused deprecated autoroll
mirror-remote flag (flutter/flutter#142738)
2024-02-01 polinach@google.com Fix leaks in tests.
(flutter/flutter#142677)
2024-02-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from
8c43332c6ffc to 39415c3eed42 (1 revision) (flutter/flutter#142740)
2024-02-01 magder@google.com Remove verbose-system-logs on iOS perf
tests (flutter/flutter#142739)
2024-02-01 magder@google.com Remove outdated arm64_armv7 check
(flutter/flutter#142737)
2024-02-01 62812903+sstasi95@users.noreply.github.com fix
CupertinoTabView's Android back button handling with PopScope
(flutter/flutter#141604)
2024-02-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from
68943afd62d1 to 8c43332c6ffc (8 revisions) (flutter/flutter#142726)
2024-02-01 christopherfujino@gmail.com Unpin test
(flutter/flutter#141427)
...
eyebrowsoffire added a commit to eyebrowsoffire/flutter that referenced this pull request Feb 8, 2024
auto-submit bot pushed a commit that referenced this pull request Feb 8, 2024
Dual Web Compile has had some issues where `flutter test` is not respecting the `--web-renderer` flag for some reason. I haven't gotten entirely to the bottom of the issue, but for now we need to rever these changes while I investigate. This reverts the following PRs:

#143128
#141396

While doing this revert, I had a few merge conflicts with #142760, and I tried to resolve the merge conflicts within the spirit of that PR's change, but @chingjun I might need your input on whether the imports I have modified are okay with regards to the change you were making.
auto-submit bot pushed a commit that referenced this pull request Feb 13, 2024
This is an attempt at a reland of #141396

The main changes here that are different than the original PR is fixes to wire up the `flutter test` command properly with the web renderer.
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 14, 2024
@eyebrowsoffire eyebrowsoffire deleted the dual_compile branch December 12, 2025 21:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autosubmit Merge PR when tree becomes green via auto submit App team-web Owned by Web platform team tool Affects the "flutter" command-line tool. See also t: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants