From 15ade80adbcfd37f678f681d3105bc5062a280fb Mon Sep 17 00:00:00 2001 From: Jackson Gardner Date: Fri, 21 Jun 2024 13:43:53 -0700 Subject: [PATCH 1/6] Update `web_benchmarks` package to properly support wasm. --- .ci.yaml | 10 +++++----- packages/web_benchmarks/lib/server.dart | 2 +- .../web_benchmarks/lib/src/compilation_options.dart | 12 ++++++++---- packages/web_benchmarks/lib/src/runner.dart | 8 +++----- .../web_benchmarks/testing/test_app/web/index.html | 12 +----------- .../web_benchmarks/testing/web_benchmarks_test.dart | 5 ++--- 6 files changed, 20 insertions(+), 29 deletions(-) diff --git a/.ci.yaml b/.ci.yaml index 2ddc8a1cca6..78b9751b533 100644 --- a/.ci.yaml +++ b/.ci.yaml @@ -65,7 +65,7 @@ platform_properties: device_type: none dependencies: >- [ - {"dependency": "chrome_and_driver", "version": "version:114.0"} + {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"} ] windows_arm64: properties: @@ -327,7 +327,7 @@ targets: {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, {"dependency": "cmake", "version": "build_id:8787856497187628321"}, {"dependency": "ninja", "version": "version:1.9.0"}, - {"dependency": "chrome_and_driver", "version": "version:114.0"} + {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"} ] channel: master env_variables: >- @@ -350,7 +350,7 @@ targets: {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, {"dependency": "cmake", "version": "build_id:8787856497187628321"}, {"dependency": "ninja", "version": "version:1.9.0"}, - {"dependency": "chrome_and_driver", "version": "version:114.0"} + {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"} ] channel: stable env_variables: >- @@ -935,7 +935,7 @@ targets: # Install Chrome as a default handler for schemes for url_launcher. dependencies: >- [ - {"dependency": "chrome_and_driver", "version": "version:114.0"} + {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"} ] env_variables: >- { @@ -953,7 +953,7 @@ targets: # Install Chrome as a default handler for schemes for url_launcher. dependencies: >- [ - {"dependency": "chrome_and_driver", "version": "version:114.0"} + {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"} ] env_variables: >- { diff --git a/packages/web_benchmarks/lib/server.dart b/packages/web_benchmarks/lib/server.dart index 1742ac507c9..514b111d95f 100644 --- a/packages/web_benchmarks/lib/server.dart +++ b/packages/web_benchmarks/lib/server.dart @@ -50,7 +50,7 @@ Future serveWebBenchmark({ bool headless = true, bool treeShakeIcons = true, String initialPage = defaultInitialPage, - CompilationOptions compilationOptions = const CompilationOptions(), + CompilationOptions compilationOptions = const CompilationOptions.js(), }) async { // Reduce logging level. Otherwise, package:webkit_inspection_protocol is way too spammy. Logger.root.level = Level.INFO; diff --git a/packages/web_benchmarks/lib/src/compilation_options.dart b/packages/web_benchmarks/lib/src/compilation_options.dart index 3a994703c63..30a349c2520 100644 --- a/packages/web_benchmarks/lib/src/compilation_options.dart +++ b/packages/web_benchmarks/lib/src/compilation_options.dart @@ -7,11 +7,15 @@ /// This object holds metadata that is used to determine how the benchmark app /// should be built. class CompilationOptions { - /// Creates a [CompilationOptions] object. - const CompilationOptions({ + /// Creates a [CompilationOptions] object that compiles to JavaScript. + const CompilationOptions.js({ this.renderer = WebRenderer.canvaskit, - this.useWasm = false, - }); + }) : useWasm = false; + + /// Creates a [CompilationOptions] object that compiles to WebAssembly. + const CompilationOptions.wasm() + : useWasm = true, + renderer = WebRenderer.skwasm; /// The renderer to use for the build. final WebRenderer renderer; diff --git a/packages/web_benchmarks/lib/src/runner.dart b/packages/web_benchmarks/lib/src/runner.dart index 8eeaeb0617a..e63d059c932 100644 --- a/packages/web_benchmarks/lib/src/runner.dart +++ b/packages/web_benchmarks/lib/src/runner.dart @@ -55,7 +55,7 @@ class BenchmarkServer { required this.chromeDebugPort, required this.headless, required this.treeShakeIcons, - this.compilationOptions = const CompilationOptions(), + this.compilationOptions = const CompilationOptions.js(), this.initialPage = defaultInitialPage, }); @@ -119,10 +119,8 @@ class BenchmarkServer { 'web', if (compilationOptions.useWasm) ...[ '--wasm', - '--wasm-opt=debug', - '--omit-type-checks', - ], - '--web-renderer=${compilationOptions.renderer.name}', + '--no-strip-wasm', + ] else '--web-renderer=${compilationOptions.renderer.name}', '--dart-define=FLUTTER_WEB_ENABLE_PROFILING=true', if (!treeShakeIcons) '--no-tree-shake-icons', '--profile', diff --git a/packages/web_benchmarks/testing/test_app/web/index.html b/packages/web_benchmarks/testing/test_app/web/index.html index 0489be3063c..5b2c184c9a8 100644 --- a/packages/web_benchmarks/testing/test_app/web/index.html +++ b/packages/web_benchmarks/testing/test_app/web/index.html @@ -21,16 +21,6 @@ - - - + diff --git a/packages/web_benchmarks/testing/web_benchmarks_test.dart b/packages/web_benchmarks/testing/web_benchmarks_test.dart index 6c91d4bda4f..547ddee4f7f 100644 --- a/packages/web_benchmarks/testing/web_benchmarks_test.dart +++ b/packages/web_benchmarks/testing/web_benchmarks_test.dart @@ -32,10 +32,9 @@ Future main() async { await _runBenchmarks( benchmarkNames: ['simple'], entryPoint: 'lib/benchmarks/runner_simple.dart', - compilationOptions: const CompilationOptions(useWasm: true), + compilationOptions: const CompilationOptions.wasm(), ); }, - skip: true, // https://github.com/flutter/flutter/issues/142809 timeout: Timeout.none, ); } @@ -44,7 +43,7 @@ Future _runBenchmarks({ required List benchmarkNames, required String entryPoint, String initialPage = defaultInitialPage, - CompilationOptions compilationOptions = const CompilationOptions(), + CompilationOptions compilationOptions = const CompilationOptions.js(), }) async { final BenchmarkResults taskResult = await serveWebBenchmark( benchmarkAppDirectory: Directory('testing/test_app'), From 33b5612831452ac9a8bb4c6b8d069275bec1b1e7 Mon Sep 17 00:00:00 2001 From: Jackson Gardner Date: Fri, 21 Jun 2024 15:24:25 -0700 Subject: [PATCH 2/6] Fix formatting. --- packages/web_benchmarks/lib/src/runner.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/web_benchmarks/lib/src/runner.dart b/packages/web_benchmarks/lib/src/runner.dart index e63d059c932..87e924194e9 100644 --- a/packages/web_benchmarks/lib/src/runner.dart +++ b/packages/web_benchmarks/lib/src/runner.dart @@ -120,7 +120,8 @@ class BenchmarkServer { if (compilationOptions.useWasm) ...[ '--wasm', '--no-strip-wasm', - ] else '--web-renderer=${compilationOptions.renderer.name}', + ] else + '--web-renderer=${compilationOptions.renderer.name}', '--dart-define=FLUTTER_WEB_ENABLE_PROFILING=true', if (!treeShakeIcons) '--no-tree-shake-icons', '--profile', From c2f5ac71b71f0137bf2c94d0edf03a1ccbfbdc49 Mon Sep 17 00:00:00 2001 From: Jackson Gardner Date: Fri, 21 Jun 2024 15:45:19 -0700 Subject: [PATCH 3/6] Added notes to CHANGELOG. --- packages/web_benchmarks/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/web_benchmarks/CHANGELOG.md b/packages/web_benchmarks/CHANGELOG.md index cd1b8af6892..8a6dad99158 100644 --- a/packages/web_benchmarks/CHANGELOG.md +++ b/packages/web_benchmarks/CHANGELOG.md @@ -1,6 +1,7 @@ ## NEXT * Updates minimum supported SDK version to Flutter 3.16/Dart 3.2. +* Support for running benchmarks with the wasm compilation target. ## 1.2.2 From 47f381a6cd4494520fb521399ae184fd5b31c5ca Mon Sep 17 00:00:00 2001 From: Jackson Gardner Date: Mon, 24 Jun 2024 07:37:10 -0700 Subject: [PATCH 4/6] Bumped version of package. --- packages/web_benchmarks/CHANGELOG.md | 2 +- packages/web_benchmarks/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/web_benchmarks/CHANGELOG.md b/packages/web_benchmarks/CHANGELOG.md index 8a6dad99158..bab41b3fbc6 100644 --- a/packages/web_benchmarks/CHANGELOG.md +++ b/packages/web_benchmarks/CHANGELOG.md @@ -1,4 +1,4 @@ -## NEXT +## 1.3.0 * Updates minimum supported SDK version to Flutter 3.16/Dart 3.2. * Support for running benchmarks with the wasm compilation target. diff --git a/packages/web_benchmarks/pubspec.yaml b/packages/web_benchmarks/pubspec.yaml index cbf15b25c1d..866e6071b69 100644 --- a/packages/web_benchmarks/pubspec.yaml +++ b/packages/web_benchmarks/pubspec.yaml @@ -2,7 +2,7 @@ name: web_benchmarks description: A benchmark harness for performance-testing Flutter apps in Chrome. repository: https://github.com/flutter/packages/tree/main/packages/web_benchmarks issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+web_benchmarks%22 -version: 1.2.2 +version: 1.3.0 environment: sdk: ^3.3.0 From 5575336b71c6b0ff6d2bf86bfecc363e4d7aedb1 Mon Sep 17 00:00:00 2001 From: Jackson Gardner Date: Tue, 25 Jun 2024 09:10:30 -0700 Subject: [PATCH 5/6] Address Stuart's comments. --- packages/web_benchmarks/CHANGELOG.md | 4 ++-- packages/web_benchmarks/pubspec.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/web_benchmarks/CHANGELOG.md b/packages/web_benchmarks/CHANGELOG.md index bab41b3fbc6..965edbff989 100644 --- a/packages/web_benchmarks/CHANGELOG.md +++ b/packages/web_benchmarks/CHANGELOG.md @@ -1,7 +1,7 @@ -## 1.3.0 +## 2.0.0 * Updates minimum supported SDK version to Flutter 3.16/Dart 3.2. -* Support for running benchmarks with the wasm compilation target. +* Adds support for running benchmarks with the wasm compilation target. ## 1.2.2 diff --git a/packages/web_benchmarks/pubspec.yaml b/packages/web_benchmarks/pubspec.yaml index 866e6071b69..5b341d3f350 100644 --- a/packages/web_benchmarks/pubspec.yaml +++ b/packages/web_benchmarks/pubspec.yaml @@ -2,7 +2,7 @@ name: web_benchmarks description: A benchmark harness for performance-testing Flutter apps in Chrome. repository: https://github.com/flutter/packages/tree/main/packages/web_benchmarks issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+web_benchmarks%22 -version: 1.3.0 +version: 2.0.0 environment: sdk: ^3.3.0 From 461aba59cdb3ed20e10d061aa31fe8b4c3ed7aed Mon Sep 17 00:00:00 2001 From: Jackson Gardner Date: Tue, 25 Jun 2024 09:52:01 -0700 Subject: [PATCH 6/6] Added description of breaking change. --- packages/web_benchmarks/CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/web_benchmarks/CHANGELOG.md b/packages/web_benchmarks/CHANGELOG.md index 965edbff989..0a5ec61db82 100644 --- a/packages/web_benchmarks/CHANGELOG.md +++ b/packages/web_benchmarks/CHANGELOG.md @@ -2,6 +2,9 @@ * Updates minimum supported SDK version to Flutter 3.16/Dart 3.2. * Adds support for running benchmarks with the wasm compilation target. +* **Breaking change** `CompilationOptions` unnamed constructor has been replaced with +two named constructors, `CompilationOptions.js` and `CompilationOptions.wasm` for +JavaScript and WebAssembly compilation respectively. ## 1.2.2