Дізнайтеся, як встановити 8th локально, щоб розвʼязувати вправи Exercism на власному компʼютері
8th постачається в єдиному ZIP-архіві, який містить версії 8th для всіх платформ, які підтримує завантажена версія. Версії 8th мають персональну ліцензію, і їх не можна передавати іншим.
Починаючи зі сторінки Get 8th,
Щоб користуватися 8th, потрібно розпакувати zip-файл у будь-яку доступну теку.
У zip-архіві є кілька тек:
| тека | опис |
|---|---|
| bin | виконувані файли 8th для всіх підтримуваних платформ |
| docs | Керівництво та туторіали |
| libs | Допоміжні бібліотеки 8th (код 8th) |
| samples | Приклади коду на додачу до туторіалів і керівництва |
| keys | Файл 'id.blob' із ключами та даними реєстрації |
Для користувачів Pro+: зверніть увагу, що ключі шифрування в id.blob унікальні для кожної конкретної завантаженої версії 8th, і вони важливі для створення зашифрованих застосунків, готових до розгортання. Якщо перемістити 8th за межі його дистрибутива й він не знайде id.blob, то під час виконання 8th -v він повідомить custid: id.blob? як нагадування, що не може знайти ідентифікаційну інформацію.
Незалежно від платформи, на якій ми розробляємо, можна створювати застосунки для будь-якої платформи, яку підтримує 8th.
Розпакувавши zip-файл, можна одразу запускати 8th. Наприклад, якщо його встановлено в /opt/8th на 64-бітному Linux, має вдатися ввести /opt/8th/bin/lin64/8th із будь-якими потрібними параметрами, і все працюватиме правильно. На macOS чи Windows робимо так само.
Якщо додати теку з виконуваним файлом 8th до системної змінної середовища PATH, можна буде просто вводити 8th, а не повний шлях до нього.
Сам 8th працює з командного рядка, і його не передбачено запускати клацанням на значку робочого столу. З його допомогою можна створювати звичайні GUI-програми, які запускаються в такий спосіб, але сам компілятор 8th працює з інтерфейсу командного рядка (CLI).
Якщо ми працюємо на Windows і користуємося оболонкою MSys або Cygwin, може також знадобитися безкоштовна програма winpty, щоб програми в консольному режимі працювали належно. Схоже, що новіші версії Windows 10 її не потребують.
Якщо ми працюємо на MacOS, прочитаймо цю тему на форумі 8th.
Командний рядок 8th має такий вигляд:
8th [options] [[-f] file...] [-e 'code'...]
Тут параметр [-f] file означає «інтерпретувати вміст файлу», а -e code означає «інтерпретувати вказаний код 8th». Обидва параметри можна вказувати в командному рядку більше ніж один раз, і їхня дія накопичується. Інакше кажучи:
8th -f first.8th -f second.8th
інтерпретує вміст файлу first.8th, а потім вміст файлу second.8th. Зауважимо: щоб запустити лише один файл 8th, не потрібно писати 8th -f first.8th, достатньо ввести 8th first.8th.
Ось усі параметри CLI, які розуміє 8th:
| параметр | опис |
|---|---|
| -b | Викликає утиліту bin/build |
| -D dir | встановлює домашній каталог у dir (типове значення залежить від ОС) |
| -e str | Інтерпретує рядок тексту (англ. string) str як код 8th |
| -ee str | Інтерпретує рядок тексту str як код 8th і потім завершує роботу |
| -f nm | Інтерпретує файл із назвою nm |
| -g | Вмикає налагодження/перевірку SED |
| -G | Встановлює потрібну версію GL (наприклад, 3.1) |
| -h | Показує довідку |
| -H N | Встановлює розмір історії консолі в N рядків (типово: 100) |
| -k N | Встановлює розміри стека даних і r-стека в N елементів (типово: 128K) |
| -l | Докладніша налагоджувальна інформація |
| -r N | Встановлює розмір стека даних зворотних викликів у N елементів (типово: 256) |
| -s N | Встановлює розмір стека рекурсії в N байтів (типово: 0, тобто системне типове значення) |
| -S | Виводить список виявлених драйверів SDL і завершує роботу |
| -v | Виводить версію 8th і завершує роботу |
| -vv | Те саме, що -v, але з додатковою інформацією для налагодження |
| -x | Вимикає перевірку типів і меж стека |
| -z | Вмикає підрахунок елементів даних |
| -Z | Як -z, але з підключенням бібліотеки 'debug/allocs' |
| -? nm | Виводить довідку для елемента 'nm' |
| -- | Позначає кінець параметрів 8th |
Загалом параметри -k, -r та -s використовувати не доведеться; вони передбачені на випадок, якщо виявиться, що вони корисні, наприклад коли 128K елементів у стеку одночасно замало (чесно кажучи, якщо це так, варто змінити алгоритм...).
Якщо виявиться, що ми часто користуємося параметрами командного рядка, можна просто скористатися «shell-скриптом» (на macOS чи Linux) або «пакетним файлом» (на Windows; його також називають «файлом команд») для запуску 8th із потрібними параметрами.
Також можна створити вихідний файл 8th у теці app:datadir із назвою settings.8th. Якщо він є, 8th REPL завантажить його під час запуску й виведе відповідне повідомлення. З міркувань безпеки цей файл не шукають і не завантажують у пакетних застосунках.
Щоб вийти з 8th, виконайте будь-що з наведеного:
bye і натисніть ENTER. Це скаже 8th завершити роботу звичайним чином1 die і натисніть ENTER. Це скаже 8th завершити роботу аварійно та повернути операційній системі код стану 1throw спричинить виняток. Якщо ми працюємо з консолі 8th, у більшості випадків нас поверне туди; якщо ж ми запускаємо файл або пакетний застосунок, буде виведено повідомлення, а застосунок завершено.8th може запускати наші програми в кількох режимах:
| режим | опис |
|---|---|
| interactive | просто запускаємо 8th і вводимо код у консолі |
| script | кладемо код у текстовий файл і запускаємо його, наприклад, командою 8th mycode.8th. Див. підказку нижче... |
| app | перетворюємо код на пакетний застосунок за допомогою скрипта build (або параметра CLI -b) |
Для користувачів Pro+: можна створювати зашифровані застосунки, щоб ускладнити життя хакерам та іншим недобрим особам
У двох останніх випадках код має бути у файлах із простим текстом (не у форматі текстового процесора). Будь-які допоміжні файли слід розмістити в тій самій теці, що й код, або в її підтеці. Доступ до тих інших файлів у 8th отримуємо, викликавши app:asset.
Застосунком називають окрему програму, яка працює самостійно, як будь-яка інша програма для цільової платформи, і яку не потрібно запускати через 8th із командного рядка. Вміст може бути зашифровано, щоб ускладнити доступ хакерам, як зазначено вище. Подробиці створення окремих застосунків можна знайти в розділі про використання інструмента build.
Підказка: якщо ми працюємо на macOS, Linux чи системах RPI, можна зробити так, щоб скрипт запускався як звичайна системна команда:
chmod +x scriptname
#! /usr/bin/env 8th
Це також працюватиме з пакетними appdata, тож якщо скористатися bin/build для створення виконуваного файлу, можна в такий самий спосіб використати створені ним appdata, виконавши:
cat - path/to/appdata > newappdata
#! /usr/bin/env 8th<ENTER><CTRL+D>
chmod +x newappdata