Libraries
Search every package published to the Sere registry. Install one with sere add, or push your own with the publish API. The standard library still ships with the compiler — everything in the list above is a package you opt into.
2 packages
The packages the most projects already depend on.
Publish a package
Describe the package in sere.toml, sign the CLI in once with a token, then publish from the library folder. Versions are immutable: uploading the same version twice is rejected, so a tag in a manifest always resolves to the same bytes.
# sere.toml — read by the registry and by sere add
[package]
name = "hello-utils"
version = "0.1.0"
summary = "Small helpers for Sere projects."
license = "MIT"
repository = "https://github.com/you/hello-utils"
keywords = ["utilities", "strings"]cd hello-utils # the folder holding sere.toml
sere login $SERE_TOKEN # once per project
sere publishAuthenticate
Create an account and issue a token, then send it as Authorization: Bearer. Revoke a token whenever you like without disturbing the others.
Where archives live
Each upload lands in the packages bucket at <name>/<version>/<name>-<version>.tar.gz, alongside its SHA-256 so installs can verify what they fetch.
Read API
GET /api/packages lists and searches, /api/packages/<name> returns every version, and /api/packages/<name>/<version> hands back a download URL.
Standard library
Prelude is always there. Everything else is import.
prelude
Always injected: print, abs, min, max, Int / Float, dbg!.
io
read_line, eprint, extra I/O on top of the print intrinsic.
fs / path / os / env / sys
Files, paths, process, and the host.
string / bytes / encoding / regex
Text and binary. Backtick literals type as regex.
math / vec / matrix / ml / arrays
Numeric work and linear algebra.
hash / random / time / log / bit
Utilities you reach for in a real binary.
gc / heap / memory
Collectors, arenas, pointer vocabulary.
inspect
label and describe, not the builtin typeof / dir.
html_lang
html: raw macro plus the Html wrapper.
windows / gl / qt6
Win32, OpenGL 2.1+, Qt widgets (stub if missing).
requests
HTTP client: get, post, put, delete.
wsgi
Blocking HTTP server. Subclass Handler and implement handle.
Packing your own
A library is either a packed .slib you drop in libs/, or a folder the compiler reads directly. Packing keeps the entry, the local modules it imports, and any compiled native objects in one file.
sere init-lib mathlib
cd mathlib
sere pack
copy dist\mathlib.slib ..\myapp\libs\import mathlib
def main() -> i32:
return mathlib.add(2, 3)