v0.1A scripting language for the web

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 -lpthread

Move the binary somewhere on your PATH:

sudo mv bin/may /usr/local/bin/may

Dependencies

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-dev

Run a script

Once installed, point may at any .may file:

may hello.may

Where 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.