# Deno
 Deno, V8 JavaScript motoruna ve ek olarak Rust programlama diline dayanan JavaScript ve TypeScript için bir çalıştırma ortamıdır . Node.js'in yaratıcısı Ryan Dahl tarafından güvenlik ve üretkenliğe odaklanılarak geliştirilmeye başlanmıştır. 2018'de Dahl tarafından "Node.js Hakkında 10 Pişman Olduğum Şey" konuşmasında duyuruldu. Deno, ayrı bir paket yönetim sistemi gerektirmez, bunun yerine tek bir dosya içinde hem çalışma ortamı hem de paket yöneticisi rolünü üstlenir.


## Geçmiş.
Deno, JSConf EU 2018'de Ryan Dahl tarafından "Node.js Hakkında 10 Pişman Olduğum Şey" adlı konuşmasında duyuruldu. Ryan konuşmasında Node.js ile ilk tasarım kararlarından pişmanlıklarından bahsetti, API tasarımında Promises kullanmama, eski GYP inşa sisteminin kullanımı, node_modules ve package.json dosya uzantıları ve V8 problemleri gibi birçok konuya değindi.


## Genel bakış.
Deno, modern programcı için verimli ve güvenli bir betik ortamı olmayı hedeflemektedir. Deno, Node.js'ye benzer şekilde, engelleme sürümleriyle birlikte bir dizi non blocking-IO çekirdeği yardımcı programı sağlayarak olay odaklı mimariye vurgu yapar. Deno web sunucuları oluşturmak, bilimsel hesaplamalar yapmak için kullanılabilir.


### Node.js ile Karşılaştırma.
Deno ve Node.js, Google Chrome'da da kullanılan Google'ın V8 JavaScript motorunda oluşturulmuş çalışma ortamıdır. Her ikisinin de dahili olay döngüleri vardır ve komut dosyalarını çalıştırmak için komut satırı arabirimleri ve çok çeşitli sistem yardımcı programları sağlar.
Bu arada, Deno temelde Node.js'den şu yönleriyle ayrışmaktadır.
  - ES Modülü sistemini,CommonJS yerine varsayılan modül sistemi olarak kullanır. 
  - Tarayıcılara benzer şekilde yerel veya uzak bağımlılıkları yüklemek için URL'leri kullanır. 
  - Node.js kurulumun ardından gelen NPM paket yönetim sistemi gibi bir sistemi yoktur. Deno da bu gömülü olarak gelir. 
  - Javascript'in süperseti olan ve Microsoft tarafından geliştirilen Typescript ile geliştirme ortamını sunar. Bu geliştiriciye Javascript'in esnek yapısından kurtulması için iyi bir şanstır. 
  - Çok çeşitli Web API'sine sahip tarayıcılarla daha iyi uyumluluk sağlar. 
  - Sandbox kodunu çalıştırmak için dosya sistemine ve ağ erişimine denetime izin verir. 
  - Promises, ES6 ve TypeScript özelliklerini kullanmak için sistemi yeniden tasarlanmıştır. 
  - Harici bağımlılık olmadan büyük bir standart kütüphane sağlarken çekirdek API boyutunu en aza indirir.


## Örnekler.
Aşağıdakiler, okuma / yazma / ağ izinleri (sandbox modu) olmadan temel bir Deno komut dosyasını çalıştırır: 
deno run main.ts
 İlgili izni göstermek için açık komutlara gerekir: 
deno run --allow-read --allow-net main.ts
 Komut dosyasının bağımlılık ağacını incelemek için info alt komutunu kullanın: 
deno info main.ts
 Deno'daki temel bir merhaba dünya programı aşağıdakine benzer (Node.js'de olduğu gibi): 
console.log("Hello world");
 Deno, tarayıcıda bulunmayan Deno'ya özgü API'lerin çoğu için genel ad alanı sağlar. Bir Unix cat programı aşağıdaki gibi uygulanabilir: 
/* cat.ts */
/* Aşağıdaki fonksiyonlar Deno namespace'inden devralınır. */
const { stdout, open, copy, args } = Deno;
for (let i = 0; i < args.length; i++) {
 const filename = args[i]; // Komut satırı bağımsız değişkenleri ele alır.
 const file = await open(filename); //Filename adıyla dönen osyalar open fonksiyonu ile açılır.
 await copy(stdout, file); // Asenkron olarak kopyalanır.