Eve Smoke Test & Performance

The checks of the machine that are not feature tests. The smoke test is the quick check that the machine and the language are sane: each script is a driver with small functions and very simple expect lines, True is True, 0 == 0. It does not depend on the feature tests, and it shows that the program compiles, parses and has no contradiction. The performance benchmarks check that the machine stays fast while features are added: each has a twin in Python, and the history of the runs shows every change.

Smoke Test

The quick check that the machine and the language are sane: 16 scripts, one feature each, in less than a second. Run it with python script/runtest.py smoke.

CodeTestWhat it checksSource
s01s01_topologyTopology. The shape of a program: driver, process, functions, procedures, regions.s01_topology.eve
s02s02_logicLogic. The truth values and their operators; an error here is absurd and obvious.s02_logic.eve
s03s03_numericNumbers. Zero, one, the extremes of the types, the operators and the literals.s03_numeric.eve
s04s04_stringStrings. The empty string, concatenation, comparison, escapes and placeholders.s04_string.eve
s05s05_collectionCollections. The empty ones, zero values, one element, indexes from 1, literals.s05_collection.eve
s06s06_variablesVariables. new, set and let; constants; sharing and copying; scopes.s06_variables.eve
s07s07_constantsConstants. set declares a value that never changes: typed or not, global or local.s07_constants.eve
s08s08_constant_assignA constant can't be changed. Assigning it is a compile error and nothing runs.s08_constant_assign.eve
s09s09_operatorsOperators. Precedence, compound forms, list operators, ranges, membership.s09_operators.eve
s10s10_controlControl flow. if, while, loop, for, match, break, skip, labels, the if suffix.s10_control.eve
s11s11_subprogramsSubprograms. Functions, procedures, arguments, recursion, lambdas, closures.s11_subprograms.eve
s12s12_errorsErrors. raise and recover, jobs with resume, error codes, defer, exit, over, finalize.s12_errors.eve
s13s13_typesTypes. type(), is, conversions, optional values, ordinals, variants.s13_types.eve
s14s14_objectsObjects. Class, methods, visibility, inheritance, extension, comparison.s14_objects.eve
s15s15_placeholdersPlaceholders. Names, literals, expressions, formats, code points, entities, braces.s15_placeholders.eve
s16s16_projectA project. One module, one aspect, one apply: import, life cycle order, safe and Atomic.s16_project.eve

Performance

A small benchmark for each level, with a twin in Python. Median of 5 runs of the last saved ReleaseSafe measure (2026-10-09 07:01), the Python twin and the Debug build. Run them with python script/bmark.py; add --save to record a run.

LevelBenchmarkWhat it measuresEvePythonEve / PythonDebugSource
1p1a_arithinteger and real arithmetic, for and while loops, variables197 ms72 ms2.7x1301 mssource
1p1b_callsfunction calls, recursion (fib(20)), parameter binding79 ms43 ms1.8x578 mssource
1p1c_collectionslist appends and iteration (60,000 elements), DataMap and DataSet28 ms39 ms0.7x110 mssource
1p1d_stringsstring appends, placeholders, regular expression matches23 ms38 ms0.6x84 mssource
2p2a_aspects5,000 apply of an aspect with two inputs and one output (a new scope and a new boot for each call)10 ms25 ms0.4x172 mssource
2p2b_closuresa closure called 50,000 times, a lambda called 50,000 times, a function that makes closures 2,000 times47 ms40 ms1.2x278 mssource
2p2c_procedures30,000 calls of a procedure with @ parameters, a function with defaults and a vararg procedure57 ms45 ms1.3x504 mssource
3p3a_modules50,000 calls of module functions (mathx.square, mathx.clamp) and 50,000 reads of a module constant108 ms52 ms2.1x936 mssource
3p3b_objects5,000 objects of a class and of its subclass, 50,000 method calls, 20,000 extension method calls76 ms62 ms1.2x417 mssource
3p3c_module_state50,000 calls of a module procedure that changes private state and 50,000 reads of it43 ms50 ms0.9x598 mssource
4p4a_parallel_sum5 rounds of a parallel group that sums 200,000 integers in 4 parts (split, start, inputs copied by value)276 ms105 ms2.6x-source
4p4b_channel50,000 messages from a producer through 2 workers to a collector (two channels of capacity 100, back-pressure)96 ms330 ms0.3x-source
4p4c_groups250 parallel groups of 4 started aspects each (a task, a thread and an output buffer per start)174 ms208 ms0.8x-source
4p4d_tasks50 jobs that spawn 20 async procedures each and wait for them at done (the tasks of a job share one core)165 ms102 ms1.6x-source
4p4e_garbage200,000 iterations that each build a string and a list and drop them; watch the peak memory219 ms99 ms2.2x-source

History

The total of the median times of the benchmarks of the level, for every saved run, newest first. One table for each level; compare only runs of the same build on the same machine.

Level 1

DateBuildVersionCommitTotal
2026-10-09 07:01ReleaseSafe0.0.283229cb327 ms
2026-10-08 16:41Debug0.0.1d1696a52073 ms
2026-10-08 16:22ReleaseSafe0.0.1a2abbe8435 ms
2026-10-07 05:09ReleaseSafe0.0.152b4149399 ms
2026-10-07 04:19ReleaseSafe0.0.1ecaed22400 ms
2026-10-07 04:18Debug0.0.1ecaed221843 ms

Level 2

DateBuildVersionCommitTotal
2026-10-09 07:01ReleaseSafe0.0.283229cb114 ms
2026-10-08 16:41Debug0.0.1d1696a5955 ms
2026-10-08 16:22ReleaseSafe0.0.1a2abbe8212 ms

Level 3

DateBuildVersionCommitTotal
2026-10-09 07:01ReleaseSafe0.0.283229cb228 ms
2026-10-08 16:41Debug0.0.1d1696a51951 ms
2026-10-08 16:22ReleaseSafe0.0.1a2abbe8319 ms

Level 4

DateBuildVersionCommitTotal
2026-10-09 07:01ReleaseSafe0.0.283229cb931 ms