Транслятор проєкту Восток

Транслятор проекта Восток

Translator of Vostok project

Націлений на підвищення стійкості до помилок під час програмування. Дозволяє робити перетворення коду з деяких діалектів Oberon на читаємий або стійкий до помилок код для низки промислових мов програмування, а також на машинний код і проміжні форми.

Нацелен на повышение ошибкоустойчивости при программировании. Позволяет делать преобразование кода из некоторых диалектов Oberon в читаемый или устойчивый к ошибкам код для ряда промышленных языков программирования, а также в машинный код и промежуточные представления.

Aims at increasing the robustness of progamming. Allows converting the code of some Oberon dialects into readable or error-resistant code for a range of mainstream programming languages, as well as machine code and intermediate representations.

Вхідні мови: Входные языки: Source languages:
  1. Oberon 07
  2. ...
Вихідні мови та формати: Выходные языки и форматы: Output languages and formats:
  1. Загальна підмножина С и С++, сумісне з Общее подмножество С и С++, совместимое с Common subset of С and С++, which is compatible with gcc, clang, tcc, CompCert, MS VS.
    1. Виконувані формати Исполнимые форматы Executable formats ELF, PE, Mach-O
  2. Java стандарту 7 стандарта 7 7 standard
    1. *.class файли файлы files
    2. Android *.apk застосунки приложения applications
  3. JavaScript стандарту стандарта of ECMAScript 5 standard
  4. Oberon 07, Active Oberon, Component Pascal, включаючи декларації модулів включая декларации модулей including module declaration
  5. Plant UML
  6. ...
Особливості: Особенности: Specificity:
  1. Частковий статичний та динамічний контроль за використанням неініціалізованних змінних Частичный статический и динамический контроль использования неинициализированных переменных Partial static and dynamic control of using uninitialized variables
  2. Перевірка переповнення для цілих, дробів, множин. (-i) та ABS(i) завжди коректні за рахунок виключення мінімального цілого, яке у доповняльному коді за модулем більше максимального Проверка переполнения для целых, дробей, множеств. (-i) и ABS(i) всегда корректны за счёт исключения минимального целого, которое в дополнительном коде по модулю больше, чем максимальное Overflow control for integers, floating-point numbers, sets. (-i) and ABS(i) are always correct because of minimal value absence, which is bigger by absolute value than the maximal value in two's complement
  3. Контроль за перекритям імен та присутністю невикористаних елементів у модулі Контроль за перекрытием имён и наличием неиспользуемых элементов в модуле Control over the identifiers hiding and existence of unused items in the module
Репозіторій початкового коду: Репозиторий исходного кода: Source code repository:
github.com/Vostok-space/vostok
Блог проєкту: Блог проекта: Project blog:
vostok-space.blogspot.com
Обсуждение:
forum.oberoncore.ru, telegram
Обговорення:
telegram

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

Установка

Installation

Для GNU/Linux зі Snap Store Для GNU/Linux из Snap Store For GNU/Linux from Snap Store В Ubuntu або іншому дистрибутиві зі встановленим snap можно одразу виконати: В Ubuntu или другом дистрибутиве с установленным snap можно сразу выполнить: On Ubuntu or another distribution with installed snap you can just execute:
snap install vostok --classic --beta &&
snap alias vostok ost # добавляем краткий псевдоним

Інструкції для інших дистрибутивів: Для других доступных дистрибутивов следуйте инструкциям: For other available distributions follow the instructions: Arch Linux, CentOS, Debian, elementary OS, Fedora, KDE Neon, Kubuntu, Manjaro, Linux Mint, openSUSE, Red Hat, Ubuntu, Raspbian.

Для GNU/Linux дистрибутивів на основі Debian Для GNU/Linux дистрибутивов на основе Debian For Debian based GNU/Linux distributions Встановлення deb-репозиторію для ряду Оберон-пакетів Установка deb-репозитория для ряда Оберон-пакетов Installation of deb repository for several different Oberon-based packages
/usr/bin/sudo sh -c '
wget -qO- http://deb.oberon.org/deb.oberon.org.gpg.key | apt-key add - &&
echo deb http://deb.oberon.org/linux testing main >> /etc/apt/sources.list &&
apt update'
Встановлення транслятору: Установка транслятора: Installation of the translator:
/usr/bin/sudo apt install vostok-bin
Збиральник Android-застосунків: Сборщик Android-приложений: Android-applications builder:
/usr/bin/sudo apt install vostok-android
Для GNU/Linux дистрибутивів на основі RPM Для основанных на RPM GNU/Linux дистрибутивов For RPM based GNU/Linux distributions
vostokInstall() {
  mkdir /tmp/ost-rpm &&
  local DOWNLOAD=https://github.com/Vostok-space/vostok/releases/download &&
  local REL=$DOWNLOAD/lib-v$1_ost-v$2/vostok &&
  wget --no-verbose --directory-prefix=/tmp/ost-rpm \
    $REL-deflib-$1.dev-0.src.rpm $REL-bin-$2.dev-0.src.rpm &&
  rpmbuild --rebuild /tmp/ost-rpm/* &&
  rm -rf /tmp/ost-rpm &&
  /usr/bin/sudo rpm --upgrade \
    ~/*/RPMS/*/vostok-deflib-$1.*.rpm ~/*/RPMS/*/vostok-bin-$2.*.rpm
}
vostokInstall 0.0.8 0.0.9
Для macOS та GNU/Linux через Для macOS и GNU/Linux через For macOS and GNU/Linux through Homebrew Встановлення репозиторію, а потім пакету з нього. Установка репозитория, а затем пакета из него. Repository installation and then package installation.
brew tap vostok-space/oberon &&
brew install vostok
Для Для For Node.js(POSIX, Windows, ...)
npm install vostok-oberon
npx ost help
Для POSIX(UNIX-подібних) з коду Для POSIX(UNIX-подобных) из исходного кода Source based for POSIX(UNIX-like)
git clone https://github.com/Vostok-space/vostok.git --depth 1 &&
cd vostok &&
./init.sh &&
result/bs-ost run 'make.Build; make.Self' -infr . -m source &&
/usr/bin/sudo result/ost run make.Install -infr . -m source

Для налаштування теки встановлення замість /usr/local/ за замовченням, слід вказувати 'make.InstallTo("/path/")' замість make.Install.

Для настройки пути установки вместо /usr/local/ по умолчанию, следует использовать 'make.InstallTo("/path/")' вместо make.Install.

For custom installation path instead of default /usr/local/, need to use 'make.InstallTo("/path/")' instead of make.Install.

Для збирання необхідний один з компіляторів C: Для сборки необходим один из компиляторов C: For building need one of the C compilers: gcc, clang, tcc, ccomp, zig

Для Android у Для Android в For Android in Termux Збирання та встановлення транслятору: Сборка и установка транслятора: Building and installation of the translator:
pkg install git clang &&
git clone https://github.com/Vostok-space/vostok.git --depth 1 \
    --branch lib-v0.0.8_ost-v0.0.9 &&
cd vostok &&
./init.sh &&
result/bs-ost run 'make.Build; make.Self' -infr . -m source &&
result/ost run 'make.InstallTo("'"$PREFIX"'")' -infr . -m source
Після транслятору доступне встановлення збиральника APK-застосунків: После сборки транслятора доступна установка сборщика APK-приложений: After the translator can be installed builder of APK applications:
pkg install ecj dx aapt apksigner &&
mkdir -p $HOME/.android &&
cp test/debug-key/key.pk8 $HOME/.android/debug-key.pk8 &&
cp test/debug-key/cert.pem $HOME/.android/debug-cert.pem &&
result/ost to-bin '
AndroidBuild.SetKeyDefault("'$HOME'/.android/debug-key.pk8",
                           "'$HOME'/.android/debug-cert.pem");
AndroidBuild.SetSdkDefault("");
AndroidBuild.SetBaseClassPathDefault("'$PREFIX'/share/java/android-24.jar");
AndroidBuild.SetJavacDefault("ecj -nowarn");
AndroidBuild.Go' \
result/osa -infr . -m source/blankC -m source/blankJs -m source/blankOberon -m source &&
result/ost run 'make.InstallAndroidTo("'"$PREFIX"'")' -infr . -m source
Для Для For Windows

Доступна тільки збірка з початкового коду та встановлення через Node.js.

Сейчас доступна только сборка из исходного кода и установка через Node.js. Пишите, если нужен установщик.

Currently, available only building from the source code and installing through Node.js. Contact us if you need an installer.