1. 28 Nov, 2023 1 commit
    • Nate's avatar
      Implement `switch` expressions in `dev/` (#139048) · 3267fbc0
      Nate authored
      I previously made a PR (#136140) that used `switch` expressions to make some parts of the Flutter codebase easier to understand. It was assigned to the framework team, and @christopherfujino let me know that it was too large to effectively review and recommended breaking it up into smaller pull requests.
      
      Here's a PR that only targets files in the `dev/` directory. Hopefully this will be easier to work with!
      
      (solves issue https://github.com/flutter/flutter/issues/136139)
      3267fbc0
  2. 17 Nov, 2023 1 commit
  3. 15 Nov, 2023 1 commit
    • Srujan Gaddam's avatar
      Pin package:web 0.4.0 (#138428) · d8ffc739
      Srujan Gaddam authored
      This version is needed so that dart:js_interop can move to extension
      types. Also adds some code to handle some breaking changes:
      
      - Body -> Response. Body was an IDL interface mixin type we exposed in
      dart:html. Going forward, users should either use Request or Response.
      - Casts to JSAny. These are temporary until we move package:web types to
      extension types. Currently, package:web types can't implement JSObject
      as JSObject will move to be an extension type itself.
      Co-authored-by: 's avatarKevin Moore <kevmoo@users.noreply.github.com>
      d8ffc739
  4. 13 Nov, 2023 1 commit
  5. 09 Nov, 2023 1 commit
  6. 03 Nov, 2023 3 commits
  7. 02 Nov, 2023 2 commits
  8. 01 Nov, 2023 1 commit
  9. 31 Oct, 2023 1 commit
  10. 25 Oct, 2023 2 commits
  11. 24 Oct, 2023 1 commit
  12. 20 Oct, 2023 1 commit
  13. 19 Oct, 2023 1 commit
  14. 12 Oct, 2023 1 commit
  15. 11 Oct, 2023 1 commit
  16. 09 Oct, 2023 1 commit
  17. 29 Sep, 2023 1 commit
  18. 20 Sep, 2023 2 commits
  19. 19 Sep, 2023 1 commit
    • Greg Spencer's avatar
      Remove 'must be non-null' and 'must not be null' comments from non-framework libraries (#134994) · 4ce7fdd9
      Greg Spencer authored
      ## Description
      
      This removes all of the comments that are of the form "so-and-so must not be null" or "so-and-so must be non-null" from the cases where those values are defines as non-nullable values.
      
      This PR removes them from the library in the repo that don't have anything to do with the framework.
      
      This was done by hand, since it really didn't lend itself to scripting, so it needs to be more than just spot-checked, I think. I was careful to leave any comment that referred to parameters that were nullable, but I may have missed some.
      
      In addition to being no longer relevant after null safety has been made the default, these comments were largely fragile, in that it was easy for them to get out of date, and not be accurate anymore anyhow.
      
      This did create a number of constructor comments which basically say "Creates a [Foo].", but I don't really know how to avoid that in a large scale change, since there's not much you can really say in a lot of cases.  I think we might consider some leniency for constructors to the "Comment must be meaningful" style guidance (which we de facto have already, since there are a bunch of these).
      
      ## Related PRs
      - https://github.com/flutter/flutter/pull/134984
      - https://github.com/flutter/flutter/pull/134991
      - https://github.com/flutter/flutter/pull/134992
      - https://github.com/flutter/flutter/pull/134993
      
      ## Tests
       - Documentation only change.
      4ce7fdd9
  20. 13 Sep, 2023 1 commit
  21. 12 Sep, 2023 1 commit
  22. 31 Aug, 2023 1 commit
  23. 25 Aug, 2023 1 commit
  24. 24 Aug, 2023 1 commit
    • Yegor's avatar
      [web] benchmark the benchmark harness overhead (#132999) · cb72164a
      Yegor authored
      Add benchmarks that measure the overhead of the benchmark harness itself. We want the overhead to be minimal. Also, these numbers are useful to judge the quality of real benchmarks. If a real benchmark's result is too close to the harness overhead, then it's likely not measuring enough of useful work.
      cb72164a
  25. 23 Aug, 2023 1 commit
  26. 15 Aug, 2023 1 commit
  27. 14 Aug, 2023 1 commit
  28. 10 Aug, 2023 1 commit
  29. 09 Aug, 2023 2 commits
  30. 08 Aug, 2023 3 commits
  31. 07 Aug, 2023 1 commit
    • Matej Knopp's avatar
      Add static_path_tessellation macrobenchmark (#131837) · 1c7e2afc
      Matej Knopp authored
      This adds a macrobenchmark representative of a real world application that uses SVG icons. The scenario of rasterizing complex paths that don't change over time does not seem to be covered by any other macrobenchmark and shows a significantly slower impeller performance compared to skia.
      
      It's actually bit problematic to measure this because on A15 the CPU load with impeller is high enough to trigger CPU frequency change. So in order to get consistent reading I had to add a spinning background thread that would keep the CPU at highest frequency.
      
      ```objc
        [NSThread detachNewThreadWithBlock:^{
          while (true) {
            pthread_yield_np();
          }
        }];
      ```
      
      ```bash
      flutter drive --profile --local-engine=ios_profile -t test_driver/run_app.dart --driver test_driver/path_tessellation_static_perf_test.dart
      ```
      
      | average_frame_build_time_millis |Time|
      |--|--|
      | Impeller | 0.46686524822695047 |
      | Skia | 0.4625749999999999 |
      | Skia - No RasterCache | 0.47173750000000086|
      
      | average_frame_rasterizer_time_millis | Time |
      |--|--|
      | Impeller | 6.654328519855595 |
      | Skia - Raster Cache |  0.2534123711340209 * |
      | Skia - No RasterCache |  0.53424375 |
      
      * Adding the `GeometryPainter` seems to have triggered the complexity threshold for raster cache.
      
      <img alt="screenshot" width="320" src="https://github.com/flutter/flutter/assets/96958/7a2f9384-b512-477b-bffa-058d4d284a41"/>
      1c7e2afc
  32. 04 Aug, 2023 1 commit