Deno 1.16, platforma JavaScript przeznaczona do samodzielnego (bez przeglądarki) uruchamiania aplikacji napisanych w JavaScript i TypeScript, została wydana. Projekt rozwija Ryan Dahl, twórca Node.js. Kod platformy jest napisany w języku programowania Rust i jest rozpowszechniany na licencji MIT. Dostępne są gotowe do użycia kompilacje. Linux, Windows и macOS.
Projekt jest podobny do platformy Node.js i tak jak ona wykorzystuje silnik JavaScript V8. Jednak, jak twierdzi autor Node.js, koryguje on szereg błędów architektonicznych swojego poprzednika i różni się od niego następującymi niuansami:
- Wykorzystanie Rust jako głównego języka, co według twórców zmniejsza ryzyko wystąpienia luk w zabezpieczeniach związanych z zarządzaniem pamięcią niskiego poziomu (przepełnienie bufora, użycie pamięci po zwolnieniu itp.);
- Deno nie korzysta z menedżera pakietów npm ani pliku package.json, zamiast tego wyświetla użytkownikowi monit o zainstalowanie modułów poprzez podanie adresu URL lub ścieżki do modułu, który ma zostać zainstalowany. Jednakże projekt oferuje szereg narzędzi ułatwiających pracę z modułami innych firm;
- Aplikacje działają oddzielnie w środowiskach testowych i bez wyraźnych uprawnień nie mają dostępu do sieci, zmiennych środowiskowych ani systemu plików;
- Architektura uwzględnia możliwość tworzenia uniwersalnych aplikacji webowych, mogących działać zarówno w systemie Deno, jak i w zwykłej przeglądarce;
- Korzystanie z „modułów ES” i brak obsługi require();
- Wszelkie błędy w aplikacji internetowej, na które nie pozwoli programista, spowodują jej wymuszone zamknięcie;
- Obsługa TypeScript oprócz JavaScript;
- Pełny rozmiar gotowej do użycia platformy wynosi 84 MB (31 MB w archiwum zip) w postaci jednego pliku wykonywalnego;
- Pakiet zawiera system rozwiązywania zależności i formatowania kodu;
- Skup się na aplikacjach o wysokiej wydajności.
Dino przetwarza żądania w trybie nieblokującym, wykorzystując platformę Tokio, przeznaczoną do tworzenia wysoko wydajnych aplikacji bazujących na architekturze sterowanej zdarzeniami. Interesujące jest również to, że wbudowany serwer HTTP komputera Deno został zaimplementowany w języku TypeScript na bazie natywnych gniazd TCP, co korzystnie wpływa na wydajność operacji sieciowych.
W nowej wersji wskazano:
- Optymalizacja wydajności (4 poprawki);
- Naprawiono ponad 15 błędów, w szczególności: klient TLS obsługuje teraz protokół HTTP/2, podsystem kodowania obsługuje dodatkowe znaki kodowania itp.;
- Ponad dwadzieścia innowacji, wśród których możemy wymienić stabilizację wcześniej testowanych podsystemów Deno.startTls i Deno.TestDefinition.permissions, aktualizację silnika V8 JS do wersji 9.7 oraz wsparcie dla transformacji React 17 JSX.
Źródło: opennet.ru
