Build and configure Flyology Runtime.

Prepare a version-matched runtime and designate one ordinary Ada task as lightweight. Then continue through focused chapters for configuration, I/O, operation, and verification.

STEP 01

Use a supported toolchain.

Flyology is an Alire crate and requires Alire 2.1 or newer. The dependency range accepts GNAT 13 through 16. Runtime preparation supports only the host and release pairs listed below.

macOS / AArch64
13.2.2, 14.1.3, 14.2.1, and 16.1.0
Linux / AArch64
13.2.2, 14.1.3, 14.2.1, 15.1.2, 15.3.1, and 16.1.0
Linux / x86-64
13.2.2, 14.1.3, 14.2.1, 15.1.2, 15.3.1, and 16.1.0
STEP 02

Add Flyology to an Alire application.

Flyology is published through a separate organization index. Keep the community index enabled for compiler and third-party dependencies. Add the Flyology index before the community index, then add the crate. Flyology might move to the community index later, but no decision has been made.

shell
alr init --bin flyology_app
cd flyology_app
alr index --reset-community
alr index --add=git+https://github.com/flyology-ada/alire-index.git \
  --name=flyology --before=community
alr with flyology
STEP 03

Build with a version-matched runtime.

The first build runs Flyology's Alire post-fetch action. The action copies the active compiler's installed runtime sources into the dependency build output. It then applies the exact patch family, builds the RTS, and exports a GPR configuration. The application links to this prepared RTS instead of the stock tasking runtime.

build the application
alr build

The default is native. In this compatibility configuration, undesignated tasks use stock OS-thread execution. No event machinery starts until a lightweight task activates.

launch with four shared groups
FLYOLOGY_LOOP_POOL_SIZE=4 alr run

Continue with Execution groups to change the automatic pool after startup.

STEP 04

Designate one ordinary Ada task.

Use GNAT Task_Info to select the execution model at task creation. Current GNAT emits an obsolete-feature warning for this mechanism. The warning is an artifact of the current design and GNAT's handling of it, not intended Flyology behavior. Flyology projects use -gnatwJ to suppress that warning class while retaining other warnings.

A future design might use another designation mechanism, including an Ada aspect, if GNAT makes one available. Flyology has not selected a replacement.

worker.ads
with Flyology;

package Worker is
   task Connection is
      pragma Task_Info (Flyology.Lightweight_Task);
   end Connection;
end Worker;

Use Flyology.Native_Task and Flyology.Lightweight_Task for explicit task designations. Both are values of Flyology.Execution_Model. Flyology.Project_Default requests the project default explicitly, which is useful on discriminated task types.

rebuild after changing the application
alr build
CHAPTER INDEX

Continue with one focused chapter.

The core path follows the setup above. Each later step has a stable page that you can open or link directly.

Core chapters

Steps 01–04 · Start here (current page)
Check the toolchain, add the crate, prepare the runtime, and designate one lightweight task.
Step 05 · Task stack sizing
Choose usable stack size and account for guard pages, pool classes, and native-task behavior.
Step 06 · Task memory
Control dormant stack reclamation and task-private region lifetimes.
Step 07 · Execution groups
Choose automatic placement or a shared or dedicated group. Continue directly to pool growth or pool reduction.
Step 08 continued · Scoped operations
Start several bounded operations, wait for batches or gates, and finish each retained result.
Step 09 · Resource budgets
Bound concurrency, memory, parallelism, and latency. Continue directly to cooperative checkpoints.
Step 10 · Runtime observability
Compare snapshots, queue pressure, and memory measurements. Continue directly to event-loop utilization.
Step 11 · Verification
Run behavioral tests, proofs, documentation checks, stress campaigns, and showcases.
Step 12 · Execution constraints
Choose lightweight, native, or dedicated execution within the current experimental limits.

Topic guides

Shared-memory segments
Manage backing, mapping, named extents, descriptor handoff, and teardown.
Relocatable data structures
Place bounded arenas, rings, maps, vectors, slabs, and strings in caller-owned storage.
File watching
Observe bounded file, directory, and recursive-tree registrations.
File-to-socket transfers
Move positional regular-file regions with native and completion-driven paths.
Native subprocesses
Create processes from native tasks with bounded capture, deadlines, and cleanup.
Structured task supervision
Build typed static trees and bounded dynamic families with explicit recovery policy.
Process upgrades
Coordinate listener escrow, canaries, promotion, drain, and reversal across fresh processes.
Timers and clock changes
Use relative, monotonic, multi-deadline, and wall-clock waits.

Project tooling

Flyology CLI
Install the aggregate command, scaffold binary or library crates, provision agent guidance and website files, and add extension commands.