Актуальная версия Raylib для Vlang с поддержкой Wasm
Golang
- прекрасный язык для backend-а с низким порогом входа и простым синтаксисом, основы которого изучаются за неделю экспериментов. Но у него есть один серьезный недостаток - плохое взаимодействие с c/c++ кодом в плане быстродействия или вообще невозможность в случае определенных целевых платформ (web/wasm). Для клиентской части с рендером графики и поддержкой разных платформ придется подыскать что-то другое. Хорошей альтернативой может стать Vlang
.
Vlang выглядит как работа над ошибками Golang
-а: вызов c/c++ кода без накладных расходов на всех целевых платформах, автовсплытие ошибок как в Rust
, контроль модификации данных через явное указание мутабельности, контроль за инлайном, comptime (исполняемый во время компиляции) код, возможность использования нескольких видов сборщиков мусора, корректный dead code elimination на уровне отдельных типов/функций модуля, сборка релизной версии через генерацию C
-кода и дальнейшие gcc/emscripten-оптимизации.
Raylib - легковесная библиотека, предоставляющая унифицированный рендер на основе OpenGL
под несколько платформ (OpenGl3.3
, Gles3
, WebGL2
), унифицированный доступ к системам ввода (клавиатура, мышь, touch-интерфейс и разнообразные контроллеры), унифицированный доступ к аудиоподсистеме, а так же имеющая штатную реализацию отладочного интефейса, похожую на imgui
.
Эта библиотека имеет обертки для Vlang
, но они все устарели (поддерживаемая версия 4.2, а актуальная версия 5.5), а так же не поддерживают wasm
-сборки. Было решено сделать свою обертку к актуальной версии Raylib
с возможностью автообновления:
- Поддержка
rcore
целиком с автообновлением на базе исходных хедеров (rmodels
,rshapes
,rcamera
,raudio
включительно). Поддерживаются все перечисления, используемые в виде параметров вызовов. - Математика была переписана практически полностью без
C
-кода с учетом особенностейVlang
(контекстные методы типов) за исключением матриц (возможно, в дальнейшем это тоже будет перенесено на чистыйVlang
). - Поддержка
raygui
. - Поддерживается сборка на Windows/Macos/Linux под Desktop (Windows/Macos/Linux) и Web (wasm).
В качестве бонуса - инструкции по установке и настройке актуальной версии Vlang
с языковым сервером для VSCode
из исходников: