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 [email protected]

flutter/flutter@e02e207...0b5cd50

2024-02-05 [email protected] 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 [email protected] Update gradle lockfiles template
(flutter/flutter#140115)
2024-02-04 [email protected] Roll Flutter Engine from
20742e37e54e to f34c658b9600 (1 revision) (flutter/flutter#142876)
2024-02-03 [email protected] Roll Flutter Engine from
23763db72272 to 20742e37e54e (1 revision) (flutter/flutter#142850)
2024-02-03 [email protected] Roll Flutter Engine from
fee02145da8c to 23763db72272 (3 revisions) (flutter/flutter#142848)
2024-02-03 [email protected] Roll Flutter Engine from
9869d47a2736 to fee02145da8c (2 revisions) (flutter/flutter#142847)
2024-02-03 [email protected] Roll Flutter Engine from
78c63d3c2c68 to 9869d47a2736 (1 revision) (flutter/flutter#142842)
2024-02-02 [email protected] 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 [email protected] Update TextSelectionOverlay
(flutter/flutter#142463)
2024-02-02 [email protected] Roll Flutter Engine from
e29263212bfd to 266d5d0b5588 (5 revisions) (flutter/flutter#142832)
2024-02-02 [email protected] Fix CupertinoTextSelectionToolbar
clipping (flutter/flutter#138195)
2024-02-02 [email protected] Reland "Add support for Gradle Kotlin DSL
(#140744)" (flutter/flutter#142752)
2024-02-02 [email protected] Support navigation during a Cupertino
back gesture (flutter/flutter#142248)
2024-02-02 [email protected] Avoid depending on files from
build_system/targets other than from top level entrypoints in
flutter_tools. (flutter/flutter#142760)
2024-02-02 [email protected] Roll Packages from
5b48c44 to d37fb0a (14 revisions) (flutter/flutter#142812)
2024-02-02 [email protected] Add a link
the different possible Android virtual device configs
(flutter/flutter#142765)
2024-02-02 [email protected] Allow all iOS
tests to use either iOS 16 or 17 (flutter/flutter#142714)
2024-02-02 [email protected] Roll Flutter Engine from
b35153d00b2e to e29263212bfd (2 revisions) (flutter/flutter#142799)
2024-02-02 [email protected] Roll Flutter Engine from
dd4c79a6c864 to b35153d00b2e (10 revisions) (flutter/flutter#142783)
2024-02-02 [email protected] Wasm/JS Dual Compile with the
flutter tool (flutter/flutter#141396)
2024-02-02 [email protected] Reland: Added
ButtonStyle.foregroundBuilder and ButtonStyle.backgroundBuilder
(flutter/flutter#142762)
2024-02-01 [email protected] Use proto
name for emulator version and show cipd package version
(flutter/flutter#142262)
2024-02-01 [email protected] [github actions] ping actor of workflow
on cherry pick pr creation (flutter/flutter#142676)
2024-02-01 [email protected] Marks Linux_android_emu android
views to be unflaky (flutter/flutter#142590)
2024-02-01 [email protected] Implement `switch` expressions in
`lib/src/material/` (flutter/flutter#142634)
2024-02-01 [email protected] Roll Flutter Engine from
9beb7e82e081 to dd4c79a6c864 (1 revision) (flutter/flutter#142749)
2024-02-01 [email protected] Write Tests for API Example of
`form.0.dart` (flutter/flutter#142635)
2024-02-01 [email protected] Make leak_tracking bots sticked to the
left even if bot thinks they are non-flacky. (flutter/flutter#142744)
2024-02-01 [email protected] Upload
DerivedData logs in CI (flutter/flutter#142643)
2024-02-01 [email protected] Test codesigning xcframeworks in artifacts
(flutter/flutter#142666)
2024-02-01 [email protected] 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 [email protected] Roll Flutter Engine from
39415c3eed42 to 9beb7e82e081 (5 revisions) (flutter/flutter#142745)
2024-02-01 [email protected] Remove unused deprecated autoroll
mirror-remote flag (flutter/flutter#142738)
2024-02-01 [email protected] Fix leaks in tests.
(flutter/flutter#142677)
2024-02-01 [email protected] Roll Flutter Engine from
8c43332c6ffc to 39415c3eed42 (1 revision) (flutter/flutter#142740)
2024-02-01 [email protected] Remove verbose-system-logs on iOS perf
tests (flutter/flutter#142739)
2024-02-01 [email protected] Remove outdated arm64_armv7 check
(flutter/flutter#142737)
2024-02-01 [email protected] fix
CupertinoTabView's Android back button handling with PopScope
(flutter/flutter#141604)
2024-02-01 [email protected] Roll Flutter Engine from
68943afd62d1 to 8c43332c6ffc (8 revisions) (flutter/flutter#142726)
2024-02-01 [email protected] 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