diff --git a/.agents/skills/livecodes/language-support/references/languages.md b/.agents/skills/livecodes/language-support/references/languages.md index 12df9d3b6d..ec7ad2679a 100644 --- a/.agents/skills/livecodes/language-support/references/languages.md +++ b/.agents/skills/livecodes/language-support/references/languages.md @@ -108,46 +108,47 @@ Enabled via `processors` config: ### Backend Languages -| Name | Aliases | Notes | -| --------------------------- | ---------------------------------------------- | ----------------------------------------------------- | -| Python | `python`, `py` | Brython (Python -> JS) | -| Python (Wasm) | `pyodide`, `python-wasm`, `py-wasm` | Pyodide runtime (~15MB) | -| Ruby | `ruby`, `rb` | Opal (Ruby -> JS) | -| Ruby (Wasm) | `ruby-wasm`, `wasm.rb` | Ruby WASM | -| Go | `go`, `golang` | Gopherjs (Go -> JS) | -| Go (Wasm) | `go-wasm`, `wasm.go` | Go WASM | -| PHP | `php` | Uniter (PHP -> JS) | -| PHP | `php`, `php-wasm`, `wasm.php` | PHP WASM | -| C (Wasm) | `c-wasm`, `cwasm`, `wasm.c`, `c` | Clang WASM | -| C++ | `cpp`, | JSCPP interpreter | -| C++ (Wasm) | `cpp-wasm`, `clang`, `wasm.cpp` | Clang WASM | -| Objective-C | `objc-wasm`, `objc`, `wasm.m` | Clang WASM | -| Objective-C++ | `objcpp-wasm`, `objcpp`, `wasm.mm` | Clang WASM | -| Java | `java` | Java runtime | -| C# | `csharp-wasm`, `cs`, `cs-wasm`, `wasm.cs` | C# WASM | -| VB.NET | `vb-wasm`, `vb`, `vbnet`, `wasm.vb` | VB.NET WASM | -| F# | `fsharp`, `fs`, `fsx` | Fable (F# -> JS) | -| F# (Wasm) | `fsharp-wasm`, `fs-wasm`, `wasm.fs` | .NET WASM | -| R | `r`, `rlang`, `rstats`, `r-wasm` | R WASM | -| Lua | `lua`, `lua-wasm`, `luawasm`, `wasm.lua` | Lua WASM | -| Teal | `teal`, `tl` | Typed Lua | -| Fennel | `fennel`, `fnl` | Lua lisp | -| Julia | `julia`, `jl` | Julia runtime | -| Scheme | `scheme`, `scm` | BiwaScheme | -| Common Lisp | `commonlisp`, `common-lisp`, `lisp` | Common Lisp | -| ClojureScript (Cherry) | `clojurescript-cherry`, `cljs-cherry` | Cherry transpiler; imports npm packages as ES modules | -| ClojureScript (self-hosted) | `clojurescript-selfhosted`, `cljs-selfhosted` | Official ClojureScript compiler; no npm imports | -| Perl | `perl`, `pl`, `pm` | Perl runtime | -| Pascal | `pascal`, `pas`, `pp`, `pas2js` | pas2js (Pascal -> JS, WASM) | -| Gleam | `gleam` | Gleam language | -| Elm | `elm` | Elm compiler (WASM) | -| Haskell | `haskell`, `hs`, `lhs` | MicroHs (not GHC) | -| Haskell (Wasm) | `haskell-wasm`, `hs-wasm`, `wasm.hs`, `hswasm` | GHC WASM | -| Rust (Wasm) | `rust-wasm`, `rs-wasm`, `wasm.rs` | Rust WASM | -| Swift (Wasm) | `swift-wasm`, `swift`, `wasm.swift` | Swift WASM | -| Zig (Wasm) | `zig-wasm`, `zig` | Zig WASM | -| Tcl | `tcl` | Tcl interpreter | -| WebAssembly | `wat`, `wast`, `wasm`, `webassembly` | WAT format | +| Name | Aliases | Notes | +| --------------------------- | -------------------------------------------------- | ----------------------------------------------------- | +| Python | `python`, `py` | Brython (Python -> JS) | +| Python (Wasm) | `pyodide`, `python-wasm`, `py-wasm` | Pyodide runtime (~15MB) | +| Ruby | `ruby`, `rb` | Opal (Ruby -> JS) | +| Ruby (Wasm) | `ruby-wasm`, `wasm.rb` | Ruby WASM | +| Go | `go`, `golang` | Gopherjs (Go -> JS) | +| Go (Wasm) | `go-wasm`, `wasm.go` | Go WASM | +| PHP | `php` | Uniter (PHP -> JS) | +| PHP | `php`, `php-wasm`, `wasm.php` | PHP WASM | +| C (Wasm) | `c-wasm`, `cwasm`, `wasm.c`, `c` | Clang WASM | +| C++ | `cpp`, | JSCPP interpreter | +| C++ (Wasm) | `cpp-wasm`, `clang`, `wasm.cpp` | Clang WASM | +| Objective-C | `objc-wasm`, `objc`, `wasm.m` | Clang WASM | +| Objective-C++ | `objcpp-wasm`, `objcpp`, `wasm.mm` | Clang WASM | +| Java | `java` | Java runtime | +| C# | `csharp-wasm`, `cs`, `cs-wasm`, `wasm.cs` | C# WASM | +| VB.NET | `vb-wasm`, `vb`, `vbnet`, `wasm.vb` | VB.NET WASM | +| F# | `fsharp`, `fs`, `fsx` | Fable (F# -> JS) | +| F# (Wasm) | `fsharp-wasm`, `fs-wasm`, `wasm.fs` | .NET WASM | +| R | `r`, `rlang`, `rstats`, `r-wasm` | R WASM | +| Lua | `lua`, `lua-wasm`, `luawasm`, `wasm.lua` | Lua WASM | +| Teal | `teal`, `tl` | Typed Lua | +| Fennel | `fennel`, `fnl` | Lua lisp | +| Julia | `julia`, `jl` | Julia runtime | +| Scheme | `scheme`, `scm` | BiwaScheme | +| Common Lisp | `commonlisp`, `common-lisp`, `lisp` | Common Lisp | +| ClojureScript (Cherry) | `clojurescript-cherry`, `cljs-cherry` | Cherry transpiler; imports npm packages as ES modules | +| ClojureScript (self-hosted) | `clojurescript-selfhosted`, `cljs-selfhosted` | Official ClojureScript compiler; no npm imports | +| Perl | `perl`, `pl`, `pm` | Perl runtime | +| Pascal | `pascal`, `pas`, `pp`, `pas2js` | pas2js (Pascal -> JS, WASM) | +| Ada (Wasm) | `ada`, `ada-wasm`, `adb`, `ads`, `hac`, `wasm.ada` | HAC (Ada -> WASM) | +| Gleam | `gleam` | Gleam language | +| Elm | `elm` | Elm compiler (WASM) | +| Haskell | `haskell`, `hs`, `lhs` | MicroHs (not GHC) | +| Haskell (Wasm) | `haskell-wasm`, `hs-wasm`, `wasm.hs`, `hswasm` | GHC WASM | +| Rust (Wasm) | `rust-wasm`, `rs-wasm`, `wasm.rs` | Rust WASM | +| Swift (Wasm) | `swift-wasm`, `swift`, `wasm.swift` | Swift WASM | +| Zig (Wasm) | `zig-wasm`, `zig` | Zig WASM | +| Tcl | `tcl` | Tcl interpreter | +| WebAssembly | `wat`, `wast`, `wasm`, `webassembly` | WAT format | ### Data & Logic Languages diff --git a/README.md b/README.md index 29b061bfdb..dff28ff934 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ A [feature-rich](https://livecodes.io/docs/features/), open-source, **client-sid [![LiveCodes: npm version](https://img.shields.io/npm/v/livecodes)](https://www.npmjs.com/package/livecodes) [![LiveCodes: npm downloads](https://img.shields.io/npm/dm/livecodes)](https://www.npmjs.com/package/livecodes) [![LiveCodes: jsdelivr downloads](https://data.jsdelivr.com/v1/package/npm/livecodes/badge?style=rounded)](https://www.jsdelivr.com/package/npm/livecodes) -[![LiveCodes: languages](https://img.shields.io/badge/languages-111-blue)](https://livecodes.io/docs/languages/) +[![LiveCodes: languages](https://img.shields.io/badge/languages-112-blue)](https://livecodes.io/docs/languages/) [![LiveCodes: docs](https://img.shields.io/badge/Documentation-575757?logo=gitbook&logoColor=white)](https://livecodes.io/docs/) [![LiveCodes: llms.txt](https://img.shields.io/badge/llms.txt-575757?logo=googledocs&logoColor=white)](https://livecodes.io/docs/llms.txt) [![LiveCodes: llms-full.txt](https://img.shields.io/badge/llms--full.txt-575757?logo=googledocs&logoColor=white)](https://livecodes.io/docs/llms-full.txt) diff --git a/docs/docs/languages/ada-wasm.mdx b/docs/docs/languages/ada-wasm.mdx new file mode 100644 index 0000000000..73e239bf83 --- /dev/null +++ b/docs/docs/languages/ada-wasm.mdx @@ -0,0 +1,129 @@ +# Ada (Wasm) + +[Ada](https://www.adaic.org/) is a statically typed, high-level programming language designed for safety, reliability and maintainability. + +In LiveCodes, Ada is compiled and run entirely in the browser by [HAC](https://github.com/zertovitch/hac), an Ada compiler written in Ada and compiled to WebAssembly. No backend is involved. + +:::info Note + +HAC implements a subset of Ada 2022 (roughly the "Pascal subset" plus packages): no access types (pointers), no generics, and only constrained types. I/O is provided by the built-in `HAT` package. + +::: + +## Usage + +Demo: + +import LiveCodes from '../../src/components/LiveCodes.tsx'; + +export const adaConfig = { + activeEditor: 'script', + script: { + language: 'ada-wasm', + content: `with HAT; use HAT;\n +procedure Ada_Demo is + function Fibonacci (N : Natural) return Natural is + begin + if N < 2 then + return N; + else + return Fibonacci (N - 1) + Fibonacci (N - 2); + end if; + end Fibonacci; +begin + Put_Line ("Hello from Ada, running in your browser!"); + for I in 0 .. 10 loop + Put ("Fib ("); + Put (I, 1); + Put (") = "); + Put_Line (Fibonacci (I), 1); + end loop; +end Ada_Demo;`, + }, + mode: 'simple', + editor: 'auto', + tools: { + status: 'full', + }, +}; + + + +### Standard I/O + +Ada code runs in the context of the [result page](../features/result.mdx). Standard output (e.g. `HAT.Put` and `HAT.Put_Line`) is captured and displayed in the [console](../features/console.mdx). Standard input is passed by setting the `livecodes.ada.input` property in JavaScript and is read in Ada using `HAT.Get`/`HAT.Get_Line`. + +### Communication with JavaScript + +The Ada code runs in the context of the result page. A few helper properties and methods are available in the browser global `livecodes.ada` object: + +- `livecodes.ada.input`: The standard input passed to the Ada program. It can be set before the initial run, or passed to `run` for subsequent runs. +- `livecodes.ada.loaded`: A promise that resolves when the Ada compiler is fully loaded (and rejects if it fails to load). Other helpers should be used after this promise resolves. +- `livecodes.ada.output`: The standard output of the last run. +- `livecodes.ada.error`: The compiler diagnostics or runtime error of the last run, if any. +- `livecodes.ada.exitCode`: The exit code of the last run. +- `livecodes.ada.run(input)`: Runs the code in the editor, optionally passing standard input, and returns a promise that resolves to `{ output, error, exitCode }`. + +```js +await livecodes.ada.loaded; +const { output, error, exitCode } = await livecodes.ada.run(livecodes.ada.input); +console.log(output); +``` + +## Language Info + +### Name + +`ada-wasm` + +### Aliases / Extensions + +`ada`, `adb`, `ads`, `hac`, `wasm.ada` + +### Editor + +`script` + +## Compiler + +[HAC](https://github.com/zertovitch/hac) (HAC Ada Compiler), an Ada compiler and p-code virtual machine written in Ada, compiled to WebAssembly. It is packaged for the browser by [`@live-codes/ada-wasm`](https://www.npmjs.com/package/@live-codes/ada-wasm). + +### Version + +HAC 0.45 + +## Code Formatting + +Not supported. + +## Limitations + +HAC implements a subset of Ada, so not all Ada programs compile: + +- No access types (pointers), no generics, and only constrained types. +- `String` support is limited; use `HAT.VString` for variable-length strings. +- Tasking is partially implemented. +- Programs are single-file. Use the `HAT` package for input/output. + +## Example Usage + +This example passes standard input and runs the code again on each click, using the browser global `livecodes.ada` (also check the code in the HTML editor): + + + +## Live Reload + +By default, new code changes are sent to the result page for re-evaluation without a full page reload, avoiding the need to reinitialize the Ada WebAssembly compiler. This behavior can be disabled by adding the code comment `-- __livecodes_reload__` to the Ada code, which forces a full page reload. + +This comment can be added in the [`hiddenContent` property of the editor](../configuration/configuration-object.mdx#markup) for embedded playgrounds. + +## Starter Template + +https://livecodes.io/?template=ada-wasm + +## Links + +- [Ada Information Clearinghouse](https://www.adaic.org/) +- [Ada Programming (Wikibooks)](https://en.wikibooks.org/wiki/Ada_Programming) +- [HAC Ada Compiler](https://github.com/zertovitch/hac) +- [@live-codes/ada-wasm](https://www.npmjs.com/package/@live-codes/ada-wasm) diff --git a/docs/src/components/LanguageSliders.tsx b/docs/src/components/LanguageSliders.tsx index 88dbd76c58..68fcdd031d 100644 --- a/docs/src/components/LanguageSliders.tsx +++ b/docs/src/components/LanguageSliders.tsx @@ -97,7 +97,6 @@ export default function Sliders() { { name: 'haskell', title: 'Haskell' }, { name: 'haskell-wasm', title: 'Haskell (Wasm)' }, { name: 'zig-wasm', title: 'Zig (Wasm)' }, - { name: 'pascal', title: 'Pascal' }, { name: 'java', title: 'Java' }, { name: 'csharp-wasm', title: 'C# (Wasm)' }, { name: 'vb-wasm', title: 'VB.NET (Wasm)' }, @@ -116,6 +115,8 @@ export default function Sliders() { { name: 'fennel', title: 'Fennel' }, { name: 'julia', title: 'Julia' }, { name: 'tcl', title: 'Tcl' }, + { name: 'ada-wasm', title: 'Ada (Wasm)' }, + { name: 'pascal', title: 'Pascal' }, { name: 'assemblyscript', title: 'AssemblyScript' }, { name: 'wat', title: 'WAT' }, { name: 'sql', title: 'SQL' }, diff --git a/docs/src/components/TemplateList.tsx b/docs/src/components/TemplateList.tsx index c5eed9f3fb..d28479e831 100644 --- a/docs/src/components/TemplateList.tsx +++ b/docs/src/components/TemplateList.tsx @@ -55,7 +55,6 @@ const templates = [ { name: 'haskell', title: 'Haskell Starter', thumbnail: 'haskell.svg' }, { name: 'haskell-wasm', title: 'Haskell (Wasm) Starter', thumbnail: 'haskell.svg' }, { name: 'zig-wasm', title: 'Zig (Wasm) Starter', thumbnail: 'zig.svg' }, - { name: 'pascal', title: 'Pascal Starter', thumbnail: 'pascal.png' }, { name: 'java', title: 'Java Starter', thumbnail: 'java.svg' }, { name: 'csharp-wasm', title: 'C# (Wasm)', thumbnail: 'csharp.svg' }, { name: 'vb-wasm', title: 'VB.NET (Wasm)', thumbnail: 'vb.svg' }, @@ -74,6 +73,8 @@ const templates = [ { name: 'fennel', title: 'Fennel Starter', thumbnail: 'fennel.svg' }, { name: 'julia', title: 'Julia Starter', thumbnail: 'julia.svg' }, { name: 'tcl', title: 'Tcl Starter', thumbnail: 'tcl.svg' }, + { name: 'ada-wasm', title: 'Ada (Wasm) Starter', thumbnail: 'ada.svg' }, + { name: 'pascal', title: 'Pascal Starter', thumbnail: 'pascal.png' }, { name: 'markdown', title: 'Markdown Starter', thumbnail: 'markdown.svg' }, { name: 'assemblyscript', title: 'AssemblyScript Starter', thumbnail: 'assemblyscript.svg' }, { name: 'wat', title: 'WebAssembly Text Starter', thumbnail: 'webassembly.svg' }, diff --git a/e2e/specs/starter.spec.ts b/e2e/specs/starter.spec.ts index 593807883f..1a9c8f1bdb 100644 --- a/e2e/specs/starter.spec.ts +++ b/e2e/specs/starter.spec.ts @@ -380,6 +380,32 @@ test.describe('Starter Templates from UI', () => { await expect(getResult().locator('text=You clicked')).toHaveText('You clicked 3 times.'); }); + test('ada-wasm Starter', async ({ page, getTestUrl }) => { + // the HAC Ada compiler (~1.4 MB) is downloaded on the first run + test.slow(); + + await page.goto(getTestUrl()); + + const { app, getResult, waitForResultUpdate } = await getLoadedApp(page); + + await app.click('[aria-label="Project"]'); + await app.click('text=New'); + await app.click('text=Ada (Wasm) Starter'); + + await waitForEditorFocus(app); + await waitForResultUpdate(); + + // the counter stays disabled until the compiler has loaded and run once + await expect(getResult().locator('#counter-button')).toBeEnabled({ timeout: 120_000 }); + + await getResult().click('text=Click me'); + await getResult().click('text=Click me'); + await getResult().click('text=Click me'); + + await expect(getResult().locator('h1')).toHaveText('Hello, Ada!'); + await expect(getResult().locator('text=You clicked')).toHaveText('You clicked 3 times.'); + }); + test('c-wasm Starter', async ({ page, getTestUrl }) => { // the compiler, linker and sysroot (~29 MB) are downloaded on the first run test.slow(); diff --git a/functions/vendors/templates.js b/functions/vendors/templates.js index 778222ad6b..4965caaf86 100644 --- a/functions/vendors/templates.js +++ b/functions/vendors/templates.js @@ -53,7 +53,6 @@ export const starterTemplates = { "rust-wasm": "Rust (Wasm) Starter", "swift-wasm": "Swift (Wasm) Starter", "zig-wasm": "Zig (Wasm) Starter", - "pascal": "Pascal Starter", "java": "Java Starter", "csharp-wasm": "C# (Wasm) Starter", "vb-wasm": "VB.NET (Wasm) Starter", @@ -74,6 +73,8 @@ export const starterTemplates = { "fennel": "Fennel Starter", "julia": "Julia Starter", "tcl": "Tcl Starter", + "ada-wasm": "Ada (Wasm) Starter", + "pascal": "Pascal Starter", "assemblyscript": "AssemblyScript Starter", "wat": "WebAssembly Text Starter", "sql": "SQL Starter", diff --git a/scripts/build.js b/scripts/build.js index 1082e5535c..4076296545 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -268,6 +268,7 @@ const iifeBuild = () => 'languages/solid/lang-solid-compiler.ts', 'languages/sql/lang-sql-compiler.ts', 'languages/swift-wasm/lang-swift-wasm-script.ts', + 'languages/ada-wasm/lang-ada-wasm-script.ts', 'languages/sql/lang-sql-script.ts', 'languages/svelte/lang-svelte-compiler.ts', 'languages/tcl/lang-tcl-script.ts', diff --git a/server/php/inc/starter-templates.json b/server/php/inc/starter-templates.json index 6e0d4057da..59211a6c48 100644 --- a/server/php/inc/starter-templates.json +++ b/server/php/inc/starter-templates.json @@ -53,7 +53,6 @@ "rust-wasm": "Rust (Wasm) Starter", "swift-wasm": "Swift (Wasm) Starter", "zig-wasm": "Zig (Wasm) Starter", - "pascal": "Pascal Starter", "java": "Java Starter", "csharp-wasm": "C# (Wasm) Starter", "vb-wasm": "VB.NET (Wasm) Starter", @@ -74,6 +73,8 @@ "fennel": "Fennel Starter", "julia": "Julia Starter", "tcl": "Tcl Starter", + "ada-wasm": "Ada (Wasm) Starter", + "pascal": "Pascal Starter", "assemblyscript": "AssemblyScript Starter", "wat": "WebAssembly Text Starter", "sql": "SQL Starter", diff --git a/src/livecodes/UI/command-menu-actions.ts b/src/livecodes/UI/command-menu-actions.ts index cf1d5e3090..de483b577a 100644 --- a/src/livecodes/UI/command-menu-actions.ts +++ b/src/livecodes/UI/command-menu-actions.ts @@ -309,7 +309,6 @@ export const getCommandMenuActions = ({ 'rust-wasm', 'swift-wasm', 'zig-wasm', - 'pascal', 'java', 'csharp-wasm', 'vb-wasm', @@ -330,6 +329,8 @@ export const getCommandMenuActions = ({ 'fennel', 'julia', 'tcl', + 'ada-wasm', + 'pascal', 'assemblyscript', 'wat', 'sql', diff --git a/src/livecodes/assets/templates/ada.png b/src/livecodes/assets/templates/ada.png new file mode 100644 index 0000000000..ef3eca2c6d Binary files /dev/null and b/src/livecodes/assets/templates/ada.png differ diff --git a/src/livecodes/html/language-info.html b/src/livecodes/html/language-info.html index 42b5ffaa8c..c1dc7d4ec2 100644 --- a/src/livecodes/html/language-info.html +++ b/src/livecodes/html/language-info.html @@ -1,3 +1,36 @@ +
+

Ada (Wasm)

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

art-template

@@ -116,6 +149,40 @@

BBCode

+
+

Blockly

+
+ A JavaScript library for building visual programming editors. +
+ +

Civet

@@ -487,108 +554,6 @@

C# (Wasm)

- -
-

VB.NET (Wasm)

-
- VB.NET compiler running on WebAssembly, using - Roslyn and the - .NET WebAssembly runtime -
- -
- -
-

Zig (Wasm)

-
- Zig compiler running on WebAssembly. -
- -
- -
-

Pascal

-
- Pascal running in the browser using pas2js (by the Free Pascal team) compiled to WebAssembly. -
- -
-

Diagrams

(Experimental)
@@ -1462,157 +1427,90 @@

Nunjucks

-
-

Rust (Wasm)

-
- Rust is interpreted by - Miri (the Rust - mid-level IR interpreter) compiled to WebAssembly, running entirely in the browser. +
+

OCaml

+
+ OCaml is an industrial-strength programming language supporting functional, imperative and + object-oriented styles.
-
-
-

Swift (Wasm)

-
- Swift is compiled to WebAssembly by the Swift compiler itself: swift-frontend and - wasm-ld, both compiled to WebAssembly, run entirely in the browser. No server is - involved. +
+

Pascal

+
+ Pascal running in the browser using pas2js (by the Free Pascal team) compiled to WebAssembly.
-
-
-

Twig

-
- A JavaScript implementation of the - Twig - PHP templating language by - Twig.js -
-
+
+

Rust (Wasm)

+
+ Rust is interpreted by + Miri (the Rust + mid-level IR interpreter) compiled to WebAssembly, running entirely in the browser. +
+ +

Sass

Syntactically Awesome Style Sheets.
@@ -2347,6 +2276,49 @@

Stencil

+
+

CSS Frameworks and Processors

+ +

Stylis

Light-weight css preprocessor.
@@ -2415,6 +2387,39 @@

Svelte

+
+

Swift (Wasm)

+
+ Swift is compiled to WebAssembly by the Swift compiler itself: swift-frontend and + wasm-ld, both compiled to WebAssembly, run entirely in the browser. No server is + involved. +
+ +

Tcl (Tool Command Language)

@@ -2501,6 +2506,38 @@

TSX

+
+

Twig

+
+ A JavaScript implementation of the + Twig + PHP templating language by + Twig.js +
+ +

TypeScript

A Typed Superset of JavaScript.
@@ -2525,6 +2562,44 @@

TypeScript

+
+

VB.NET (Wasm)

+
+ VB.NET compiler running on WebAssembly, using + Roslyn and the + .NET WebAssembly runtime +
+ +

Vento

@@ -2644,80 +2719,34 @@

WebAssembly Text Format

-
-

Blockly

-
- 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>HAC، وهو مُترجم 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>HAC، وهو مُترجم Ada مكتوب بلغة Ada ومُجمَّع إلى WebAssembly. لا يتضمن ذلك أي خادم.', + link: '<1> <2>مركز معلومات Ada <3> <4>برمجة Ada (ويكيبوكس) <5> <6>مستودع HAC <7> <8>وثائق LiveCodes <9> <10>تحميل قالب البداية ', + name: 'Ada (Wasm)', + }, artTemplate: { desc: 'محرك قوالب جافا سكريبت عالي الأداء.', link: '<1> <2>الموقع الرسمي لـ art-template <3> <4>وثائق art-template ', 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>HAC দ্বারা কম্পাইল ও চালিত হয়, যা 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>HAC দ্বারা কম্পাইল ও চালিত হয়, যা Ada-তে লেখা এবং WebAssembly-তে কম্পাইল করা একটি Ada কম্পাইলার। কোনো সার্ভার জড়িত নয়।', + link: '<1> <2>Ada তথ্য কেন্দ্র <3> <4>Ada প্রোগ্রামিং (উইকিবই) <5> <6>HAC রিপো <7> <8>LiveCodes ডকুমেন্টেশন <9> <10>স্টার্টার টেমপ্লেট লোড করুন ', + name: 'Ada (Wasm)', + }, artTemplate: { desc: 'উচ্চ কর্মক্ষমতা সম্পন্ন JavaScript টেমপ্লেটিং ইঞ্জিন।', link: '<1> <2>art-template অফিসিয়াল ওয়েবসাইট <3> <4>art-template ডকুমেন্টেশন ', 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>HAC 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>HAC kompiliert und ausgeführt, einem in Ada geschriebenen und zu WebAssembly kompilierten Ada-Compiler. Es ist kein Server beteiligt.', + link: '<1> <2>Ada-Informationsstelle <3> <4>Ada-Programmierung (Wikibooks) <5> <6>HAC Repository <7> <8>LiveCodes-Dokumentation <9> <10>Starter-Vorlage laden ', + name: 'Ada (Wasm)', + }, artTemplate: { desc: 'Hochleistungsfähige JavaScript-Templating-Engine.', link: '<1> <2>art-template offizielle Website <3> <4>art-template Dokumentation ', 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>HAC, an Ada compiler written in Ada and compiled to WebAssembly. No server is involved.', + link: '<1> <2>Ada Information Clearinghouse <3> <4>Ada Programming (Wikibooks) <5> <6>HAC repo <7> <8>LiveCodes Documentation <9> <10>Load starter template ', + name: 'Ada (Wasm)', + }, artTemplate: { desc: 'High performance JavaScript templating engine.', link: '<1> <2>art-template official website <3> <4>art-template documentation ', 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>HAC, 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>HAC, 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 Ada <3> <4>Programación en Ada (Wikibooks) <5> <6>Repositorio de HAC <7> <8>Documentación de LiveCodes <9> <10>Cargar plantilla de inicio ', + name: 'Ada (Wasm)', + }, artTemplate: { desc: 'Motor de plantillas JavaScript de alto rendimiento.', link: '<1> <2>Sitio web oficial de art-template <3> <4>Documentación de art-template ', 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>HAC کامپایل و اجرا می‌شود، که یک کامپایلر 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>HAC کامپایل و اجرا می‌شود، که یک کامپایلر Ada نوشته‌شده به زبان Ada و کامپایل‌شده به WebAssembly است. هیچ سروری درگیر نیست.', + link: '<1> <2>مرکز اطلاعات Ada <3> <4>برنامه‌نویسی Ada (ویکی‌کتاب) <5> <6>مخزن HAC <7> <8>مستندات LiveCodes <9> <10>بارگذاری قالب شروع ', + name: 'Ada (Wasm)', + }, artTemplate: { desc: 'موتور قالب‌ساز JavaScript با کارایی بالا.', link: '<1> <2>وب‌سایت رسمی art-template <3> <4>مستندات art-template ', 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>HAC, 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>HAC, un compilateur Ada écrit en Ada et compilé en WebAssembly. Aucun serveur n'est impliqué.", + link: "<1> <2>Centre d'information Ada <3> <4>Programmation Ada (Wikibooks) <5> <6>Dépôt HAC <7> <8>Documentation LiveCodes <9> <10>Charger un modèle de démarrage ", + name: 'Ada (Wasm)', + }, artTemplate: { desc: 'Moteur de templates JavaScript haute performance.', link: "<1> <2>Site officiel d'art-template <3> <4>Documentation d'art-template ", 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>HAC द्वारा संकलित और चलाया जाता है, जो 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>HAC द्वारा संकलित और चलाया जाता है, जो Ada में लिखा गया और WebAssembly में संकलित एक Ada कंपाइलर है। कोई सर्वर शामिल नहीं है।', + link: '<1> <2>Ada सूचना केंद्र <3> <4>Ada प्रोग्रामिंग (विकिबुक्स) <5> <6>HAC रेपो <7> <8>लाइवकोड दस्तावेज़ीकरण <9> <10>स्टार्टर टेम्पलेट लोड करें ', + name: 'Ada (Wasm)', + }, artTemplate: { desc: 'उच्च प्रदर्शन वाला JavaScript टेम्प्लेटिंग इंजन।', link: '<1> <2>art-template आधिकारिक वेबसाइट <3> <4>art-template दस्तावेज़ीकरण ', 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>HAC, 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>HAC, egy Ada nyelven írt, WebAssembly-re fordított Ada-fordító. Nem vesz igénybe szervert.', + link: '<1> <2>Ada Információs Központ <3> <4>Ada programozás (Wikibooks) <5> <6>HAC repo <7> <8>LiveCodes dokumentáció <9> <10>Indító sablon betöltése ', + name: 'Ada (Wasm)', + }, artTemplate: { desc: 'Nagy teljesítményű JavaScript sablonmotor.', link: '<1> <2>art-template hivatalos weboldal <3> <4>art-template dokumentáció ', 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>HAC, 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>HAC, kompiler Ada yang ditulis dalam bahasa Ada dan dikompilasi ke WebAssembly. Tidak ada server yang terlibat.', + link: '<1> <2>Pusat Informasi Ada <3> <4>Pemrograman Ada (Wikibooks) <5> <6>Repo HAC <7> <8>Dokumentasi LiveCodes <9> <10>Muat templat awal ', + name: 'Ada (Wasm)', + }, artTemplate: { desc: 'Mesin templating JavaScript berkinerja tinggi.', link: '<1> <2>Situs web resmi art-template <3> <4>Dokumentasi art-template ', 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>HAC, 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>HAC, un compilatore Ada scritto in Ada e compilato in WebAssembly. Nessun server è coinvolto.', + link: '<1> <2>Centro informazioni Ada <3> <4>Programmazione in Ada (Wikibooks) <5> <6>Repository di HAC <7> <8>Documentazione LiveCodes <9> <10>Carica il modello di avvio ', + name: 'Ada (Wasm)', + }, artTemplate: { desc: 'Motore di templating JavaScript ad alte prestazioni.', link: '<1> <2>Sito ufficiale di art-template <3> <4>Documentazione di art-template ', 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>HAC によって、完全にブラウザ内でコンパイルおよび実行されます。サーバーは関与しません。" + }, + "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>HAC によって、完全にブラウザ内でコンパイルおよび実行されます。サーバーは関与しません。', + link: '<1> <2>Ada 情報センター <3> <4>Ada プログラミング(Wikibooks) <5> <6>HAC リポジトリ <7> <8>LiveCodes ドキュメント <9> <10>スターターテンプレートを読み込む ', + name: 'Ada (Wasm)', + }, artTemplate: { desc: '高性能な JavaScript テンプレートエンジン。', link: '<1> <2>art-template 公式ウェブサイト <3> <4>art-template ドキュメント ', 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>HAC, 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>HAC, een in Ada geschreven en naar WebAssembly gecompileerde Ada-compiler. Er is geen server bij betrokken.', + link: '<1> <2>Ada Informatiecentrum <3> <4>Programmeren in Ada (Wikibooks) <5> <6>HAC-repo <7> <8>LiveCodes-documentatie <9> <10>Starterssjabloon laden ', + name: 'Ada (Wasm)', + }, artTemplate: { desc: 'Krachtige JavaScript-sjabloonengine met hoge prestaties.', link: '<1> <2>art-template officiële website <3> <4>art-template documentatie ', 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>HAC, 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>HAC, um compilador Ada escrito em Ada e compilado para WebAssembly. Nenhum servidor está envolvido.', + link: '<1> <2>Centro de Informação Ada <3> <4>Programação em Ada (Wikibooks) <5> <6>Repositório do HAC <7> <8>Documentação do LiveCodes <9> <10>Carregar modelo inicial ', + name: 'Ada (Wasm)', + }, artTemplate: { desc: 'Mecanismo de modelagem JavaScript de alto desempenho.', link: '<1> <2>Site oficial do art-template <3> <4>Documentação do art-template ', 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>HAC — компилятора 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>HAC — компилятора Ada, написанного на Ada и скомпилированного в WebAssembly. Сервер не задействован.', + link: '<1> <2>Информационный центр Ada <3> <4>Программирование на Ada (Wikibooks) <5> <6>Репозиторий HAC <7> <8>Документация LiveCodes <9> <10>Загрузить стартовый шаблон ', + name: 'Ada (Wasm)', + }, artTemplate: { desc: 'Высокопроизводительный движок шаблонов JavaScript.', link: '<1> <2>Официальный сайт art-template <3> <4>Документация art-template ', 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>HAC 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>HAC tarafından tamamen tarayıcı içinde derlenir ve çalıştırılır. Hiçbir sunucu devreye girmez.", + link: "<1> <2>Ada Bilgi Merkezi <3> <4>Ada programlama (Wikibooks) <5> <6>HAC repo'su <7> <8>LiveCodes Belgeleri <9> <10>Başlangıç şablonunu yükle ", + name: 'Ada (Wasm)', + }, artTemplate: { desc: 'Yüksek performanslı JavaScript şablonlama motoru.', link: '<1> <2>art-template resmi web sitesi <3> <4>art-template dokümantasyonu ', 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>HAC کے ذریعے مرتب اور چلایا جاتا ہے، جو 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>HAC کے ذریعے مرتب اور چلایا جاتا ہے، جو Ada میں لکھا گیا اور WebAssembly میں مرتب کردہ ایک Ada کمپائلر ہے۔ کوئی سرور شامل نہیں ہے۔', + link: '<1> <2>Ada معلوماتی مرکز <3> <4>Ada پروگرامنگ (ویکی کتب) <5> <6>HAC ریپو <7> <8>LiveCodes دستاویزات <9> <10>اسٹارٹر ٹیمپلیٹ لوڈ کریں ', + name: 'Ada (Wasm)', + }, artTemplate: { desc: 'اعلی کارکردگی والا جاوا اسکرپٹ ٹیمپلیٹنگ انجن۔', link: '<1> <2>آرٹ-ٹیمپلیٹ کی سرکاری ویب سائٹ <3> <4>آرٹ-ٹیمپلیٹ کی دستاویزات ', 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>HAC 完全在浏览器中编译和运行。不涉及任何服务器。" + }, + "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>HAC 完全在浏览器中编译和运行。不涉及任何服务器。', + link: '<1> <2>Ada 信息交换中心 <3> <4>Ada 编程(Wikibooks) <5> <6>HAC 仓库 <7> <8>LiveCodes 文档 <9> <10>加载入门模板 ', + name: 'Ada (Wasm)', + }, artTemplate: { desc: '高性能 JavaScript 模板引擎。', link: '<1> <2> art-template 官方网站 <3> <4> art-template 文档 ', 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.

    + +
    + + +`.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)