Appearance
Standard Library
The AIVI standard library is the set of modules that ships with the language. Some names, such as Option, Result, Signal, and Task, are built in. Most other tools live in named modules that you import with use.
Use this page as a map:
- start with the modules in Start here if you are new to AIVI
- use the grouped lists below when you already know the job you need to do
- treat each linked page as the source of truth for what the current stdlib actually exposes
Several modules are intentionally small today, and some are shared type vocabularies rather than full runtime clients. Their pages call that out up front so you do not have to guess.
For external systems, prefer provider capabilities defined through @source. The related stdlib modules now mainly carry shared data vocabulary and handle-marker types such as FsSource, HttpSource, EnvSource, and LogSource.
After aivi.prelude, the modules most people reach for first are aivi.option, aivi.result, aivi.list, aivi.text, and aivi.math.
Built-in types you will see often
| Type | Meaning | More |
|---|---|---|
Ordering | The result of comparing two values: Less, Equal, or Greater. | aivi.order |
Option A | A value that may be missing. | aivi.option |
Result E A | A success value (Ok) or a failure value (Err). | aivi.result |
Validation E A | Like Result, but useful when checking several independent inputs. | aivi.validation |
Signal A | A reactive value that changes over time. | Signals guide |
Task E A | Runtime work that may fail with E or succeed with A. | Used across I/O-oriented stdlib modules |
Browse modules by area
Start here
aivi.prelude— a good first stop for everyday imports.aivi.defaults— named empty/default values for common built-in types.
Core values and collections
aivi.bool— boolean helpers.aivi.option— values that may be missing.aivi.result— success-or-error values.aivi.validation— validation values for user input and other checks.aivi.core.either— values that can hold one of two branches.aivi.list— list helpers.aivi.matrix— rectangular two-dimensional collections.aivi.nonEmpty— lists that always contain at least one item.aivi.pair— two values grouped together.aivi.order— comparison results and ordering helpers.aivi.core.dict— key/value dictionaries.aivi.core.set— collections of unique values.aivi.core.range— numeric ranges.aivi.core.fn— small function and pipeline helpers.
Numbers, text, and data
aivi.math— everyday arithmetic helpers.aivi.core.float— floating-point numbers.aivi.bigint— integers that can grow past the normalIntrange.aivi.text— text helpers.aivi.regex— regular-expression matching and replacement.aivi.core.bytes— byte buffers.
Time, randomness, and scheduling
aivi.duration— typed time spans such as5sec.aivi.time— clocks, timestamps, and time formatting helpers.aivi.timer— marker types for timer-backed signals.aivi.random— randomness vocabulary plusRandomSource.
Files, environment, and processes
aivi.fs— filesystem vocabulary plusFsSource.aivi.path— checked path values.aivi.env— environment vocabulary plusEnvSource.aivi.stdio— stdio vocabulary plusStdioSource.aivi.log— logging vocabulary plusLogSource.aivi.process— process vocabulary plus future capability shapes.
Network and services
Some modules in this group are full helpers, and some are shared data shapes for integrations. The linked pages spell out which functions exist today.
aivi.url— typed URLs and helpers for their parts.aivi.http— HTTP vocabulary plusHttpSource.aivi.auth— OAuth / PKCE sign-in records and state types.aivi.db— database vocabulary plusDbSource.aivi.imap— mailbox types for current integrations and future source capabilities.aivi.smtp— outgoing mail settings, messages, and errors.
Desktop, UI, and GNOME
Many pages in this group describe handle vocabularies, watcher/source shapes, partial runtime surfaces, or shared desktop data types rather than a full feature API. They are still the right place to look when wiring a Linux desktop app together.
aivi.app— application framework types.aivi.app.lifecycle— lifecycle state, commands, undo state, and in-app notifications.aivi.desktop.xdg— XDG error vocabulary; actual directories come fromPathSource.aivi.portal— desktop portal results for file picking, opening URIs, and screenshots.aivi.dbus— D-Bus vocabulary plusDbusSource.aivi.gnome.settings— GSettings schema, key, and value types.aivi.gnome.onlineAccounts— desktop account and token records.aivi.gnome.notifications— desktop notification payloads and responses.aivi.clipboard— clipboard content types and watcher shapes.aivi.color— packed UI colors and channel helpers.aivi.image— image data, metadata, and load errors.aivi.gresource— bundled resource paths and load errors.aivi.i18n— translation marker helpers.
Common interfaces (typeclasses)
If you have not used typeclasses before, think of them as shared capabilities that different types can implement. The table below describes the current built-in support in the executable language/runtime slice.
| Interface | What it gives you | Built-in support includes |
|---|---|---|
Eq A | Equality via == and != | primitive scalars, Ordering, Option, Result, Validation, List |
Ord A | Ordering via compare | Int, Text, Ordering |
Default A | A fallback value via default | same-module Default instances; Option omission via use aivi.defaults (Option); Text / Int / Bool omission via use aivi.defaults (defaultText, defaultInt, defaultBool) |
Functor F | Mapping over a wrapped value | Option, Result, List, Validation, Signal |
Semigroup A | Combining two values with <> | Text, List |
Monoid A | An identity value via empty | Text, List |
Foldable F | Reducing a structure to one value | List, Option, Result, Validation |
Filterable F | Keeping some values while dropping others | List, Option |
Apply F | Applying wrapped functions to wrapped values | Option, Result, List, Validation, Signal |
Applicative F | Lifting plain values into a context with pure | Option, Result, List, Validation, Signal, Task |
Monad F | Chaining context-producing steps | List, Option, Result |
Bifunctor F | Mapping both sides of a two-parameter type | Result, Validation |
Traversable F | Walking a structure while building effects | List, Option, Result, Validation |
This table describes the current executable built-in slice. For the full higher-kinded hierarchy, support boundaries, and the current same-module-only limits for user-authored higher-kinded classes and instances, see Typeclasses & Higher-Kinded Support.