Home / Highlights / FAQ / Examples / Quick Start / Download Forum / Register / Login

Frequently Asked Questions:

How does automatic memory management work?

The idea behind the design is you shouldn't need to think about it. Imagine writing "var := mystruct". You don't need to think about if it should be stack or heap, you don't need to think about passing it into a function by value or reference. If you change a struct from 8bytes to 1K you wouldn't need to change all the uses to go from stack->heap and by value to by reference. The more interesting example is returning an array. If a function returns a fixed length array the compiler will create a hidden parameter. When writing mystruct.data = func() the compiler would pass the address of mystruct.data into the hidden parameter and skip both allocation and copy.

Is this memory safe? How do you handle lifetimes?

Not to be confused with automatic memory which completely works, memory safety isn't fully implemented. We use invalidation to say all references that came from that object are no longer valid. This is checked at compile time. Not everything has been implemented so there are holes and we haven't chosen alias rules which might be a simple not allowed.

What are the goals of this language and where does it fit in?

Everyone wants something to replace C. Because having access to pointers and doing unsafe things (pointer arithmetic, type punning, etc) gets in the way of the compiler rearranging memory we don't want it. We also don't want to support all the C use cases so we can not be a C replacement. Bolin needs to reason about ownership and lifetimes, because of this it is more restrictive than a GC language. If you're not interested in type punning or garbage collection, you may enjoy writing code in Bolin

Do you have a list of unique features?

The invisible features are quite good
Without context it's hard to imagine how you'd use unfamiliar features. The ones you'll use the most are There's many non unique features that show up in indie languages and few mainstream languages. You can find them by browsing the highlights or examples.

Why did you create a forum? Why not use THIRD_PARTY_SERVICE?

I (Levo) made this decision. I don't like dealing with third party sites. They have trackers and ads. They occasionally break browsers. They may force people to provide a phone number which many aren't comfortable with. They'll try to engage or distract a person which I rather not have happen. I rather have as little noise as possible, so I wrote a forum myself. It'll also be a good milestone to reimplement this in Bolin.

What's with the EULA?

We took a vote with everyone involved with the project on which license to use. There was no consensus so we put it off. While brainstorming on what tools we want to develop, a number of suggestions sounded like something a cloud company would provide, or already has. Without naming names, a particular cloud company has forked several open source projects and directly competed with their authors. Two very well known projects changed their license as a response and one of them intentionally broke backwards compatibility. We then agreed that an end user license agreement would give us some future proofing and potentially prevent stress. Expect a new license around the 1.0 release.