Extended performance and safety results
These results cover August 1.0.0 on Apple M5, darwin 25.6.0 arm64, recorded 2026-10-07. August uses LLVM 23.1.2. Every measured program produced its expected result. These measurements apply to this host and workload.
Eight more C comparisons
Eight August and C programs
Median ms · shorter is better. Each panel starts at zero and scales to the implementations shown.
Floating-point loopCode and spec ↗
- August2.16 ms
- C1.62 ms
Labeled callsCode and spec ↗
- August3.6 ms
- C1.77 ms
List traversalCode and spec ↗
- August1.97 ms
- C1.18 ms
String processingCode and spec ↗
- August9.46 ms
- C2.74 ms
Map deletion and refillCode and spec ↗
- August4.71 ms
- C4.17 ms
Checked failuresCode and spec ↗
- August1.57 ms
- C1.12 ms
Record allocationCode and spec ↗
- August10.89 ms
- C2.06 ms
Task schedulingCode and spec ↗
- August4.05 ms
- C1.12 ms
Exact values and sample ranges
| Program | Implementation | Median | Minimum | Maximum | Samples |
|---|---|---|---|---|---|
| Floating-point loop | August | 2.16 | 2.07 | 2.48 | 30 |
| Floating-point loop | C | 1.62 | 1.55 | 2.16 | 30 |
| Labeled calls | August | 3.6 | 3.44 | 4.73 | 30 |
| Labeled calls | C | 1.77 | 1.67 | 2.63 | 30 |
| List traversal | August | 1.97 | 1.79 | 3.62 | 30 |
| List traversal | C | 1.18 | 1.06 | 1.91 | 30 |
| String processing | August | 9.46 | 8.93 | 10.15 | 30 |
| String processing | C | 2.74 | 2.44 | 3.06 | 30 |
| Map deletion and refill | August | 4.71 | 4.54 | 5.47 | 30 |
| Map deletion and refill | C | 4.17 | 4.01 | 4.91 | 30 |
| Checked failures | August | 1.57 | 1.4 | 2.11 | 30 |
| Checked failures | C | 1.12 | 0.95 | 1.78 | 30 |
| Record allocation | August | 10.89 | 9.85 | 12.94 | 30 |
| Record allocation | C | 2.06 | 1.85 | 2.44 | 30 |
| Task scheduling | August | 4.05 | 3.78 | 5.75 | 30 |
| Task scheduling | C | 1.12 | 1.03 | 1.68 | 30 |
Each value is the median of 30 fresh executable processes after 3 warmups. Order rotates within a separate measurement process. Timings include startup and exclude compilation. Both implementations use O2 without LTO or fast-math. Raw samples, build times and code sizes also include the same August programs compiled through the C migration backend.
| Program and code/spec | Work per run | August | C | August / C |
|---|---|---|---|---|
| Floating-point loop | 1,000,000 | 2.16 ms | 1.62 ms | 1.33 |
| Labeled function calls | 200,000 | 3.60 ms | 1.77 ms | 2.04 |
| List traversal | 100,000 | 1.97 ms | 1.18 ms | 1.68 |
| String processing | 20,000 | 9.46 ms | 2.74 ms | 3.45 |
| Map deletion and refill | 4,000 | 4.71 ms | 4.17 ms | 1.13 |
| Checked failures | 20,000 | 1.57 ms | 1.12 ms | 1.40 |
| Record allocation | 50,000 | 10.89 ms | 2.06 ms | 5.28 |
| Task scheduling | 2,000 | 4.05 ms | 1.12 ms | 3.61 |
Ratios above 1 mean August took longer. The C references use concrete values and explicit cleanup. Their ordered map uses linear searches and their task case makes sequential calls; it does not pay for a scheduler. The string reference copies each part, while August also creates managed strings and a list. Records retain individually allocated values in both programs, with different layouts and lifetime tracking. The timings include these differences in the work performed. Read the C references before drawing conclusions.
The float program checks its exact accumulated binary-fraction result. The call loop carries each result into the next call. Lists and records retain data and read it afterward. Map deletion checks reinsertion order as well as values. Error cases verify both the sum and number of failures; task cases verify the joined sum. Their downloadable projects show code beside compiled specs in either indentation or braces style.
Safety qualification
Seed 877966, generator version 1, 256 generated vectors per exercise plus fixed edge cases. Both development and optimized LLVM builds ran the corpus.
| Exercise | Vectors executed across both builds | Result |
|---|---|---|
| arithmetic | 516 | Passed; both behavioral mutations detected |
| floating-point | 520 | Passed; both behavioral mutations detected |
| collections | 516 | Passed; both behavioral mutations detected |
| control-flow | 516 | Passed; both behavioral mutations detected |
| checked-bounds | 520 | Passed; both behavioral mutations detected |
| cleanup | 512 | Passed; both behavioral mutations detected |
| tasks | 512 | Passed; both behavioral mutations detected |
The suite executed 3612 generated/edge-case checks, rejected 8 forbidden contracts, and detected 14 valid behavioral mutants. Each deliberately faulty program compiled and finished, but produced a wrong result or cleanup count compared with the independent oracle.
| Additional circuit | Executed tests | Skipped tests | Result |
|---|---|---|---|
| source-mutations | 3 | 0 | passed |
| ownership-concurrency | 53 | 0 | passed |
| native-boundaries | 2 | 0 | passed |
| package-integrity | 37 | 0 | passed |
| http-boundaries | 6 | 0 | passed |
| sanitizers | LLVM instrumentation + overflow negative control | 0 | passed |
The full report includes original and faulty source units, inputs, expected and actual results, cleanup counts, compiler source identity and commands. Source mutation includes 5,000 parser cases and 1,000 checker cases. Core sanitizers instrument August LLVM accesses and the C runtime; they do not instrument the interiors of prebuilt foreign libraries or establish a whole-process leak proof.
The safety gym guide explains each gate and its limits. Contributor commands reproduce these reports or explore another seed. New-platform CI reports remain separate until that target completes qualification.
Source identity
Both reports use source SHA-256 b0908546922a5b6d88fe4bc0436629dc67331d96049d935989a9b85bef0a1b44. This fingerprints compiler, runtime, native platform inputs, package contracts, configuration, dependencies, test fixtures, generators and measured programs. These results describe that snapshot. Rerun the suite to measure changed code.