Ukazał się nowy wydanie platformy JavaScript Deno 1.16, przeznaczonej do wydzielonego uruchamiania (bez użycia przeglądarki) aplikacji napisanych w JavaScript i TypeScript. Projekt rozwija autor Node.js Ryan Dahl. Kod platformy został napisany w języku programowania Rust i jest udostępniany na licencji MIT. Gotowe wersje są przygotowane dla systemów Linux, Windows i macOS.
Projekt jest podobny do platformy Node.js i, podobnie jak ona, korzysta z silnika JavaScript V8, jednak według autora Node.js, naprawia szereg błędów architektonicznych swojego poprzednika i różni się od niego następującymi szczegółami:
- Wykorzystanie jako głównego języka Rust, co zdaniem deweloperów zmniejsza ryzyko pojawiania się luk związanych z niskopoziomowym zarządzaniem pamięcią (przepełnienie bufora, use-after-free itp.);
- Deno nie korzysta z menedżera pakietów npm ani pliku package.json, oferując użytkownikowi instalację modułów poprzez wskazanie URL lub ścieżki do modułu do zainstalowania. Mimo to, projekt oferuje kilka narzędzi do uproszczenia pracy z zewnętrznymi modułami;
- Aplikacje uruchamiane są w izolowanych piaskownicach i nie mają dostępu do sieci, zmiennych środowiskowych ani systemu plików bez wyraźnie przyznanych uprawnień;
- W architekturze zawarta jest możliwość tworzenia uniwersalnych aplikacji internetowych, które mogą działać zarówno w systemie Deno, jak i w standardowej przeglądarce;
- Wykorzystanie „ES Modules” i brak obsługi require();
- Jakiekolwiek nieprzechwycone błędy programisty w aplikacji internetowej prowadzą do jej przymusowego zakończenia;
- Wsparcie dla TypeScript obok JavaScript;
- Pełny rozmiar gotowej do użycia platformy wynosi 84 MB (w archiwum zip — 31 MB) w postaci jednego pliku wykonywalnego;
- W zestawie znajduje się system rozwiązywania zależności oraz formatowania kodu;
- Skupia się na aplikacjach wysokowydajnych.
Deno przetwarza zapytania w trybie niena blokującym z wykorzystaniem platformy Tokio, przeznaczonej do tworzenia wysokowydajnych aplikacji opartych na zdarzeniach (event-driven architecture). Ciekawe jest również to, że wbudowany serwer HTTP Deno został zaimplementowany w TypeScript na niskopoziomowych gniazdach TCP, co pozytywnie wpływa na wydajność operacji sieciowych.
W nowej wersji można zauważyć:
- Optymalizację wydajności (4 poprawki);
- Naprawa ponad 15 błędów, w tym wsparcie dla HTTP/2 przez klienta TLS, dodatkowe etykiety kodowania w podsystemie kodowania i inne.
- Ponad dwadzieścia innowacji, w tym stabilizacja wcześniej testowanych podsystemów Deno.startTls i Deno.TestDefinition.permissions, aktualizacja silnika JS V8 do wersji 9.7 oraz wsparcie dla transformacji React 17 JSX.
Źródło: opennet.ru
