- A JavaScript library for building visual programming editors.
+
+ Zig (Wasm)
+
+ Zig compiler running on WebAssembly.
-
-
- CSS Frameworks and Processors
-
-
diff --git a/src/livecodes/i18n/locales/ar/language-info.lokalise.json b/src/livecodes/i18n/locales/ar/language-info.lokalise.json
index 38023333ae..820f11e47e 100644
--- a/src/livecodes/i18n/locales/ar/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/ar/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "يتم تجميع Ada وتشغيله بالكامل داخل المتصفح بواسطة <1>HAC1>، وهو مُترجم Ada مكتوب بلغة Ada ومُجمَّع إلى WebAssembly. لا يتضمن ذلك أي خادم."
+ },
+ "adaWasm.link": {
+ "translation": "
مركز معلومات Ada برمجة Ada (ويكيبوكس) مستودع HAC وثائق LiveCodes تحميل قالب البداية "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "محرك قوالب جافا سكريبت عالي الأداء."
},
diff --git a/src/livecodes/i18n/locales/ar/language-info.ts b/src/livecodes/i18n/locales/ar/language-info.ts
index 1b2f626006..16dd949bed 100644
--- a/src/livecodes/i18n/locales/ar/language-info.ts
+++ b/src/livecodes/i18n/locales/ar/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: 'يتم تجميع Ada وتشغيله بالكامل داخل المتصفح بواسطة <1>HAC1>، وهو مُترجم Ada مكتوب بلغة Ada ومُجمَّع إلى WebAssembly. لا يتضمن ذلك أي خادم.',
+ link: '<1> <2>مركز معلومات Ada2> 1> <3> <4>برمجة Ada (ويكيبوكس)4> 3> <5> <6>مستودع HAC6> 5> <7> <8>وثائق LiveCodes8> 7> <9> <10>تحميل قالب البداية10> 9>',
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: 'محرك قوالب جافا سكريبت عالي الأداء.',
link: '<1> <2>الموقع الرسمي لـ art-template2> 1> <3> <4>وثائق art-template4> 3>',
diff --git a/src/livecodes/i18n/locales/ar/translation.lokalise.json b/src/livecodes/i18n/locales/ar/translation.lokalise.json
index c6b9eb8552..af9cd63c23 100644
--- a/src/livecodes/i18n/locales/ar/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/ar/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "بحث في القوالب..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "قالب Ada (Wasm)"
+ },
"templates.starter.angular": {
"translation": "قالب Angular"
},
diff --git a/src/livecodes/i18n/locales/ar/translation.ts b/src/livecodes/i18n/locales/ar/translation.ts
index 39dbc343fe..f5850a8907 100644
--- a/src/livecodes/i18n/locales/ar/translation.ts
+++ b/src/livecodes/i18n/locales/ar/translation.ts
@@ -975,6 +975,7 @@ const translation: I18nTranslation = {
placeholder: 'بحث في القوالب...',
},
starter: {
+ 'ada-wasm': 'قالب Ada (Wasm)',
angular: 'قالب Angular',
assemblyscript: 'قالب AssemblyScript',
astro: 'قالب Astro',
diff --git a/src/livecodes/i18n/locales/bn/language-info.lokalise.json b/src/livecodes/i18n/locales/bn/language-info.lokalise.json
index cfc18bef11..a00baa7d34 100644
--- a/src/livecodes/i18n/locales/bn/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/bn/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "Ada সম্পূর্ণরূপে ব্রাউজারে <1>HAC1> দ্বারা কম্পাইল ও চালিত হয়, যা Ada-তে লেখা এবং WebAssembly-তে কম্পাইল করা একটি Ada কম্পাইলার। কোনো সার্ভার জড়িত নয়।"
+ },
+ "adaWasm.link": {
+ "translation": "
Ada তথ্য কেন্দ্র Ada প্রোগ্রামিং (উইকিবই) HAC রিপো LiveCodes ডকুমেন্টেশন স্টার্টার টেমপ্লেট লোড করুন "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "উচ্চ কর্মক্ষমতা সম্পন্ন JavaScript টেমপ্লেটিং ইঞ্জিন।"
},
diff --git a/src/livecodes/i18n/locales/bn/language-info.ts b/src/livecodes/i18n/locales/bn/language-info.ts
index 1f5e5385f0..f0e077f321 100644
--- a/src/livecodes/i18n/locales/bn/language-info.ts
+++ b/src/livecodes/i18n/locales/bn/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: 'Ada সম্পূর্ণরূপে ব্রাউজারে <1>HAC1> দ্বারা কম্পাইল ও চালিত হয়, যা Ada-তে লেখা এবং WebAssembly-তে কম্পাইল করা একটি Ada কম্পাইলার। কোনো সার্ভার জড়িত নয়।',
+ link: '<1> <2>Ada তথ্য কেন্দ্র2> 1> <3> <4>Ada প্রোগ্রামিং (উইকিবই)4> 3> <5> <6>HAC রিপো6> 5> <7> <8>LiveCodes ডকুমেন্টেশন8> 7> <9> <10>স্টার্টার টেমপ্লেট লোড করুন10> 9>',
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: 'উচ্চ কর্মক্ষমতা সম্পন্ন JavaScript টেমপ্লেটিং ইঞ্জিন।',
link: '<1> <2>art-template অফিসিয়াল ওয়েবসাইট2> 1> <3> <4>art-template ডকুমেন্টেশন4> 3>',
diff --git a/src/livecodes/i18n/locales/bn/translation.lokalise.json b/src/livecodes/i18n/locales/bn/translation.lokalise.json
index 3e607cb36d..6a5f6bb154 100644
--- a/src/livecodes/i18n/locales/bn/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/bn/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "টেমপ্লেটগুলিতে অনুসন্ধান করুন..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "Ada (Wasm) স্টার্টার"
+ },
"templates.starter.angular": {
"translation": "Angular স্টার্টার"
},
diff --git a/src/livecodes/i18n/locales/bn/translation.ts b/src/livecodes/i18n/locales/bn/translation.ts
index 13846b917d..3e687e4e2a 100644
--- a/src/livecodes/i18n/locales/bn/translation.ts
+++ b/src/livecodes/i18n/locales/bn/translation.ts
@@ -975,6 +975,7 @@ const translation: I18nTranslation = {
placeholder: 'টেমপ্লেটগুলিতে অনুসন্ধান করুন...',
},
starter: {
+ 'ada-wasm': 'Ada (Wasm) স্টার্টার',
angular: 'Angular স্টার্টার',
assemblyscript: 'AssemblyScript স্টার্টার',
astro: 'Astro স্টার্টার',
diff --git a/src/livecodes/i18n/locales/de/language-info.lokalise.json b/src/livecodes/i18n/locales/de/language-info.lokalise.json
index 34732b7641..f2d167c930 100644
--- a/src/livecodes/i18n/locales/de/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/de/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "Ada wird vollständig im Browser von <1>HAC1> kompiliert und ausgeführt, einem in Ada geschriebenen und zu WebAssembly kompilierten Ada-Compiler. Es ist kein Server beteiligt."
+ },
+ "adaWasm.link": {
+ "translation": "
Ada-Informationsstelle Ada-Programmierung (Wikibooks) HAC Repository LiveCodes-Dokumentation Starter-Vorlage laden "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "Hochleistungsfähige JavaScript-Templating-Engine."
},
diff --git a/src/livecodes/i18n/locales/de/language-info.ts b/src/livecodes/i18n/locales/de/language-info.ts
index a54f810e9a..9d3dae2fc7 100644
--- a/src/livecodes/i18n/locales/de/language-info.ts
+++ b/src/livecodes/i18n/locales/de/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: 'Ada wird vollständig im Browser von <1>HAC1> kompiliert und ausgeführt, einem in Ada geschriebenen und zu WebAssembly kompilierten Ada-Compiler. Es ist kein Server beteiligt.',
+ link: '<1> <2>Ada-Informationsstelle2> 1> <3> <4>Ada-Programmierung (Wikibooks)4> 3> <5> <6>HAC Repository6> 5> <7> <8>LiveCodes-Dokumentation8> 7> <9> <10>Starter-Vorlage laden10> 9>',
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: 'Hochleistungsfähige JavaScript-Templating-Engine.',
link: '<1> <2>art-template offizielle Website2> 1> <3> <4>art-template Dokumentation4> 3>',
diff --git a/src/livecodes/i18n/locales/de/translation.lokalise.json b/src/livecodes/i18n/locales/de/translation.lokalise.json
index ad2ff44b02..3e852bac76 100644
--- a/src/livecodes/i18n/locales/de/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/de/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "Suche in Vorlagen..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "Ada (Wasm)-Starter"
+ },
"templates.starter.angular": {
"translation": "Angular-Starter"
},
diff --git a/src/livecodes/i18n/locales/de/translation.ts b/src/livecodes/i18n/locales/de/translation.ts
index 44da326b87..1df12f7cb7 100644
--- a/src/livecodes/i18n/locales/de/translation.ts
+++ b/src/livecodes/i18n/locales/de/translation.ts
@@ -977,6 +977,7 @@ const translation: I18nTranslation = {
placeholder: 'Suche in Vorlagen...',
},
starter: {
+ 'ada-wasm': 'Ada (Wasm)-Starter',
angular: 'Angular-Starter',
assemblyscript: 'AssemblyScript-Starter',
astro: 'Astro-Starter',
diff --git a/src/livecodes/i18n/locales/en/language-info.lokalise.json b/src/livecodes/i18n/locales/en/language-info.lokalise.json
index e062c35670..5db1650b71 100644
--- a/src/livecodes/i18n/locales/en/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/en/language-info.lokalise.json
@@ -1,5 +1,17 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "notes": "###
###\n \n\n",
+ "translation": "Ada is compiled and run entirely in the browser by HAC , an Ada compiler written in Ada and compiled to WebAssembly. No server is involved."
+ },
+ "adaWasm.link": {
+ "notes": "### ###\n \n\n### ###\n \n\n### ###\n \n\n### ###\n \n\n### ###\n \n\n### ###\n \n\n### ###\n \n\n### ###\n \n\n### ###\n \n\n### ###\n \n\n",
+ "translation": " Ada Information Clearinghouse Ada Programming (Wikibooks) HAC repo LiveCodes Documentation Load starter template "
+ },
+ "adaWasm.name": {
+ "notes": "",
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"notes": "",
"translation": "High performance JavaScript templating engine."
diff --git a/src/livecodes/i18n/locales/en/language-info.ts b/src/livecodes/i18n/locales/en/language-info.ts
index d23bdc9d3f..c3bddc3222 100644
--- a/src/livecodes/i18n/locales/en/language-info.ts
+++ b/src/livecodes/i18n/locales/en/language-info.ts
@@ -10,6 +10,11 @@ import type { I18nTranslationTemplate } from '../models';
// In view of this, properties declared in I18nAttributes (and those attributes might be used in future) shall not be used as a nested key.
const languageInfo = {
+ adaWasm: {
+ desc: 'Ada is compiled and run entirely in the browser by <1>HAC1>, an Ada compiler written in Ada and compiled to WebAssembly. No server is involved.',
+ link: '<1> <2>Ada Information Clearinghouse2> 1> <3> <4>Ada Programming (Wikibooks)4> 3> <5> <6>HAC repo6> 5> <7> <8>LiveCodes Documentation8> 7> <9> <10>Load starter template10> 9>',
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: 'High performance JavaScript templating engine.',
link: '<1> <2>art-template official website2> 1> <3> <4>art-template documentation4> 3>',
diff --git a/src/livecodes/i18n/locales/en/translation.lokalise.json b/src/livecodes/i18n/locales/en/translation.lokalise.json
index 39043df37a..a71d37884b 100644
--- a/src/livecodes/i18n/locales/en/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/en/translation.lokalise.json
@@ -2544,6 +2544,10 @@
"notes": "",
"translation": "Search templates..."
},
+ "templates.starter.ada-wasm": {
+ "notes": "",
+ "translation": "Ada (Wasm) Starter"
+ },
"templates.starter.angular": {
"notes": "",
"translation": "Angular Starter"
diff --git a/src/livecodes/i18n/locales/en/translation.ts b/src/livecodes/i18n/locales/en/translation.ts
index 1e07173b6e..122cc11c0e 100644
--- a/src/livecodes/i18n/locales/en/translation.ts
+++ b/src/livecodes/i18n/locales/en/translation.ts
@@ -982,6 +982,7 @@ const translation = {
placeholder: 'Search templates...',
},
starter: {
+ 'ada-wasm': 'Ada (Wasm) Starter',
angular: 'Angular Starter',
assemblyscript: 'AssemblyScript Starter',
astro: 'Astro Starter',
diff --git a/src/livecodes/i18n/locales/es/language-info.lokalise.json b/src/livecodes/i18n/locales/es/language-info.lokalise.json
index d7b4504d3c..7079f07103 100644
--- a/src/livecodes/i18n/locales/es/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/es/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "Ada se compila y ejecuta íntegramente en el navegador mediante <1>HAC1>, un compilador de Ada escrito en Ada y compilado a WebAssembly. No hay ningún servidor involucrado."
+ },
+ "adaWasm.link": {
+ "translation": " Centro de Información de Ada Programación en Ada (Wikibooks) Repositorio de HAC Documentación de LiveCodes Cargar plantilla de inicio "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "Motor de plantillas JavaScript de alto rendimiento."
},
diff --git a/src/livecodes/i18n/locales/es/language-info.ts b/src/livecodes/i18n/locales/es/language-info.ts
index f2cd68b4b6..7db4fa255a 100644
--- a/src/livecodes/i18n/locales/es/language-info.ts
+++ b/src/livecodes/i18n/locales/es/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: 'Ada se compila y ejecuta íntegramente en el navegador mediante <1>HAC1>, un compilador de Ada escrito en Ada y compilado a WebAssembly. No hay ningún servidor involucrado.',
+ link: '<1> <2>Centro de Información de Ada2> 1> <3> <4>Programación en Ada (Wikibooks)4> 3> <5> <6>Repositorio de HAC6> 5> <7> <8>Documentación de LiveCodes8> 7> <9> <10>Cargar plantilla de inicio10> 9>',
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: 'Motor de plantillas JavaScript de alto rendimiento.',
link: '<1> <2>Sitio web oficial de art-template2> 1> <3> <4>Documentación de art-template4> 3>',
diff --git a/src/livecodes/i18n/locales/es/translation.lokalise.json b/src/livecodes/i18n/locales/es/translation.lokalise.json
index baf14ea0e5..96ce08763d 100644
--- a/src/livecodes/i18n/locales/es/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/es/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "Buscar en plantillas..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "Inicio Ada (Wasm)"
+ },
"templates.starter.angular": {
"translation": "Inicio Angular"
},
diff --git a/src/livecodes/i18n/locales/es/translation.ts b/src/livecodes/i18n/locales/es/translation.ts
index 44e206f953..05bb61973e 100644
--- a/src/livecodes/i18n/locales/es/translation.ts
+++ b/src/livecodes/i18n/locales/es/translation.ts
@@ -975,6 +975,7 @@ const translation: I18nTranslation = {
placeholder: 'Buscar en plantillas...',
},
starter: {
+ 'ada-wasm': 'Inicio Ada (Wasm)',
angular: 'Inicio Angular',
assemblyscript: 'Inicio AssemblyScript',
astro: 'Inicio Astro',
diff --git a/src/livecodes/i18n/locales/fa/language-info.lokalise.json b/src/livecodes/i18n/locales/fa/language-info.lokalise.json
index db6c07cbf7..e16ffb22aa 100644
--- a/src/livecodes/i18n/locales/fa/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/fa/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "Ada بهطور کامل در مرورگر توسط <1>HAC1> کامپایل و اجرا میشود، که یک کامپایلر Ada نوشتهشده به زبان Ada و کامپایلشده به WebAssembly است. هیچ سروری درگیر نیست."
+ },
+ "adaWasm.link": {
+ "translation": " مرکز اطلاعات Ada برنامهنویسی Ada (ویکیکتاب) مخزن HAC مستندات LiveCodes بارگذاری قالب شروع "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "موتور قالبساز JavaScript با کارایی بالا."
},
diff --git a/src/livecodes/i18n/locales/fa/language-info.ts b/src/livecodes/i18n/locales/fa/language-info.ts
index e5b66f410c..d360fb09bc 100644
--- a/src/livecodes/i18n/locales/fa/language-info.ts
+++ b/src/livecodes/i18n/locales/fa/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: 'Ada بهطور کامل در مرورگر توسط <1>HAC1> کامپایل و اجرا میشود، که یک کامپایلر Ada نوشتهشده به زبان Ada و کامپایلشده به WebAssembly است. هیچ سروری درگیر نیست.',
+ link: '<1> <2>مرکز اطلاعات Ada2> 1> <3> <4>برنامهنویسی Ada (ویکیکتاب)4> 3> <5> <6>مخزن HAC6> 5> <7> <8>مستندات LiveCodes8> 7> <9> <10>بارگذاری قالب شروع10> 9>',
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: 'موتور قالبساز JavaScript با کارایی بالا.',
link: '<1> <2>وبسایت رسمی art-template2> 1> <3> <4>مستندات art-template4> 3>',
diff --git a/src/livecodes/i18n/locales/fa/translation.lokalise.json b/src/livecodes/i18n/locales/fa/translation.lokalise.json
index 50f54e629c..f1ba2a5c35 100644
--- a/src/livecodes/i18n/locales/fa/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/fa/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "جستجو در قالبها..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "شروع کننده Ada (Wasm)"
+ },
"templates.starter.angular": {
"translation": "شروع کننده انگولار"
},
diff --git a/src/livecodes/i18n/locales/fa/translation.ts b/src/livecodes/i18n/locales/fa/translation.ts
index abd1516a7e..25a2546bc0 100644
--- a/src/livecodes/i18n/locales/fa/translation.ts
+++ b/src/livecodes/i18n/locales/fa/translation.ts
@@ -976,6 +976,7 @@ const translation: I18nTranslation = {
placeholder: 'جستجو در قالبها...',
},
starter: {
+ 'ada-wasm': 'شروع کننده Ada (Wasm)',
angular: 'شروع کننده انگولار',
assemblyscript: 'شروع کننده AssemblyScript',
astro: 'شروع کننده Astro',
diff --git a/src/livecodes/i18n/locales/fr/language-info.lokalise.json b/src/livecodes/i18n/locales/fr/language-info.lokalise.json
index 9a15d2f196..070d5efd5f 100644
--- a/src/livecodes/i18n/locales/fr/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/fr/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "Ada est compilé et exécuté entièrement dans le navigateur par <1>HAC1>, un compilateur Ada écrit en Ada et compilé en WebAssembly. Aucun serveur n'est impliqué."
+ },
+ "adaWasm.link": {
+ "translation": " Centre d'information Ada Programmation Ada (Wikibooks) Dépôt HAC Documentation LiveCodes Charger un modèle de démarrage "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "Moteur de templates JavaScript haute performance."
},
diff --git a/src/livecodes/i18n/locales/fr/language-info.ts b/src/livecodes/i18n/locales/fr/language-info.ts
index 9b3c66283a..5720cbac93 100644
--- a/src/livecodes/i18n/locales/fr/language-info.ts
+++ b/src/livecodes/i18n/locales/fr/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: "Ada est compilé et exécuté entièrement dans le navigateur par <1>HAC1>, un compilateur Ada écrit en Ada et compilé en WebAssembly. Aucun serveur n'est impliqué.",
+ link: "<1> <2>Centre d'information Ada2> 1> <3> <4>Programmation Ada (Wikibooks)4> 3> <5> <6>Dépôt HAC6> 5> <7> <8>Documentation LiveCodes8> 7> <9> <10>Charger un modèle de démarrage10> 9>",
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: 'Moteur de templates JavaScript haute performance.',
link: "<1> <2>Site officiel d'art-template2> 1> <3> <4>Documentation d'art-template4> 3>",
diff --git a/src/livecodes/i18n/locales/fr/translation.lokalise.json b/src/livecodes/i18n/locales/fr/translation.lokalise.json
index 32a033631f..99ab92313e 100644
--- a/src/livecodes/i18n/locales/fr/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/fr/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "Recherche dans les modèles..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "Démarrage Ada (Wasm)"
+ },
"templates.starter.angular": {
"translation": "Démarrage Angular"
},
diff --git a/src/livecodes/i18n/locales/fr/translation.ts b/src/livecodes/i18n/locales/fr/translation.ts
index 8d164179e9..e9313af30b 100644
--- a/src/livecodes/i18n/locales/fr/translation.ts
+++ b/src/livecodes/i18n/locales/fr/translation.ts
@@ -977,6 +977,7 @@ const translation: I18nTranslation = {
placeholder: 'Recherche dans les modèles...',
},
starter: {
+ 'ada-wasm': 'Démarrage Ada (Wasm)',
angular: 'Démarrage Angular',
assemblyscript: 'Démarrage AssemblyScript',
astro: 'Démarrage Astro',
diff --git a/src/livecodes/i18n/locales/hi/language-info.lokalise.json b/src/livecodes/i18n/locales/hi/language-info.lokalise.json
index df0305fe70..bce912676e 100644
--- a/src/livecodes/i18n/locales/hi/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/hi/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "Ada को पूरी तरह से ब्राउज़र में <1>HAC1> द्वारा संकलित और चलाया जाता है, जो Ada में लिखा गया और WebAssembly में संकलित एक Ada कंपाइलर है। कोई सर्वर शामिल नहीं है।"
+ },
+ "adaWasm.link": {
+ "translation": " Ada सूचना केंद्र Ada प्रोग्रामिंग (विकिबुक्स) HAC रेपो लाइवकोड दस्तावेज़ीकरण स्टार्टर टेम्पलेट लोड करें "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "उच्च प्रदर्शन वाला JavaScript टेम्प्लेटिंग इंजन।"
},
diff --git a/src/livecodes/i18n/locales/hi/language-info.ts b/src/livecodes/i18n/locales/hi/language-info.ts
index bc73685ed3..2094b7d8d8 100644
--- a/src/livecodes/i18n/locales/hi/language-info.ts
+++ b/src/livecodes/i18n/locales/hi/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: 'Ada को पूरी तरह से ब्राउज़र में <1>HAC1> द्वारा संकलित और चलाया जाता है, जो Ada में लिखा गया और WebAssembly में संकलित एक Ada कंपाइलर है। कोई सर्वर शामिल नहीं है।',
+ link: '<1> <2>Ada सूचना केंद्र2> 1> <3> <4>Ada प्रोग्रामिंग (विकिबुक्स)4> 3> <5> <6>HAC रेपो6> 5> <7> <8>लाइवकोड दस्तावेज़ीकरण8> 7> <9> <10>स्टार्टर टेम्पलेट लोड करें10> 9>',
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: 'उच्च प्रदर्शन वाला JavaScript टेम्प्लेटिंग इंजन।',
link: '<1> <2>art-template आधिकारिक वेबसाइट2> 1> <3> <4>art-template दस्तावेज़ीकरण4> 3>',
diff --git a/src/livecodes/i18n/locales/hi/translation.lokalise.json b/src/livecodes/i18n/locales/hi/translation.lokalise.json
index 4d662be75b..2231e31456 100644
--- a/src/livecodes/i18n/locales/hi/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/hi/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "टेम्प्लेट में खोजें..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "Ada (Wasm) स्टार्टर"
+ },
"templates.starter.angular": {
"translation": "Angular स्टार्टर"
},
diff --git a/src/livecodes/i18n/locales/hi/translation.ts b/src/livecodes/i18n/locales/hi/translation.ts
index 8f81aff479..edba0eb9a4 100644
--- a/src/livecodes/i18n/locales/hi/translation.ts
+++ b/src/livecodes/i18n/locales/hi/translation.ts
@@ -975,6 +975,7 @@ const translation: I18nTranslation = {
placeholder: 'टेम्प्लेट में खोजें...',
},
starter: {
+ 'ada-wasm': 'Ada (Wasm) स्टार्टर',
angular: 'Angular स्टार्टर',
assemblyscript: 'AssemblyScript स्टार्टर',
astro: 'Astro स्टार्टर',
diff --git a/src/livecodes/i18n/locales/hu/language-info.lokalise.json b/src/livecodes/i18n/locales/hu/language-info.lokalise.json
index d850d90d6d..42ae79553b 100644
--- a/src/livecodes/i18n/locales/hu/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/hu/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "Az Ada-t teljes egészében a böngészőben fordítja le és futtatja a <1>HAC1>, egy Ada nyelven írt, WebAssembly-re fordított Ada-fordító. Nem vesz igénybe szervert."
+ },
+ "adaWasm.link": {
+ "translation": " Ada Információs Központ Ada programozás (Wikibooks) HAC repo LiveCodes dokumentáció Indító sablon betöltése "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "Nagy teljesítményű JavaScript sablonmotor."
},
diff --git a/src/livecodes/i18n/locales/hu/language-info.ts b/src/livecodes/i18n/locales/hu/language-info.ts
index dff8145d89..4c8674eb98 100644
--- a/src/livecodes/i18n/locales/hu/language-info.ts
+++ b/src/livecodes/i18n/locales/hu/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: 'Az Ada-t teljes egészében a böngészőben fordítja le és futtatja a <1>HAC1>, egy Ada nyelven írt, WebAssembly-re fordított Ada-fordító. Nem vesz igénybe szervert.',
+ link: '<1> <2>Ada Információs Központ2> 1> <3> <4>Ada programozás (Wikibooks)4> 3> <5> <6>HAC repo6> 5> <7> <8>LiveCodes dokumentáció8> 7> <9> <10>Indító sablon betöltése10> 9>',
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: 'Nagy teljesítményű JavaScript sablonmotor.',
link: '<1> <2>art-template hivatalos weboldal2> 1> <3> <4>art-template dokumentáció4> 3>',
diff --git a/src/livecodes/i18n/locales/hu/translation.lokalise.json b/src/livecodes/i18n/locales/hu/translation.lokalise.json
index a248df0b0a..98d100676c 100644
--- a/src/livecodes/i18n/locales/hu/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/hu/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "Sablonok keresése..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "Ada (Wasm) kezdő"
+ },
"templates.starter.angular": {
"translation": "Angular kezdő"
},
diff --git a/src/livecodes/i18n/locales/hu/translation.ts b/src/livecodes/i18n/locales/hu/translation.ts
index 7ceb81e8ae..5b9629efa8 100644
--- a/src/livecodes/i18n/locales/hu/translation.ts
+++ b/src/livecodes/i18n/locales/hu/translation.ts
@@ -976,6 +976,7 @@ const translation: I18nTranslation = {
placeholder: 'Sablonok keresése...',
},
starter: {
+ 'ada-wasm': 'Ada (Wasm) kezdő',
angular: 'Angular kezdő',
assemblyscript: 'AssemblyScript kezdő',
astro: 'Astro kezdő',
diff --git a/src/livecodes/i18n/locales/id/language-info.lokalise.json b/src/livecodes/i18n/locales/id/language-info.lokalise.json
index fc2d0d747e..de3ab82699 100644
--- a/src/livecodes/i18n/locales/id/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/id/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "Ada dikompilasi dan dijalankan sepenuhnya di dalam browser oleh <1>HAC1>, kompiler Ada yang ditulis dalam bahasa Ada dan dikompilasi ke WebAssembly. Tidak ada server yang terlibat."
+ },
+ "adaWasm.link": {
+ "translation": " Pusat Informasi Ada Pemrograman Ada (Wikibooks) Repo HAC Dokumentasi LiveCodes Muat templat awal "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "Mesin templating JavaScript berkinerja tinggi."
},
diff --git a/src/livecodes/i18n/locales/id/language-info.ts b/src/livecodes/i18n/locales/id/language-info.ts
index e2fd2ee67c..09729fe896 100644
--- a/src/livecodes/i18n/locales/id/language-info.ts
+++ b/src/livecodes/i18n/locales/id/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: 'Ada dikompilasi dan dijalankan sepenuhnya di dalam browser oleh <1>HAC1>, kompiler Ada yang ditulis dalam bahasa Ada dan dikompilasi ke WebAssembly. Tidak ada server yang terlibat.',
+ link: '<1> <2>Pusat Informasi Ada2> 1> <3> <4>Pemrograman Ada (Wikibooks)4> 3> <5> <6>Repo HAC6> 5> <7> <8>Dokumentasi LiveCodes8> 7> <9> <10>Muat templat awal10> 9>',
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: 'Mesin templating JavaScript berkinerja tinggi.',
link: '<1> <2>Situs web resmi art-template2> 1> <3> <4>Dokumentasi art-template4> 3>',
diff --git a/src/livecodes/i18n/locales/id/translation.lokalise.json b/src/livecodes/i18n/locales/id/translation.lokalise.json
index a5336ef082..c72cfa7e22 100644
--- a/src/livecodes/i18n/locales/id/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/id/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "Cari di templat..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "Pemula Ada (Wasm)"
+ },
"templates.starter.angular": {
"translation": "Pemula Angular"
},
diff --git a/src/livecodes/i18n/locales/id/translation.ts b/src/livecodes/i18n/locales/id/translation.ts
index 10b4d80774..ef255caf7f 100644
--- a/src/livecodes/i18n/locales/id/translation.ts
+++ b/src/livecodes/i18n/locales/id/translation.ts
@@ -975,6 +975,7 @@ const translation: I18nTranslation = {
placeholder: 'Cari di templat...',
},
starter: {
+ 'ada-wasm': 'Pemula Ada (Wasm)',
angular: 'Pemula Angular',
assemblyscript: 'Pemula AssemblyScript',
astro: 'Pemula Astro',
diff --git a/src/livecodes/i18n/locales/it/language-info.lokalise.json b/src/livecodes/i18n/locales/it/language-info.lokalise.json
index 7ec2743e6c..ed07ca73cb 100644
--- a/src/livecodes/i18n/locales/it/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/it/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "Ada viene compilato ed eseguito interamente nel browser da <1>HAC1>, un compilatore Ada scritto in Ada e compilato in WebAssembly. Nessun server è coinvolto."
+ },
+ "adaWasm.link": {
+ "translation": " Centro informazioni Ada Programmazione in Ada (Wikibooks) Repository di HAC Documentazione LiveCodes Carica il modello di avvio "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "Motore di templating JavaScript ad alte prestazioni."
},
diff --git a/src/livecodes/i18n/locales/it/language-info.ts b/src/livecodes/i18n/locales/it/language-info.ts
index 11d739481d..b140707bae 100644
--- a/src/livecodes/i18n/locales/it/language-info.ts
+++ b/src/livecodes/i18n/locales/it/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: 'Ada viene compilato ed eseguito interamente nel browser da <1>HAC1>, un compilatore Ada scritto in Ada e compilato in WebAssembly. Nessun server è coinvolto.',
+ link: '<1> <2>Centro informazioni Ada2> 1> <3> <4>Programmazione in Ada (Wikibooks)4> 3> <5> <6>Repository di HAC6> 5> <7> <8>Documentazione LiveCodes8> 7> <9> <10>Carica il modello di avvio10> 9>',
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: 'Motore di templating JavaScript ad alte prestazioni.',
link: '<1> <2>Sito ufficiale di art-template2> 1> <3> <4>Documentazione di art-template4> 3>',
diff --git a/src/livecodes/i18n/locales/it/translation.lokalise.json b/src/livecodes/i18n/locales/it/translation.lokalise.json
index e4f6877b00..ad7d655938 100644
--- a/src/livecodes/i18n/locales/it/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/it/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "Ricerca nei modelli..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "Starter Ada (Wasm)"
+ },
"templates.starter.angular": {
"translation": "Starter Angular"
},
diff --git a/src/livecodes/i18n/locales/it/translation.ts b/src/livecodes/i18n/locales/it/translation.ts
index b80b785bfd..cbf90a73bf 100644
--- a/src/livecodes/i18n/locales/it/translation.ts
+++ b/src/livecodes/i18n/locales/it/translation.ts
@@ -976,6 +976,7 @@ const translation: I18nTranslation = {
placeholder: 'Ricerca nei modelli...',
},
starter: {
+ 'ada-wasm': 'Starter Ada (Wasm)',
angular: 'Starter Angular',
assemblyscript: 'Starter AssemblyScript',
astro: 'Starter Astro',
diff --git a/src/livecodes/i18n/locales/ja/language-info.lokalise.json b/src/livecodes/i18n/locales/ja/language-info.lokalise.json
index 27a84cf874..0aabae175e 100644
--- a/src/livecodes/i18n/locales/ja/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/ja/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "Ada は Ada で書かれ WebAssembly にコンパイルされた Ada コンパイラである <1>HAC1> によって、完全にブラウザ内でコンパイルおよび実行されます。サーバーは関与しません。"
+ },
+ "adaWasm.link": {
+ "translation": " Ada 情報センター Ada プログラミング(Wikibooks) HAC リポジトリ LiveCodes ドキュメント スターターテンプレートを読み込む "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "高性能な JavaScript テンプレートエンジン。"
},
diff --git a/src/livecodes/i18n/locales/ja/language-info.ts b/src/livecodes/i18n/locales/ja/language-info.ts
index bcf666ea05..2f7d88d67a 100644
--- a/src/livecodes/i18n/locales/ja/language-info.ts
+++ b/src/livecodes/i18n/locales/ja/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: 'Ada は Ada で書かれ WebAssembly にコンパイルされた Ada コンパイラである <1>HAC1> によって、完全にブラウザ内でコンパイルおよび実行されます。サーバーは関与しません。',
+ link: '<1> <2>Ada 情報センター2> 1> <3> <4>Ada プログラミング(Wikibooks)4> 3> <5> <6>HAC リポジトリ6> 5> <7> <8>LiveCodes ドキュメント8> 7> <9> <10>スターターテンプレートを読み込む10> 9>',
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: '高性能な JavaScript テンプレートエンジン。',
link: '<1> <2>art-template 公式ウェブサイト2> 1> <3> <4>art-template ドキュメント4> 3>',
diff --git a/src/livecodes/i18n/locales/ja/translation.lokalise.json b/src/livecodes/i18n/locales/ja/translation.lokalise.json
index 0eb0f71759..50769d050b 100644
--- a/src/livecodes/i18n/locales/ja/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/ja/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "テンプレートで検索..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "Ada(Wasm)スターター"
+ },
"templates.starter.angular": {
"translation": "Angularスターター"
},
diff --git a/src/livecodes/i18n/locales/ja/translation.ts b/src/livecodes/i18n/locales/ja/translation.ts
index 829a0587ff..ab76fc8009 100644
--- a/src/livecodes/i18n/locales/ja/translation.ts
+++ b/src/livecodes/i18n/locales/ja/translation.ts
@@ -976,6 +976,7 @@ const translation: I18nTranslation = {
placeholder: 'テンプレートで検索...',
},
starter: {
+ 'ada-wasm': 'Ada(Wasm)スターター',
angular: 'Angularスターター',
assemblyscript: 'AssemblyScriptスターター',
astro: 'Astroスターター',
diff --git a/src/livecodes/i18n/locales/nl/language-info.lokalise.json b/src/livecodes/i18n/locales/nl/language-info.lokalise.json
index fac22ff5c3..c1c023a598 100644
--- a/src/livecodes/i18n/locales/nl/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/nl/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "Ada wordt volledig in de browser gecompileerd en uitgevoerd door <1>HAC1>, een in Ada geschreven en naar WebAssembly gecompileerde Ada-compiler. Er is geen server bij betrokken."
+ },
+ "adaWasm.link": {
+ "translation": " Ada Informatiecentrum Programmeren in Ada (Wikibooks) HAC-repo LiveCodes-documentatie Starterssjabloon laden "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "Krachtige JavaScript-sjabloonengine met hoge prestaties."
},
diff --git a/src/livecodes/i18n/locales/nl/language-info.ts b/src/livecodes/i18n/locales/nl/language-info.ts
index 856de5e36f..4f2c590baa 100644
--- a/src/livecodes/i18n/locales/nl/language-info.ts
+++ b/src/livecodes/i18n/locales/nl/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: 'Ada wordt volledig in de browser gecompileerd en uitgevoerd door <1>HAC1>, een in Ada geschreven en naar WebAssembly gecompileerde Ada-compiler. Er is geen server bij betrokken.',
+ link: '<1> <2>Ada Informatiecentrum2> 1> <3> <4>Programmeren in Ada (Wikibooks)4> 3> <5> <6>HAC-repo6> 5> <7> <8>LiveCodes-documentatie8> 7> <9> <10>Starterssjabloon laden10> 9>',
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: 'Krachtige JavaScript-sjabloonengine met hoge prestaties.',
link: '<1> <2>art-template officiële website2> 1> <3> <4>art-template documentatie4> 3>',
diff --git a/src/livecodes/i18n/locales/nl/translation.lokalise.json b/src/livecodes/i18n/locales/nl/translation.lokalise.json
index 624d65617e..36a6391edd 100644
--- a/src/livecodes/i18n/locales/nl/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/nl/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "Zoeken in sjablonen..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "Ada (Wasm)-starter"
+ },
"templates.starter.angular": {
"translation": "Angular-starter"
},
diff --git a/src/livecodes/i18n/locales/nl/translation.ts b/src/livecodes/i18n/locales/nl/translation.ts
index 0ec8463c2d..0a2241555e 100644
--- a/src/livecodes/i18n/locales/nl/translation.ts
+++ b/src/livecodes/i18n/locales/nl/translation.ts
@@ -976,6 +976,7 @@ const translation: I18nTranslation = {
placeholder: 'Zoeken in sjablonen...',
},
starter: {
+ 'ada-wasm': 'Ada (Wasm)-starter',
angular: 'Angular-starter',
assemblyscript: 'AssemblyScript-starter',
astro: 'Astro-starter',
diff --git a/src/livecodes/i18n/locales/pt/language-info.lokalise.json b/src/livecodes/i18n/locales/pt/language-info.lokalise.json
index 2c100e330d..290c3cb799 100644
--- a/src/livecodes/i18n/locales/pt/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/pt/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "O Ada é compilado e executado inteiramente no navegador pelo <1>HAC1>, um compilador Ada escrito em Ada e compilado para WebAssembly. Nenhum servidor está envolvido."
+ },
+ "adaWasm.link": {
+ "translation": " Centro de Informação Ada Programação em Ada (Wikibooks) Repositório do HAC Documentação do LiveCodes Carregar modelo inicial "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "Mecanismo de modelagem JavaScript de alto desempenho."
},
diff --git a/src/livecodes/i18n/locales/pt/language-info.ts b/src/livecodes/i18n/locales/pt/language-info.ts
index 933156099a..6933f3ad5b 100644
--- a/src/livecodes/i18n/locales/pt/language-info.ts
+++ b/src/livecodes/i18n/locales/pt/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: 'O Ada é compilado e executado inteiramente no navegador pelo <1>HAC1>, um compilador Ada escrito em Ada e compilado para WebAssembly. Nenhum servidor está envolvido.',
+ link: '<1> <2>Centro de Informação Ada2> 1> <3> <4>Programação em Ada (Wikibooks)4> 3> <5> <6>Repositório do HAC6> 5> <7> <8>Documentação do LiveCodes8> 7> <9> <10>Carregar modelo inicial10> 9>',
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: 'Mecanismo de modelagem JavaScript de alto desempenho.',
link: '<1> <2>Site oficial do art-template2> 1> <3> <4>Documentação do art-template4> 3>',
diff --git a/src/livecodes/i18n/locales/pt/translation.lokalise.json b/src/livecodes/i18n/locales/pt/translation.lokalise.json
index 90cb3b2794..d7e8b93092 100644
--- a/src/livecodes/i18n/locales/pt/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/pt/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "Procurar em modelos..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "Iniciante Ada (Wasm)"
+ },
"templates.starter.angular": {
"translation": "Iniciante Angular"
},
diff --git a/src/livecodes/i18n/locales/pt/translation.ts b/src/livecodes/i18n/locales/pt/translation.ts
index 5a3552e0ce..c23ab654e1 100644
--- a/src/livecodes/i18n/locales/pt/translation.ts
+++ b/src/livecodes/i18n/locales/pt/translation.ts
@@ -976,6 +976,7 @@ const translation: I18nTranslation = {
placeholder: 'Procurar em modelos...',
},
starter: {
+ 'ada-wasm': 'Iniciante Ada (Wasm)',
angular: 'Iniciante Angular',
assemblyscript: 'Iniciante AssemblyScript',
astro: 'Iniciante Astro',
diff --git a/src/livecodes/i18n/locales/ru/language-info.lokalise.json b/src/livecodes/i18n/locales/ru/language-info.lokalise.json
index 83b1913351..0cef7fe3d8 100644
--- a/src/livecodes/i18n/locales/ru/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/ru/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "Ada компилируется и выполняется полностью в браузере с помощью <1>HAC1> — компилятора Ada, написанного на Ada и скомпилированного в WebAssembly. Сервер не задействован."
+ },
+ "adaWasm.link": {
+ "translation": " Информационный центр Ada Программирование на Ada (Wikibooks) Репозиторий HAC Документация LiveCodes Загрузить стартовый шаблон "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "Высокопроизводительный движок шаблонов JavaScript."
},
diff --git a/src/livecodes/i18n/locales/ru/language-info.ts b/src/livecodes/i18n/locales/ru/language-info.ts
index 22498bb056..6b189fd2d4 100644
--- a/src/livecodes/i18n/locales/ru/language-info.ts
+++ b/src/livecodes/i18n/locales/ru/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: 'Ada компилируется и выполняется полностью в браузере с помощью <1>HAC1> — компилятора Ada, написанного на Ada и скомпилированного в WebAssembly. Сервер не задействован.',
+ link: '<1> <2>Информационный центр Ada2> 1> <3> <4>Программирование на Ada (Wikibooks)4> 3> <5> <6>Репозиторий HAC6> 5> <7> <8>Документация LiveCodes8> 7> <9> <10>Загрузить стартовый шаблон10> 9>',
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: 'Высокопроизводительный движок шаблонов JavaScript.',
link: '<1> <2>Официальный сайт art-template2> 1> <3> <4>Документация art-template4> 3>',
diff --git a/src/livecodes/i18n/locales/ru/translation.lokalise.json b/src/livecodes/i18n/locales/ru/translation.lokalise.json
index 7a81e119e1..549d74a7f8 100644
--- a/src/livecodes/i18n/locales/ru/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/ru/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "Поиск в шаблонах..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "Стартер Ada (Wasm)"
+ },
"templates.starter.angular": {
"translation": "Стартер Angular"
},
diff --git a/src/livecodes/i18n/locales/ru/translation.ts b/src/livecodes/i18n/locales/ru/translation.ts
index da5f831f77..307c978e6e 100644
--- a/src/livecodes/i18n/locales/ru/translation.ts
+++ b/src/livecodes/i18n/locales/ru/translation.ts
@@ -975,6 +975,7 @@ const translation: I18nTranslation = {
placeholder: 'Поиск в шаблонах...',
},
starter: {
+ 'ada-wasm': 'Стартер Ada (Wasm)',
angular: 'Стартер Angular',
assemblyscript: 'Стартер AssemblyScript',
astro: 'Стартер Astro',
diff --git a/src/livecodes/i18n/locales/tr/language-info.lokalise.json b/src/livecodes/i18n/locales/tr/language-info.lokalise.json
index 0b9ac6399c..f326d8aa2f 100644
--- a/src/livecodes/i18n/locales/tr/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/tr/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "Ada, Ada ile yazılmış ve WebAssembly'ye derlenmiş bir Ada derleyicisi olan <1>HAC1> tarafından tamamen tarayıcı içinde derlenir ve çalıştırılır. Hiçbir sunucu devreye girmez."
+ },
+ "adaWasm.link": {
+ "translation": " Ada Bilgi Merkezi Ada programlama (Wikibooks) HAC repo'su LiveCodes Belgeleri Başlangıç şablonunu yükle "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "Yüksek performanslı JavaScript şablonlama motoru."
},
diff --git a/src/livecodes/i18n/locales/tr/language-info.ts b/src/livecodes/i18n/locales/tr/language-info.ts
index dcf78e10e6..1942c15793 100644
--- a/src/livecodes/i18n/locales/tr/language-info.ts
+++ b/src/livecodes/i18n/locales/tr/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: "Ada, Ada ile yazılmış ve WebAssembly'ye derlenmiş bir Ada derleyicisi olan <1>HAC1> tarafından tamamen tarayıcı içinde derlenir ve çalıştırılır. Hiçbir sunucu devreye girmez.",
+ link: "<1> <2>Ada Bilgi Merkezi2> 1> <3> <4>Ada programlama (Wikibooks)4> 3> <5> <6>HAC repo'su6> 5> <7> <8>LiveCodes Belgeleri8> 7> <9> <10>Başlangıç şablonunu yükle10> 9>",
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: 'Yüksek performanslı JavaScript şablonlama motoru.',
link: '<1> <2>art-template resmi web sitesi2> 1> <3> <4>art-template dokümantasyonu4> 3>',
diff --git a/src/livecodes/i18n/locales/tr/translation.lokalise.json b/src/livecodes/i18n/locales/tr/translation.lokalise.json
index c6a1af7396..157cab32f4 100644
--- a/src/livecodes/i18n/locales/tr/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/tr/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "Şablonlarda arama yapın..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "Ada (Wasm) Başlangıç"
+ },
"templates.starter.angular": {
"translation": "Angular Başlangıç"
},
diff --git a/src/livecodes/i18n/locales/tr/translation.ts b/src/livecodes/i18n/locales/tr/translation.ts
index 7074052ed0..822b77f928 100644
--- a/src/livecodes/i18n/locales/tr/translation.ts
+++ b/src/livecodes/i18n/locales/tr/translation.ts
@@ -976,6 +976,7 @@ const translation: I18nTranslation = {
placeholder: 'Şablonlarda arama yapın...',
},
starter: {
+ 'ada-wasm': 'Ada (Wasm) Başlangıç',
angular: 'Angular Başlangıç',
assemblyscript: 'AssemblyScript Başlangıç',
astro: 'Astro Başlangıç',
diff --git a/src/livecodes/i18n/locales/ur/language-info.lokalise.json b/src/livecodes/i18n/locales/ur/language-info.lokalise.json
index f441a6acdf..a3a84ff70e 100644
--- a/src/livecodes/i18n/locales/ur/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/ur/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "Ada کو مکمل طور پر براؤزر میں <1>HAC1> کے ذریعے مرتب اور چلایا جاتا ہے، جو Ada میں لکھا گیا اور WebAssembly میں مرتب کردہ ایک Ada کمپائلر ہے۔ کوئی سرور شامل نہیں ہے۔"
+ },
+ "adaWasm.link": {
+ "translation": " Ada معلوماتی مرکز Ada پروگرامنگ (ویکی کتب) HAC ریپو LiveCodes دستاویزات اسٹارٹر ٹیمپلیٹ لوڈ کریں "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "اعلی کارکردگی والا جاوا اسکرپٹ ٹیمپلیٹنگ انجن۔"
},
diff --git a/src/livecodes/i18n/locales/ur/language-info.ts b/src/livecodes/i18n/locales/ur/language-info.ts
index a25dd7203b..3c4f6d8e0e 100644
--- a/src/livecodes/i18n/locales/ur/language-info.ts
+++ b/src/livecodes/i18n/locales/ur/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: 'Ada کو مکمل طور پر براؤزر میں <1>HAC1> کے ذریعے مرتب اور چلایا جاتا ہے، جو Ada میں لکھا گیا اور WebAssembly میں مرتب کردہ ایک Ada کمپائلر ہے۔ کوئی سرور شامل نہیں ہے۔',
+ link: '<1> <2>Ada معلوماتی مرکز2> 1> <3> <4>Ada پروگرامنگ (ویکی کتب)4> 3> <5> <6>HAC ریپو6> 5> <7> <8>LiveCodes دستاویزات8> 7> <9> <10>اسٹارٹر ٹیمپلیٹ لوڈ کریں10> 9>',
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: 'اعلی کارکردگی والا جاوا اسکرپٹ ٹیمپلیٹنگ انجن۔',
link: '<1> <2>آرٹ-ٹیمپلیٹ کی سرکاری ویب سائٹ2> 1> <3> <4>آرٹ-ٹیمپلیٹ کی دستاویزات4> 3>',
diff --git a/src/livecodes/i18n/locales/ur/translation.lokalise.json b/src/livecodes/i18n/locales/ur/translation.lokalise.json
index 10555a2acf..199dbf0648 100644
--- a/src/livecodes/i18n/locales/ur/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/ur/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "ٹیمپلیٹس میں تلاش کریں..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "Ada (واسم) شروعاتی"
+ },
"templates.starter.angular": {
"translation": "اینگولر شروعاتی"
},
diff --git a/src/livecodes/i18n/locales/ur/translation.ts b/src/livecodes/i18n/locales/ur/translation.ts
index 569eb3eca6..b459e186c4 100644
--- a/src/livecodes/i18n/locales/ur/translation.ts
+++ b/src/livecodes/i18n/locales/ur/translation.ts
@@ -975,6 +975,7 @@ const translation: I18nTranslation = {
placeholder: 'ٹیمپلیٹس میں تلاش کریں...',
},
starter: {
+ 'ada-wasm': 'Ada (واسم) شروعاتی',
angular: 'اینگولر شروعاتی',
assemblyscript: 'اسمبلی اسکرپٹ شروعاتی',
astro: 'ایسٹرو شروعاتی',
diff --git a/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json b/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json
index c9f28b1e41..f0709416d2 100644
--- a/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json
@@ -1,5 +1,14 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
+ "adaWasm.desc": {
+ "translation": "Ada 由用 Ada 编写并编译为 WebAssembly 的 Ada 编译器 <1>HAC1> 完全在浏览器中编译和运行。不涉及任何服务器。"
+ },
+ "adaWasm.link": {
+ "translation": " Ada 信息交换中心 Ada 编程(Wikibooks) HAC 仓库 LiveCodes 文档 加载入门模板 "
+ },
+ "adaWasm.name": {
+ "translation": "Ada (Wasm)"
+ },
"artTemplate.desc": {
"translation": "高性能 JavaScript 模板引擎。"
},
diff --git a/src/livecodes/i18n/locales/zh-CN/language-info.ts b/src/livecodes/i18n/locales/zh-CN/language-info.ts
index a409bbd88e..3da244a757 100644
--- a/src/livecodes/i18n/locales/zh-CN/language-info.ts
+++ b/src/livecodes/i18n/locales/zh-CN/language-info.ts
@@ -3,6 +3,11 @@
import type { I18nLangInfoTranslation } from '../models';
const languageInfo: I18nLangInfoTranslation = {
+ adaWasm: {
+ desc: 'Ada 由用 Ada 编写并编译为 WebAssembly 的 Ada 编译器 <1>HAC1> 完全在浏览器中编译和运行。不涉及任何服务器。',
+ link: '<1> <2>Ada 信息交换中心2> 1> <3> <4>Ada 编程(Wikibooks)4> 3> <5> <6>HAC 仓库6> 5> <7> <8>LiveCodes 文档8> 7> <9> <10>加载入门模板10> 9>',
+ name: 'Ada (Wasm)',
+ },
artTemplate: {
desc: '高性能 JavaScript 模板引擎。',
link: '<1> <2> art-template 官方网站2> 1> <3> <4> art-template 文档4> 3>',
diff --git a/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json b/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json
index 1ca9e4db36..8f275b7779 100644
--- a/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json
@@ -1908,6 +1908,9 @@
"templates.search.placeholder": {
"translation": "在模板中搜索..."
},
+ "templates.starter.ada-wasm": {
+ "translation": "Ada(WASM)启动模板"
+ },
"templates.starter.angular": {
"translation": "Angular 启动模板"
},
diff --git a/src/livecodes/i18n/locales/zh-CN/translation.ts b/src/livecodes/i18n/locales/zh-CN/translation.ts
index 507e90cc23..11c6918b95 100644
--- a/src/livecodes/i18n/locales/zh-CN/translation.ts
+++ b/src/livecodes/i18n/locales/zh-CN/translation.ts
@@ -973,6 +973,7 @@ const translation: I18nTranslation = {
placeholder: '在模板中搜索...',
},
starter: {
+ 'ada-wasm': 'Ada(WASM)启动模板',
angular: 'Angular 启动模板',
assemblyscript: 'AssemblyScript 启动模板',
astro: 'Astro 启动模板',
diff --git a/src/livecodes/languages/ada-wasm/__tests__/lang-ada-wasm.spec.ts b/src/livecodes/languages/ada-wasm/__tests__/lang-ada-wasm.spec.ts
new file mode 100644
index 0000000000..67a586515f
--- /dev/null
+++ b/src/livecodes/languages/ada-wasm/__tests__/lang-ada-wasm.spec.ts
@@ -0,0 +1,34 @@
+import type { CompileOptions, Compiler, Config } from '../../../models';
+import { adaWasm } from '../lang-ada-wasm';
+
+describe('ada-wasm', () => {
+ const compiler = adaWasm.compiler as Compiler;
+
+ test('has the expected name, title and extensions', () => {
+ expect(adaWasm.name).toBe('ada-wasm');
+ expect(adaWasm.title).toBe('Ada (Wasm)');
+ expect(adaWasm.extensions).toEqual(
+ expect.arrayContaining(['ada', 'adb', 'ads', 'hac', 'wasm.ada']),
+ );
+ });
+
+ test('uses the script editor with the ada-wasm script type', () => {
+ expect(adaWasm.editor).toBe('script');
+ expect(compiler.scriptType).toBe('text/ada-wasm');
+ expect(compiler.compiledCodeLanguage).toBe('ada-wasm');
+ });
+
+ test('loads only the runner script on the page (the runtime lives in a worker)', () => {
+ const scripts =
+ typeof compiler.scripts === 'function'
+ ? compiler.scripts({ baseUrl: 'base/', config: {} as Config, compiled: '' })
+ : compiler.scripts;
+ expect(scripts).toEqual(['base/{{hash:lang-ada-wasm-script.js}}']);
+ });
+
+ test('compiler factory is the identity (compilation happens in the runner)', async () => {
+ const fn = await compiler.factory({} as Config, '');
+ const code = 'procedure H is begin null; end H;';
+ expect(await fn(code, {} as CompileOptions as any)).toBe(code);
+ });
+});
diff --git a/src/livecodes/languages/ada-wasm/index.ts b/src/livecodes/languages/ada-wasm/index.ts
new file mode 100644
index 0000000000..c44098e971
--- /dev/null
+++ b/src/livecodes/languages/ada-wasm/index.ts
@@ -0,0 +1 @@
+export * from './lang-ada-wasm';
diff --git a/src/livecodes/languages/ada-wasm/lang-ada-wasm-script.ts b/src/livecodes/languages/ada-wasm/lang-ada-wasm-script.ts
new file mode 100644
index 0000000000..58d7190c31
--- /dev/null
+++ b/src/livecodes/languages/ada-wasm/lang-ada-wasm-script.ts
@@ -0,0 +1,302 @@
+/* eslint-disable no-console */
+import { createWorkerFromContent, getErrorMessage } from '../../utils/utils';
+import { adaWasmBaseUrl } from '../../vendors';
+
+// Ada is compiled and run by HAC (@live-codes/ada-wasm), a single self-contained
+// WebAssembly bundle. It runs inside a dedicated worker so a non-terminating
+// program can be torn down without hanging the result page.
+
+const SCRIPT_TYPE = 'text/ada-wasm';
+
+const BOOT_TIMEOUT_MS = 2 * 60_000;
+const RUN_TIMEOUT_MS = 60_000;
+
+interface WorkerRunResult {
+ stdout: string;
+ stderr: string;
+ exitCode: number;
+}
+
+interface RunResult {
+ input: string;
+ output: string | null;
+ error: string | null;
+ exitCode: number | null;
+}
+
+interface Runner {
+ ensureReady: () => Promise;
+ run: (code: string, input: string) => Promise;
+ destroy: () => void;
+}
+
+interface AdaWasmApi {
+ ready: boolean;
+ failed: boolean;
+ input: string;
+ output: string | null;
+ error: string | null;
+ exitCode: number | null;
+ loaded: Promise;
+ init: Promise | null;
+ runner?: Runner;
+ run: (input?: string) => Promise;
+}
+
+declare const window: Window & {
+ livecodes: Record;
+};
+
+const withTimeout = (
+ promise: Promise,
+ ms: number,
+ message: string,
+ onTimeout?: () => void,
+): Promise =>
+ new Promise((resolve, reject) => {
+ const timer = setTimeout(() => {
+ onTimeout?.();
+ reject(new Error(message));
+ }, ms);
+ promise.then(
+ (value) => {
+ clearTimeout(timer);
+ resolve(value);
+ },
+ (error) => {
+ clearTimeout(timer);
+ reject(error);
+ },
+ );
+ });
+
+const getWorkerSrc = () => `
+importScripts(${JSON.stringify(adaWasmBaseUrl + 'dist/ada-wasm.iife.js')});
+
+let runtimePromise = null;
+const getRuntime = () => {
+ runtimePromise = runtimePromise || self.AdaWasm.createRuntime();
+ return runtimePromise;
+};
+
+addEventListener('message', async (event) => {
+ const { id, code, input } = event.data;
+ try {
+ const runtime = await getRuntime();
+ const result = await runtime.run(code, { input });
+ postMessage({
+ id,
+ result: {
+ stdout: result.stdout,
+ stderr: result.stderr,
+ exitCode: result.exitCode,
+ },
+ });
+ } catch (error) {
+ postMessage({ id, error: String((error && error.message) || error) });
+ }
+});
+
+getRuntime().then(
+ () => postMessage({ type: 'ready' }),
+ (error) => postMessage({ type: 'error', message: String((error && error.message) || error) }),
+);
+`;
+
+interface Pending {
+ resolve: (result: WorkerRunResult) => void;
+ reject: (error: Error) => void;
+}
+
+const createRunner = (): Runner => {
+ let worker: Worker | null = null;
+ let ready: Promise | null = null;
+ let settleReady: ((error?: Error) => void) | null = null;
+ let pending: Record = {};
+ let nextId = 1;
+
+ const failAll = (error: Error) => {
+ for (const id of Object.keys(pending)) {
+ pending[Number(id)].reject(error);
+ }
+ pending = {};
+ };
+
+ const teardown = (error?: Error) => {
+ worker?.terminate();
+ worker = null;
+ ready = null;
+ settleReady?.(error);
+ settleReady = null;
+ if (error) failAll(error);
+ };
+
+ const onMessage = (event: MessageEvent) => {
+ const message = event.data ?? {};
+ if (message.type === 'ready') {
+ settleReady?.();
+ settleReady = null;
+ return;
+ }
+ if (message.type === 'error') {
+ // The runtime failed to load (network, or the browser is unsupported).
+ teardown(new Error(message.message));
+ return;
+ }
+ const request = pending[message.id];
+ if (!request) return;
+ delete pending[message.id];
+ if (message.error != null) {
+ request.reject(new Error(message.error));
+ } else {
+ request.resolve(message.result);
+ }
+ };
+
+ const spawn = () => {
+ ready = new Promise((resolve, reject) => {
+ settleReady = (error?: Error) => (error ? reject(error) : resolve());
+ });
+ worker = createWorkerFromContent(getWorkerSrc());
+ worker.onmessage = onMessage;
+ worker.onerror = (event) => teardown(new Error(`The Ada worker crashed: ${event.message}`));
+ };
+
+ const ensureReady = async () => {
+ if (!ready) spawn();
+ await ready;
+ };
+
+ const run = (code: string, input: string) =>
+ ensureReady().then(
+ () =>
+ new Promise((resolve, reject) => {
+ const id = nextId++;
+ pending[id] = { resolve, reject };
+ worker?.postMessage({ id, code, input });
+ }),
+ );
+
+ return { ensureReady, run, destroy: () => teardown() };
+};
+
+const setResult = (
+ input: string,
+ output: string | null,
+ error: string | null,
+ exitCode: number | null,
+): RunResult => {
+ adaWasm.input = input;
+ adaWasm.output = output;
+ adaWasm.error = error;
+ adaWasm.exitCode = exitCode;
+ adaWasm.ready = true;
+
+ if (error != null) {
+ console.error(error);
+ } else if (output != null) {
+ console.log(output);
+ }
+ return { input, output, error, exitCode };
+};
+
+window.livecodes.adaWasm ??= {} as AdaWasmApi;
+
+const adaWasm = window.livecodes.adaWasm;
+adaWasm.ready = false;
+adaWasm.failed = false;
+
+/** Start (once) loading the runtime in a worker, showing the loading indicator. */
+const ensureLoaded = (runner: Runner): Promise => {
+ let init = adaWasm.init;
+ if (!init) {
+ adaWasm.failed = false;
+ init = (async () => {
+ parent.postMessage({ type: 'loading', payload: true }, '*');
+ try {
+ await withTimeout(
+ runner.ensureReady(),
+ BOOT_TIMEOUT_MS,
+ 'Timed out while loading the Ada compiler.',
+ () => runner.destroy(),
+ );
+ } finally {
+ parent.postMessage({ type: 'loading', payload: false }, '*');
+ }
+ })().catch((error: Error) => {
+ // Reset so a later run can retry the download.
+ adaWasm.init = null;
+ adaWasm.failed = true;
+ throw error;
+ });
+ // The failure is surfaced through `run`; do not also report it unhandled.
+ init.catch(() => undefined);
+ adaWasm.init = init;
+ }
+ return init;
+};
+
+adaWasm.loaded = new Promise((resolve, reject) => {
+ const interval = setInterval(() => {
+ if (adaWasm.failed) {
+ clearInterval(interval);
+ reject(new Error(adaWasm.error || 'Failed to initialize the Ada environment'));
+ } else if (adaWasm.ready) {
+ clearInterval(interval);
+ resolve();
+ }
+ }, 50);
+});
+
+adaWasm.run = async (input?: string) => {
+ const stdin = `${input ?? adaWasm.input ?? ''}`;
+ adaWasm.input = stdin;
+
+ let code = '';
+ document.querySelectorAll(`script[type="${SCRIPT_TYPE}"]`).forEach((script) => {
+ code += `${script.innerHTML}\n`;
+ });
+ if (!code.trim()) return setResult(stdin, null, null, 0);
+
+ const runner = (adaWasm.runner = adaWasm.runner || createRunner());
+
+ try {
+ await ensureLoaded(runner);
+ } catch (error) {
+ return setResult(stdin, null, `Error: ${getErrorMessage(error)}`, 1);
+ }
+
+ try {
+ const result = await withTimeout(
+ runner.run(code, stdin),
+ RUN_TIMEOUT_MS,
+ 'Ada execution timed out.',
+ () => {
+ // A non-terminating program leaves the worker busy, so tear it down and
+ // let the next run start from a fresh worker.
+ runner.destroy();
+ adaWasm.runner = undefined;
+ adaWasm.init = null;
+ },
+ );
+
+ // Compiler diagnostics (and runtime errors) go to stderr; a clean compile
+ // produces none.
+ const stderr = result.stderr.trim();
+ if (stderr) {
+ return setResult(stdin, result.stdout || null, stderr, result.exitCode || 1);
+ }
+ return setResult(stdin, result.stdout, null, result.exitCode);
+ } catch (error) {
+ return setResult(stdin, null, `Error: ${getErrorMessage(error)}`, 1);
+ }
+};
+
+// Alias so both `livecodes.adaWasm` and `livecodes.ada` are available.
+window.livecodes.ada = adaWasm;
+
+window.addEventListener('load', async () => {
+ parent.postMessage({ type: 'loading', payload: true }, '*');
+ await adaWasm.run(adaWasm.input);
+ parent.postMessage({ type: 'loading', payload: false }, '*');
+});
diff --git a/src/livecodes/languages/ada-wasm/lang-ada-wasm.ts b/src/livecodes/languages/ada-wasm/lang-ada-wasm.ts
new file mode 100644
index 0000000000..d927d6cdc5
--- /dev/null
+++ b/src/livecodes/languages/ada-wasm/lang-ada-wasm.ts
@@ -0,0 +1,25 @@
+import { codemirrorLegacy } from '../../editor/codemirror/utils';
+import type { LanguageSpecs } from '../../models';
+import { codeMirrorBaseUrl, monacoLanguagesBaseUrl } from '../../vendors';
+
+export const adaWasm: LanguageSpecs = {
+ name: 'ada-wasm',
+ title: 'Ada (Wasm)',
+ compiler: {
+ factory: () => async (code) => code,
+ scripts: ({ baseUrl }) => [baseUrl + '{{hash:lang-ada-wasm-script.js}}'],
+ scriptType: 'text/ada-wasm',
+ compiledCodeLanguage: 'ada-wasm',
+ liveReload: true,
+ },
+ extensions: ['ada', 'adb', 'ads', 'hac', 'wasm.ada'],
+ editor: 'script',
+ editorSupport: {
+ monaco: { languageSupport: monacoLanguagesBaseUrl + 'ada.js', language: 'ada' },
+ codemirror: {
+ languageSupport: async () =>
+ codemirrorLegacy((await import(codeMirrorBaseUrl + 'codemirror-lang-pascal.js')).pascal),
+ },
+ codejar: { language: 'ada' },
+ },
+};
diff --git a/src/livecodes/languages/languages.ts b/src/livecodes/languages/languages.ts
index d5c82b27c8..36e5fe549b 100644
--- a/src/livecodes/languages/languages.ts
+++ b/src/livecodes/languages/languages.ts
@@ -1,4 +1,5 @@
import type { LanguageSpecs } from '../models';
+import { adaWasm } from './ada-wasm';
import { artTemplate } from './art-template';
import { asciidoc } from './asciidoc';
import { assemblyscript } from './assemblyscript';
@@ -169,7 +170,6 @@ export const languages: LanguageSpecs[] = [
rustWasm,
swiftWasm,
zigWasm,
- pascal,
java,
csharpWasm,
vbWasm,
@@ -190,6 +190,8 @@ export const languages: LanguageSpecs[] = [
fennel,
julia,
tcl,
+ adaWasm,
+ pascal,
assemblyscript,
wat,
sql,
diff --git a/src/livecodes/models.ts b/src/livecodes/models.ts
index 123d42e961..5be16541a8 100644
--- a/src/livecodes/models.ts
+++ b/src/livecodes/models.ts
@@ -219,6 +219,7 @@ export interface Compiler {
| 'text/minizinc'
| 'text/go-wasm'
| 'text/swift-wasm'
+ | 'text/ada-wasm'
| 'application/json'
| 'application/lua'
| 'text/fennel'
@@ -266,6 +267,7 @@ export type TemplateAlias =
| 'rust'
| 'rs'
| 'swift'
+ | 'ada'
| 'hs'
| 'hs-wasm'
| 'pl'
diff --git a/src/livecodes/templates/starter/ada-wasm-starter.ts b/src/livecodes/templates/starter/ada-wasm-starter.ts
new file mode 100644
index 0000000000..9801be0ed8
--- /dev/null
+++ b/src/livecodes/templates/starter/ada-wasm-starter.ts
@@ -0,0 +1,95 @@
+import type { Template } from '../../models';
+
+export const adaWasmStarter: Template = {
+ name: 'ada-wasm',
+ aliases: ['ada'],
+ title: window.deps.translateString('templates.starter.ada-wasm', 'Ada (Wasm) Starter'),
+ thumbnail: 'assets/templates/ada.png',
+ activeEditor: 'script',
+ markup: {
+ language: 'html',
+ content: `
+
+
Hello, World !
+
+
You clicked 0 times.
+
Loading...
+
+
+
+`.trimStart(),
+ },
+ style: {
+ language: 'css',
+ content: `
+.container,
+.container button {
+ text-align: center;
+ font: 1em sans-serif;
+}
+.logo {
+ width: 150px;
+}
+`.trimStart(),
+ },
+ script: {
+ language: 'ada-wasm',
+ content: `
+with HAT; use HAT;
+
+procedure Ada_Demo is
+ Current : Integer;
+begin
+ -- The current count arrives on standard input, so every run is a fresh
+ -- program that prints the next value.
+ Get (Current);
+ Put_Line ("Ada");
+ Put_Line (Current + 1, 1);
+end Ada_Demo;
+`.trimStart(),
+ },
+};
diff --git a/src/livecodes/templates/starter/index.ts b/src/livecodes/templates/starter/index.ts
index 065b978a12..eef0e7fde5 100644
--- a/src/livecodes/templates/starter/index.ts
+++ b/src/livecodes/templates/starter/index.ts
@@ -1,5 +1,6 @@
// this is bundled to build/livecodes/templates.js
+import { adaWasmStarter } from './ada-wasm-starter';
import { angularStarter } from './angular-starter';
import { assemblyscriptStarter } from './assemblyscript-starter';
import { astroStarter } from './astro-starter';
@@ -137,7 +138,6 @@ export const starterTemplates = [
rustWasmStarter,
swiftWasmStarter,
zigWasmStarter,
- pascalStarter,
javaStarter,
csharpWasmStarter,
vbWasmStarter,
@@ -158,6 +158,8 @@ export const starterTemplates = [
fennelStarter,
juliaStarter,
tclStarter,
+ adaWasmStarter,
+ pascalStarter,
assemblyscriptStarter,
watStarter,
sqlStarter,
diff --git a/src/livecodes/vendors.ts b/src/livecodes/vendors.ts
index 25b9789f28..001f809d6c 100644
--- a/src/livecodes/vendors.ts
+++ b/src/livecodes/vendors.ts
@@ -7,6 +7,8 @@ export const vendorsBaseUrl = // 'http://127.0.0.1:8081/';
export const acornUrl = /* @__PURE__ */ getUrl('acorn@8.12.1/dist/acorn.js');
+export const adaWasmBaseUrl = /* @__PURE__ */ getUrl('@live-codes/ada-wasm@0.1.1/');
+
export const artTemplateUrl = /* @__PURE__ */ getUrl('art-template@4.13.2/lib/template-web.js');
export const asciidocUrl = /* @__PURE__ */ getUrl(
@@ -344,7 +346,7 @@ export const monacoBaseUrl = /* @__PURE__ */ getUrl('@live-codes/monaco-editor@0
export const monacoEmacsUrl = /* @__PURE__ */ getUrl('monaco-emacs@0.3.0/dist/monaco-emacs.js');
export const monacoLanguagesBaseUrl = /* @__PURE__ */ getUrl(
- '@live-codes/monaco-languages@0.3.6/dist/',
+ '@live-codes/monaco-languages@0.3.8/dist/',
);
export const monacoThemesBaseUrl = /* @__PURE__ */ getUrl('monaco-themes@0.4.4/themes/');
diff --git a/src/sdk/models.ts b/src/sdk/models.ts
index 46a357d626..d5557dacfd 100644
--- a/src/sdk/models.ts
+++ b/src/sdk/models.ts
@@ -263,6 +263,12 @@ export type Language =
| 'swift'
| 'swift-wasm'
| 'wasm.swift'
+ | 'ada'
+ | 'ada-wasm'
+ | 'adb'
+ | 'ads'
+ | 'hac'
+ | 'wasm.ada'
| 'rust'
| 'zig'
| 'zig-wasm'
@@ -462,6 +468,7 @@ export type TemplateName =
| 'fanak'
| 'rust-wasm'
| 'swift-wasm'
+ | 'ada-wasm'
| 'zig-wasm'
| 'pascal'
| 'perl'
diff --git a/storybook/_stories/EmbedOptions/template.ts b/storybook/_stories/EmbedOptions/template.ts
index da0d6f4de4..e734bf29f5 100644
--- a/storybook/_stories/EmbedOptions/template.ts
+++ b/storybook/_stories/EmbedOptions/template.ts
@@ -78,6 +78,8 @@ const storyDef: StoryDef = {
Fennel: { props: { template: 'fennel' } },
Julia: { props: { template: 'julia' } },
Tcl: { props: { template: 'tcl' } },
+ AdaWasm: { props: { template: 'ada-wasm' } },
+ Pascal: { props: { template: 'pascal' } },
AssemblyScript: { props: { template: 'assemblyscript' }, storyName: 'AssemblyScript' },
WebAssemblyText: { props: { template: 'wat' }, storyName: 'WebAssembly Text' },
SQL: { props: { template: 'sql' } },
diff --git a/vendor-licenses.md b/vendor-licenses.md
index f2171a41a2..77e959ca41 100644
--- a/vendor-licenses.md
+++ b/vendor-licenses.md
@@ -4,6 +4,8 @@ This is a list of software packages used by LiveCodes (sorted alphabetically) an
Acorn: [MIT License](https://github.com/acornjs/acorn/blob/fb4c5820138c21f93edd801985be5061db21a672/acorn/LICENSE)
+Ada (HAC): [MIT License](https://github.com/zertovitch/hac/blob/master/LICENSE) (the HAC Ada Compiler, compiled to WebAssembly and packaged by [@live-codes/ada-wasm](https://www.npmjs.com/package/@live-codes/ada-wasm): [MIT License](https://github.com/live-codes/browser-ada/blob/main/LICENSE). The bundled GNAT/AdaWebPack WebAssembly runtime is [GPL-3.0-or-later with the GCC Runtime Library Exception](https://www.gnu.org/licenses/gcc-exception-3.1.html))
+
art-template: [MIT License](https://github.com/aui/art-template/blob/71333a3a6df78f231cb5d795d13872bf4fcd52c2/LICENSE)
Asciidoctor.js: [MIT License](https://github.com/asciidoctor/asciidoctor.js/blob/9d57b34084966f35d5c542ae4feed4941bf57903/LICENSE)