Pengarang Node.js membentangkan platform JavaScript selamat Deno 1.0

Selepas dua tahun pembangunan dibentangkan keluaran utama pertama Beri saya 1.0, platform untuk melaksanakan aplikasi yang berdiri sendiri dalam JavaScript dan TypeScript, yang boleh digunakan untuk mencipta pengendali yang dijalankan pada pelayan. Platform ini dibangunkan oleh Ryan Dahl (Ryan Dahl), pencipta Node.js. Seperti Node.js, Deno menggunakan enjin JavaScript V8, yang turut digunakan dalam penyemak imbas berasaskan Chromium. Pada masa yang sama, Deno bukan garpu Node.js, tetapi merupakan projek baharu yang dibuat dari awal. Kod projek diedarkan oleh di bawah lesen MIT. Perhimpunan disediakan untuk Linux, Windows dan macOS.

Nombor versi penting dikaitkan dengan penstabilan API dalam ruang nama Deno, yang bertanggungjawab untuk interaksi aplikasi dengan OS. Antara muka perisian yang mempunyai setakat ini tidak stabil, disembunyikan secara lalai dan hanya tersedia apabila berjalan dalam mod "--tidak stabil". Apabila versi baharu dibentuk, API sedemikian akan beransur-ansur menjadi stabil. API dalam ruang nama global, yang merangkumi fungsi biasa seperti setTimeout() dan fetch(), adalah sedekat mungkin dengan API pelayar web konvensional dan dibangunkan mengikut piawaian Web untuk penyemak imbas. API yang disediakan oleh Rust, yang digunakan secara langsung dalam kod platform, serta antara muka untuk membangunkan pemalam untuk masa jalan Deno, belum lagi distabilkan dan terus berkembang.

Motif utama untuk mencipta platform JavaScript baharu adalah keinginan untuk menghapuskan ralat konsep, mengaku dalam seni bina Node.js dan menyediakan pengguna dengan persekitaran yang lebih selamat. Untuk meningkatkan keselamatan, enjin V8 ditulis dalam Rust, yang mengelakkan banyak kelemahan yang timbul daripada manipulasi memori peringkat rendah, seperti akses selepas bebas, penolakan penunjuk nol dan overrun penimbal. Platform ini digunakan untuk memproses permintaan dalam mod tidak menyekat Tokyo, juga ditulis dalam Rust. Tokio membolehkan anda mencipta aplikasi berprestasi tinggi berdasarkan seni bina dipacu peristiwa, menyokong permintaan rangkaian berbilang benang dan pemprosesan dalam mod tak segerak.

Utama ciri- Deno:

  • Konfigurasi lalai berorientasikan keselamatan. Akses fail, rangkaian dan akses kepada pembolehubah persekitaran dilumpuhkan secara lalai dan mesti didayakan secara eksplisit. Aplikasi secara lalai dijalankan dalam persekitaran kotak pasir terpencil dan tidak boleh mengakses keupayaan sistem tanpa memberikan kebenaran yang jelas;
  • Sokongan terbina dalam untuk TypeScript di luar JavaScript. Pengkompil TypeScript standard digunakan untuk menyemak jenis dan menjana JavaScript, yang membawa kepada prestasi prestasi berbanding penghuraian JavaScript dalam V8. Pada masa hadapan, kami merancang untuk menyediakan pelaksanaan kami sendiri bagi sistem semakan jenis TypeScript, yang akan meningkatkan prestasi pemprosesan TypeScript mengikut susunan magnitud;
  • Masa jalan datang dalam bentuk fail boleh laku serba lengkap (β€œdeno”). Untuk menjalankan aplikasi menggunakan Deno sudah memadai muat turun untuk platformnya terdapat satu fail boleh laku, bersaiz kira-kira 20 MB, yang tidak mempunyai kebergantungan luaran dan tidak memerlukan sebarang pemasangan khas pada sistem. Selain itu, deno bukanlah aplikasi monolitik, tetapi merupakan koleksi pakej peti dalam Rust (deno_core, berkarat_v8), yang boleh digunakan secara berasingan;
  • Apabila memulakan program, serta untuk memuatkan modul, anda boleh menggunakan pengalamatan URL. Contohnya, untuk menjalankan program welcome.js, anda boleh menggunakan arahan "deno https://deno.land/std/examples/welcome.js". Kod daripada sumber luaran dimuat turun dan dicache pada sistem setempat, tetapi tidak sekali-kali dikemas kini secara automatik (kemas kini memerlukan secara eksplisit menjalankan aplikasi dengan bendera "--reload");
  • Pemprosesan permintaan rangkaian yang cekap melalui HTTP dalam aplikasi, platform direka untuk mencipta aplikasi rangkaian berprestasi tinggi;
  • Keupayaan untuk mencipta aplikasi web universal yang boleh dilaksanakan dalam Deno dan dalam pelayar web biasa;
  • ketersediaan set modul standard, penggunaannya tidak memerlukan pengikatan kepada kebergantungan luar. Modul daripada koleksi standard telah menjalani audit tambahan dan ujian keserasian;
  • Selain masa jalan, platform Deno juga bertindak sebagai pengurus pakej dan membolehkan anda mengakses modul mengikut URL di dalam kod. Sebagai contoh, untuk memuatkan modul, anda boleh menentukan dalam kod "import * sebagai log daripada "https://deno.land/std/log/mod.ts". Fail yang dimuat turun dari pelayan luaran melalui URL dicache. Pengikatan kepada versi modul ditentukan dengan menentukan nombor versi di dalam URL, contohnya, "https://unpkg.com/[e-mel dilindungi]/dist/liltest.js";
  • Struktur ini termasuk sistem pemeriksaan kebergantungan bersepadu (arahan "deno info") dan utiliti untuk pemformatan kod (deno fmt);
  • Semua skrip aplikasi boleh digabungkan menjadi satu fail JavaScript.

Perbezaan daripada Node.js:

  • Deno tidak menggunakan pengurus pakej npm
    dan tidak terikat dengan repositori, modul ditangani melalui URL atau laluan fail, dan modul itu sendiri boleh diletakkan di mana-mana tapak web;
  • Deno tidak menggunakan "package.json" untuk mentakrifkan modul;
  • Perbezaan API, semua tindakan tak segerak dalam Deno mengembalikan janji;
  • Deno memerlukan definisi eksplisit semua kebenaran yang diperlukan untuk fail, rangkaian dan pembolehubah persekitaran;
  • Semua ralat yang tidak disediakan dengan pengendali membawa kepada penamatan permohonan;
  • Deno menggunakan sistem modul ECMAScript dan tidak menyokong require();
  • Pelayan HTTP terbina dalam Deno ditulis dalam TypeScript dan berjalan di atas soket TCP asli, manakala pelayan HTTP Node.js ditulis dalam C dan menyediakan pengikatan untuk JavaScript. Pembangun Deno telah menumpukan pada mengoptimumkan keseluruhan lapisan soket TCP dan menyediakan antara muka yang lebih umum. Pelayan HTTP Deno menyediakan daya pemprosesan yang lebih rendah tetapi menjamin kependaman rendah yang boleh diramal. Sebagai contoh, dalam ujian, aplikasi mudah berdasarkan pelayan HTTP Deno dapat memproses 25 ribu permintaan sesaat dengan kependaman maksimum 1.3 milisaat. Dalam Node.js, aplikasi serupa memproses 34 ribu permintaan sesaat, tetapi kependaman adalah antara 2 dan 300 milisaat.
  • Deno tidak serasi dengan pakej untuk Node.js (NPM), tetapi sedang dibangunkan secara berasingan interlayer untuk keserasian dengan perpustakaan Node.js standard, apabila ia berkembang, semakin banyak aplikasi yang ditulis untuk Node.js akan dapat dijalankan dalam Deno.
  • Sumber: opennet.ru

Tambah komen