DEV Community

Cover image for Conheça a Linguagem Beef - Específica para Desenvolvedores de Jogos
Marcos Oliveira
Marcos Oliveira

Posted on

Conheça a Linguagem Beef - Específica para Desenvolvedores de Jogos

🐮 Uma "carne bovina" parecida com CSharp e feita com C++


Beef é uma linguagem open‑source, compilada e voltada a alto desempenho, especialmente desenhada para o desenvolvimento de aplicações em tempo real como jogos, unindo desempenho com produtividade.

• Sintaxe inspirada em C#, com controle manual de memória inspirado em C e C++, e ergonomia moderna inspirada por Swift e Go.

  • Projeto bem pensado, com IDE própria (Windows);
  • Compilador CLI (Linux/macOS);
  • Debugger;
  • Assistentes de código;
  • e Hot‑compiling.

Beef é ideal para quem precisa de desenvolvimento rápido e controle fino de recursos, principalmente:

  • Desenvolvedores de Jogos e Motores de Jogos (console, desktop, WASM).
  • Projetos que exigem depuração eficiente, código hot‑reload, ergonomia orientada a produtividade.

Existe binário pré-compilado para Windows inclusive com um IDE com autocomplete pronto para usar, basta fazer o download e executar o .exe.

Mas, no macOS e distros GNU/Linux precisa compilar do zero.

Abaixo veremos o procedimento para compilar e instalar em distros GNU/Linux.


Dependências

Antes de mais nada, você vai precisar das seguintes ferramentas instaladas no seu sistema:

Exemplo de instalação das dependências usando o APT:

sudo apt install clang-18 llvm-18 build-essential cmake git \ libffi-dev libedit-dev zlib1g-dev zstd libcurlpp-dev libxml2-dev 
Enter fullscreen mode Exit fullscreen mode

Após isso é só clonar e construir:

git clone https://github.com/beefytech/Beef cd Beef ./bin/build.sh 
Enter fullscreen mode Exit fullscreen mode

Antes dos testes aparecerá:

[******************************] TIMING: Beef compiling: 37.2s Frontend time: 23.48s Comptime execution time: 3.67s Linking BeefBuild_bootd... SUCCESS Building BeefBuild_d [******************************] Beef compilation time: 41.44s Frontend time: 21.56s Comptime execution time: 3.49s Executing Command: ReadFile("$(WorkspaceDir)/../IDE/dist/IDEHelper_libs_d.txt", "IDEHelperLibs") Testing IDEHelper/Tests in BeefBuild_d 
Enter fullscreen mode Exit fullscreen mode

Após finalizada a compilação, teste um Hello, World! via linha de comando:

  • Entre na pasta que foi criado o binário:
cd IDE/dist 
Enter fullscreen mode Exit fullscreen mode
./BeefBuild -new 
Enter fullscreen mode Exit fullscreen mode

Aparecerá na saída: Created new workspace in '/home/$USER/Beef/IDE/dist'

Isso criará os arquivos:

  • BeefProj.toml, com o conteúdo:
FileVersion = 1 [Project] Name = "dist" StartupObject = "dist.Program" 
Enter fullscreen mode Exit fullscreen mode
  • BeefSpace.toml, com o conteúdo:
FileVersion = 1 Projects = {dist = {Path = "."}} [Workspace] StartupProject = "dist" 
Enter fullscreen mode Exit fullscreen mode
  • src/ (pasta vazia)

Para criar um arquivo em src/, rode:

./BeefBuild -generate 
Enter fullscreen mode Exit fullscreen mode

Isso vai gerar a pasta build/ e também o arquivo Program.bf dentro da pasta src/Program.bf. Mas, não tem um Hello, World! dentro do arquivo.

Edite o arquivo: vim src/Program.bf e insira um: Console.WriteLine("Hello, world!"); dentro da função Main(), ficando assim:

using System; namespace dist; class Program { public static int Main(String[] args) { Console.WriteLine("Hello, world!"); return 0; } } 
Enter fullscreen mode Exit fullscreen mode

Agora rode o arquivo com o argumento -run:

./BeefBuild -run 
Enter fullscreen mode Exit fullscreen mode

Aparecerá: Hello, world!.


Instalação

Limpe os arquivos criados:

rm -rf src/ BeefSpace.toml build/ BeefProj.toml ../../.git ../../.gitignore 
Enter fullscreen mode Exit fullscreen mode

Na verdade vc só precisará desses diretórios:

  • 📁 BeefLibs/
  • 📁 IDE/
  • 📁 IDEHelper/
  • 📁 jbuild/
  • e 📁 jbuild_d/

Mas, todos eles somam: 1,4GB com os demais vão para 1,6GB, então, se quiser só remova os arquivos gerados pelo teste realizado(Hello, World!) e os arquivos do Git.

Mova para /opt/:

cd .. sudo mv Beef/ /opt/ 
Enter fullscreen mode Exit fullscreen mode

Crie os links simbólicos para o binário e para as libs:

sudo ln -sf /opt/Beef/IDE/dist/BeefBuild /usr/local/bin/beef sudo ln -sf /opt/Beef/jbuild/Release/bin/libhunspell.so /usr/local/lib/libhunspell.so sudo ln -sf /opt/Beef/jbuild/Release/bin/libBeefRT.a /usr/local/lib/libBeefRT.a sudo ln -sf /opt/Beef/jbuild/Release/bin/libBeefRT.a /opt/Beef/IDE/dist/libBeefRT.a sudo ldconfig 
Enter fullscreen mode Exit fullscreen mode

Teste:

beef -version 
Enter fullscreen mode Exit fullscreen mode

BeefBuild 0.43.6

Teste um novo projeto:

mkdir MyGameBeef cd MyGameBeef/ beef -new beef -generate 
Enter fullscreen mode Exit fullscreen mode

Modifique o arquivo vim src/Program.bf:

Se quiser Syntax Highlight similar ao do CSharp no Vim: :set filetype=cs

using System; namespace MyGameBeef { class Program { static void Main() { Console.WriteLine("My first game with Beef!"); } } } 
Enter fullscreen mode Exit fullscreen mode

Rode:

beef -run 
Enter fullscreen mode Exit fullscreen mode

Eu testei o desempenho do tempo gasto de mil ciclos para o loop for com esse código:

for(int i = 0; i <= 1000000; ++i){ Console.Write(scope $"{i}Ok\r"); } 
Enter fullscreen mode Exit fullscreen mode

O resultado foi:

1000000Ok real 0m6,767s user 0m2,717s sys 0m3,292s 
Enter fullscreen mode Exit fullscreen mode

Para mais informações acesse o endereço oficial em: https://www.beeflang.org/ e o repositório: https://github.com/beefytech/Beef.

Top comments (0)