Installation
May is distributed as source you can build with a C compiler, or as a Docker image you can run anywhere.
Build from source
Clone the repository and compile with gcc. May depends on libcurl for the HTTP client and pthread for concurrent connections.
Linux / macOS
git clone https://github.com/LandonHarter/maylang.git
cd maylang
mkdir -p bin
gcc -I ./include src/*.c src/lib/*.c main.c -o bin/may -lm -lcurl -lpthreadMove the binary somewhere on your PATH:
sudo mv bin/may /usr/local/bin/mayDependencies
libcurlHTTP client used by the api module.libc6Standard C library.libmMath functions used by the math module.libpthreadThreading for concurrent client handling.On Debian/Ubuntu:
apt update && apt install -y build-essential libcurl4-openssl-devRun a script
Once installed, point may at any .may file:
may hello.mayWhere hello.may could be:
import "io";
print("Hello world!");Docker
A Dockerfile ships with the repository and is set up to run the documentation server. You can adapt it for your own apps:
FROM ubuntu:26.04 AS builder
RUN apt update && apt install -y curl git build-essential \
libcurl4-openssl-dev libc6
RUN git clone https://github.com/LandonHarter/maylang.git /app
WORKDIR /app
RUN mkdir -p bin && gcc -I ./include src/*.c src/lib/*.c main.c \
-o bin/may -lm -lcurl -lpthread
FROM ubuntu:26.04
RUN apt update && apt install -y libcurl4 libc6
COPY --from=builder /app/bin/may /usr/local/bin/may
COPY ./app /app
WORKDIR /app
CMD ["may", "server.may"]That is everything. There is no package manager, no virtualenv, and no build script. One binary, one file to run.
Next
Head to the Quick Start to write your first program, or jump into the Syntax reference.