8th lokal installieren

Lerne, wie du 8th lokal installierst, um die Übungen von Exercism auf deinem eigenen Rechner zu lösen


8th installieren

8th wird als alles enthaltende ZIP-Datei verteilt, die Versionen von 8th für alle Plattformen enthält, die von der Version unterstützt werden, die du heruntergeladen hast. Deine 8th-Versionen sind speziell auf dich lizenziert und dürfen nicht weitergegeben werden.

Die ZIP-Datei holen

Beginne auf der Seite Get 8th und

  • fülle das Formular mit deinem Namen und deiner E-Mail-Adresse aus und wähle die kostenlose Version. Du musst die 8th-Lizenz akzeptieren.
  • 8th-dev schickt dir eine E-Mail, um dich zu verifizieren. Klicke auf den Link in der Registrierungs-E-Mail.
  • 8th-dev stellt eine individuelle ZIP-Datei für dich zusammen und schickt dir eine E-Mail dazu. Suche in dieser E-Mail nach dem Link „download here".

Installation

Um 8th zu verwenden, musst du die ZIP-Datei in einen beliebigen Ordner entpacken, auf den du zugreifen kannst.

In der ZIP-Datei sind mehrere Ordner enthalten:

Ordner Beschreibung
bin Ausführbare 8th-Dateien für alle unterstützten Plattformen
docs Das Handbuch und die Tutorials
libs Unterstützungsbibliotheken von 8th (8th-Code)
samples Beispielcode als Ergänzung zu den Tutorials und zum Handbuch
keys Die Datei 'id.blob' mit deinen Schlüsseln und Registrierungsdaten

Nutzer von Pro+: Beachte, dass die Verschlüsselungsschlüssel in der id.blob für jede einzelne Version von 8th, die du herunterlädst, einzigartig sind. Sie sind wichtig, wenn du verschlüsselte Anwendungen bauen willst, die du ausrollen kannst. Wenn du 8th aus seinem Distributionspaket herausbewegst und es id.blob nicht finden kann, dann meldet 8th -v den Wert custid: id.blob?, um dich daran zu erinnern, dass es die Identifikationsinformationen nicht finden kann.

Unabhängig davon, auf welcher Plattform du entwickelst, kannst du Anwendungen für jede von 8th unterstützte Plattform erstellen.

Sobald du die ZIP-Datei entpackt hast, kannst du 8th direkt ausführen. Wenn du es zum Beispiel unter 64-Bit-Linux in /opt/8th installiert hast, solltest du /opt/8th/bin/lin64/8th mit beliebigen Parametern eingeben können, und es sollte korrekt funktionieren. Auf macOS oder Windows machst du es ähnlich.

Wenn du den Ordner der 8th-Binärdatei zur PATH-Umgebungsvariable deines Systems hinzufügst, kannst du einfach 8th eingeben, statt den vollständigen Pfad dazu zu tippen.

8th verwenden

8th selbst ist ein Kommandozeilenprogramm. Es ist nicht dafür gedacht, durch Anklicken eines Symbols auf dem Desktop gestartet zu werden. Du kannst damit normale GUI-Programme erstellen, die sich so starten lassen, aber der 8th-Compiler selbst ist ein Programm für die Kommandozeile (CLI).

Wenn du unter Windows arbeitest und eine MSys- oder Cygwin-Shell verwendest, brauchst du möglicherweise zusätzlich das frei verfügbare Programm winpty, damit deine Konsolenprogramme richtig funktionieren. Neuere Versionen von Windows 10 scheinen das nicht mehr zu benötigen.

Wenn du auf MacOS arbeitest, lies diesen Thread im 8th-Forum.

Die 8th-Kommandozeile sieht so aus:

8th [options] [[-f] file...] [-e 'code'...]

Dabei bedeutet die Option [-f] file „den Inhalt der Datei interpretieren" und -e code „diesen speziellen 8th-Code interpretieren". Beide Optionen dürfen auf der Kommandozeile mehr als einmal angegeben werden, und ihre Wirkung summiert sich. Mit anderen Worten:

8th -f first.8th -f second.8th

interpretiert den Inhalt der Datei first.8th und danach den Inhalt der Datei second.8th. Beachte, dass du nicht 8th -f first.8th eingeben musst, wenn du nur eine einzelne 8th-Datei ausführen willst; du kannst stattdessen einfach 8th first.8th eingeben.

Hier sind alle Kommandozeilenoptionen, die 8th versteht:

Option Beschreibung
-b Ruft das Hilfsprogramm bin/build auf
-D dir Legt das Home-Verzeichnis auf dir fest (Standard ist betriebssystemabhängig)
-e str Interpretiert die Zeichenkette str als 8th-Code
-ee str Interpretiert die Zeichenkette str als 8th-Code und beendet danach
-f nm Interpretiert die Datei namens nm
-g Aktiviert SED-Debug und -Überprüfung
-G Legt die erforderliche GL-Version fest (z. B. 3.1)
-h Zeigt die Hilfe an
-H N Legt die Größe der Konsolen-Historie auf N Zeilen fest (Standard: 100)
-k N Legt die Größe des Daten- und des r-Stacks auf N Elemente fest (Standard: 128K)
-l Mehr Debugging-Informationen
-r N Legt die Größe des Callback-Daten-Stacks auf N Elemente fest (Standard: 256)
-s N Legt die Größe des Rekursionsstacks auf N Bytes fest (Standard: 0, das bedeutet Systemstandard)
-S Listet die erkannten SDL-Treiber auf und beendet
-v Gibt die 8th-Version aus und beendet
-vv Wie -v, aber mit zusätzlichen Informationen zum Debuggen
-x Schaltet die Überprüfung von Stack-Typ und -Grenzen ab
-z Schaltet die Zählung der Datenelemente ein
-Z Wie -z, aber die Bibliothek 'debug/allocs' wird eingebunden
-? nm Gibt die Hilfe für das Element 'nm' aus
-- Signalisiert das Ende der 8th-Optionen

Im Allgemeinen solltest du die Optionen -k, -r und -s nicht brauchen; sie sind für den Fall gedacht, dass du sie nützlich findest, zum Beispiel wenn 128K Elemente auf einmal auf dem Stack zu wenige sind (um ehrlich zu sein: wenn das der Fall ist, solltest du deinen Algorithmus ändern ...).

Wenn du merkst, dass du Kommandozeilenoptionen oft verwendest, kannst du einfach ein „Shell-Skript" (unter macOS oder Linux) oder eine „Batchdatei" (unter Windows; auch „Befehlsdatei" genannt) verwenden, um 8th mit deinen bevorzugten Optionen zu starten.

Du kannst im Ordner app:datadir auch eine 8th-Quelldatei namens settings.8th anlegen. Wenn sie vorhanden ist, lädt die 8th-REPL sie beim Start und gibt eine entsprechende Meldung aus. Aus Sicherheitsgründen wird in einer gepackten Anwendung nicht nach dieser Datei gesucht und sie wird auch nicht geladen.

Um 8th zu beenden, kannst du eine der folgenden Möglichkeiten nutzen:

  • Gib bye ein und drücke ENTER. Damit weist du 8th an, normal zu beenden.
  • Gib 1 die ein und drücke ENTER. Damit weist du 8th an, mit einem Fehlerstatus zu beenden und den Statuscode 1 an das Betriebssystem zurückzugeben.
  • Drücke die Taste Ctrl+C zweimal schnell hintereinander oder Ctrl+D einmal. Beides weist 8th an, sofort zu beenden.
  • In einer laufenden Anwendung löst der Aufruf von throw eine Ausnahme aus. Wenn du von der 8th-Konsole aus arbeitest, landest du in den meisten Fällen wieder dort; wenn du eine Datei oder eine gepackte Anwendung ausführst, wird eine Meldung ausgegeben und die Anwendung beendet.

8th-Programme ausführen

8th kann deine Programme in mehreren Modi ausführen:

Modus Beschreibung
interaktiv Starte einfach 8th und tippe deinen Code in die Konsole
Skript Schreibe deinen Code in eine Textdatei und führe ihn zum Beispiel mit 8th mycode.8th aus. Siehe den Tipp unten ...
App Verwandle deinen Code mit dem Build-Skript (oder der Kommandozeilenoption -b) in eine gepackte Anwendung

Nutzer von Pro+: Du kannst verschlüsselte Anwendungen erstellen, um Hacker und andere böswillige Akteure abzuschrecken.

In den beiden letztgenannten Szenarien muss dein Code in Nur-Text-Dateien vorliegen (also nicht in einem Textverarbeitungsformat). Alle unterstützenden Dateien sollten im selben Ordner wie dein Code oder in einem Unterordner davon liegen. Du kannst in 8th auf diese anderen Dateien zugreifen, indem du app:asset aufrufst.

Eine „App" ist ein eigenständiges Programm, das wie jedes andere Programm für die Zielplattform für sich allein läuft und nicht von 8th über die Kommandozeile ausgeführt werden muss. Der Inhalt kann verschlüsselt sein, um Hacker abzuschrecken, wie oben erwähnt. Einzelheiten zum Erstellen eigenständiger Anwendungen findest du im Abschnitt über die Verwendung des Build-Tools.

Tipp: Wenn du auf macOS-, Linux- oder RPI-Systemen arbeitest, kannst du dein Skript wie einen normalen Systembefehl ausführbar machen:

  • Mach die Datei ausführbar: chmod +x scriptname
  • Setze als erste Zeile deines Codes: #! /usr/bin/env 8th
  • Stelle sicher, dass eine passende 8th-Binärdatei in deinem PATH liegt

Das funktioniert auch mit gepackten Appdata. Wenn du also bin/build verwendet hast, um eine ausführbare Datei zu erstellen, kannst du die von ihr erzeugten Appdata auf dieselbe Weise verwenden:

cat - path/to/appdata > newappdata
#! /usr/bin/env 8th<ENTER><CTRL+D>
chmod +x newappdata