Ach du rote Neune...

Auf dem Weg zu Angular 9: Neuerungen an Ivy in v9.0.0-next.2

Redaktion JAXenter

© Google / CC BY 4.0

In Angular 9.0.0-next.2 wird sichtbar, dass das Angular-Team an Ivy arbeitet. Eine Neuerung soll die Performance von Ivy verbessern, eine andere behebt einen Bug. Außerdem bringt die neue Next-Version zwei weitere Bugfixes mit.

Angular 8 hat mit höflicher Verspätung im Juni das Licht der Welt erblickt. Doch nach dem Release ist vor dem Release und bereits im Herbst steht Angular 9 auf dem Plan, genauer: im Oktober oder November sollte es soweit sein. Ob dieser Termin eingehalten wird, oder Angular 9 doch ein Nikolausgeschenk wird? Wir werden es sehen. Doch bis dahin ist es noch ein weiter Weg und zunächst stehen traditionell die kleineren Releases, also Angular 8.1, 8.2 usw. ins Haus.

Angular 9: Die Next-Versionen

Angular 9.0.0-next.2

Update vom 13. August 2019

Mit Angular 9.0.0-next.2 steht nun schon das dritte Next-Release für die kommende Major-Version bereit. Dieses Mal sind gleich zwei Neuerungen für Ivy mit dabei, den neuen Renderer, der zu Angular 9 fertig gestellt werden soll. Der Bugfix für Ivy betrifft das Verhalten bei inkrementellen Änderungen an Komponenten. Wenn diese Teil eines NgModules sind, trat bisher ein Fehler auf, weil die Information über den Compilation Scope aus dem NgModule verloren gingen und nicht neu erzeugt wurden. Nun wird diese Information über das Interface ComponentScopeRegistry registriert, sodass sie für inkrementelle Kompilierungen verfügbar ist. Für die Performance von Ivy wurde ein Refactoring vorgenommen, durch das der Global State im Kontext interpolierter Werte nicht mehr ausgelesen wird, solange es nicht nötig ist.

Die weiteren zwei Bugfixes im Release betreffen Bazel und den Compiler. Für Bazel wurde das Treeshaking bei der Erzeugung von FESM- und UMD-Bundles deaktiviert. Der Bugfix am Compiler betrifft das Entfernen von Whitespace im Wrapping von i18n-Expansions. Weitere Informationen zu Angular 9.0.0-next.2 können dem Changelog auf GitHub entnommen werden.


Angular 9.0.0-next.1

Update vom 9. August 2019

Drei Bugfixes haben es in Angular 9.0.0-next.1 geschafft. Davon betreffen zwei den Language-Service, einer den Upgrade-Bereich. Für den Language-Service wurde getSourceFile() so konfiguriert, dass es nur für TypeScript-Dateien aufgerufen wird. Dem entsprechenden Pull Request ist zu entnehmen, dass es sich dabei um eine Vorbereitung auf die Integration externer Template-Dateien handelt, die künftig vom Angular Language Service Plug-in verarbeitet werden sollen. HTML-Dateien müssen davon jedoch ausgeschlossen werden. Die zweite Neuerung am Language Service steht in Zusammenhang damit, dass Angulars eigenes LanguageService Interface durch das von TypeScript ersetzt werden soll. Diese Änderung an sich ist noch nicht vollzogen worden; auf dem Weg dahin hat man mit dem Release von Angular 9.0.0-next.1 aber die Definition und QuickInfo kompatibel damit gemacht. Details können auch hier im Pull Request gefunden werden.

Im Upgrade-Bereich wurde ein Fehler behoben, der bei der Kompilierung von downgegradeden Komponenten auftrat. Da AngularJS synchron kompiliert, sollen Komponenten nach dem Downgrade ebenfalls so behandelt werden. Das war nicht mehr der Fall und wurde nun über die statische Methode SyncPromise.all() wieder implementiert.

Weitere Informationen zu den Neuerungen an Angular 9.0.0-next.1 können wie immer im Changelog auf GitHub gefunden werden.


Angular 9.0.0-next.0

Update vom 1. August 2019

Beta-Versionen heißen jetzt „next“: Angular hat nach dem Release von v8.0 das Schema bei der Benennung ihrer Versionen verändert. Wo zuvor von Beta-Relaeses gesprochen wurde, steht jetzt „next“ im Versionsnamen. So auch beim ersten Release mit der Nummer 9 im Titel: v9.0.0-next.0 wurde veröffentlicht und zeigt, dass Ivy ein großes Thema für die kommende Major-Version ist. Viel mehr verraten die Release Notes auf GitHub aber nicht. Das erste 9er-Test-Release bringe Verbesserungen und Fixes mit Bezug zu Ivy mit, so ist dort zu lesen. Weitere Informationen folgen wohl erst mit der nachfolgenden Version.


Angular 8.x: Die Minor-Releases

Angular 8.2.0

Update vom 1. August 2019

Angular 8.2.0 ist fertig. Nach einem Release Candidate steht nun das finale Release der Minor Version von Angular zum Download bereit, das alle Neuerungen der Testphase zusammenbringt und einige kleinere Änderungen selbst hinzufügt. So bringt v8.2.0 beispielsweise Support für TypeScript 3.5 mit und umfasst insgesamt 14 Bugfixes, die jedoch weitgehend aus den Betas bekannt sind. Genau so verhält es sich mit den insgesamt sechs neuen Features im Release, zu denen unter anderem die automatische Migration von Renderer zu Renderer2 gehört. Dieses Feature konnte seit Angular 8.2.0-next.1 getestet werden.

Einen Überblick über Angular 8.2.0 gibt das Changelog auf GitHub.


Angular 8.x: Die Minor-Releases

Angular 8.2.0-rc.0

Update vom 30. Juli 2019

Angular 8.2.0-rc.0 bringt eine Neuerung mit, die sich positiv auf die Performance auswirken soll. Dazu wurde am Verhalten des Compilers gearbeitet, der nun nicht mehr vom Prototype zu den eigenen Properties kopiert, wenn ein Objekt geklont wird. Bis zur Verwendung von Node 12 sei das kein Problem gewesen, da Node in vorherigen Versionen selbst eine Optimierung dafür mitbrachte. Das wurde jedoch zugunsten anderer Optimierungen in Node 12 verworfen, sodass nun eine Lösung in Angular implementiert wurde.

Zu den neuen Features im Release gehört, dass $element nun für Upgrades verfügbar ist und in Template Functions von Komponenten eingefügt wird, die geupgraded wurden. Das zweite Feature ist eine Neuerung, die Bazel und Ivy zusammen bringt. Dazu wurde das Compile Target für Angular in Bazel so verändert, dass nun Ivy verwendet wird. Damit soll ein Problem gelöst werden, das mit transitiven Dependencies auftrat, die bisher nicht erzeugt werden konnten, da sie über einen alten Compiler geladen wurde. Weitere Informationen dazu können dem entsprechenden Pull Request auf GitHub entnommen werden. Eine weitere Änderung für Bazel wird als Bugfix geführt: Die maximale Heap-Größe für node/ngc in Bazel ist von 2GB auf 4GB erhöht worden. Damit habe man diesen Wert an den des TypeScript-Compilers angepasst.

Weitere Informationen zu diesen Änderungen sowie den drei weiteren Bugfixes am ersten Release Candidate zu Angular 8.2.0 sind im Changelog auf GitHub zu finden.


Angular 8.2.0-next.2

Update vom 18. Juli 2019

Mit Angular 8.2.0-next.2 hat die kommende Minor-Version von Angular 8 vier weitere Bugfixes erhalten. Kontinuierlich gearbeitet wird noch immer an Bazel. Mit diesem Release wurde eine erst kürzlich vorgenommene Änderung zurück genommen, die den Umgang mit Custom Bazel Compiler Hosts betrifft. Die Neuerung „feat(bazel): allow passing and rewriting an old bazel host“ sei nicht mehr nötig, da der Angular Indexer stabil sei, wie im entsprechenden Pull Request erklärt wird.

Die drei weiteren Bugfixes im Release betreffen den Language-Service, das Compiler-CLI und erneut das WTF-Array. Details dazu können dem Changelog auf GitHub entnommen werden.


Angular 8.2.0-next.1 veröffentlicht

Update vom 11. Juli 2019

Das zweite Beta-Release für Angular 8.2 ist da: 8.2.0-next.1. Auch dieses Update fällt eher klein aus und bringt nur drei Neuerungen mit. Darunter ist ein neues Feature für den Core, das die Migration von Renderer auf Renderer2 automatisiert. Zu den Änderungen, die dadurch automatisch vorgenommen werden, gehört die automatische Umbenennung der Methoden aus dem alten Renderer. Wo dies nicht möglich ist, weil sich die Methoden nicht direkt entsprechen, werden nun automatisch Helper-Funktionen eingefügt, die sicherstellen, dass dennoch valider Code erzeugt wird. Weitere Informationen zu den automatisierten Migrationsschritten für Renderer2 können dem entsprechenden Pull Request entnommen werden.

Die anderen beiden Neuerungen am Release sind Bugfixes. Eins davon betrifft Bazel. Hier wurde eine Änderung am Übersetzungssystem rückgängig gemacht, da das System an sich nicht mehr den vollen Dateipfad des Outputs benötigt. Der zweite Bugfix betrifft den Compiler, wo nun alle Informationen aus ASTWithSource separat von AST an sich aufgerufen werden können.

Weitere Informationen zum Release können wie immer über das Changelog aufgerufen werden.



Angular 8.1.0 & 8.2.0-next.0 veröffentlicht

Update vom 8. Juli 2019

Angular 8.1.0 ist in der vergangenen Woche final veröffentlicht worden. Das erste Minor-Release für Angular 8 hat noch einmal drei Fehler behoben, zwei davon im Bereich des Service-Worker, einen am Core. Das Changelog listet diesbezüglich folgende Änderungen auf:

  • core: handle undefined meta in injectArgs (#31333) (80ccd6c), closes CLI #14888
  • service-worker: cache opaque responses in data groups with freshness strategy (#30977) (b0c3453), closes #30968
  • service-worker: cache opaque responses when requests exceeds timeout threshold (#30977) (a9038ef)

Angular 8.2.0-next.0 folgte umgehend auf dieses Release. Hier finden sich die gleichen Bugfixes wie in der Minor-Version, darüber hinaus gab es aber auch Neues für Bazel. Zwei neue Features sind dabei. So kann mit Bazel nun ein individuell festgelegter CompilerHost genutzt und an ngc Compile weitergegeben werden. Nötig sei das beispielsweise für Nutzer, die den Compiler Host von TypeScript überschreiben müssen. Das zweite Feature hängt mit dieser Änderung unmittelbar zusammen. Um sicherzustellen, dass der Angular Indexer bei Google korrekt mit neu gesetzten Bazel Hosts umgehen kann, wurde eine Option eingefügt, mit der alte Bazel Hosts weitergegeben und überschrieben werden können.

Weitere Informationen zu beiden Versionen können dem Changelog auf GitHub entnommen werden.


Angular 8.1.0-rc.0

Update vom 27. Juni 2019

Mit Version 8.1.0-rc.0 steht der erste Release Candidate für Angular 8.1 bereit. Ein neues Feature ist in der Version enthalten: Für AngularJS und Angular sind nun zwei neue Test Helper in der Upgrade/Static-Library verfügbar. Diese helfen bei der Verbindung der Injectors der Versionen, ohne dazu vollständig hybride Apps erstellen zu müssen. Weitere Details zum neuen Feature können im entsprechenden Pull Request nachgelesen werden.

Für Bazel bringt das Release drei Bugfixes mit. Darunter ist eine Aktualisierung von ng new schema, mit der es dem gegenwärtigen Status des Angular Schematics angepasst wurde. Außerdem sind nun keine nicht unterstützten CSS-Pre-Processors mehr darin enthalten. Das dritte Bugfix für Bazel bezieht sich auf Metadata-Builds, die nun keine Schematics-Ordner mehr umfassen.

Außerdem bringt das Release auch Bugfixes für den Compiler und Service-Worker mit. Weitere Informationen können wie immer dem Changelog auf GitHub entnommen werden.


Angular 8.1.0-next.3

Update vom 21. Juni 2019

Mit Angular 8.1.0-next.3 steht ein weiteres Preview-Release für Angular 8.1 zum Download bereit. Die Anzahl der Neuerungen in der Version fällt klein aus, nur drei Bugfixes sind enthalten. Einer davon betrifft Bazel, dessen Builder Workspace jetzt mit Node 10.16 arbeitet. Der zweite Bugfix des Release findet sich in getQuickInfoAtPosition, wo any entfernt wurde. Außerdem wurde das @deprecated JSDoc-Tag vorläufig aus TestBedStatic.get entfernt, da eine Änderung an der Signatur von TestBed.get zu einer deutlich höheren Zahl an Deprecation-Warnungen in einigen TypeScript-Projekten geführt hatte. Bis dafür eine andere Lösung implementiert wurde, hat man die durch @deprecated erstellten Annotations darum durch reine Textwarnungen ersetzt, wie dem entsprechenden Pull Request zu entnehmen ist.

Weitere Informationen zu Angular 8.1.0-next.3 können wie immer dem Changelog auf GitHub entnommen werden.


Angular 8.1.0-next.2

Update vom 14. Juni 2019

Angular verfolgt offenbar eine neue Strategie bei der Benennung der Versionen. Auf das erste Beta-Release von Angular 8.1 folgten Version 8.1.0-next.1, sowie inzwischen 8.1.0-next.2. Während in Next.1 nur ein Bugfix am Core vorgenommen wurde, bringt Next.2 nun gleich fünf Änderungen mit. Drei der Bugfixes betreffen Bazel. Das globale Stylesheet wird bei Verwendung von Bazel nun sowohl im Entwicklungsmodus als auch in der Produktion per <link>-Tag in index.html referenziert. Außerdem verwendet Bazel nun die Components Schematics nicht mehr im Build und es wird keine Änderung an tsconfig.json mehr durch Bazel vorgenommen.

Die anderen beiden Bugfixes in Angular 8.1.0-next.2 betreffen das HttpUploadProgressEvent-Interface, das nun als öffentliches API freigegeben wurde, sowie den Service-Worker. Wenn hier navigator.serviceWorker.register('/ngsw-worker.js') scheitert, wird keine nicht gefangene Fehlermeldung mehr ausgegeben.

Weitere Informationen zu Angular 8.1.0-next.2 können dem Changelog auf GitHub entnommen werden.


Angular 8.1.0-beta.0: Bugfixes und Features geplant

Update vom 4. Juni 2019

Am 30. Mai, zwei Tage nach Veröffentlichung von Angular 8, wurde der erste Schritt in Richtung Angular 9 vollzogen. Gemeint ist, dass die erste Beta-Version von Angular 8.1 veröffentlicht wurde, die bereits jetzt ein relativ großes Release vermuten lässt: Passend zum Datum wurden 30 Bugs gefixt. Damit aber nicht genug, denn auch neue Features wird das erste Minor Release des aktuellen Veröffentlichungszyklus‘ enthalten – immerhin 6 an der Zahl.

Features

Eine der neuen Funktionen spricht vor allem jene Entwickler an, die sich um die Verwaltung kümmern und dafür sorgen müssen, dass alles aktuell ist und bleibt: Es wird wohl zukünftig nicht mehr nötig sein, Flags zu aktualisieren, die mit der Datei .bazelrc oder der Toolchain zusammenhängen. Auch Plattform-Flags für RBE-Builds und -Tests müssen ab Angular 8.1 wohl nicht mehr extra aktualisiert werden. Eine Ausnahme gilt allerdings, wenn es Braking Changes in Bazel gibt, der diese Flags beeinflusst. Stattdessen muss lediglich der Pin des @bazel-toolchains Repositorys in der Datei packages/bazel/package.bzl regelmäßig auf Stand gebracht werden. Sicherheit geht übrigens vor: Sollte die Rule rbe_autoconfig() im Repository @bazel_toolchains keine passende Toolchain-Konfiguration für die Bazel-Version finden, die gerade vom jeweiligen Projekt genutzt wird, zieht sie automatisch den entsprechenden Container und generiert die Konfigs beim Beginn des Builds bzw. Tests.

Wer transform-Methoden der SlicePipe nutzt, kann sich über die neuen Overloads freuen, die Angular 8.1 im Gepäck haben wird. Dies soll vor allem zur Verwendung von klareren Typen als immer nur any führen. Allerdings geht dies mit einem Breaking Change einher, SlicePipe kann ab dem Update lediglich mit einer Anzahl an Werten, einem String, null oder undefined genutzt weden.

Bugfixes

In Sachen Bugfixes gab es nach dem Update offenbar einiges nachzubessern. Genau 30 Fixes wurden in der ersten Beta-Version von Angular 8.1 vorgenommen. Im Fokus stand unter anderem Bazel, in dessen Zusammenhang nun korrekte Paramter an den http_server unter Windows weitergegeben werden. Aber auch am Kern hat man geschraubt. Der CSS-Sanitizer erlaubt ab sofort die Nutzung von Klammern in Dateinamen, das war bislang offenbar nicht möglich. Außerdem wurde ein unangenehmer Bug gefixt, der dafür sorgte, dass bei einer Migration nicht alle Dateien mitgenommen wurden. Gleich sieben Bugs wurden bei der Migration statischer Querys behoben, unter anderem schlug sie mit voreingestellten Standardwerten von Parametern fehl und gab Fehler nicht korrekt aus.

  • bazel: allow ts_library interop with list-typed inputs (#30600) (3125376)
  • bazel: Bump ibazel to 0.10.1 for windows fixes (#30196) (1353bf0)
  • bazel: Directly spawn native Bazel binary (#30306) (2a0f497)
  • bazel: Disable sandbox on Mac OS (#30460) (b6b1aec)
  • bazel: Exclude common/upgrade* in metadata.tsconfig.json (#30133) (1f4c380)
  • bazel: ng test should run specific ts_web_test_suite (#30526) (e688e02)
  • bazel: pass correct arguments to http_server in Windows (#30346) (3aff79c), closes #29785
  • bazel: update peerDep ranges (#30155) (4ae0ee8)
  • bazel: Use existing npm/yarn lock files (#30438) (ff29ccc)
  • compiler-cli: log ngcc skipping messages as debug instead of info (#30232) (60a8888)
  • core: consistently use ng:/// for sourcemap URLs (#29826) (392473e)
  • core: CSS sanitizer now allows parens in file names (#30322) (728db88)
  • core: fix interpolate identifier in AOT (#30243) (30d1f29)
  • core: migrations not always migrating all files (#30269) (349935a)
  • core: remove deprecated TestBed.deprecatedOverrideProvider API (#30576) (a96976e)
  • core: require ’static‘ flag on queries in typings (#30639) (84dd267)
  • core: static-query migration errors not printed properly (#30458) (6ceb903)
  • core: static-query migration fails with default parameter values (#30269) (6357d4a)
  • core: static-query migration should gracefully exit if AOT compiler throws (#30269) (509352f)
  • core: static-query migration should handle queries on accessors (#30327) (0ffdb48)
  • core: static-query migration should not fallback to test strategy (#30458) (0cdf598)
  • core: static-query migration should not prompt if no queries are used (#30254) (4c12d74)
  • core: static-query usage migration strategy should detect ambiguous query usage (#30215) (8d3365e)
  • core: temporarily remove @deprecated jsdoc tag for a TextBed.get overload (#30514) (f6bf892), closes #29290 #29905
  • language-service: Remove tsserverlibrary from rollup globals (#30123) (124e497)
  • router: ensure history.state is set in eager update mode (#30154) (b40f6f3)
  • router: ensure navigations start with the current URL value incase redirect is skipped (#30344) (0fd9d08), closes #30340 #30160
  • router: fix a problem with router not responding to back button (#30160) (3327bd8)
  • router: IE 11 bug can break URL unification when comparing objects (#30393) (197584d)
  • router: type cast correctly for IE 11 bug breaking URL Unification when comparing objects (#30464) (53f3564)

Alle weiteren Informationen zur aktuellen Beta-Version von Angular 8.1 können dem Changelog auf GitHub entnommen werden. Dort gibt es auch Details zu den neuen Features und sämtlichen Bugfixes


Angular im Videotutorial

Im entwickler.tutorial Enterprise-Architekturen mit Angular erklärt Manfred Steyer, Google Developer Expert, wie sich mit Angular große und wartbare Geschäftsanwendungen entwickeln lassen.

Geschrieben von
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: