Guide

Target platforms

One Quillo program is the server, the HTML and the components that run in the browser. This page says where that program runs today, where it runs in preview, and where it does not run yet, so you can tell before you start whether your platform is one of them.

WhereStatusHow
Linux server, x86_64 and arm64WorksThe release downloads, linked against glibc 2.17, so they run on any distribution since 2014 (checked on CentOS 7)
macOS, Apple siliconWorksThe release download; also where Quillo is developed and its coverage measured
macOS, IntelBuiltThe release download is built for it, but CI does not run it
Windows, x86_64WorksThe release download, run in CI
BrowsersWorksPages are HTML from the server and work with no script at all; components need a browser from 2020 on (below)
Behind a proxyWorksnginx, Apache, Caddy or a load balancer in front of quillo run, with --trust-proxy for the visitor's address
Shared hosting (cPanel)Works (since 0.7)quillo fcgi under Apache's or LiteSpeed's FastCGI, or --listen unix: behind the web server: see Shared hosting
Desktop appWorks on macOSquillo app shows the program in a native window, with no socket; Windows and Linux take the same code, not yet run
iPhone and iPadPreviewThe program runs inside the app, offline; run on a real iPhone and in the simulator: see Phone apps
AndroidPreviewThe same, run end to end in the emulator on Android 15; not yet on a real phone
HarmonyOS NEXTPlannedHarmonyOS 2 to 4 run the Android app as it is
Static files onlyWorksquillo serve <folder> serves a folder as a static host does, and a program can files(...) one

The server

quillo run main.qwe is one process with no runtime to install: the binary holds the interpreter, the HTTP server, SQLite and the browser's runtime. Copy it to the machine, copy the program's folder, and run it. Install gives the downloads, and Hosting how to keep it running, in a container or not, behind a proxy for HTTPS, and on several cores or servers.

PartWhere it works
SQLiteEverywhere Quillo runs, phones included: it is built in
PostgreSQL, MySQL and MariaDBServers and desktop: they are network databases, and a phone app keeps its data in SQLite
Rust in .qwer and .rs filesServers and desktop with cargo there, or built ahead with quillo build and loaded with --no-build; not on phones yet
Plugins from the catalogThe same as Rust files: they are Rust files
ServicesAny two of the above that can reach each other over HTTP

A Linux release is not linked statically or with musl, and none is planned: a static binary cannot load plugins. On a system the releases do not cover (FreeBSD, 32-bit ARM), cargo build --release in a checkout builds Quillo for it, untested.

Browsers

A page is HTML from the server, so it shows in any browser, links and forms included, before any script has run and in browsers with script turned off. Components take over in the browser with Quillo's runtime, about 6,000 lines of JavaScript, which needs what browsers have had since 2020: Chrome and Edge 85, Firefox 77 and Safari 13.1, or later. The tests drive headless Chrome; Safari's engine is the one phone apps and the macOS app use.

Where a browser lacks something newer, the runtime goes without it: a call's time limit needs AbortSignal.timeout, and without it the call waits as long as the network does. Prefetching hands the page to the browser through speculation rules where it has them (Chrome, Edge), and elsewhere fetches it in the background for the browser's cache.

Desktop apps

quillo app main.qwe runs the program in a window of its own instead of a browser tab, with the system's web view: WebKit on macOS and Linux, WebView2 on Windows. The program runs in the window's process and nothing listens: no other program on the machine can reach it, so --port and --listen are refused there. It is built only on request:

cargo build --release --features app      # Linux also needs libwebkit2gtk-4.1-dev and libgtk-3-dev./target/release/quillo app main.qwe --watch

Only macOS has run it so far. See Desktop apps in the guide.

Phones

On a phone the program runs inside the app, offline, with its SQLite database in the app's own storage and no HTTP server: the app's web view asks the app for each page. The program is the one you run as a server, unchanged. What works today, and what store builds still need, is on Phone apps. Not yet: uploads to the App Store and Google Play, HarmonyOS NEXT, .qwer plugins linked into the app, and work while the app is in the background.

Not a target yet

WhatInstead
Components compiled to WebAssemblyThey compile to JavaScript
Serverless functions (AWS Lambda, Cloud Functions)A Quillo program is a long-running server: run it on a machine or a container
Passenger, cPanel's Application Manager, starting the programquillo fcgi, or --listen unix: behind the web server
quillo run --sandbox (seccomp and Landlock), and plugins built to WebAssemblyA policy to narrow what a program may do
Linux built with musl, or staticallyThe glibc 2.17 releases, which run on old and new distributions alike
quillo app run on Windows and LinuxmacOS, or the program in a browser tab with quillo run

The guide's Not built yet list has the rest.

Thread
15Useful? Like it, or add to its thread below.

Thread 0 posts

On Target platforms: questions, tips, corrections, and code that uses it.

No posts yet. The first one opens the thread.