Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/frontend/src/pages/GettingStartedPage.vue
blob: 2b9228abf8a9e804b6bfb2cd2f4c7b1c828c3e6c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
<!-- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> -->
<!-- SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1 -->

<script setup lang="ts">
import { computed } from "vue";
import { RouterLink } from "vue-router";
import { arrow, locale } from "../preferences";

const text = {
  "en-US": {
    navOverview: "Overview",
    navStart: "Getting started",
    section: "DOCUMENTATION / GETTING STARTED",
    title: "Start with the source",
    lead: "Tala is in active development. For now, the repository is the reliable entry point for building the compiler and checking which language features run end to end.",
    step1: "1. Get the repository",
    step1Text:
      "Clone the compiler repository with its submodules. Use a supported development host: Windows 10/11, macOS Sequoia or Tahoe, Ubuntu 26.04 LTS or Fedora 43.",
    step2: "2. Check the toolchain",
    step2Text:
      "The repository's Go development command checks local requirements. The compiler uses GHC2024 for its Haskell front end, Clang/LLVM for C++20 native stages, Bazel for native builds, and Temurin JDK 25 for Tazel, the build system.",
    platform:
      "The supported development hosts are Windows 10/11, macOS Sequoia/Tahoe, Ubuntu 26.04 LTS and Fedora 43. On Windows, standalone LLVM clang-cl and LLD are used with Windows SDK and MSVC CRT/STL libraries. On macOS, install the Xcode Command Line Tools; the full Xcode application is not required. On Ubuntu and Fedora, Clang, LLD and libc++ come from the distribution, and the repository's helper downloads LLVM built with libc++.",
    toolchainHelp:
      "If the check reports missing tools, the optional bootstrap can install prerequisites through the host package manager. Open a new terminal afterward so PATH changes take effect. LLVM_ROOT may point to the LLVM development installation prefix; do not put a machine-specific path in project files.",
    bootstrap: "Optional host bootstrap",
    step3: "3. Build and test",
    step3Text:
      "Build the native compiler and run its native contract suites. The Go command orchestrates the checks; Bazel remains the owner of the C++20 build graph. Cabal and Gradle handle their Haskell and Kotlin boundaries.",
    step4: "4. Read and check a real program",
    step4Text:
      "The HelloWorld example uses a class method as the entry point. Tala does not use a top-level function as its program entry. Check the exact source file, then build it using the current compiler subset.",
    fileCheck: "Check a single source file",
    fileBuild: "Build a native executable",
    subset:
      "The accepted source subset is narrower than the full public specification. A successful build is stronger evidence for a particular program than a syntax example in the specification; a successful test run is stronger evidence for a feature family.",
    step5: "5. Follow the public contract",
    step5Text:
      "Use the public specification for intended language semantics and the repository's Documents for implementation and tooling details. talac --help lists the options the installed compiler accepts, and tazel help the commands of the build system.",
    links: [
      {
        title: "Language specification",
        detail: "Syntax and semantic contracts, including valid and invalid examples.",
        href: "https://github.com/Progmasoft/tala/tree/main/Spec",
      },
      {
        title: "Building guide",
        detail: "Official hosts, toolchain discovery, and native build targets.",
        href: "https://github.com/Progmasoft/tala/blob/main/Documents/BUILDING.md",
      },
      {
        title: "CLI reference",
        detail: "Current commands, flags, artifact behavior, and implementation status.",
        href: "https://github.com/Progmasoft/tala/blob/main/Documents/CLI.md",
      },
      {
        title: "Example programs",
        detail: "Source examples next to C# 13, C++20, Java 21 and Rust counterparts.",
        href: "https://github.com/Progmasoft/tala/tree/main/Examples",
      },
    ],
    note: "Implementation status",
    noteText:
      "A spec example is not proof of compiler support. Run repository tests and consult current implementation notes before relying on a feature. Binary downloads and a stable installation flow are not promised yet.",
    more: "Understand the design",
    spec: "Public specification",
    examples: "More examples",
  },
  "de-DE": {
    navOverview: "Überblick",
    navStart: "Erste Schritte",
    section: "DOKUMENTATION / ERSTE SCHRITTE",
    title: "Mit dem Quellcode beginnen",
    lead: "Tala wird aktiv entwickelt. Das Repository ist derzeit der zuverlässige Einstieg, um den Compiler zu bauen und den tatsächlich funktionierenden Sprachumfang zu prüfen.",
    step1: "1. Repository holen",
    step1Text:
      "Klonen Sie das Compiler-Repository mit seinen Submodulen. Unterstützt werden Entwicklungsrechner mit Windows 10/11, macOS Sequoia oder Tahoe, Ubuntu 26.04 LTS oder Fedora 43.",
    step2: "2. Toolchain prüfen",
    step2Text:
      "Der Go-Entwicklungsbefehl prüft lokale Voraussetzungen. Das Frontend verwendet GHC2024, die nativen C++20-Stufen Clang/LLVM und Bazel; Tazel, das Build-System, nutzt Temurin JDK 25.",
    platform:
      "Unterstützte Entwicklungsrechner sind Windows 10/11, macOS Sequoia/Tahoe, Ubuntu 26.04 LTS und Fedora 43. Unter Windows werden eigenständiges LLVM clang-cl und LLD mit Windows SDK sowie MSVC-CRT/STL-Bibliotheken verwendet. Unter macOS genügen die Xcode Command Line Tools; die vollständige Xcode-Anwendung ist nicht erforderlich. Unter Ubuntu und Fedora kommen Clang, LLD und libc++ aus der Distribution, und das Hilfswerkzeug des Repositorys lädt ein mit libc++ gebautes LLVM herunter.",
    toolchainHelp:
      "Falls Werkzeuge fehlen, kann der optionale Bootstrap die Voraussetzungen über den Paketmanager installieren. Öffnen Sie danach ein neues Terminal, damit PATH-Änderungen greifen. LLVM_ROOT darf auf das LLVM-Entwicklungspaket zeigen; schreiben Sie keinen rechnerbezogenen Pfad in Projektdateien.",
    bootstrap: "Optionaler Host-Bootstrap",
    step3: "3. Bauen und testen",
    step3Text:
      "Bauen Sie den nativen Compiler und führen Sie die nativen Vertragstests aus. Der Go-Befehl koordiniert die Prüfungen; Bazel besitzt weiterhin den C++20-Buildgraphen. Cabal und Gradle betreuen Haskell und Kotlin.",
    step4: "4. Ein echtes Programm lesen und prüfen",
    step4Text:
      "Im HelloWorld-Beispiel ist eine Klassenmethode der Einstiegspunkt. Eine Top-Level-Funktion ist kein Programmeinstieg in Tala. Prüfen Sie die Quelldatei und bauen Sie sie mit dem derzeit unterstützten Compilerumfang.",
    fileCheck: "Eine Quelldatei prüfen",
    fileBuild: "Eine native Anwendung bauen",
    subset:
      "Der unterstützte Quellcode-Teilumfang ist kleiner als die vollständige öffentliche Spezifikation. Ein erfolgreicher Build ist für ein konkretes Programm ein stärkerer Beleg als ein Syntaxbeispiel; ein erfolgreicher Testlauf ist für eine Funktionsgruppe aussagekräftiger.",
    step5: "5. Den öffentlichen Vertrag nachlesen",
    step5Text:
      "Die öffentliche Spezifikation beschreibt die beabsichtigte Sprachsemantik; die Dokumente im Repository erklären Implementierung und Werkzeuge. talac --help zeigt die Optionen, die der installierte Compiler akzeptiert, und tazel help die Befehle des Build-Systems.",
    links: [
      {
        title: "Sprachspezifikation",
        detail: "Syntax und Semantik mit gültigen und ungültigen Beispielen.",
        href: "https://github.com/Progmasoft/tala/tree/main/Spec",
      },
      {
        title: "Build-Anleitung",
        detail: "Offizielle Hosts, Toolchain-Suche und native Build-Ziele.",
        href: "https://github.com/Progmasoft/tala/blob/main/Documents/BUILDING.md",
      },
      {
        title: "CLI-Referenz",
        detail: "Aktuelle Befehle, Optionen, Artefakte und Implementierungsstand.",
        href: "https://github.com/Progmasoft/tala/blob/main/Documents/CLI.md",
      },
      {
        title: "Beispielprogramme",
        detail: "Beispiele neben Fassungen in C# 13, C++20, Java 21 und Rust.",
        href: "https://github.com/Progmasoft/tala/tree/main/Examples",
      },
    ],
    note: "Implementierungsstand",
    noteText:
      "Ein Spezifikationsbeispiel beweist keine Compiler-Unterstützung. Prüfen Sie Tests und aktuelle Implementierungshinweise, bevor Sie eine Funktion voraussetzen. Stabile Downloads werden noch nicht versprochen.",
    more: "Entwurf verstehen",
    spec: "Öffentliche Spezifikation",
    examples: "Weitere Beispiele",
  },
  "ru-RU": {
    navOverview: "Обзор",
    navStart: "Начало работы",
    section: "ДОКУМЕНТАЦИЯ / НАЧАЛО РАБОТЫ",
    title: "Начните с исходного кода",
    lead: "Tala находится в активной разработке. Пока что репозиторий — надёжная отправная точка, чтобы собрать компилятор и проверить, какие возможности языка работают от начала до конца.",
    step1: "1. Получите репозиторий",
    step1Text:
      "Клонируйте репозиторий компилятора вместе с подмодулями. Используйте поддерживаемую машину разработки: Windows 10/11, macOS Sequoia или Tahoe, Ubuntu 26.04 LTS или Fedora 43.",
    step2: "2. Проверьте набор инструментов",
    step2Text:
      "Команда разработки на Go из репозитория проверяет локальные требования. Компилятор использует GHC2024 для фронтенда на Haskell, Clang/LLVM для нативных стадий на C++20, Bazel для нативных сборок и Temurin JDK 25 для Tazel, системы сборки.",
    platform:
      "Поддерживаемые машины разработки — Windows 10/11, macOS Sequoia/Tahoe, Ubuntu 26.04 LTS и Fedora 43. В Windows используются отдельные LLVM clang-cl и LLD вместе с Windows SDK и библиотеками MSVC CRT/STL. В macOS установите Xcode Command Line Tools; полное приложение Xcode не требуется. В Ubuntu и Fedora Clang, LLD и libc++ берутся из дистрибутива, а вспомогательная утилита репозитория загружает LLVM, собранный с libc++.",
    toolchainHelp:
      "Если проверка сообщает об отсутствующих инструментах, необязательная начальная настройка может установить их через менеджер пакетов системы. После этого откройте новый терминал, чтобы изменения PATH вступили в силу. LLVM_ROOT может указывать на каталог установки LLVM для разработки; не записывайте путь, относящийся к конкретной машине, в файлы проекта.",
    bootstrap: "Необязательная начальная настройка системы",
    step3: "3. Соберите и протестируйте",
    step3Text:
      "Соберите нативный компилятор и запустите его нативные контрактные наборы тестов. Команда на Go координирует проверки; графом сборки C++20 по-прежнему владеет Bazel. Cabal и Gradle отвечают за свои области — Haskell и Kotlin.",
    step4: "4. Прочитайте и проверьте настоящую программу",
    step4Text:
      "В примере HelloWorld точкой входа служит метод класса. В Tala функция верхнего уровня не является точкой входа программы. Проверьте сам исходный файл, а затем соберите его текущим подмножеством компилятора.",
    fileCheck: "Проверить один исходный файл",
    fileBuild: "Собрать нативный исполняемый файл",
    subset:
      "Принимаемое подмножество исходного кода уже полной публичной спецификации. Успешная сборка — более сильное свидетельство для конкретной программы, чем синтаксический пример в спецификации; успешный прогон тестов — более сильное свидетельство для семейства возможностей.",
    step5: "5. Следуйте публичному контракту",
    step5Text:
      "Задуманную семантику языка смотрите в публичной спецификации, а сведения о реализации и инструментах — в каталоге Documents репозитория. talac --help перечисляет параметры, которые принимает установленный компилятор, а tazel help — команды системы сборки.",
    links: [
      {
        title: "Спецификация языка",
        detail: "Синтаксические и семантические контракты с допустимыми и недопустимыми примерами.",
        href: "https://github.com/Progmasoft/tala/tree/main/Spec",
      },
      {
        title: "Руководство по сборке",
        detail: "Официальные платформы, поиск набора инструментов и цели нативной сборки.",
        href: "https://github.com/Progmasoft/tala/blob/main/Documents/BUILDING.md",
      },
      {
        title: "Справочник по CLI",
        detail: "Текущие команды, флаги, поведение артефактов и состояние реализации.",
        href: "https://github.com/Progmasoft/tala/blob/main/Documents/CLI.md",
      },
      {
        title: "Примеры программ",
        detail: "Примеры исходного кода рядом с вариантами на C# 13, C++20, Java 21 и Rust.",
        href: "https://github.com/Progmasoft/tala/tree/main/Examples",
      },
    ],
    note: "Состояние реализации",
    noteText:
      "Пример из спецификации не доказывает поддержку в компиляторе. Прежде чем полагаться на возможность, запустите тесты репозитория и сверьтесь с актуальными заметками о реализации. Готовые двоичные сборки и стабильный процесс установки пока не обещаны.",
    more: "Понять замысел",
    spec: "Публичная спецификация",
    examples: "Больше примеров",
  },
  "he-IL": {
    navOverview: "סקירה",
    navStart: "צעדים ראשונים",
    section: "תיעוד / צעדים ראשונים",
    title: "מתחילים מקוד המקור",
    lead: "Tala נמצאת בפיתוח פעיל. לעת עתה המאגר הוא נקודת הכניסה האמינה לבניית המהדר ולבדיקה אילו יכולות של השפה פועלות מקצה לקצה.",
    step1: "1. השגת המאגר",
    step1Text:
      "שכפלו את מאגר המהדר יחד עם תת־המודולים שלו. השתמשו במחשב פיתוח נתמך: Windows 10/11, ‏macOS Sequoia או Tahoe, ‏Ubuntu 26.04 LTS או Fedora 43.",
    step2: "2. בדיקת שרשרת הכלים",
    step2Text:
      "פקודת הפיתוח של המאגר, הכתובה ב-Go, בודקת את הדרישות המקומיות. המהדר משתמש ב-GHC2024 ל-frontend הכתוב ב-Haskell, ב-Clang/LLVM לשלבי ה-native ב-C++20, ב-Bazel לבניית חלקי ה-native וב-Temurin JDK 25 ל-Tazel, מערכת הבנייה.",
    platform:
      "מחשבי הפיתוח הנתמכים הם Windows 10/11, ‏macOS Sequoia/Tahoe, ‏Ubuntu 26.04 LTS ו-Fedora 43. ב-Windows נעשה שימוש ב-clang-cl וב-LLD עצמאיים של LLVM יחד עם Windows SDK וספריות ה-CRT/STL של MSVC. ב-macOS יש להתקין את Xcode Command Line Tools; יישום Xcode המלא אינו נדרש. ב-Ubuntu וב-Fedora‏ Clang,‏ LLD ו-libc++ מגיעים מההפצה, וכלי העזר של המאגר מוריד LLVM שנבנה עם libc++.",
    toolchainHelp:
      "אם הבדיקה מדווחת על כלים חסרים, ה-bootstrap האופציונלי יכול להתקין את הדרישות דרך מנהל החבילות של המערכת. לאחר מכן פתחו מסוף חדש כדי ששינויי PATH ייכנסו לתוקף. LLVM_ROOT יכול להצביע על תחילית ההתקנה של חבילת הפיתוח של LLVM; אין לכתוב נתיב ייחודי למחשב בקובצי הפרויקט.",
    bootstrap: "הכנת מחשב אופציונלית",
    step3: "3. בנייה ובדיקה",
    step3Text:
      "בנו את מהדר ה-native והריצו את חבילות בדיקות החוזה שלו. פקודת ה-Go מתזמרת את הבדיקות; Bazel נשאר הבעלים של גרף הבנייה של C++20. Cabal ו-Gradle מטפלים בגבולות של Haskell ושל Kotlin.",
    step4: "4. קריאה ובדיקה של תוכנית אמיתית",
    step4Text:
      "בדוגמה HelloWorld נקודת הכניסה היא מתודה של מחלקה. Tala אינה משתמשת בפונקציה ברמה העליונה כנקודת הכניסה לתוכנית. בדקו את קובץ המקור המדויק, ואז בנו אותו בתת־הקבוצה הנוכחית של המהדר.",
    fileCheck: "בדיקת קובץ מקור יחיד",
    fileBuild: "בניית קובץ הרצה בקוד מכונה",
    subset:
      "תת־הקבוצה של קוד המקור שמתקבלת צרה מהמפרט הציבורי המלא. בנייה מוצלחת היא ראיה חזקה יותר לתוכנית מסוימת מאשר דוגמת תחביר במפרט; הרצת בדיקות מוצלחת היא ראיה חזקה יותר למשפחת יכולות.",
    step5: "5. לעקוב אחר החוזה הציבורי",
    step5Text:
      "המפרט הציבורי מתאר את הסמנטיקה המיועדת של השפה, ומסמכי המאגר מפרטים את המימוש ואת הכלים. ‏talac --help מפרט את האפשרויות שהמהדר המותקן מקבל, ו-tazel help את הפקודות של מערכת הבנייה.",
    links: [
      {
        title: "מפרט השפה",
        detail: "חוזי תחביר וסמנטיקה, כולל דוגמאות תקינות ושגויות.",
        href: "https://github.com/Progmasoft/tala/tree/main/Spec",
      },
      {
        title: "מדריך בנייה",
        detail: "מחשבים רשמיים, איתור שרשרת הכלים ויעדי הבנייה של חלקי ה-native.",
        href: "https://github.com/Progmasoft/tala/blob/main/Documents/BUILDING.md",
      },
      {
        title: "מדריך ה-CLI",
        detail: "הפקודות, הדגלים, התנהגות התוצרים ומצב המימוש הנוכחיים.",
        href: "https://github.com/Progmasoft/tala/blob/main/Documents/CLI.md",
      },
      {
        title: "תוכניות לדוגמה",
        detail: "דוגמאות קוד לצד מקבילות ב-C#‎ 13, ב-C++20, ב-Java 21 וב-Rust.",
        href: "https://github.com/Progmasoft/tala/tree/main/Examples",
      },
    ],
    note: "מצב המימוש",
    noteText:
      "דוגמה במפרט אינה הוכחה לתמיכה במהדר. לפני שמסתמכים על יכולת, הריצו את בדיקות המאגר ועיינו בהערות המימוש העדכניות. הורדות בינאריות ותהליך התקנה יציב עדיין אינם מובטחים.",
    more: "להבין את התכנון",
    spec: "המפרט הציבורי",
    examples: "דוגמאות נוספות",
  },
} as const;
const c = computed(() => text[locale.value]);
const hello = `namespace Examples.HelloWorld;

public class HelloWorld {
    public static void Main() {
        String language = "Tala";
        Console.Println("Hello from " + language + "!");
    }
}`;
</script>

<template>
  <div class="doc-layout section-wrap">
    <aside class="doc-sidebar">
      <span class="kicker">TALA</span
      ><RouterLink to="/docs/overview">{{ c.navOverview }}</RouterLink
      ><RouterLink to="/docs/getting-started" aria-current="page">{{ c.navStart }}</RouterLink
      ><a href="https://github.com/Progmasoft/tala/tree/main/Spec">Specification ↗</a>
    </aside>
    <article class="doc-content">
      <span class="kicker">{{ c.section }}</span>
      <h1>{{ c.title }}</h1>
      <p class="doc-lead">{{ c.lead }}</p>
      <h2>{{ c.step1 }}</h2>
      <p>{{ c.step1Text }}</p>
      <pre
        class="doc-code"
      ><code>git clone --recurse-submodules https://github.com/Progmasoft/tala.git</code></pre>
      <h2>{{ c.step2 }}</h2>
      <p>{{ c.step2Text }}</p>
      <p>{{ c.platform }}</p>
      <pre class="doc-code"><code>go run ./helpers/cmd/develop doctor</code></pre>
      <h3>{{ c.bootstrap }}</h3>
      <p>{{ c.toolchainHelp }}</p>
      <pre class="doc-code"><code>go run ./helpers/cmd/prebuild check
go run ./helpers/cmd/prebuild install</code></pre>
      <h2>{{ c.step3 }}</h2>
      <p>{{ c.step3Text }}</p>
      <pre class="doc-code"><code>go run ./helpers/cmd/develop build
go run ./helpers/cmd/develop test</code></pre>
      <h2>{{ c.step4 }}</h2>
      <p>{{ c.step4Text }}</p>
      <pre class="doc-code"><code>{{ hello }}</code></pre>
      <h3>{{ c.fileCheck }}</h3>
      <pre
        class="doc-code"
      ><code>talac Examples/HelloWorld/HelloWorld.tala --emit=metadata</code></pre>
      <h3>{{ c.fileBuild }}</h3>
      <pre
        class="doc-code"
      ><code>talac Examples/HelloWorld/HelloWorld.tala --entry=Examples.HelloWorld.HelloWorld</code></pre>
      <p>{{ c.subset }}</p>
      <h2>{{ c.step5 }}</h2>
      <p>{{ c.step5Text }}</p>
      <pre class="doc-code"><code>talac --help
tazel help</code></pre>
      <div class="doc-resource-list">
        <a v-for="link in c.links" :key="link.href" :href="link.href">
          <strong>{{ link.title }} <span aria-hidden="true">↗</span></strong>
          <span>{{ link.detail }}</span>
        </a>
      </div>
      <div class="doc-note">
        <h3>{{ c.note }}</h3>
        <p>{{ c.noteText }}</p>
      </div>
      <div class="doc-actions">
        <RouterLink class="button button-primary" to="/docs/overview"
          >{{ c.more }} {{ arrow }}</RouterLink
        ><a class="inline-link" href="https://github.com/Progmasoft/tala/tree/main/Spec"
          >{{ c.spec }} ↗</a
        ><a class="inline-link" href="https://github.com/Progmasoft/tala/tree/main/Examples"
          >{{ c.examples }} ↗</a
        >
      </div>
    </article>
  </div>
</template>