/Carbon

Carbon programming language

Primary LanguageCGNU General Public License v3.0GPL-3.0

Carbon

Carbon is an interpreted, object oriented, VM-based, statically typed scripting language. It is intended to be simple, elegant and easy to use and embed. You can think of it as a statically-typed Lua with a syntax inspired by Python. It offers:

  • A simple, strict, safe, no-nonsense typesystem.
  • A managed environment. Let the computer take care of the memory.
  • Simple, easy to understand object-orientation, with single inheritance.
  • Readable, modern syntax.
  • Effortless embedability with a flexible module system.

Keep in mind that Carbon is still in early development and bugs might be common. Please report them if you find any!

Getting started

First, we need to compile Carbon.

POSIX

Carbon is very simple to build given you have a C99 compiler, make and a few standard command line utilities.

First, clone the repo.

git clone https://github.com/MintSoup/Carbon.git

cd into your newly cloned directory,

cd Carbon

And finally, build.

make

You can use

make -j$(nproc)

for a slightly faster build.

You can also compile in debug mode.

make debug

Windows

Building Carbon on Windows is a little more cumbersome, but still doable. We’re going to need some tools like git, make and find. You can get them from Scoop, but I find MSYS2 much easier and less error-prone.

After you’re done installing MSYS2, make sure our required tools are present.

pacman -S make gcc git

And from here on out, building follows the same process.

git clone https://github.com/MintSoup/Carbon.git
cd Carbon
make

Testing

Now that you have built Carbon, you can test it.

./carbon pascal.cbn

If you did everything right, you should see a Pascal’s triangle get printed out, like so.

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1
1 15 105 455 1365 3003 5005 6435 6435 5005 3003 1365 455 105 15 1

Learning more

Carbon is still very much in development, thus you should expect changes, some of which may be breaking. More info will be added soon, documenting the language syntax and builtin features, as well as the standard library. Until then, let example.cbn and pascal.cbn be your guide.

Future integration with the Paper Game Engine is planned.