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.
Beef é ideal para quem precisa de desenvolvimento rápido e controle fino de recursos, principalmente:
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.
Antes de mais nada, você vai precisar das seguintes ferramentas instaladas no seu sistema:
3.15
ou mais recente18
ou mais recenteExemplo 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
Após isso é só clonar e construir:
git clone https://github.com/beefytech/Beef
cd Beef
./bin/build.sh
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
Após finalizada a compilação, teste um Hello, World! via linha de comando:
cd IDE/dist
./BeefBuild -new
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"
BeefSpace.toml
, com o conteúdo:FileVersion = 1
Projects = {dist = {Path = "."}}
[Workspace]
StartupProject = "dist"
src/
(pasta vazia)Para criar um arquivo em src/
, rode:
./BeefBuild -generate
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;
}
}
Agora rode o arquivo com o argumento -run
:
./BeefBuild -run
Aparecerá:
Hello, world!
.
Limpe os arquivos criados:
rm -rf src/ BeefSpace.toml build/ BeefProj.toml ../../.git ../../.gitignore
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/
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
Teste:
beef -version
BeefBuild 0.43.6
Teste um novo projeto:
mkdir MyGameBeef
cd MyGameBeef/
beef -new
beef -generate
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!");
}
}
}
Rode:
beef -run
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");
}
O resultado foi:
1000000Ok
real 0m6,767s
user 0m2,717s
sys 0m3,292s
Para mais informações acesse o endereço oficial em: https://www.beeflang.org/ e o repositório: https://github.com/beefytech/Beef.