GithubHelp home page GithubHelp logo

rumi's Introduction

Rumi

This project is no longer maintained.

I find it difficult to allocate time to it, but it has already served its purpose as a proof of concept: the program can change a static compiler's behavior as it compiles it, using the same syntax.

Everything you possess of skill, and wealth, and handicraft, wasn't it first merely a thought and a quest? - Rumi

Rumi is a low level compiler with functional properties that can be linked with c, doesn't make local functions a nightmare and has a powerful compile time language that is the same as runtime. The ultimate goal of rumi is to make programming joyful.

The current version is written in C++, however the previous versions were written in rumi and C++ respectively. We use LLVM to compile.

Language documentation could be find here.

rumi's People

Contributors

mcsh avatar shahinsorkh avatar

Stargazers

 avatar Artin Mohammadi avatar Jonathan Harrop avatar Amir Keshavarz avatar Mohamad Fadavi avatar Hamidzare avatar Amirmahdi Tafreshi avatar  avatar Mahdi Qiamast avatar Ali Forouzandeh Hafshejani avatar jaimeetxebarria avatar Hamed H. avatar Hossein Dindar avatar A.B. Carroll III avatar Manjeet Saini avatar Danyal Macky avatar Hesam Damghanian avatar Cole Blakley avatar Hamid Rouhani avatar Yahya SayadArbabi avatar  avatar Eugene Khabarov avatar Ali Molaei avatar hooman avatar Hossein Yousefi avatar Michael Heinrichs avatar Marcel Burkhard avatar  avatar Mahrud Sayrafi avatar Milad avatar Vahid Naeini avatar sorush saghari avatar Roozbeh Sharifnasab avatar Mojtaba Rahimy avatar Benyamin Eskandari avatar Erfan Chegini avatar Mohsen avatar Touhid Arastu avatar sa avatar shayan avatar Hadi Moshayedi avatar  avatar MJavad avatar oh! avatar  avatar Alexandre Ducobu avatar Eli B avatar Moath othman avatar Kamali avatar Bello Gbadebo avatar  avatar Ram Narayanan avatar Dmitry Kolesnikovich avatar Fulton Browne avatar  avatar Yazdan Mohammadi avatar  avatar Mehrad avatar Meysam Shirdel avatar

Watchers

sa avatar James Cloos avatar Wink Saville avatar  avatar Mohammad Reza (Matin) Ahmadi avatar shayan avatar Jason avatar

rumi's Issues

Importing needs more details in README and a suggestion about import syntax

Issue
You talked about importing in README and in examples "you could instead import the test_import file" but there are no examples of importing anything, I searched project files and found it the syntax is like:

import somefile

and somefile should be in your project dir or in RUMI_PATH dir. Plus, there is no info about where you can import and what happens when you import, Is it like copy and paste the code where you imported it? and you can import code in the middle of the code or at the end? or it should always be first in your file? Does it require once? or if I import something twice, it brings it twice? etc.

Suggestion:
Also, import syntax is not consistent with language syntax I think, It does not require ; at the end of it, and does not have <> " or any similar thing we use in other projects, I think it would be nice to have at least a semi-colon required at the end of the import statement to be consistent.
(I know for example C style includes are not semi-colon required too, but they are in a specific shape or "somefile" that make me think about them as special statements, but here my feeling is import is a statement [Maybe because I'm coming from a JS/TS/Java background])

syntax bikeshedding

Currently functions are defined like this:

stPrinter := (m: MyStruct) -> void
...

and structures like this:

MyStruct : struct 
...

This is not the easiest style for reading. The important information (this is function, this is structure) is not the very first thing one sees, it only appears only after potentially long name.

It would be IMO slightly more readable when the type of the definition comes first:

fn stPrinter(m: MyStruct) -> void
...

struct MyStruct 
...

It would also reduce a little bit visual noise made by !@#$%^&*())__+| characters.

This also applies to declaration of stack variables and structure members.

compiler breaks when commenting ouside of functions

Following code does not compile:

import test_import

main := () -> int{
    printf("Hello world!");
    return 0;
}

// vim: foldmethod=marker foldmarker={,}

The problem is the comment on the last line. When omitted, it compiles and runs.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.