Skip to content

Latest commit

 

History

History
85 lines (60 loc) · 2.88 KB

README.md

File metadata and controls

85 lines (60 loc) · 2.88 KB

Small ML language (SMLL)

larry the smll mascott

A small, experimental, general purpose programming language created for exploring alternative ways of writing applications on the JVM

example workflow

Hits

What is needed to run this?

The latest JAVA compiler (with support for java 21 source input)

A rust compiler

import System::Io 

fn main(): Unit => println("Hello, world")

How to compile?

After downloading and installing the required software, execute the following commands

$ git clone depth=1 https://github.com/hexaredecimal/ML.git
$ cd ML
$ cargo build

After running these commands you should now have a target folder on the root of the project, then execute the following

$ ./target/debug/smll init  # Initialize a new project in the current directory and creates a `project.toml` and a directory named code
$ ./target/debug/smll build # Builds the dependencies and the projects main file
$ ./target/debug/smll run   # Run the main program file

Package Management

  • SMLL has a built-in package manager which handles dependencies as they are specified in the project.toml file
  • To add dependencies simply edit the project.toml file and add the following:
RaySMLL = "0.0.1"
  • Then run build. The compiler will download and install the dependencies in a folder in the current working directory.

Todo:

  • Package manager
  • Add command for adding new dependencies
  • Clean command for cleaning the project. (This should cause a full rebuild)
  • Use project version/author info when downloading dependencies
  • Package registry here

Features:

  • Type inference for variables
  • Variant enums
  • Structs
  • Expressions not Statements

Inspiration:

SMLL is a ml derived language for the JVM which borrows a lot of concepts from languages such as Standard ML, Rust and ocaml.

Stargazers

Star History Chart