Node.js'nin yazarı güvenli JavaScript platformu Deno 1.0'ı sundu

İki yıllık geliştirme sürecinin ardından gönderilen ilk büyük sürüm bana 1.0 ver, sunucuda çalışan işleyiciler oluşturmak için kullanılabilen, JavaScript ve TypeScript'teki uygulamaların bağımsız olarak yürütülmesine yönelik bir platform. Platform Ryan Dahl tarafından geliştirilmiştir (ryan dahl), Node.js'nin yaratıcısı. Node.js gibi Deno da bir JavaScript motoru kullanıyor V8Chromium tabanlı tarayıcılarda da kullanılır. Aynı zamanda Deno, Node.js'nin bir çatalı değil, sıfırdan oluşturulmuş yeni bir projedir. Proje kodu tarafından dağıtıldı MIT lisansı altında. Meclisler hazır Linux, Windows ve macOS için.

Önemli sürüm numarası, uygulamaların işletim sistemi ile etkileşiminden sorumlu olan Deno ad alanındaki API'lerin stabilizasyonuyla ilişkilidir. Şu ana kadar kullanılan yazılım arayüzleri stabilize edilmemiş, varsayılan olarak gizlidir ve yalnızca “--unstable” modunda çalışırken kullanılabilir. Yeni sürümler oluşturuldukça bu tür API'ler yavaş yavaş kararlı hale gelecektir. setTimeout() ve fetch() gibi ortak işlevleri içeren global ad alanındaki API, geleneksel web tarayıcılarının API'sine mümkün olduğunca yakındır ve tarayıcılara yönelik Web standartlarına uygun olarak geliştirilmiştir. Doğrudan platform kodunda kullanılan Rust tarafından sağlanan API'ler ve Deno çalışma zamanı için eklenti geliştirme arayüzü henüz stabil hale getirilmedi ve geliştirilmeye devam ediyor.

Yeni bir JavaScript platformu oluşturmanın temel nedenleri kavramsal hataları ortadan kaldırma arzusuydu. kabul edildi Node.js mimarisinde yer alır ve kullanıcılara daha güvenli bir ortam sunar. Güvenliği artırmak için, V8 motoru Rust'ta yazılmıştır; bu, serbest erişim sonrası erişim, boş işaretçi referansları ve ara bellek taşmaları gibi düşük seviyeli bellek manipülasyonundan kaynaklanan birçok güvenlik açığını ortadan kaldırır. Platform, istekleri engellemeyen modda işlemek için kullanılır Tokio, ayrıca Rust'ta yazılmıştır. Tokio, çoklu iş parçacığını destekleyen ve ağ isteklerini eşzamansız modda işleyen, olay odaklı mimariye dayalı yüksek performanslı uygulamalar oluşturmanıza olanak tanır.

Ana özellikler Deno:

  • Güvenlik odaklı varsayılan yapılandırma. Dosya erişimi, ağ iletişimi ve ortam değişkenlerine erişim varsayılan olarak devre dışıdır ve açıkça etkinleştirilmelidir. Uygulamalar varsayılan olarak yalıtılmış sanal alan ortamlarında çalışır ve açık izinler verilmeden sistem özelliklerine erişemez;
  • TypeScript için JavaScript'in ötesinde yerleşik destek. Standart TypeScript derleyicisi türleri kontrol etmek ve JavaScript oluşturmak için kullanılır; bu da V8'deki JavaScript ayrıştırmaya kıyasla performansta bir düşüşe yol açar. Gelecekte, TypeScript işleme performansını büyük ölçüde artıracak kendi TypeScript tür kontrol sistemi uygulamamızı hazırlamayı planlıyoruz;
  • Çalışma zamanı, tek bir bağımsız yürütülebilir dosya (“deno”) biçiminde gelir. Uygulamaları Deno kullanarak çalıştırmak için yeterli indir platformu için, harici bağımlılığı olmayan ve sistemde herhangi bir özel kurulum gerektirmeyen, yaklaşık 20 MB boyutunda bir yürütülebilir dosya bulunmaktadır. Üstelik deno yekpare bir uygulama değil, Rust'taki sandık paketlerinin bir koleksiyonudur (deno_core, paslı_v8), ayrı olarak kullanılabilen;
  • Programı başlatırken ve modülleri yüklerken URL adreslemeyi kullanabilirsiniz. Örneğin,welcome.js programını çalıştırmak için “deno https://deno.land/std/examples/welcome.js” komutunu kullanabilirsiniz. Harici kaynaklardan gelen kodlar yerel sistemde indirilir ve önbelleğe alınır, ancak hiçbir zaman otomatik olarak güncellenmez (güncelleme, uygulamanın açıkça “--reload” işaretiyle çalıştırılmasını gerektirir);
  • Uygulamalarda ağ isteklerinin HTTP üzerinden verimli bir şekilde işlenmesi; platform, yüksek performanslı ağ uygulamaları oluşturmak için tasarlanmıştır;
  • Hem Deno'da hem de normal bir web tarayıcısında çalıştırılabilen evrensel web uygulamaları oluşturma yeteneği;
  • kullanılabilirlik standart modül setikullanımı dış bağımlılıklara bağlanmayı gerektirmez. Standart koleksiyondaki modüller ek denetim ve uyumluluk testlerinden geçmiştir;
  • Deno platformu, çalışma zamanına ek olarak paket yöneticisi görevi de görür ve kod içindeki URL'ye göre modüllere erişmenizi sağlar. Örneğin bir modülü yüklemek için “https://deno.land/std/log/mod.ts” adresinden “import * as log” kodunu belirtebilirsiniz. URL aracılığıyla harici sunuculardan indirilen dosyalar önbelleğe alınır. Modül sürümlerine bağlanma, URL içinde sürüm numaraları belirtilerek belirlenir; örneğin, "https://unpkg.com/"[e-posta korumalı]/dist/liltest.js";
  • Yapı, entegre bir bağımlılık inceleme sistemi ("deno info" komutu) ve kod biçimlendirmeye yönelik bir yardımcı programı (deno fmt) içerir;
  • Tüm uygulama komut dosyaları tek bir JavaScript dosyasında birleştirilebilir.

Node.js'den farkları:

  • Deno, npm paket yöneticisini kullanmıyor
    ve depolara bağlı değildir, modüller bir URL veya dosya yolu aracılığıyla adreslenir ve modüllerin kendileri herhangi bir web sitesine yerleştirilebilir;
  • Deno, modülleri tanımlamak için "package.json" kullanmaz;
  • API farkı, Deno'daki tüm eşzamansız eylemler bir söz verir;
  • Deno, dosyalar, ağ ve ortam değişkenleri için gerekli tüm izinlerin açık bir şekilde tanımlanmasını gerektirir;
  • İşleyicilere sağlanmayan tüm hatalar uygulamanın sonlandırılmasına yol açar;
  • Deno, ECMAScript modül sistemini kullanır ve require()'u desteklemez;
  • Deno'nun yerleşik HTTP sunucusu TypeScript'te yazılmıştır ve yerel TCP yuvalarının üzerinde çalışır; Node.js HTTP sunucusu ise C dilinde yazılmıştır ve JavaScript için bağlamalar sağlar. Deno'nun geliştiricileri tüm TCP soket katmanını optimize etmeye ve daha genel bir arayüz sağlamaya odaklandı. Deno HTTP Sunucusu daha düşük verim sağlar ancak öngörülebilir düşük gecikmeyi garanti eder. Örneğin testte Deno HTTP sunucusunu temel alan basit bir uygulama, maksimum 25 milisaniye gecikmeyle saniyede 1.3 bin isteği işleyebildi. Node.js'de benzer bir uygulama saniyede 34 bin isteği işliyordu ancak gecikmeler 2 ila 300 milisaniye arasında değişiyordu.
  • Deno, Node.js (NPM) paketleriyle uyumlu değildir ancak ayrı olarak geliştirilmektedir. ara katman Standart Node.js kitaplığıyla uyumluluk açısından, geliştikçe Node.js için yazılan daha fazla uygulama Deno'da çalışabilecek.
  • Kaynak: opennet.ru

Yorum ekle