DEV Community

Cover image for How to install Beef Language on GNU/Linux
Marcos Oliveira
Marcos Oliveira

Posted on

How to install Beef Language on GNU/Linux

🐮 A programming language for game developers and general productivity.


Beef is an open-source, compiled, high-performance language specifically designed for real-time applications like games, combining performance with productivity.

• Syntax inspired by C#, with manual memory management from C and C++, and modern ergonomics inspired by Swift and Go.

  • Well-designed project with its own IDE (Windows);
  • CLI compiler (Linux/macOS);
  • Debugger;
  • Code assistants;
  • and Hot-compiling.

Beef is ideal for those who need rapid development and fine-grained resource control, especially:

  • Game and Game Engine Developers (console, desktop, WASM).
  • Projects requiring efficient debugging, hot-reload, and productivity-focused ergonomics.

Precompiled binaries are available for Windows—just download and run the .exe.

But on macOS and GNU/Linux distros, you’ll need to compile from source.

Below, we’ll cover the steps to compile and install on GNU/Linux distros.


Dependencies

First, you’ll need the following tools installed on your system:

Example of dependency installation using 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

After that, just clone and build:

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

Before tests, you’ll see:

[******************************]  
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

After compilation finishes, test a Hello, World! via command line:

  • Navigate to the binary folder:
cd IDE/dist  
Enter fullscreen mode Exit fullscreen mode
./BeefBuild -new  
Enter fullscreen mode Exit fullscreen mode

Output: Created new workspace in '/home/$USER/Beef/IDE/dist'

This will generate:

  • BeefProj.toml, with:
FileVersion = 1  

[Project]  
Name = "dist"  
StartupObject = "dist.Program"  
Enter fullscreen mode Exit fullscreen mode
  • BeefSpace.toml, with:
FileVersion = 1  
Projects = {dist = {Path = "."}}  

[Workspace]  
StartupProject = "dist"  
Enter fullscreen mode Exit fullscreen mode
  • src/ (empty folder)

To create a file in src/, run:

./BeefBuild -generate  
Enter fullscreen mode Exit fullscreen mode

This will generate the build/ folder and Program.bf inside src/. However, it won’t contain a Hello, World! by default.

Edit the file: vim src/Program.bf and insert Console.WriteLine("Hello, world!"); inside the Main() function, like this:

using System;  

namespace dist;  

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

Now run the file with -run:

./BeefBuild -run  
Enter fullscreen mode Exit fullscreen mode

Output: Hello, world!.


Installation

Clean up generated files:

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

Actually, you only need these directories:

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

But all of them total 1.4GB (or 1.6GB with extras). If you prefer, just remove the test files (Hello, World!) and Git files.

Move to /opt/:

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

Create symbolic links for the binary and 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

Test:

beef -version  
Enter fullscreen mode Exit fullscreen mode

BeefBuild 0.43.6

Test a new project:

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

Edit vim src/Program.bf:

For CSharp-like syntax highlighting in 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

Run:

beef -run  
Enter fullscreen mode Exit fullscreen mode

I tested the performance of a million-loop for loop with this code:

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

Result:

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

For more info, visit the official site: https://www.beeflang.org/ and the repo: https://github.com/beefytech/Beef.

Top comments (2)

Collapse
 
nathan_tarbert profile image
Nathan Tarbert

been cool seeing steady progress on tools like beef tbh it adds up over time you think habits matter more than luck for learning new languages long-term

Collapse
 
marcosplusplus profile image
Marcos Oliveira

Thanks for the comment, Nathan! =)