Awesome
Biscuit Programming Language
The Biscuit Language (BL) is a simple imperative programming language using LLVM backend and compiler implemented in C. Language syntax and all its features are still in development. Biscuit is designed to be simple, fast, and explicit.
- Project homepage: biscuitlang.org
- Discord: here
- Contact email: biscuitlang@gmail.com
- Twitch: here
Language design and some core principles are based on the hard work of Jonathan Blow, who, over the past few years, has been working on the JAI programming language. You can watch his streams on Twitch. I liked the idea of C++ replacement a lot from the beginning, and since Blow's project is not publicly available, I've started implementing my own language from scratch.
Features
- Strongly typed.
- Embedded rich runtime type information.
- Polymorphic functions and structures (generics).
- Simple structure inheritance.
- Compile-time execution (experimental).
- Compile-time function arguments; allow passing types as values (experimental).
- C ABI compatible (C library functions can be directly called).
- Runtime debugging is possible in Visual Studio/gdb/lldb.
- Explicit function overloading.
- Integrated build system.
- Module management.
- Unit testing system.
- Automatic documentation generation.
- Defer statement.
- Multiple return values.
- Custom memory allocators.
- Basic support for game development via
extra
packages. - Supports Windows, Linux and macOS.
- Nested functions.
- And more...
Installation
See the installation guide here.
Example
HelloWorld :: struct {
hello: s32;
world: s32;
};
main :: fn () s32 {
info :: cast(*TypeInfoStruct) typeinfo(HelloWorld);
loop i := 0; i < info.members.len; i += 1 {
print("% ", info.members[i].name);
}
print("!!!\n");
return 0;
}
See more examples here.
Authors
- Martin Dorazil (travis) SPONSOR
- Gmos
FAQ
- Why does this even exist?
I enjoy programming in simple languages like C, but sometimes I need a bit more abstract things. Having a custom language brings a pretty nice possibility to add all you need or miss from your conventional language like C. And, it's fun to work on.
- Does language support XYZ?
Probably not, I'm the only one working on the compiler and I usually do only things I need. Feel free to contribute.
- Is it production ready?
Depends on what you mean by production, but I would prefer this language to be used on smaller pet projects first before diving into corporate bullshit.
- Can this language be used as C++ replacement?
In some cases yes, but you might run into trouble since there is no strong community behind the language and the new religion was not established yet.
Projects Using BL
Tine Text Editor
Text editor I use.
<div style="text-align:center"><img src="logo/the_editor.png" /></div>Vulkan Renderer & The Game
Screenshot of an unnamed 3D experimental game created using BL.
<div style="text-align:center"><img src="logo/the_game.png" /></div>Notes App
<div style="text-align:center"><img src="logo/the_note_app.png" /></div>Space Shooter
- Source code here.
Contribution
Please follow the instructions on wiki.
Links
- Tree Sitter parser done by Gmos.