Projekt Deno rozwija bezpieczną platformę JavaScript podobną do Node.js

Do dyspozycji wydanie projektu Deno 0.33 , , , , , , , , , , , , , ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, która oferuje platformę podobną do Node.js do samodzielnego wykonywania aplikacji w JavaScript i TypeScript, której można używać do uruchamiania aplikacji bez konieczności łączenia się z przeglądarką, na przykład do tworzenia programów obsługi działających na serwerze. Deno korzysta z silnika JavaScript V8, który jest również używany w Node.js i przeglądarkach opartych na projekcie Chromium. Kod projektu dystrybuowane przez na licencji MIT. Projekt jest rozwijany przez Ryana Dahla (Ryana Dahla), twórca platformy JavaScript Node.js.

Jednym z głównych celów tworzenia nowego środowiska wykonawczego JavaScript jest zapewnienie bezpieczniejszego środowiska. Aby poprawić bezpieczeństwo, silnik V8 napisano w języku Rust, który pozwala uniknąć wielu luk wynikających z manipulacji pamięcią na niskim poziomie, takich jak dostęp po zwolnieniu, wyłuskiwanie wskaźników zerowych i przepełnienie bufora. Platforma służy do przetwarzania żądań w trybie nieblokującym Tokio, również napisany w języku Rust. Tokio umożliwia tworzenie wysokowydajnych aplikacji opartych na architekturze sterowanej zdarzeniami, obsługujących wielowątkowość i przetwarzających żądania sieciowe w trybie asynchronicznym.

Głównym Cechy Deno:

  • Domyślna konfiguracja zorientowana na bezpieczeństwo. Dostęp do plików, sieć i dostęp do zmiennych środowiskowych są domyślnie wyłączone i muszą być jawnie włączone;
  • Wbudowana obsługa języka TypeScript oprócz JavaScript;
  • Środowisko wykonawcze ma postać pojedynczego, samodzielnego pliku wykonywalnego („deno”). Do uruchomienia aplikacji za pomocą Deno wystarczy pobierz dla swojej platformy jeden plik wykonywalny o rozmiarze około 10 MB, który nie ma zewnętrznych zależności i nie wymaga żadnej specjalnej instalacji w systemie;
  • Podczas uruchamiania programu, jak również podczas ładowania modułów, można skorzystać z adresowania URL. Na przykład, aby uruchomić program Welcome.js, możesz użyć polecenia „deno https://deno.land/std/examples/welcome.js”. Kod z zasobów zewnętrznych jest pobierany i buforowany w systemie lokalnym, ale nigdy nie jest automatycznie aktualizowany (aktualizacja wymaga jawnego uruchomienia aplikacji z flagą „--reload”);
  • Efektywne przetwarzanie żądań sieciowych poprzez HTTP w aplikacjach, platforma przeznaczona jest do tworzenia wysokowydajnych aplikacji sieciowych;
  • Możliwość tworzenia uniwersalnych aplikacji internetowych, które można uruchomić zarówno w Deno, jak i w zwykłej przeglądarce internetowej;
  • Oprócz środowiska wykonawczego platforma Deno pełni również funkcję menedżera pakietów i umożliwia dostęp do modułów poprzez adres URL znajdujący się w kodzie. Na przykład, aby załadować moduł, możesz określić w kodzie „import * jako dziennik z „https://deno.land/std/log/mod.ts”. Pliki pobrane z serwerów zewnętrznych za pośrednictwem adresu URL są buforowane. Powiązanie z wersjami modułów jest określane poprzez podanie numerów wersji w adresie URL, na przykład „https://unpkg.com/[email chroniony]/dist/liltest.js";
  • Struktura zawiera zintegrowany system kontroli zależności (polecenie „deno info”) oraz narzędzie do formatowania kodu (deno fmt).
  • Dla twórców aplikacji proponowane zestaw standardowych modułów, które przeszły dodatkowy audyt i testy kompatybilności;
  • Wszystkie skrypty aplikacji można połączyć w jeden plik JavaScript.

Różnice w stosunku do Node.js:

  • Deno nie używa menedżera pakietów npm
    i nie jest powiązany z repozytoriami, moduły są adresowane poprzez adres URL lub ścieżkę pliku, a same moduły można umieścić na dowolnej stronie internetowej;

  • Deno nie używa pliku „package.json” do definiowania modułów;
  • Różnica API, wszystkie akcje asynchroniczne w Deno zwracają obietnicę;
  • Deno wymaga wyraźnego zdefiniowania wszystkich niezbędnych uprawnień do plików, zmiennych sieciowych i środowiskowych;
  • Wszystkie błędy, które nie są dostarczane z modułami obsługi, prowadzą do zakończenia działania aplikacji;
  • Deno korzysta z systemu modułów ECMAScript i nie obsługuje funkcji require().

Źródło: opennet.ru

Dodaj komentarz