WebAssembly

WebAssembly — portativ ikili kod formatını və çalışdırıla bilən proqramlar üçün müvafiq mətn formatını, həmçinin bu cür proqramlar və onların əsas mühiti arasında qarşılıqlı əlaqəni asanlaşdırmaq üçün proqram interfeyslərini təyin edən proqramlaşdırma dili.

WebAssembly-nin əsas məqsədi veb səhifələrdə yüksək performanslı tətbiqləri istifadəyə verməkdir, lakin o, vebə özəl fərziyyələr irəli sürmür və ya vebə özəl xüsusiyyətlər təmin etmir, ona görə də digər mühitlərdə də istifadə oluna bilər. WebAssembly açıq standartdır və istənilən əməliyyat sistemində istənilən dili dəstəkləməyi hədəfləyir və praktikada ən populyar dillərin hamısı artıq ən azı müəyyən səviyyədə dəstəyə malikdir.

2015-ci ildə elan edilən və ilk dəfə 2017-ci ilin martında buraxılan WebAssembly 5 dekabr 2019-cu ildə W3C-nin tövsiyəsi oldu və 2021-ci ildə ACM SIGPLAN-ın "Proqramlaşdırma Dilləri Proqramı Mükafatı"nı qazandı. W3C Mozilla, Microsoft, Google, Apple, Fastly, Intel və Red Hat şirkətlərinin töhfələri ilə standartı idarə edir.
 Tarixi 
WebAssembly, 1950-ci illərə aid bir termin olan assembler dili anlayışını oyandırmaq üçün adlandırılmışdır. Adı, istifadəçinin veb-brauzeri vasitəsilə veb-sayt istifadəçisinin kompüteri tərəfindən müştəri tərəfində icra ediləcəyi assemblerə bənzər proqramlaşdırmanın gətirilməsini təklif edir. Bunu həyata keçirmək üçün WebAssembly həqiqi assembler dilindən daha çox aparatdan asılı olmayan dil olmalıdır.

WebAssembly ilk dəfə 2015-ci ildə elan edildi və ilk nümayişi Firefox, Google Chrome və Microsoft Edge-də Unity-nin "Angry Bots" oyununu çalışdıra bilməsi idi. Əvvəlki texnologiyalar Mozilla-nın asm.js-i və Google Native Client idi və ilk tətbiqi asm.js funksiyalar dəstinə əsaslanırdı. asm.js texnologiyası onsuz da lokal kodun icra sürətini təmin edir və WebAssembly-i dəstəkləməyən və ya təhlükəsizlik səbəbi ilə onu söndürən brauzerlər üçün əlverişli alternativ hesab edilə bilər.

2017-ci ilin mart ayında hazıra yaxın məhsulun dizaynının tamamlandığı elan edildi və ilkin test mərhələsi başa çatdı. 2017-ci ilin sentyabr ayının sonunda Safari 11 WebAssembly dəstəyi ilə birlikdə buraxıldı. 2018-ci ilin fevral ayında WebAssembly İşçi Qrupu Əsas Spesifikasiya, JavaScript İnterfeysi və Veb API üçün üç ictimai iş layihəsini dərc etdi.

2019-cu ilin iyun ayında Chrome 75 versiyasına defolt olaraq aktivləşdirilmiş WebAssembly tredləri funksiyası əlavə edildi.

2022-ci ilin aprel ayından WebAssembly 2.0 qaralama statusundadır ki, bu da SIMD ilə əlaqəli bir çox təlimat və yeni v128 data tipi, funksiyalar üçün çoxsaylı dəyər döndürmək imkanı və kütləvi yaddaşın işə salınması/kopyalanması xüsusiyyətini əlavə edir.

 Nümunə 
+C mənbə kodu və əlaqəli WebAssembly koduC mənbə koduWebAssembly  mətn formatıWebAssembly  binar formatıint factorial(int n) {
  if (n == 0)
    return 1;
  else
    return n * factorial(n-1);
}(func (param i64) (result i64)
  local.get 0
  i64.eqz
  if (result i64)
      i64.const 1
  else
      local.get 0
      local.get 0
      i64.const 1
      i64.sub
      call 0
      i64.mul
  end)00 61 73 6D 01 00 00 00
01 06 01 60 01 7E 01 7E
03 02 01 00
0A 17 01
15 00
20 00
50
04 7E
42 01
05
20 00
20 00
42 01
7D
10 00
7E
0B
0B

 İstinadlar 

 Xarici keçidlər 


 W3C Community Group
 WebAssembly Design
 .wasm is WebAssembly Binary File
  with info on browser compatibility and specifications (WebAssembly JavaScript API)