Dev News Daily ENDE

Bun 1.4.3 bringt bun check, einen von typescript-go portierten TypeScript-Typprüfer

Bun hat am 10. Oktober Version 1.4.3 veröffentlicht. Wichtigste Neuerung ist bun check, ein in die Laufzeit eingebauter TypeScript-Typprüfer. Ein neues Typsystem ist das nicht: Bun beschreibt ihn als Portierung von typescript-go, Microsofts Neuimplementierung des TypeScript-Compilers in Go. Er liest die tsconfig.json des Projekts und meldet dieselben Fehler wie tsc, ohne dass das Paket typescript installiert sein muss.

Was er kann und was nicht. bun check prüft ausschließlich Typen. Er erzeugt weder JavaScript noch .d.ts-Dateien, und einen Language Server gibt es nicht – Editoren nutzen weiter die Werkzeuge von TypeScript. Andere Bun-Befehle lassen sich damit absichern: bun run --check prüft vor dem Start eines Skripts (auch mit --watch, dann vor jedem Neustart); der Test-Runner kann die Testdateien samt allem, was sie importieren, prüfen, bevor ein einziger Test läuft; und der Bundler ebenso – Bun.build nimmt check: true –, sodass ein Typfehler den Build scheitern lässt und nichts geschrieben wird.

Leistungsangaben. Laut Bun ist bun check 3- bis 6,4-mal schneller als tsc 7.0.2 und braucht 2,2- bis 4,9-mal weniger Speicher, gemessen auf einem Apple-Silicon-Mac mit 16 Kernen. Er nutzt alle Prozessorkerne. Es sind Messungen des Herstellers.

Bun 1.4.3 bringt bun check, einen von typescript-go portierten TypeScript-Typprüfer
Bun 1.4.3 bringt bun check, einen von typescript-go portierten TypeScript-Typprüfer — Dev News Daily

Wie Bun die Korrektheit geprüft hat. Spannend an der Ankündigung sind die Belege dafür, dass die Portierung mit tsc übereinstimmt. Jeder Bun-Commit durchläuft die vollständige Konformitäts-Testsuite von TypeScript 7.0.2, die bun check komplett besteht. Bun hat 72 bekannte Open-Source-Repositories absichtlich falsch konfiguriert – fehlende node_modules, abweichende TypeScript-Versionen, kein Build-Schritt – und verlangt, dass jeder Fehler nach Datei, Zeile, Spalte und Code mit tsc übereinstimmt. Gemeldet wird eine Abweichung in vuejs/core, wo tsc selbst den Fehler nur bei einer bestimmten Dateireihenfolge meldet. Fuzzer erzeugen Kombinationen von Sprachfeatures und vergleichen beide Prüfer bei jedem Commit; in größeren Offline-Läufen meldet Bun 191 Abweichungen, 162 davon in Code, der sich während seiner eigenen Deklaration auf sich selbst bezieht. Beim Mutationstest wurde der Quellcode der Bibliothek Effect 913-mal beschädigt und jeder Fehler verglichen.

Bun bittet darum, jede Abweichung von tsc als Bun-Fehler zu melden, und dokumentiert einen Befehl, um eine tsc-Vergleichsbasis zu erzeugen.

Außerdem in 1.4.3. Bun.FetchSession gibt Gruppen von Anfragen eigene TLS-, Proxy- und Keep-alive-Einstellungen sowie einen eigenen Verbindungspool; NO_PROXY akzeptiert Wildcards und CIDR-Blöcke; fetch() wird jetzt mit ERR_PROXY_TUNNEL abgelehnt, wenn ein Proxy CONNECT verweigert – bisher wurde die Antwort des Proxys so zurückgegeben, als käme sie vom Ziel. Eine neue Modulgraph-API führt mehrere isolierte Instanzen einer App in einem Prozess aus; Bun betont, dass das keine Sicherheits-Sandbox ist. Zudem meldet Bun schnellere große Antworten in node:http und schnelleres JSON.parse bei wiederkehrenden Objektformen.

Quelle: Bun-Blog, Bun v1.4.3 — https://bun.com/blog/bun-v1.4.3

Primärquelle
Bun blog
https://bun.com/blog/bun-v1.4.3