A new language, taking shape

Data science.
On your terms.

A programming language for scientific workflows.

Aner is being developed to connect data preparation, scientific context, modeling and computation. Keep the meaning of your data close to the code that uses it.

A binary research preview is available.

Development exampleProgram excerpt
cpu_image_blur_intro.aner
// Each image gets its own buffers.
let parameters = List(64, 64, 3)
let results = parallel.repeat(
    iterations: 64,
    task: process_image,
    parameters: parameters,
    execution: parallel.local(workers: 4),
    seed: 2026)

print(results.rows())
print(results.mean(column: 0))

Same image function. Four worker threads, scheduled by the OS. Private buffers and ordered results.

64 images → 4 workers → ordered results
3.3×historical measured speedupOctober 16, 2026 · 3 trials
See sequential and parallel code
KEEP THE QUESTION CONNECTED
ObservationsScientific contextExperimentUnderstanding
WHY A LANGUAGE FOR SCIENCE?

Less glue.
More science.

A result depends on more than a model. The meaning of an observation, the way you prepare it and the computation you choose all matter. Aner explores what becomes possible when those concerns are designed together.

01 / MEANING

Keep scientific
context visible.

In the building energy example, observation identities, building groups and declared target units stay connected through prediction.

Follow the data’s context
02 / PREPARATION

Make preparation
an explicit choice.

Declare separate data populations. Fit standardization on training observations, then apply that fitted preparation to held out data.

See the complete workflow
03 / COMPUTATION

Give computation
a clear boundary.

Preview a CSV within a scan budget, or choose local CPU workers for independent simulations. Inspect the documented limits of each operation.

Explore bounded data execution
A SCIENTIFIC WORKFLOW, IN CONTEXT

A prediction should
keep its context.

Consider a building energy study. Temperature and occupancy are inputs; energy is the target. But the building, the observation and the declared units still matter when you read the prediction.

This documented development example keeps whole buildings in declared populations and fits preparation on the training population. The prediction retains its observation identity and declared target unit.

MeasurementsGroup partitionsObservation identity
Explore the building energy example
WORKFLOW ILLUSTRATION · SYNTHETIC DATABuilding energy, with its context.
Building observations

Identity, building group, measurements

energy · kWh
Training8 observationsB0, B1, B2, B3
Validation4 observationsB4, B5
Test4 observationsB6, B7
Fit preparation on training data

Apply the fitted standardizer to each population.

PUBLISHED EXPECTED OUTPUT
A prediction you can identify.
Validation row identity
401
Declared target unit
kWh
Inspect the expected fixture output
THE DECISION STAYS IN THE CODE

Fit on the training population.

Source excerpt. The complete example prepares observations before these lines.

contextual_energy.aner · excerpt
let populations = data.partition_groups(observations,
    List("B0", "B1", "B2", "B3"), List("B4", "B5"), List("B6", "B7"))
let preprocessing = ml.fit_standardizer(populations.train())

Declared groups and target units remain explicit alongside preparation fitted on the training population.

Read the full source
MORE THAN A MODEL

Start with your
research question.

Explore all modules
GOOD SCIENCE STARTS WITH A CONVERSATION

Follow Aner’s
development.

Bring a workflow you wish were simpler, a research question or a fresh perspective. Get release updates and help shape a language around the work that matters to you.

IDEAS, MEET MOMENTUM.Anero, the chestnut ant and main mascot, standing beside Arenita, the cream poodle community companion
MAIN MASCOTAnero

Your focused, hardworking partner for building great ideas.

COMMUNITY COMPANIONArenita

A positive companion who sparks curiosity and great ideas.

Meet Anero & Arenita