An update on the Rumi Programming Language, and an overview of the tools used

In 2019, I've been working on a compiler in my spare time(I think I spent like 2 working weeks on it!) called rumi . It is a general-purpose language, with ideas that I got from Johnatan Blow's compiler videos. It's been a wonderful experience for me, and I occasionally streamed coding this compiler in my native language (Farsi).

Now the compiler has reached a state where I can actually write programs in it, but it is still way off from what I plan to do. Here is a program showcasing most of what we can do:



/* Comments and /*nested*/ comments are a thing */ ptinf ( T : string , c : ... any ) -> int ; // We just declare the signature, it is implemented in a c file MyStruct : Struct { id : int ; age : u8 ; } main := () -> int { a : int ; a = 1 ; b : int = 2 ; c := a + b ; printf ( "The value of c is %d

" , c ); // 3 arr : int [ 10 ]; mys : MyStruct ; mys . id = 2 ; arr [ 0 ] = mys . id ; printf ( "The id is %d, and the 0th element is %d

" , mys . id , arr [ 0 ]); // 2, 2 // We also have pointers: p : * int ; p = & c ; * p = 2 ; printf ( "The value of c is %d

" , c ); // 2 return 0 ; }

As you can see, it is really basic at this stage, but I have plans to implement something that I would use day-to-day. The program uses an llvm-backend which allows me to link it together with C files, either calling C functions or provide functions for C (or any other language that can use C) to call.

Now, I'm looking for contributors or suggestions as things to include in this language. Here is the repo:

MCSH / rumi The rumi compiler Rumi Everything you possess of skill, and wealth, and handicraft, wasn't it first merely a thought and a quest? - Rumi Rumi is a WIP compiler. The goal is to have a language that is low level, has functional properties, can be linked with c, doesn't make local functions a nightmare, has a compile time language that is the same as the runtime language, and focuses on making programming joyful. The current version is written in itself, you create a base compiler with C++, flex and bison, then run self_compile.sh so that the compiler compiles itself. The previously semi-complete version could be found in the old branch. View on GitHub

And you can also comment your ideas on this post! If you guys are interested, I can even showcase the compiler structure in an English YouTube video (or a live video or a blog post) and even implement some new functionalities to it.

Let me know if you have any suggestions or questions!