AssemblyScript - AssemblyScript

AssemblyScript
AssemblyScript logosu 2020.svg
Paradigma Çok paradigma : işlevsel , genel , zorunlu , nesne yönelimli
Aile JavaScript , TypeScript
Tarafından dizayn edilmiştir Daniel Wirtz, Max Graey
Geliştirici AssemblyScript Projesi
İlk ortaya çıktı 2017 ; 4 yıl önce  ( 2017 )
Kararlı sürüm
0.18.29 / 28 Nisan 2021 ; 0 gün önce  ( 2021-04-28 )
Yazma disiplini Statik
Dürbün Sözcüksel
Lisans Apache Lisans 2.0
Dosya adı uzantıları .ts
Dosya formatları Metin , Unicode (kaynak)
.wasm ikili biçimi (nesne)
İnternet sitesi www .assemblyscript .org
Başlıca uygulamalar
asc (AssemblyScript derleyicisi)
Tarafından etkilenmiş
JavaScript , TypeScript , WebAssembly

AssemblyScript bir olan typescript tabanlı dil programlama için optimize edilmiştir (statik türleri ile esasen JavaScript) WebAssembly ve kullanma WebAssembly için derlenmiş asc , referans AssemblyScript derleyici. AssemblyScript Projesi ve AssemblyScript topluluğu tarafından geliştirilmiştir.

Genel Bakış

2017'de, düşük seviyeli bir bayt kodu ve ilişkili bir sanal makine için standart bir tanım olan WebAssembly için desteğin mevcudiyeti, büyük Web tarayıcıları arasında yaygınlaştı ve Web geliştiricilerine istemci tarafı için daha düşük seviyeli ve potansiyel olarak daha yüksek performanslı bir derleme hedefi sağladı. yorumlanmış (ve ayrıca tipik olarak dinamik olarak derlenmiş ) JavaScript Web komut dosyası diline ek olarak Web tarayıcılarında yürütülecek programlar ve uygulamalar . WebAssembly , yorumlama ek yükü veya dinamik derlemenin ilk gecikmesi olmadan Web tarayıcılarında potansiyel olarak yerel düzeyde veya " çıplak metal " performansında çalışmak için programların ve kodun önceden statik olarak derlenmesine izin verir .

Büyük Web tarayıcılarında WebAssembly benimsenmesiyle Alon Zakai, yaratıcısı Emscripten , bir LLVM / Clang tabanlı C ve C ++ bir alt kümesi hedeflenen derleyici JavaScript denilen asm.js izin Emscripten bir derleme hedef olarak WebAssembly için ilave destek Doğrudan WebAssembly içinde derlenecek C ve / veya C ++ programları ve kodu.

Emscripten ve benzeri derleyiciler Web geliştiricileri yeni kodu veya yazmak için olanak sağlarken liman C, C ++ gibi yüksek seviyeli bir dilde yazılmış varolan kodu, Go ve Rust potansiyel olarak yüksek Web tarayıcılarında, yerli düzey yürütme performansı elde etmek WebAssembly için Bu, istemci tarafı Web komut dosyaları geliştirmeye alışmış Web geliştiricilerini JavaScript'te ( Web tarayıcılarında fiilen istemci tarafı programlama dili) WebAssembly'ı hedeflemek için JavaScript'ten farklı bir dil kullanmaya zorlar. Sözdizimsel olarak JavaScript ile neredeyse aynı olan bir TypeScript varyantı olan AssemblyScript, JavaScript'e alışmış geliştiricilerin WebAssembly'ı hedeflemek için tanıdık bir dil kullanmasına olanak tanıyarak, WebAssembly için derlenebilecek ayrı bir dilin öğrenme eğrisini potansiyel olarak azaltabilir. Ayrıca, AssemblyScript, WebAssembly için en uygun kaynak dil olacak şekilde tasarlandığından, dilin tür sistemi WebAssembly'ninkini yakından yansıtır ve dil, özel donanımı yansıtan WebAssembly talimatlarıyla doğrudan eşleşen standart düşük düzeyli işlevler (genellikle makrolar olarak uygulanır ) sağlar. SIMD ve vektör talimatları gibi modern işlemciler tarafından sağlanan talimatlar ve şifreleme ve kriptografik kitaplıklar gibi uygulamalarda kullanılan ( clz önde gelen sıfır bitleri ctz sayma ), (sondaki sıfır bitleri sayma ) ve popcnt ( popülasyon sayımı ) gibi daha özel talimatlar .

AssemblyScript derleyici asc , Alon Zakai tarafından geliştirilen ve WebAssembly için derleyen ve Emscripten'in ( Zakai'nin de geliştirdiği) bir bileşeni olan bir arka uç derleyici araç zinciri olan Binaryen'e dayanmaktadır . Artan derleyici ve diğer takım yoluyla ulaşılabilir npm paket yöneticisiyle.

WebAssembly, başlangıçta Web tarayıcıları içinde yürütülmek üzere tasarlanmış olsa da, WebAssembly programlarının sistem çağrılarına ve diğer işletim sistemi işlevlerine erişmesine izin veren standart bir API için topluluk özelliği olan WASI'nin (WebAssembly System Interface) geliştirilmesi, WebAssembly çalışma zamanının geliştirilmesine yol açmıştır. WebAssembly'a izin veren Wasmtime ve Wasmer gibi projelerden ortamlar ve derlenebilen AssemblyScript gibi dillerde yazılmış kodlar, Web dışı ortamlarda da çalıştırılabilir.

JavaScript ile uyumluluk

AssemblyScript sonra gibi standart JavaScript yöntemler kullanılarak istemci tarafındaki web sayfalarına örneği oluşturulmak WebAssembly modülleri derlenmiş WebAssembly.compileStreaming ve WebAssembly.instantiateStreaming sadece standart WebAssembly ikili gibi. JavaScript ve derlenmiş WebAssembly modülleri arasında veri geçişinin yanı sıra JavaScript ve WebAssembly arasındaki işlev çağrıları, herhangi bir WebAssembly modülüyle aynıdır.

AssemblyScript dili çoğunlukla TypeScript'in bir alt kümesi olduğundan (aynı zamanda küçük bir TypeScript üst kümesine sahiptir), alt kümeyi kullanarak bir AssemblyScript programı yazmak ve bunu hem TypeScript derleyicisini hem de AssemblyScript derleyicisini kullanarak hem düz JavaScript hem de WebAssembly için derlemek mümkündür. , sırasıyla. Bu, hem JavaScript hem de WebAssembly ortamlarında çalışan taşınabilir koda izin verir.

Kullanım

Mart 2021 itibarıyla, GitHub'da barındırılan yaklaşık 3000 proje, kısmen veya tamamen AssemblyScript'te yazılıyor ve npm aracılığıyla haftada yaklaşık 5000 AssemblyScript derleyicisi indiriliyor .

Resepsiyon

Lider Emscripten geliştiricisi Alon Zakai, AssemblyScript'i "WebAssembly ve kod boyutu göz önünde bulundurularak tasarlanmış olarak nitelendirdi. Yeni bir amaç için kullandığımız mevcut bir dil değil, WebAssembly için tasarlanmış bir dil. Harika bir wasm-opt entegrasyona sahip - aslında onunla oluşturuldu - ve iyi kod boyutu elde etmek çok kolay. "

Norveçli müzisyen Peter Salomonsen, "WebAssembly Music" başlıklı 2020 WebAssembly Zirvesi konuşmasında, canlı elektronik müzik sentezinde WebAssembly için gerçek zamanlı derleme için AssemblyScript kullanımını gösterdi ve "AssemblyScript'i seçtim çünkü yüksek düzeyde okunabilirliğe sahip ve düşük seviyeli kontrol; üst düzey bir dil gibi, ancak bu düşük düzey hissine kapılıyorsunuz ve isterseniz doğrudan WebAssembly içselleri bile yazabilirsiniz. "

Aaron Turner, üst düzey mühendis hızla , AssemblyScript bir incelemede WebAssembly şirketin Compute @ Kenar Sunucusuz hesaplama ortamı için kullanır, yazdığı hizmetler sağlayıcısı bilgisayar bulut:

AssemblyScript, TypeScript'ten daha sıkı yazım gerektirse de, TypeScript sözdizimine ve anlambilime mümkün olduğunca yakın kalır - bu, çoğu JavaScript geliştiricisinin AssemblyScript'i kullanımı rahat bulacağı anlamına gelir - ve modern JavaScript ekosistemi için büyük destek sağlar. Örneğin, AssemblyScript derleyicisi npm'de ve ayrıca yaygın AssemblyScript araçları ve as-pect gibi kitaplıklarda mevcuttur . AssemblyScript dosyaları aynı zamanda TypeScript'in ' .ts ' dosya uzantısını kullanır ve AssemblyScript'in TypeScript linter gibi TypeScript araçlarına bindirmesine izin vermek için uygun tipler içerir. Doğru küçük ayarlamalarla AssemblyScript, TypeScript derleyicisiyle bile kullanılabilir.

Bu çok heyecan verici çünkü AssemblyScript, JavaScript geliştiricilerine WebAssembly için bir dil seçmeleri için düşük maliyetli bir giriş noktası sunuyor - hem AssemblyScript okumayı ve yazmayı öğrenme hem de önceden var olan birçok aracı kullanma açısından bu zaten bir JavaScript geliştiricisinin iş akışında olabilir. AssemblyScript genellikle WebAssembly topluluğunda WebAssembly’ı almak için harika bir ağ geçidi olarak anılır. Web için zaten uygulamalar yazan büyük bir geliştirici grubuna WebAssembly'ı alıp öğrenmek için bir yol sunar. Sıfırdan başlıyor olsanız ve özellikle JavaScript veya TypeScript ile aşina olmasanız bile, AssemblyScript, WebAssembly çıktısını almaya başlamak için bir dil seçerken sağlam bir seçimdir.

Bununla birlikte, Turner, dilin göreceli olarak yeniliğini ve dolayısıyla daha büyük, daha karmaşık ve yerleşik programlama dillerinde mevcut bazı özelliklerin eksikliğini dilin potansiyel eksiklikleri olarak göstermeye devam etti.

Ayrıca bakınız

Referanslar

Dış bağlantılar