Транслятор проєкту Восток
Транслятор проекта Восток
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:
-
- Oberon 07
- ...
- Вихідні мови та формати: Выходные языки и форматы: Output languages and formats:
-
-
Загальна підмножина С и С++, сумісне з
Общее подмножество С и С++, совместимое с
Common subset of С and С++, which is compatible with
gcc, clang,
tcc,
CompCert, MS VS.
- Виконувані формати Исполнимые форматы Executable formats ELF, PE, Mach-O
- Java
стандарту 7
стандарта 7
7 standard
- *.class файли файлы files
- Android *.apk застосунки приложения applications
- JavaScript стандарту стандарта of ECMAScript 5 standard
- Oberon 07, Active Oberon, Component Pascal, включаючи декларації модулів включая декларации модулей including module declaration
- Plant UML
- ...
-
Загальна підмножина С и С++, сумісне з
Общее подмножество С и С++, совместимое с
Common subset of С and С++, which is compatible with
gcc, clang,
tcc,
CompCert, MS VS.
- Особливості: Особенности: Specificity:
-
- Частковий статичний та динамічний контроль за використанням неініціалізованних змінних Частичный статический и динамический контроль использования неинициализированных переменных Partial static and dynamic control of using uninitialized variables
- Перевірка переповнення для цілих, дробів, множин. (-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
- Контроль за перекритям імен та присутністю невикористаних елементів у модулі Контроль за перекрытием имён и наличием неиспользуемых элементов в модуле 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.