Локальне встановлення 8th

Дізнайтеся, як встановити 8th локально, щоб розвʼязувати вправи Exercism на власному компʼютері


Встановлення 8th

8th постачається в єдиному ZIP-архіві, який містить версії 8th для всіх платформ, які підтримує завантажена версія. Версії 8th мають персональну ліцензію, і їх не можна передавати іншим.

Отримання zip-файлу

Починаючи зі сторінки Get 8th,

  • заповніть форму, вказавши імʼя та електронну адресу, і виберіть версію Free. Потрібно прийняти ліцензію 8th.
  • 8th-dev надішле лист для підтвердження. Перейдіть за посиланням у листі про реєстрацію.
  • 8th-dev сформує унікальний zip-файл і надішле про це лист. Знайдіть у цьому листі посилання «download here».

Встановлення

Щоб користуватися 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

Сам 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 завершити роботу аварійно та повернути операційній системі код стану 1
  • Натисніть Ctrl+C двічі підряд або один раз Ctrl+D. Будь-який із цих способів змусить 8th негайно завершити роботу
  • У запущеному застосунку виклик throw спричинить виняток. Якщо ми працюємо з консолі 8th, у більшості випадків нас поверне туди; якщо ж ми запускаємо файл або пакетний застосунок, буде виведено повідомлення, а застосунок завершено.

Запуск програм 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
  • Переконавшись, що відповідний виконуваний файл 8th є у змінній PATH

Це також працюватиме з пакетними appdata, тож якщо скористатися bin/build для створення виконуваного файлу, можна в такий самий спосіб використати створені ним appdata, виконавши:

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