The beginnings of a programming language.
This repository contains the protosnirk compiler, which is written in Rust. If you're interested in compilers (or Rust?) maybe check it out. The language itself, as the name suggests, is rather sparse right now, but you can check out the tests folder to see what it can do.
Languages change a lot during development. However, it can be hard to take a smaller
language seriously if it has a lot of churn or instability in its APIs,
or if it goes through large syntax changes.
Rust, in particular, went through enough change in its infancy that at the time they
were stabilizing for 1.0, there were still StackOverflow questions that would reach
the top of searches about old and disused features (such as @mut
).
I'd like to develop protosnirk to the point of it being a serious "proof of concept" for
some of its novel features and systems. Once the basic experience of writing code and the
shape of most programs seems to be stable and useful enough, we'll roll over from
protosnirk x.y
to snirk 0.x.y
.
Because of this, there are parts of protosnirk that I'm not giving attention to. For example, it's still just a library and the main "frontend" I use are the integration-tests.
I'm tired of seeing errors pop up during runtime which could have been avoided if a programmer could write a more clear API or if the compiler could check a few things before compiling code.
There's not much more I can say right now, this is still "proto" after all.
There are many types of names for programming languages, such as
Snirk was chosen as a kind of "fun word" category - you can't confuse it with anything else yet and there's no need to add "lang" to the name to avoid confusion (unless you are using Hungarian notation).
This means we will name source code .snirk
, libraries .snirklib
,
and the compiler snirkc
.
snirk
is "a treasured and carefully-guarded point" in the space of
five-character strings.
It's not really special right now.
master
)null
s) which also enforces immutabilityconst
data