audio facade docs
Audio files for X_eTaL: decode Ogg Vorbis, MP3 and WAV, play them on the sound device, and read what is playing as arrays -- the window of samples under the playhead, for analysis and pictures (the visualizer).
audio / scope source and docs
A live oscilloscope: the synthesizer's music (Instruments.xtl) plays while a window draws the samples under the playhead -- the left channel above, the right below -- each frame, triggered on the left channel's rising zero crossing so a steady chord stands still.
just demo audio scope
audio / spectrum source and docs
The music visualizer: an Ogg Vorbis (or MP3, WAV) file plays while X_eTaL turns what is playing into a spectrum and the spectrum into 16 spokes in a 3D window -- Rust decodes, plays and draws; the analysis and the picture's geometry are X_eTaL arrays.
just demo audio spectrum
audio / synth source and docs
A synthesizer made of arrays: X_eTaL computes every sample of a little piece -- notes from equal temperament, harmonics, envelopes, chords, stereo (the instruments are in Instruments.xtl, beside this file) -- and the audio extension plays them as they are made.
just demo audio synth
canvas facade docs
A native window showing X_eTaL arrays as pixels, with keys, clicks and frame ticks back -- the first extension served by the UI host (crates/xetal-ext-ui), and the base of the media saga's visualizer.
canvas / life source and docs
Conway's Life in a native window: the board is an X_eTaL array, each generation one array expression, drawn by Rust with every frame.
just demo canvas life
clock facade docs
Wall-clock and monotonic time: timestamps for programs (as Unix seconds or ISO 8601 text), and timing for benchmarks -- including the cost of the bridge itself. X_eTaL itself now has the time of day ([]TS) and a delay ([]D_L), but no monotonic clock yet (docs/xetal-asks.md in the repository, E4).
clock / bridge-cost source and docs
What the text bridge costs (docs/bridge.md): calls per second, and Floats per second carried out and back (it uses hello too).
just demo clock bridge-cost
digest facade docs
SHA-256 and CRC-32 for X_eTaL, of text and of files: to check that content is what it should be -- a downloaded feed against the digest recorded when it was saved, a file against a checksum published beside it.
No demo yet.
hello facade docs
The smallest X_eTaL native extension. It exists to prove the boundary: each function exercises one thing a real extension needs.
hello / tour source and docs
A tour of the hello extension: X_eTaL arrays handed to Rust and back.
just demo hello tour
http facade docs
<p align="center"> <img src="../videos/quakes.webp" alt="The earthquake report at the command line" width="640"> </p>
http / quakes-live source and docs
Earthquakes of the past week, live: the USGS feed of magnitude 2.5 and up, fetched now (the network: run it only when you mean to), its SHA-256 shown, then the same report as quakes.xtl.
(no recording yet)
just demo http quakes-live
http / quakes source and docs
Earthquakes of a week: the USGS feed of magnitude 2.5 and up, saved 2026-10-06 (demos/data/PROVENANCE.txt), checked against its SHA-256, into SQLite; SQL selects and groups, X_eTaL computes (the magnitude-frequency law), pictures show it.
just demo http quakes
image facade docs
<p align="center"> <img src="../videos/photo-lab.webp" alt="The photo lab: filters, the SVD at three ranks, sepia" width="640"> </p>
image / photo-lab source and docs
The photo lab: a photo is an array. Buzz Aldrin on the Moon (Apollo 11, NASA, public domain: demos/data/PROVENANCE.txt) read as numbers; filters and edges by rotating the array (the Life idiom), a color toning by an inner product, and the SVD compressing it at several ranks -- the native code reads, writes and decomposes, X_eTaL does the rest. Pictures go to work/photo-lab/.
just demo image photo-lab
linalg facade docs
Numerical linear algebra for X_eTaL, through nalgebra: solving systems, inverses, determinants, least squares, symmetric eigenvalues and the singular value decomposition -- the algorithms an array language should call, not reinvent. Matrices are Float arrays, rows by columns.
No demo yet.
scene facade docs
Retained 3D scenes in a native window: an X_eTaL program puts objects under ids it chooses (a polyline, segments, dots, filled quads) and patches them later; Rust draws them in perspective from an orbit camera, which the mouse turns -- quads shaded and depth-tested, lines over them. The base of the visualizer and of the voxel demos.
scene / cube source and docs
A wireframe cube turning in a native 3D window: its corners and edges are X_eTaL arrays; Rust draws them.
just demo scene cube
scene / voxels-chunk source and docs
Voxels, 1: a chunk is an array. 16 by 16 by 16 block numbers built from a height field in a few array expressions -- grass, dirt, stone, water below a level, sand at its shore, one tree -- then counted, cut and seen from above. (docs/voxels.md; the next demos draw it.)
just demo scene voxels-chunk
scene / voxels-endless source and docs
Voxels, 6: an endless world. Walk in any direction and it never ends: the land comes from value noise hashed from the coordinates (vx:h_eightsAt), so any column of 16 by 16 blocks can be made by itself and fits its neighbors; columns are made around the player as it walks -- the nearest missing one each frame -- and dropped behind it; fog hides the edge of what is made, and a curved horizon (scene lowers the world by d^2 / 2R) makes it look like a small planet. Collision asks the columns themselves. The world and the player are the library Endless.xtl, shared with voxels-fly: each column is made over three frames, so no frame waits long.
just demo scene voxels-endless
scene / voxels-faces source and docs
Voxels, 2: which faces to draw. A face shows where a solid block's neighbor is not solid: six rotations of the solid mask, each compared with the mask itself (the idiom of Life), give every exposed face of the chunk at once; the faces become a list, one row each: x y z direction block. Checked on shapes with known answers, then the chunk's faces drawn as outlines in a 3D window, turning.
just demo scene voxels-faces
scene / voxels-fly source and docs
Voxels, 7: flying. The endless world of voxels-endless, now from the air: F switches between walking and flying. Flying moves level whatever you look at -- W forward, S back, A and D sideways -- Space rises and Shift sinks, with no gravity, the blocks still stopping you; so you can look down at the land as you cross it. F again drops you back to walking wherever you are. The columns are made ahead, one a frame, and dropped behind, under fog and a curved horizon.
just demo scene voxels-fly
scene / voxels-solid source and docs
Voxels, 3: the chunk drawn solid. The same faces as voxels-faces, each now a filled quad -- its four corners from a 6 by 4 table by direction -- one object per kind of block; scene shades each by how it faces the light and hides the farther ones behind the nearer (a depth buffer), with a little fog. All the array work is X_eTaL's; Rust only draws.
just demo scene voxels-solid
scene / voxels-walk source and docs
Voxels, 5: walking. The island of voxels-world, seen from inside it. The player is nine numbers -- x y z (feet), vx vy vz, yaw, pitch, on the ground -- and every frame X_eTaL reads the keys and the mouse, turns, falls, jumps, and moves one axis at a time against the solid blocks the player's box would overlap, stopping at the face of the block it hits (a swept box per axis, as the APL game collides); then it sets scene's first-person camera. It also tests the 32 chunks against the planes of the view, as the APL game culls (key c).
just demo scene voxels-walk
scene / voxels-world source and docs
Voxels, 4: a world of chunks. An island 64 by 32 by 64 -- 32 chunks of 16 cubed -- from value noise made by linear algebra (random heights on grids every 16, 8 and 4 blocks, each interpolated as M G M'), shaped by the chunk's rules over the whole world at once, with trees planted by folding one tree over a list of places. Its faces are found over the whole array (so faces between chunks hide each other), then sent to scene chunk by chunk, each chunk's kinds of block under their own ids -- the ids a later demo patches when a block changes.
just demo scene voxels-world
sqlite facade docs
SQLite databases for X_eTaL: run statements, and bring query results back as X_eTaL arrays -- numbers as a matrix to compute on, text as a Char matrix -- through rusqlite with SQLite compiled in.
sqlite / notebook source and docs
The data notebook: a CSV in SQLite, SQL to select and group, X_eTaL arrays to compute, pictures to see it. Atmospheric CO2 at Mauna Loa, 1959-2025 (NOAA GML and Scripps; demos/data/PROVENANCE.txt).
just demo sqlite notebook
web facade docs
<p align="center"> <img src="../videos/todomvc.webp" alt="TodoMVC served by an X_eTaL program" width="420"> <img src="../videos/life.webp" alt="Life computed in X_eTaL, one generation per request" width="320"> </p>
web / life source and docs
A live page: Conway's Life kept by an X_eTaL program and drawn as SVG, one generation per request. The program is the server's request loop.
just demo web life
web / todomvc source and docs
TodoMVC on the web: the todos live in SQLite, the X_eTaL program is the server -- it routes each request, keeps the filter, counts what is left, and writes the page; forms post and are redirected back.
just demo web todomvc