• MarkZ's avatar
    Adding support for DDC modules when running Flutter Web in debug mode (#141423) · ee94fe26
    MarkZ authored
    ### Context:
    
    DDC modules are abstractions over how libraries are loaded/updated. The entirety of google3 uses the DDC/legacy module system due to its flexibility extensibility over the other two (ES6 and AMD/RequireJS). Unifying DDC's module system saves us from duplicating work and will allow us to have finer grained control over how JS modules are loaded. This is a a prerequisite to features such as hot reload.
    
    ### Overview:
    
    This change plumbs a boolean flag through flutter_tools that switches between DDC (new) and AMD (current) modules. This mode is automatically applied when `--extra-front-end-options=--dartdevc-module-format=ddc` is specified alongside `flutter run`. Other important additions include:
    * Splitting Flutter artifacts between DDC and AMD modules
    * Adding unit tests for the DDC module system
    * Additional bootstrapper logic for the DDC module system
    
    We don't expect to see any user-visible behavior or performance differences.
    
    This is dependent on [incoming module system support in DWDS](https://github.com/dart-lang/webdev/pull/2295) and [additional artifacts in the engine](https://github.com/flutter/engine/pull/47783).
    
    This is part of a greater effort to deprecate the AMD module system: https://github.com/dart-lang/sdk/issues/52361
    ee94fe26