WEB EKOSISTEM
Deno Nedir -2?
Birinci yazımızda Deno Runtime hangi tasarım eksikliklerinden ortaya çıktığı üzerinde durmuştuk. Bu yazıda’da Deno bu tasarım eksikliklerini nasıl gidermeye çalıştığı üzerinde duracağız.
Bu yazı daha önceden yazdığımız Deno Nedir? Neden Geliştirildi ? yazısının devamıdır. Bir önceki yazımızda Deno’nun
A secure runtime for JavaScript and TypeScript.
olduğunu ve bu Runtime ortaya çıkma gereklerinden bahsetmiştik. Bu yazıda Deno bu gerekleri nasıl yerine getiriyor onları inceleyelim.
Security (Güvenlik)
JS aynı tarayıcılarda olduğu gibi Sandbox içerisinde çalıştırarak default network ve dosya sistemi erişim yetkileri olmayacaktır.
--allow-net --allow-write
ile bu yetkiler açılacak. Bu sayede linter vb utility araçlarının kontrolsüz erişimeri ortadan kalkacaktır.
2nci olarak Native fonksiyonların direk V8 bağlanması engellenecektir. Bütün sistem çağrıları
Message Passing (profobuf serialization)
yöntemini kullanacaktır. Bu sayede 2 türde fonksiyon olacak send/recv ve bu yapıların tasarımları çok basit ve kontrol altında tutmak kayıtlarını tutmak oldukça kolay.
Aşağıdaki resimde de görüldüğü gibi Privileged yapı ile Unprivileged ortamdaki Dispatcher üzerinden güvenliğini kontrol eden bir mekanizmaya dönüştürmüş.
Module System
Deno ile node_modules ve npm yapısından kurtulmaya çalışıyor. Projenin gerekleri olan dosya zaten o kodun bulunduğu relative yapıda ise bunu
./util.ts
eğerki uzak bir ortamda network üzerinden erişiliyor ise..
"https://........../testing.ts"
erişim yapılak ilgili dosyanın nerede olduğu basit bir şekilde görebiliyor. Dosya uzantısı sayesinde kaynak kodun hangi dilde yazdığı anlaşılıyor.
Remote URLs ilk yüklemeden sonra cache leniyor.
--reload flag veya Ctrl + R benzeri cache resetlenir.
TypeScript
Deno Runtime içerisinde default olarak TypeScript destekliyor (yani builtin geliyor). Amaç secure backend sunucusu ile daha kurumsal yazılımlar geliştirmek. Bu kısımda da dynamic bir dil olan JavaScript yerine TypeScript yönlendiriyor ve yapısında bunu default destekliyor.
Normal süreçte TypeScript geliştirme yaptığınız ortamda TypeScript → JavaScript dönüşümü için aşağıdaki araçlara ihtiyaç duyarsınız.
npm install -g typescript
tsc --init // dendiğinde tsconfig.json oluşur
Deno Runtime üzerinde bu tarz gereksinimlere gerek kalmadan dosya uzantısından bunu algılıyarak TypeScript işletebiliyor. Bu kısmı Deno geliştiricileri sizden soyutlamış
Ship Single Executable
Deno olabildiğince az linkage sahip küçük boyutta single executable oluşturulmaya çalışılır.
Use Future Tech
- Node modules Parcel compile ederek bundle dönüştürür , bu sayede Node üzerinden basit bir şekilde kullanım imkanı sağlar.
- Native Code üzerinde mükemmel bir infrastructure sağlar. (HTTP kısmı, Non-JS kısımlarda Rust , Go , C++ çözümleri)
- Promise ve await yapısının default olarak desteklenmesi..
Referanslar
Okumaya Devam Et 😃
Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.