Ach du rote Neune...

Auf dem Weg zu Angular 9: Release Candidate 6 mit Bugfixes erschienen

Redaktion JAXenter

© Google / CC BY 4.0

Ein weiterer Release Candidate von Angular 9 wurde veröffentlicht. Mit dabei sind noch einmal einige Bugfixes und Performance-Verbesserungen. Neue Features finden sich in Angular 9.0.0-rc.6 aber nicht.

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 Release Candidates

Angular 9.0.0-rc.6

Update vom 12. Dezember 2019

Die Zahl der Release Candidates für Angular 9 steigt. Nach RC.5 ist nun auch RC.6 erschienen. Behoben wurden erneut einige Bugs, außerdem hat der neuste Release Candidate zwei Performance-Verbesserungen an Ivy im Gepäck. Gearbeitet wurde für die Performance am Umgang mit Listener- und Styling-Instructions. Diese werden nun jeweils verknüpft, wenn mehrere davon vorhanden sind, damit weniger Code generiert werden muss. Bugfixes gab es außerdem nicht nur für Ivy, sondern auch für weitere Bereiche des Frameworks, wie den Kompatibilitäts-Compiler ngcc. Dort wurde unter anderem ein Fehler an der Bestimmung des Package Path behoben, sodass nun immer das Bundle rootDir verwendet wird.

Auch im vorherigen Release, Angular 9.0.0-rc.5, zeigte sich schon ein ähnliches Bild. Bugfixes und Performance standen im Fokus, nicht die Feature-Entwicklung. Angular 9 war für Ende 2019 angekündigt worden, ein finaler Release-Termin ist jedoch nicht bekannt.


Angular 9.0.0-rc.4

Update vom 21. November 2019

Ein weiterer Release Candidate von Angular 9 ist verfügbar. Mit Angular 9.0.0-rc.4 wurden erneut zahlreiche Fehler behoben, darunter viele an Ivy. Beispielsweise findet in AOT-kompilierten Komponenten nun kein Check auf unbekannte Komponenten zur Runtime mehr statt, da dies in manchen Fällen fehlschlug, obwohl die Überprüfung während des Kompilierens erfolgreich durchgeführt wurde. Aber auch andere Teile von Angular wurden verbessert, so beispielsweise der Kompatibilitäts-Compiler ngcc, an dem ebenfalls einige Fehler behoben wurden. ngcc stürzt nun beispielsweise nicht mehr ab, wenn Types als Array spezifiziert werden.

Der neuste Release Candidate von Angular 9 bringt außerdem zwei Feature-Neuerungen am Language-Service mit. Dort stehen nun Vervollständigungen für indexierte Types und Tuple Arrays zur Verfügung. Für die Performance gibt es ebenfalls News: drei Neuerungen an Ivy sollen Angular 9 schneller machen.

Weitere Informationen zum neuen Release Candidate können dem Changelog auf GitHub entnommen werden.


Angular 9.0.0-rc.3

Update vom 21. November 2019

Angular 9 hat einen weiteren Release Candidate erhalten. Die neuste Version, Angular 9.0.0-rc.3, bringt vornehmlich eine lange Reihe von Bugfixes mit. Aber auch zwei Feature-Updates und vier Performance-Verbesserungen für Ivy sind mit dabei. Zu letzteren gehört beispielsweise, dass Public Input Names nun nicht mehr an zwei Orten gespeichert werden und ein Micro-Benchmark für Directive Input Updates hinzugefügt wurde.

Ivy sticht auch unter den Bugfixes hervor: Insgesamt 17 Fehler am neuen Compiler wurden zu diesem Release Candidate behoben. Darunter sind zwei Neuerungen für den i18n-Bereich, wo nun das Zeichen : in $localize-Messages korrekt escaped wird. Dadurch wird es richtig als Marker für Metadaten interpretiert. Außerdem werden die Sequenzen "", "`" und "${" nun in $localize-Messages unterstützt.

Die neuen Features betreffen dieses Mal jedoch nicht den Compiler, sondern Bazel und den Core. Für Bazel wurde ein Upgrade auf v1.1.0 vorgenommen. Am Core wurde an der Missing-Injectable Migration gearbeitet, die nun auch leere Object Literal Providers migriert.

Weitere Informationen zum neusten Release Candidate von Angular 9 können wie immer dem Changelog auf GitHub entnommen werden.


Angular 9.0.0-rc.2

Update vom 14. November 2019

Der neuste Release Candidate zu Angular 9 arbeitet weiter an der Performance. Dieses Mal findet sich die entsprechende Änderung jedoch im Core wieder und betrifft nicht Ivy. Factories in providerToRecord werden nur noch erzeugt, wenn es wirklich notwendig ist. Im Bereich von Ivy wurden hingegen einige Neuerungen ausprobiert und gleich wieder zurückgezogen. Drei Reverts finden sich im Release, die zu Problemen geführt hatten. Darüber hinaus bringt Angular 9.0.0-rc.2, also der dritte Release Candidat, nur eine Reihe von Bugfixes mit, die wie immer im Changelog auf GitHub nachgelesen werden können.


Angular 9.0.0-rc.1

Update vom 7. November 2019

Der zweite Release Candidate für Angular 9 bringt einige Neuerungen mit. Anders als das erste RC-Release zeigt sich hier wieder, dass doch noch einiges an der neuen Major-Version des Frameworks in Arbeit ist. Natürlich wurden zahlreiche Bugs behoben, darunter beispielsweise einer im Bereich des i18n-Supports in Ivy. Hier wurde an den Fehlermeldungen an sich gearbeitet, die nun aussagekräftiger sein sollen. Für Ivy gab es aber auch wieder neue Features. Der Compiler erkennt nun unbekannte Elemente während des Renderings auch dann, wenn der Just-in-Time-Modus genutzt wird. Bisher war diese Funktion in Ivy nur im Ahead-of-Time-Rendering verfügbar. Auch für den statischen Interpreter gab es eine Neuerung zum Umgang mit unbekannten oder ungültigen Ausdrücken. Was sich daran geändert hat, kann im entsprechenden Pull Request nachgelesen werden.

Auch die Performance spielt noch immer eine Rolle in der Entwicklung der neuen Version von Angular. Hierfür wurden sechs Änderungen an Ivy im zweiten Release Candidate ausgeliefert. Einen Überblick über alle Änderungen an der Version gibt das Changelog auf GitHub.


Angular 9.0.0-rc.0

Update vom 4. November 2019

Der erste Release Candidate für Angular 9 ist da. Damit macht das Angular-Team einen großen Schritt in Richtung des nächsten Major Release. Die RC-Phasen der vorherigen Releases waren vergleichsweise kurz: Für Angular 8 gab es sechs RC-Versionen, Angular 7 kam sogar mit nur einer aus, sodass das finale Release im vergangenen Jahr direkt auf RC.0 folgte.

Wie viele Release Candidates Angular 9 bekommen wird, ist unbekannt. Die Arbeit an größeren Neuerungen und Breaking Changes scheint jedoch schon weitgehend abgeschlossen zu sein. Der erste Release Candidate bringt laut Changelog keine Änderungen mit, verweist dafür aber bereits auf den offiziellen Update-Guide zur neuen Version. Dort werden alle wichtigen Neuerungen an v9 zusammengefasst. So bringt die Version drei Breaking Changes mit, die nun in der Überblicksdarstellung abgelesen werden können. Dazu gehört, dass Ivy bekanntlich zum Standard-Compiler gemacht wird und Angular 9 TypeScript 3.6 voraussetzt. Außerdem zählt die Veränderung bei tslib weiterhin als Breaking Change, da es ja als Peer Dependency eingebunden wurde.


Angular 9: Die Next-Versionen

Angular 9.0.0-next.15

31. Oktober 2019

Angular 9.0.0-next.15 legt den Schwerpunkt auf der Behebung von Fehlern. Nachdem zuletzt Ivy im Zentrum der Feature-Entwicklung stand, zeigen die Release Notes zur neusten Next-Version, dass natürlich weiterhin auch an anderen Teilen des Frameworks gearbeitet wird. So gehören zwar erneut die meisten der behobenen Fehler im Release in den Bereich des neuen Compilers, unter den Features finden sich aber neben einer Neuerung für Ivy auch zwei für Bazel und eine für den Language-Service. Bei Bazel wurde eine Aktualisierung des Schematics auf die kürzlich veröffentlichte Version 1.0.0 vorgenommen. Außerdem arbeitet das Bazel Schematics jetzt mit Ivy und dem neuen Rollup_Bundle, das die Legacy-Version ersetzt. Im Feature-Bereich wurde bei Ivy selbst weiter am i18n-Support gearbeitet. Für den Language-Service ist ein Feature implementiert worden, das die Ersetzung getippter Texte durch Vorschläge erlaubt. Auch eine Änderung zur Performance-Verbesserung durch Ivy ist wieder dabei, dieses Mal für Directives ohne Selector.

Weiter Informationen zur neuen Version und allen Änderungen darin sind wie immer auf GitHub nachlesbar.


Angular 9.0.0-next.14

Update vom 28. Oktober 2019
Noch ist Angular 9 nicht fertig. Auf dem Weg zum in Kürze erwarteten Major Release steht nun erneut ein Next-Build zur Verfügung, der eine ganze Reihe von Neuerungen mitbringt. Wieder dreht sich das Release vor allem um Ivy. So gibt es in dieser Version gleich drei Performance-Verbesserungen für den neuen Compiler, sowie zahlreiche Features. Dazu zählt beispielsweise, dass die Landesangabe für die Internationalisierung nun über ein globales Property erfolgen kann, das zur Runtime ausgelesen wird. Daneben wurden dem Angular Compatibility Compiler (ngcc) einige Migrations hinzugefügt. Weitere Informationen zur neuen Version können wie immer dem Changelog auf GitHub entnommen werden.


Angular 9.0.0-next.13

Update vom 25. Oktober 2019

Angular 9.0.0-next.13 bringt neue Features und Bugfixes mit. Auch ein Breaking Change ist mit an Bord, der Bazel betrifft: Der Workspace @angular/bazel ng_setup_workspace() wird nicht länger benötigt und wurde daher entfernt. Stattdessen wird davon ausgegangen, dass rules_nodejs in der Workspace-Datei bezogen wird und keine weiteren Abhängigkeiten verbleiben. Daher soll es genügen, alle Aufrufe für diese Funktion sowie das entsprechende Load Statement zu entfernen.

Als neues Feature für den Core wurde ein generischer Typ für ModuleWithProviders hinzugefügt, der den Modultyp definiert. Er soll für alle Nutzer in Angular 10 benötigt werden, in Angular 9 dagegen nur für Ivy-Nutzer. Ivy erhält für Shim Generation eigene Compiler-Optionen und auch bei NgModules gibt es Neuerungen. Auf ein Request hin sind in Angular 9.0.0-next.13 zudem private NgModules-Re-Exporte in ngcc möglich. Alle Neuerungen in der aktuellen Next-Version sind im Changelog auf GitHub nachzulesen.



Angular 9.0.0-next.12

Update vom 21. Oktober 2019

Mit dem Release von Angular 9.0.0-next.12 unterstützt das Framework nur noch TypeScript 3.6, nicht mehr die Vorgänger-Versionen 3.4 und 3.5. Damit bringt auch dieses Next-Release wieder einen Breaking Change mit. Das ist allerdings der einzige. Weitere Neuerungen betreffen erneut die Performance mit Ivy. Hier wurde unter anderem an der Initialisierung von statischen Attributen in Templates gearbeitet, die jetzt nur noch im ersten Durchgang stattfindet.

Zu den Feature-Neuerungen an Angular 9.0.0-next.12 gehört, dass nun Typechecking für Event Bindings mit Ivy zur Verfügung steht. Ebenfalls in den Bereich von Ivy fällt das vereinfachten Debugging für Styles und Classes. Einige Neuerungen, darunter ein Flag, das BootstrapOptions hinzugefügt wurde, mussten allerdings bereits zurückgezogen werden. Genauere Informationen dazu können wie immer über das Changelog auf GitHub gefunden werden.


Angular 9.0.0-next.11

Update vom 16. Oktober 2019

Die TypeScript-Runtime-Bibliothek tslib ist keine direkte Dependency von Angular mehr. Mit der Veröffentlichung von Angular 9.0.0-next.11 ist tslib in den Status einer Peer-Dependency übergegangen. Für Nutzer, die das Angular-CLI nicht verwenden, stellt das einen Breaking Change dar, da sie tslib nun manuell installieren müssen. Auch für Angular Forms bringt v9.0.0-next.11 einen Breaking Change mit: <ngForm></ngForm> ist entfernt worden und kann nicht mehr als Selector verwendet werden. Stattdessen muss nun mit <ng-form></ng-form> gearbeitet werden. Zu den Breaking Changes in diesem Kontext gehört auch, dass die entsprechende Warnung entfernt wurde. Der dritte Breaking Change an den Forms besteht in der Entfernung von FormsModule.withConfig. Stattdessen kann FormsModule direkt verwendet werden.

Neben diesen Breaking Changes bringt die neue Next-Version von Angular 9 natürlich auch einige Feature-Änderungen sowie Performance-Verbesserungen und Bugfixes mit. Wie schon zuvor in den Next-Releases für Angular 9 zu sehen war, zeigt sich auch hier wieder, dass das Angular-Team an der Fertigstellung des neuen Compilers, Ivy, arbeitet. Hier bringt Version Next.11 verschiedene Neuerungen mit: Für den i18n-Support in Angular 9 wird mit Ivy ein neues Format eingeführt; wird noch das alte verwendet, musste dies bislang manuell markiert werden. Um das Upgrade zu erleichtern, ist enableI18nLegacyMessageFormat nun aber standardmäßig auf true gesetzt worden. Zu den weiteren Neuerungen für Ivy gehört, dass nun genauere Fehlermeldungen für unbekannte Komponenten ausgegeben werden, die Informationen dazu enthalten, wie das Problem gelöst werden kann.

Das sind natürlich noch nicht alle Neuerungen, die in den Bereich des neuen Compilers fallen. Auch die Verbesserungen an der Performance in diesem Release gehören zu Ivy. Darunter fällt beispielsweise, dass in setInputsFromAttrs nun striktere Null-Checks ausgeführt werden.

Weitere Informationen zu diesen und allen weiteren Neuerungen können wie immer dem Changelog auf GitHub entnommen werden.


Angular 9.0.0-next.10

Update vom 10. Oktober 2019

Angular 9.0.0-next.10 steht zum Test bereit: Die Arbeit an Angular 9 geht weiter, noch ist die neue Major-Version des Frameworks nicht da. Erst einmal wurde nun in der Code-Basis aufgeräumt. Renderer, bekannt aus Version 4, ist schon lange deprecated und wurde nun ganz entfernt, inklusive der zugehörigen Symbole. Stattdessen muss nun Renderer2 verwendet werden. Auch neue Features haben es aber in das Release geschafft. Für Ivy sind zwei Neuerungen mit Bezug auf die Internationalisierungs-Funktionen (i18n) dabei, wie im Changelog nachgelesen werden kann:

  • ivy: i18n – implement compile-time inlining (#32881) (2cdb3a0)
  • ivy: i18n – render legacy message ids in $localize if requested (#32937) (bcbf3e4)

Außerdem gibt es Feature-News für den Core, wo Queries nun standardmäßig dynamisch verarbeitet werden. Das static-Flag für ViewChild und ContentChild steht darum nun standardmäßig auf false. Dazu wurde das Flag außerdem als optional markiert. Weitere neue Features betreffen die Forms, den Language-Service und ngcc.

Für die Performance bringt das Update erneut Änderungen an Ivy mit. Informationen zu diesen und allen weiteren Änderungen können dem Changelog entnommen werden.


Angular 9.0.0-next.9

Update vom 4. Oktober 2019

Mit Angular 9.0.0-next.9 haben es vier neue Features in die kommende Major-Version geschafft, einer davon gilt als Breaking Change. Dieses Mal handelt es sich dabei jedoch nicht um eine Neuerung an Ivy oder Bazel, sondern um eine Deprecation im Service Worker, die nun entfernt wurde. So steht versionedFiles in der Service Worker Asset Group Configuration in ngsw-config.json nicht mehr zur Verfügung.

Unter den drei weiteren Feature-Änderungen, die dieses Release mitbringt, findet sich dann aber doch auch der neue Compiler wieder: Mit Ivy kann das Package @angular/localize nun per ng add hinzugefügt werden. Ebenfalls zu Ivy gehört die Performance-Verbesserung im Release: Der globale State wird nicht mehr wiederholt aus den i18n Instructions aufgerufen, wenn die Informationen bereits verfügbar sind.

Darüber hinaus aktualisiert Angular 9.0.0-next.9 die notwendige Version der RxJS Dependency auf v6.5.3. Auch für den Language Service gibt es eine Neuerung, die das Laden von NgModules betrifft. Wenn NgModules aus dem Language Service geladen werden, wird nun geprüft, ob eine aktualisierte Version im Cache vorliegt. Ist das der Fall, kann diese genutzt werden.

Darüber hinaus wurde eine Reihe von Bugfixes in Angular 9.0.0-next.9 implementiert. Einen Überblick über alle Neuerungen gibt das Changelog auf GitHub.


Angular 9.0.0-next.8

Update vom 26. September 2019

Das neunte Next-Release von Angular 9, v9.0.0-next.8, bringt nur vier Neuerungen mit, zwei davon sind Bugfixes für Ivy. Behoben wurde ein Fehler der im Kontext des Debuggings von Component Elements auftrat. Hier werden mit window.ng.getDebugNode nun die nötigen Debug-Infos ausgegeben. Der zweite behobene Bug in Ivy bezieht sich auf Map-basierte Bindings, die unter bestimmten Umständen zwischenliegende Werte übersprangen.

Im Release ist auch ein neues Feature enthalten, das im Language Service eingefügt wurde. Dieser kann jetzt feststellen, zu welchem NgModule ein Directive gehört. Die Performance-Verbesserung findet sich hingegen wieder in Ivy: Der extra SafeStyle Detection Code wurde entfernt.

Weitere Informationen zum Release können wie immer dem Changelog auf GitHub entnommen werden.


Angular 9.0.0-next.7

Update vom 19. September 2019

Angular 9.0.0-next.7 ist da! Erneut bringt die Version eine ganze Reihe neue Features mit, darunter einige Neuerungen für Ivy. Auch an der Performance des neuen Compilers wurde gearbeitet. Das Release bringt aber auch Breaking Changes mit.

Für Ivy wurden mit Version Next.7 von Angular 9 unterschiedliche Neuerungen ausgeliefert. Darunter sind sowohl Bugfixes als auch neue Features und Performance-Verbesserungen. Auch die beiden Breaking Changes im Release hängen mit Ivy zusammen. Eine davon betrifft Übersetzungen, die mit der Funktion loadTranslations() geladen werden. Hier muss nun MessageId für den Key verwendet werden, nicht mehr der String SourceMessage. Für die $localize-Funktion haben sich die Imports verändert. Der globale Scope wird nun aus @angular/localize/init importiert, während loadTranslations() und clearTranslations() aus @angular/localize geladen wird. Auch dabei handelt es sich um Breaking Changes. Zu den Performance Improvements für Ivy gehört, dass Lview in Pipe Instructions und Property Instructions nicht mehr wiederholt gelesen wird. Für das DOM wurden unnötige Lesezugriffe in Styling Instructions vermieden. Außerdem sind einige weitere Performance-Verbesserungen, Features für den Internationalisierungs-Support in Ivy und Bugfixes für Ivy im Release enthalten.

Neben den Neuerungen an Ivy gab es im Release natürlich auch Updates für andere Bereiche von Angular. So sind erneut drei Features für den Language-Service enthalten. Dazu gehört, dass einige Logging-Methoden für den TypeScript-Host hinzugefügt wurden, mit denen Logfiles erzeugt werden können.

Mehr Informationen zu diesen und allen weiteren Neuerungen an Angular 9.0.0-next.7 können dem Changelog auf GitHub entnommen werden


Angular 9.0.0-next.6

Update vom 12. September 2019

Mit Angular 9.0.0-next.6 wurden wieder zahlreiche Neuerungen am Framework veröffentlicht. Darunter ist eine ganze Reihe von Bugfixes, aber auch einige Performance-Verbesserungen, Features sowie ein Code-Refactoring, das einen Breaking Change verursacht, haben es in das Release geschafft. Deutlich zu sehen ist am Changelog, dass weiterhin an Ivy gearbeitet wird. So stehen vier von fünf Performance-Verbesserungen im Zusammenhang mit Ivy; auch unter den Bugfixes finden sich vor allem behobene Fehler am neuen Compiler. Darunter ist beispielsweise ein Bug, der durch die in der vorherigen Next-Version vorgenommene Integration von $localize in Ivy entstand. Hier wurde zum neusten Release festgelegt, dass keine jsdoc-Kommentare für $localize erzeugt werden sollen. Diese glichen denen für goog.getMsg(), sodass eine Fehlermeldung ausgegeben worden war.

Die neuen Features im Release fallen dieses Mal jedoch nicht in den Bereich von Ivy. Neuerung gab es aber am Language Service. Hier wurde Support für styleUrl-Definitionen hinzugefügt, der analog zu den Definitionen von templateUrl funktioniert und das Vorgehen vereinheitlichen soll. Für die Language Service Integration Tests wurde ein Script hinzugefügt, das die Angular-Distribution bei jedem Build neu installiert. Mit dem neuen Script kann die Installation außerhalb des Root-Verzeichnisses erfolgen. Außerdem wurden einige Änderungen am Service Worker vorgenommen, die sich auf den EXISTING_CLIENTS_ONLY-Modus beziehen. Darunter ist ein neues Feature, das die Rückkehr aus diesem Modus ermöglicht, wenn ein entsprechendes Update verfügbar ist.

Ein Refactoring wurde in Angular 9.0.0-next.6 an der Protractor-Integration für Bazel vorgenommen. Bislang war die Regel protractor_web_test_suite rule im npm-Package @angular/bazel zu finden, wurde nun aber daraus entfernt. Stattdessen findet sie sich nun im Package @bazel/protractor. Wer mit dieser Regel arbeitet, muss sein Projekt entsprechend anpassen, da es sich dabei um einen Breaking Change handelt.

Weitere Informationen zur neusten Next-Version von Angular 9 können wie immer dem Changelog entnommen werden.


Angular 9.0.0-next.5

Update vom 5. September 2019

Achtung! Nachdem die next.3-Version von Angular 9 den letzten Breaking Change beinhaltete und Ivy zum Standard-Compiler kürte, gibt es im aktuellen Release auch wieder zwei Breaking Changes. Der erste betrifft den öffentlichen Export on hasBeenProcessed(), der nicht mehr stattfinden wird. Der Grund für das Entfernen ist einfach: Die Funktion wurde nie genutzt. Da eine Änderung an der Funktion ein Breaking Change ist, wurde sie komplett entfernt. Der zweite Breaking Change betrifft die Methode Injector.get, die nun abstrakten Klassen erlaubt, typsichere Werte auszugeben.

Doch Angular 9.0.0-next.5 hat mehr im Gepäck, als Breaking Changes: Auch neue Features gibt es wieder, fünf an der Zahl. Da gerade vom Ivy Compiler die Rede war beginnen wir dort. Für den Compiler wurde die globale Funktion $localize() implementiert. Im Bereich Bazel wurde auf die neueste Version von [@microsoft](https://github.com/microsoft)/api-extractor aktualisiert. Die Methode TestBed.inject wurde unterdessen in den Kern von Angular eingebaut, um TestBed.get zu ersetzen. Zudem wurde der Decorator providedIn erweitert, sodass nun 'platform' und 'any' genutzt werden können.

Auch die Performance des Ivy Compilers stand wieder im Fokus, ganze neun Verbesserungen wurden hierfür durchgeführt. Unter anderem Wurden Mikro-Benchmarks für normale und Map-basierte Style- und Klassen-Bindings eingeführt. Ein Benchmark für das Erstellen von Elementen und Text wurde ebenfalls hinzugefügt. Entfernt wurden hingegen Calls zu renderStringify beim Erstellen von Text-Nodes und der sich wiederholende read/write-Prozess in addComponentLogic. Außerdem ist die Klasse PlatformLocation nun „tree-shakable“.

Alle Änderungen, Bugfixes, Performance-Verbesserungen und natürlich die Breaking Changes, sind in vollem Umfang auf GitHub zu finden.


Angular 9.0.0-next.4

Update vom 28. August 2019

Seit der vorigen Vorabversion von Angular 9, ist Ivy als Standard-Compiler und -Renderer festgelegt. Kein Wunder also, dass sich die meisten Änderungen des aktuellsten Releases auf Ivy bezieht. Unter anderem wurden einige Bugs gefixt, darunter auch der ärgerliche Fehler, der verhinderte, dass der Index für Bindings vor der Ausführung eines Templates während des Aufrufens von refreshView zurückgesetzt wird.

Ein neues Feature für Ivy stellt die Nutzung der DomElementSchemaRegistry für die Prüfung von Bindings zum DOM durch ngtsc dar. So sollen zukünftig Fehler in Apps vermieden werden, die durch das TypeScript-Schema lib.dom.d.ts bzw. dessen nicht reibungslose Nutzung in Verbindung mit der DomElementSchemaRegistry entstehen.

Für eine etwa 6 Prozent niedrige Verarbeitungszeit im Produktionsmodus soll das ausschließliche Speichern von Binding-Metadaten im ngDevMode sorgen. Auf eine etwa 12 Prozent gesteigerte Performance können sich Nutzer ebenfalls freuen: Durch ein Refactoring des Umgangs mit lView[BINDING_INDEX] (keine doppelten Einträge an dieser Stelle mehr), soll Angular schneller werden.

Weitere Informationen zur aktuellen Next-Version können wie immer dem Changelog auf GitHub entnommen werden.


Angular 9.0.0-next.3

Update vom 22. August 2019

Ivy ist als Standard-Compiler und -Renderer in Angular 9.0.0-next.3 angekommen. In Angular 8.x und den bisherigen Releases für die Angular-9-Entwicklung ist Ivy noch als Opt-In-Feature verfügbar. Der Wechsel zum Standard war für Angular 9 bereits angekündigt worden; dies soll eine der zentralen Neuerungen für das kommende Major Release sein. Nun ist es so weit: Wer die Next-Versionen von Angular 9 testet, bekommt ab sofort als Standard-Pipeline für Rendering und Compiling ausgeliefert.

Im Zuge dieser Umstellung wurden natürlich einige Neuerungen an Ivy in das Release integriert. So wurden alle ngtsc-Diagnostics für Ivy zu ts.Diagnostics konvertiert. Außerdem können mit Ivy nun selektor-lose Directives als Base-Klassen genutzt werden. Auch ein Breaking Change für Ivy ist im Release enthalten. So ist Hammer.js in Zukunft Tree-Shakeble, sodass Hammer-Providers nicht mehr mit ausgeliefert werden, wenn HammerModule nicht in das Root-Module importiert wird. Für die Performance führt das Changelog zur neuen Next-Version gleich zehn Neuerungen auf, die im Zusammenhang mit Ivy stehen; einige Bugfixes für Ivy sind im Next-Release ebenfalls enthalten. Außerdem bringt Angular 9.0.0-next.3 eine Reihe weiterer Änderungen mit, die andere Bereiche des Frameworks betreffen, wie den Core und den Language-Service. Weitere Informationen dazu können wie immer dem Changelog auf GitHub entnommen werden.


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: