Актуальная версия 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 из исходников:

Актуальные версии пакетов доступны в закрытом discord-сервере для vk/boosty-подписчиков.
Оформить подписку можно здесь: