This commit adds a new compiler pipeline that isn't dependent on global analysis, referred to as 'ngtsc'. This new compiler is accessed by running ngc with "enableIvy" set to "ngtsc". It reuses the same initialization logic but creates a new implementation of Program which does not perform the global-level analysis that AngularCompilerProgram does. It will be the foundation for the production Ivy compiler. PR Close #23455
fake_core is a library designed to expose some of the same symbols as @angular/core, without
requiring compilation of the whole of @angular/core. This enables unit tests for the compiler to
be written without incurring long rebuilds for every change.
@angular/coreis compiled with@angular/compiler-cli, and therefore has an implicit dependency on it. Therefore core must be rebuilt if the compiler changes.- Tests for the compiler which intend to build code that depends on
@angular/coremust have a data dependency on@angular/core. Therefore core must be built to run the compiler tests, and thus rebuilt if the compiler changes.
This rebuild cycle is expensive and slow. fake_core avoids this by exposing a subset of the
@angular/core API, which enables applications to be built by the ngtsc compiler without
needing a full version of core present at compile time.