Я уже когда-то упоминал про язык Bliss, но с тех пор компилятор несколько улучшился. Кто не в теме: на этом языке писался весь софт для VAX/11 и других машин фирмы Digital в 70-80-х годах. С тех пор язык бесславно исчез, канул в небытие. Но нашлись энтузиасты, решившие оживить динозавра. Сделали компилятор на основе LLVM, покрывающий заметную часть языка.
Описание языка: blslref.pdf
Статья с интересными подробностями про историю языка: ronald-brender/bliss.pdf
Компилятор легко собирается на Линуксе или Маке. Надо только иметь установленные CMake и LLVM 11-й версии:
Описание языка: blslref.pdf
Статья с интересными подробностями про историю языка: ronald-brender/bliss.pdf
Компилятор легко собирается на Линуксе или Маке. Надо только иметь установленные CMake и LLVM 11-й версии:
Покажу простейшую програмку Hello World:git clone https://github.com/sergev/bliss-compiler.git
cd bliss-compiler
mkdir build
cd build
cmake .. -DLLVM_CONFIG=/usr/local/Cellar/llvm@11/11.1.0_4/bin/llvm-config
make
cp blissc ~/bin
Компилируем, получаем hello.o:module hello_world = begin
external routine puts;
global routine hello_world = begin
puts(uplit('hello, world!'));
end;
end eludom
Есть одна проблема: имена всех функций Bliss делает большими буквами. Получается PUTS и HELLO_WORLD. Чтобы запустить правильным образом, приходится делать переходник на Си:$ blissc hello.bliss
$ size hello.o
__TEXT __DATA __OBJC others dec hex
89 0 0 32 121 79
Линкуем и запускаем:#include <stdio.h>
extern void HELLO_WORLD(void);
void PUTS(const char *str)
{
fputs(str, stdout);
putchar('\n');
}
int main()
{
HELLO_WORLD();
}
$ cc main.c hello.o -o hello
$ ./hello
hello, world!
