Skip to content
/ umi Public

A statically typed language that compiles to CIL

Notifications You must be signed in to change notification settings

kowasaur/umi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Umi

Note that the .expected files are the expected output of the corresponding .umi files.

Example

Int !(Int n, Void _) {
    if n == 0 { 1 }
    else { n * (n - 1)! }
}

Void main() {
    print(0!)  #         1
    print(1!)  #         1
    print(5!)  #       120
    print(10!) #   3628800
    print(12!) # 479001600
}

Goals

  • Compiles to CIL
  • Turing Complete
  • Self-hosted
  • Published on the AUR
  • Pong
  • VSCode extension with auto-complete, etc
  • Interoperability with C# (can use any C# file in Umi file but have to manually make bindings)

Features

  • Strong static typing
  • Implicit and explicit return
  • Function overloading
  • if and else statements
  • while loops
  • Aliases
  • Classes
    • All methods are virtual by default
    • Inheritance
  • Generics
  • Immutability by default
    • Immutable references like final in Java
    • Make variables mutable with mut keyword
  • Including other umi files (importing)
  • Creating range array with ...
    • E.g. 0...10

Planned

  • Macros or inline functions
  • for in loop
  • String interpolation
  • Anonymous functions
  • Switch cases

About

A statically typed language that compiles to CIL

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published