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
- #About
- #Install
With package manager(yet)- #From sources on Linux
- #From binary package on Windows
Getting Started(yet)- References:
- Language -> docs/refs
- CLI -> docs/cli.md
- Reading:
- C as Backend
- Examples -> tests/examples
- Internals -> docs/internals
- Implementation:
- Compiler -> src/MiloneCli/Cli.fs
- LSP Server -> src/MiloneLspServer/Program.fs
- Built-In Library -> src/MiloneCore
- Standard Library -> src/Std
- VSCode Extension -> vscode_ext
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.
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
.
Prerequisites:
- Windows 10
- Install Visual Studio 2022 Build Tools
Instructions:
- Download a binary package from GitHub Releases
- Unarchive it
- Follow instructions written in INSTALL.md
See docs/binary_package.md for more details.
(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.
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.)