1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//! The Aura configuration language: a library, and the `aura` CLI behind the
//! default `cli` feature.
//!
//! # Which surface is supported
//!
//! [`facade`] is the API for embedding. It takes a path or a set of in-memory
//! buffers and returns `serde_json::Value` together with plain diagnostics, and
//! it is the part meant to stay stable.
//!
//! The layers beneath — [`lexer`], [`parser`], [`eval`], [`source`], [`resolve`]
//! — are public because tools need them: the language server, the browser
//! playground, and `examples/scripting.rs`, which calls a manifest's `pub def`
//! from Rust. They are useful and they are not frozen. While the project is
//! `0.x` they may change in a minor release, so prefer [`facade`] unless you
//! need something it does not expose.
//!
//! Embedding the library alone:
//!
//! ```toml
//! [dependencies]
//! aura-lang = { version = "0.1", default-features = false }
//! ```
// Diagnostic is deliberately passed by value: errors are the cold path, boxing
// would complicate every signature for a micro-optimization.
// Environment uses RefCell per the D9 design (single-threaded frame construction,
// see eval/env.rs); Arc was chosen for future domain-level parallelism.
/// The stdlib surface as an Aura manifest: every method's parameters, return
/// type and one-line description, grouped by receiver.
///
/// It describes the language rather than any one tool, so it lives here and is
/// read by everything that needs to talk about the standard library — the
/// language server's completion database, and `aura docs --agent`. Keeping one
/// copy is the point: a test checks it against the real method registry, and a
/// second copy would only be checked by nobody.
pub const STDLIB_MANIFEST: &str = include_str!;