JavaScript

Ach du rote Neune...

Auf dem Weg zu Angular 9: Neues für Ivy in Next.11
1 Kommentar

Angular 9.0.0-next.11 ist da. Mit dabei sind einige Breaking Changes. Vor allem zeigt sich aber wieder, dass das Angular-Team an der Fertigstellung von Ivy arbeitet. Was hat sich an Ivy getan?

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.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 von 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.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.

JavaScript Days 2019

JavaScript Testing in der Praxis (Teil 1 + 2)

mit Dominik Ehrenberg (Crosscan) und Sebastian Springer (MaibornWolff)

Fortgeschrittene schwarze Magie in TypeScript

mit Peter Kröner (‚Webtechnologie-Erklärbär‘)

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 werden.

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

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

1 Kommentar auf "Auf dem Weg zu Angular 9: Neues für Ivy in Next.11"

avatar
400
  Subscribe  
Benachrichtige mich zu:
Torsten Dittmann
Gast

Schon eine gute Hand voll von Bibliotheken die ich nutze, welche mit Angular 9 den Geist aufgeben. Das wird ein Spaß 😀

X
- Gib Deinen Standort ein -
- or -