Skip to content

An Introduction

Welcome to the solus handbook: your guide to solus, its features, and tips on how to utilize it effectively. This small "book" will cover everything from the basics of values, to the building blocks of the language, to the unique quirks of solus that you'll need to know about to master my language. This guide seeks to be easy to understand for established developers, and relatively achievable at the very least for those inexperienced with traditional programming languages.

Why Solus?

Solus came to be for numerous reasons, but the most important one is simply because I wanted it to. You'll notice that every language seems to need a justification to exist; why should I pick your language over the hundreds of others? My answer to this is that you shouldn't, this language was created for me and for me to teach. If you object with concepts included in solus that's fine, it's not for you, it's really for a hyper-specific kind of person like me.

Now onto the actual substance of why I made this silly language, I became frustrated with Lua primarily because of its syntax and C api. I have never liked how far Lua and Python stray away from C-style syntax, and I vastly prefer writing my semicolons and curly braces thank you very much. Due to the "because I said so" nature of solus, it draws inspiration from a multitude of languages but is most similar to Lua, and the niche it's meant to fill is one that Lua currently fills on its own.

The solus C api is extremely easy to grasp and much simpler to manage state in than the Lua API, making it simpler to embed into other applications without having to use an abstract stack to interact with the language. Unfortunately this means that although the VM design is extremely similar internally, you're going to have to forget what you know about Lua when writing applications with the solus API.

The Name

The name is something I always feel inclined to explain to people when talking about my language because it does have meaning behind it beyond just sounding cool. "Solus" is a Latin word, meaning alone or by oneself, and I am the sole contributor and director for everything solus as of now. The meaning does not end there though, the mascot and file extension being called .solu is an intentional choice, being pronounced as in "Solution". These two names for the language join together to form the idea of a solution created entirely alone and for oneself, which is the best way I could think to describe solus.

Inspirations

As previously mentioned the primary inspiration for solus was Lua, and I can't really put into words how much Lua pushed me to make my own language from the very moment I got my hands on its C API. It really served as a gateway into writing custom functions for a scripting language to call into, which is what led to everything that led to solus. I originally was working on a game engine using Lua as the scripting language, but decided to make my own to suit my specific needs and in order to learn about how languages go from text to bytecode. Another big inspiration on solus is actually Rust believe it or not, and that's the origin for the error handling mechanisms used in solus as well as some specific features like trailing return.

Outside of direct language influence, the greatest inspirations for making this language are the few friends who actually take the time to listen to all my talking on and on about it. I really feel like I'm committing to a brick wall sometimes, and in reality I kind of am, but it makes me feel better when people take time to at least pretend they care about the insane ramblings of a niche scripting language designer. If you're reading this, thanks.