Atom Neo

A small language that arrives finished.

One static binary with a web server, a reverse proxy, a repl and a formatter already inside it. What you copy to a server is a single file, and it runs on a machine with nothing else installed.

The language pulls in no third party code at all. It runs on Quark, which is quick enough to stay out of the way.

Brackets hold the values
var xs = [1, 2, 3]
commas make a list
var site = [name: "atom", port: 9143]
colons make a map
var n = [len(xs) * 2]
the same brackets do the arithmetic
print([site @ "port"])
and @ reads out of either one

Windows
Download the installer
Installs for you alone, so Windows never asks for an administrator, and it uninstalls from Add or Remove Programs.
Linux
$ curl -fsSL atom.mikuuu.xyz/install.sh | sh
Verifies the published checksum before it installs anything. Or build it yourself with Go 1.26.5. macOS is not supported.

1file to copy to a server
0third party dependencies
4tools inside, plus your own packages

The engine

Quark

Hand written, with no parser generator and no third party code anywhere in the language. Expressions compile down to closures instead of running through an interface, and names resolve to indices while they compile, globals to slots and locals to a reusable stack, so a call allocates nothing at all.

A bytecode machine was measured too, and lost. Go has no computed goto, so every opcode leaves through the same switch and the processor sees one unpredictable branch. The numbers stay in the test suite, which is how the question stays settled.

What else was tried, and why it lost

One expression, by dispatch strategy
StrategyPer op
Compiled closures2.37ns
Bytecode machine12.01ns
Interfaces13.14ns
Quark uses the first. The losing two are kept as benchmarks rather than deleted, so the choice can be rechecked on your own machine with go test -bench Dispatch ./src/expr/ instead of taken on trust.

A server is six lines.

The web module is compiled into the binary rather than fetched. Static files get clean urls and no directory listings, pages can be built by your own functions, and every server carries read, write and idle timeouts whether you ask for them or not.

Read the reference

import web

func home(path) {
  return ["<h1>hello from atom</h1>"]
}

web.handle("/", home)
web.listen(9143)

It already speaks json.

Lists and maps round-trip through tojson and fromjson without a package, a decoder or a struct to declare first. Files, strings and maths are the same story: they are builtins, so there is nothing to install before the first useful program.

Every builtin, in one table

var data = [name: "atom", tags: ["fast", "small"]]

write("out.json", tojson(data))

var back = [fromjson(read("out.json"))]

each tag in [back @ "tags"] {
  print([upper(tag)])
}

What comes with it
01

Web server

Static files with clean urls, or pages built by your own functions. Mime types are registered rather than guessed, and every server carries read, write and idle timeouts.

02

Reverse proxy

Send several domains to separate targets, with certificates from Let's Encrypt on request. It refuses to ask for one until you name the domains.

03

Repl

Try a statement as you type it. State carries between lines, and a block keeps taking input until you close it.

04

Formatter

Indentation and trailing space, tidied. The check mode exits non-zero, so it drops into a pipeline without any extra glue.

05

Packages

Install a folder or a zip. Archives that climb out of the install directory, or expand far past their size, are refused rather than trusted.

06

Nothing else

The language depends on no third party code. What you copy to a server is a single file that runs on a machine with nothing installed.


This page is served by Atom Neo

Not a static host. The site runs on the language it documents, on the web module listed above, behind the proxy listed above it. What follows is the whole of it.

import web

web.static("./site")
web.notfound("404.html")
web.route("/", "index.html")
web.host("127.0.0.1")
web.log(true)

web.listen(9143)

A fork of Atom3 by WawaDev. v0.1.0, Quark