Skip to content

vain0x/milone-lang

Repository files navigation

The Milone Language

The Milone language is an F#-subset programming language. This is all-in-one repository.

let rec factorial n =
  if n = 0 then
    1
  else
    n * factorial (n - 1)

printfn "5! = %d" (factorial 5)
5! = 120

Table of Contents

About

History: The author started this project in 2018 just for fun. Initial goal was making a compiler that can compile itself (that is, self-hosting). It was achieved at v0.1.0 in 2019.

Status: Currently this project is being developed for v1.0 release.

Disclaimer: This is a hobby project. Don't use in production.

Install

Install from Sources on Linux

Prerequisites:

  • Ubuntu 20.04 (or similar)
  • Install .NET SDK 6
  • Install GNU make 4.2.1
  • Install GCC 9.4.0

Do:

# Download
git clone 'https://github.com/vain0x/milone-lang' --filter=blob:none

# Build and install.
cd milone-lang
make install
  • To uninstall, do make uninstall.

Install from Binary Package on Windows

Prerequisites:

Instructions:

See docs/binary_package.md for more details.

License

(L-1) Milone-lang tools (CLI compiler and LSP server) are distributed under either:

(L-2) Files that explicitly include their license notice are distributed under that license.

(L-3) Everything else (including configurations, documentation, examples, libraries, runtime, scripts, tests, etc.) are distributed under CC0-1.0.

(L-4) Any part of the repository can change license to any of the three licenses (Apache, MIT, CC0.)

Remark:

  • (L-3) guarantees that binaries generated by the milone-lang compiler that depend on the milone-lang runtime can be distributed under any license, especially without being affected by the Apache or MIT licenses.

  • (L-4) guarantees that any content in the repository can be moved within the repository without regard to license changes.

    • For example, a piece of code in a compiler can move to Std, even though the move affects the license.

Contribute

Issues and pull requests are welcome. Feel free to ask in discussions, twitter or something.

Contributors must agree to the license rule (L-4) written above. (In short, contributed code is distributed under any of Apache, MIT or CC0.)