Skip to content

mavka-ukr/mavka

Repository files navigation

Мавка

Сучасна українська мова програмування.

Будування

Треба:

  • GNU/Linux
  • Ціль 0.51.0
  • Zig 0.15.2
bash scripts/build.sh debug linux-x86_64

./будування/{ВЕРСІЯ}/лінукс-ікс86_64/готове/мавка

Будування відбувається лише через GNU/Linux, так як Ціль наразі доступна лише там. Мавку можна збудувати на різні платформи, але працездатність перевіряється насамперед на linux-x86_64. Можливості на платформах відмінних від linux-x86_64 можуть бути обмеженими.

Доступні режими будування:

  • debug
  • release

Доступні платформи будування:

  • linux-x86_64
  • linux-aarch64
  • macos-x86_64
  • macos-aarch64
  • windows-x86_64
  • windows-aarch64
  • android-aarch64
  • wasm64

Для будування для Android треба вказати шлях до NDK:

ANDROID_NDK_HOME="~/Android/android-ndk-r27d" bash scripts/build.sh debug android-aarch64

До уваги: для платформ linux та android буде збудовано з нуля ncurses, readline та idn2.

Розробка

Мавку написано мовою Ціль. Але. Деякі частини, такі як взаємодія з операційною системою (Linux/MacOS/Windows), написані мовою C (eng) (зараз зробити інакше не вийде). Тому під час розробки це треба мати наувазі - використання C (eng) лише для крайньої необхідності.

Усі файли, що написані мовою C (eng), розташовуються в папці external та підпапках відповідно до ОС.

Мавка, як і Ціль, майже не використовує Unicode - лише у випадках, де без нього не обійтись. Натомість використовується КД (Дієкод).

По причині того, що всі сучасні редактори і ОС за замовчуванням зберігають текстові файли використовуючи Unicode, у Мавці на вхід передаються саме Unicode-файли (UTF-8), але вони надалі перекодовуються в КД. І вже під час розбору (і далі) Unicode не використовується. По-суті, Unicode використовується лише для входу і виходу в ОС. Цього позбутись, щонайменше на Linux/MacOS/Windows, не вийде.

ДУЖЕ ВАЖЛИВО: так як Ціль ще не має досконалої підтримки зовнішніх дій для взаємодії з C (eng), усі значення які передаються через аргументи мають бути рівно 64 біт! Тобто, якщо є потреба передати логічне, то його треба передавати як природне. Також це стосується адреси на логічне - не логічне*, а природне*. Приклад: пристрій_мавки_читати_кд. В загальному: усі значення, окрім адреси, треба передавати як природне, ціле або д64. Але, якщо передається буфер, типу памʼять<п8>, тоді це нормально передавати його як п8*. Це стосується лише зовнішніх дій, які написані на C (eng), або дій які передаються в такі дії аргументом. Це також є причиною, чому розширення зараз стабільними зробити не вийде.

Тестування

Запустити тести:

bash scripts/test.sh <шлях_до_мавки>

About

Сучасна українська мова програмування

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages