Deno

Vikipedi, özgür ansiklopedi
Deno
Orijinal yazar(lar)Ryan Dahl
Geliştirici(ler)Various
İlk yayınlanma13 Mayıs 2018 (5 yıl önce) (2018-05-13)[1]
Önizleme sürümü0.32.0 / 3 Şubat 2020 (4 yıl önce) (2020-02-03)[2]
Programlama diliTypeScript, JavaScript, Rust, C++
İşletim sistemiGNU/Linux, macOS, Microsoft Windows
TürRun-time environment
Resmî sitesideno.com Bunu Vikiveri'de düzenleyin
Kod deposu Bunu Vikiveri'de düzenleyin

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.[3] 2018'de Dahl tarafından "Node.js Hakkında 10 Pişman Olduğum Şey" konuşmasında duyuruldu.[4] 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.[5][6]

Geçmiş[değiştir | kaynağı değiştir]

Deno, JSConf EU 2018'de Ryan Dahl tarafından "Node.js Hakkında 10 Pişman Olduğum Şey" adlı konuşmasında duyuruldu.[4] 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.[7]

Genel bakış[değiştir | kaynağı değiştir]

Deno, modern programcı için verimli ve güvenli bir betik ortamı olmayı hedeflemektedir.[5] 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[değiştir | kaynağı değiştir]

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.[5]

  1. ES Modülü sistemini,CommonJS yerine varsayılan modül sistemi olarak kullanır.
  2. Tarayıcılara benzer şekilde yerel veya uzak bağımlılıkları yüklemek için URL'leri kullanır.
  3. Node.js kurulumun ardından gelen NPM paket yönetim sistemi gibi bir sistemi yoktur. Deno da bu gömülü olarak gelir.
  4. 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.
  5. Çok çeşitli Web API'sine sahip tarayıcılarla daha iyi uyumluluk sağlar.
  6. Sandbox kodunu çalıştırmak için dosya sistemine ve ağ erişimine denetime izin verir.
  7. Promises, ES6 ve TypeScript özelliklerini kullanmak için sistemi yeniden tasarlanmıştır.
  8. Harici bağımlılık olmadan büyük bir standart kütüphane sağlarken çekirdek API boyutunu en aza indirir.

Örnekler[değiştir | kaynağı değiştir]

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.
}

Kaynakça[değiştir | kaynağı değiştir]

  1. ^ "Contributors, denoland/deno, Github". 30 Mayıs 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Temmuz 2019. 
  2. ^ "Deno 0.32.0". 22 Şubat 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 3 Şubat 2020GitHub vasıtasıyla. 
  3. ^ "Deno: Secure V8 TypeScript Runtime from Original Node.js Creator". InfoQ. 8 Ocak 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 17 Mayıs 2019. 
  4. ^ a b Ryan Dahl'ın İlgili Konuşması, 17 Mayıs 2019 tarihinde kaynağından arşivlendi, erişim tarihi: 13 Şubat 2020 
  5. ^ a b c "Deno Manual". deno.land. 8 Ocak 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 17 Mayıs 2019. 
  6. ^ "Ryan Dahl's Node.js regrets lead to Deno". InfoWorld. 21 Haziran 2018. 10 Haziran 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 13 Şubat 2020. 
  7. ^ "Design mistakes in Node" (PDF). Github. 6 Haziran 2018. 22 Şubat 2020 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 13 Şubat 2020. 

Dış bağlantılar[değiştir | kaynağı değiştir]