Will Anderson
afd99f5e0d
Add pipe operator, with-update, retry/fallback, reason, parallel, trace, contract, deploy
...
Implements 8 new language features:
- |> pipe operator: a |> f desugars to f(a), left-associative chains
- with record update: let b = a with { field: val } — non-destructive struct update
- retry/fallback: retry N times { ... } fallback { ... } with counter-based loop codegen
- reason: AI inference primitive calling soma /v1/chat/completions at runtime
- parallel: concurrent execution block returning a Map of named results via threads
- trace: zero-cost observability block emitting TraceBegin/TraceEnd with ms timing
- requires: precondition annotation on fn, emits ContractCheck bytecode at entry
- deploy: deployment-as-syntax posting to soma /v1/deploy at runtime
All features thread through lexer → parser/AST → codegen → runtime interpreter.
2026-04-28 12:04:45 -05:00
Will Anderson
316c0a85ce
Add server-side builtins, import system, and http_serve for Neuron Code rewrite
...
- Import resolution: resolve_imports() pre-processes import statements by
reading and concatenating referenced .el files before compilation
- http_serve builtin: tiny_http-based server on configurable port; POST
/axon/message stores request in __request__ state, invokes handle_request
entry point via sub-interpreter, reads __response__ state for reply
- New builtins: blake3_hash, uuid_new, fs_list_recursive, fs_mkdir, fs_exists,
path_join, path_parent, str_trim, str_contains, str_replace, str_starts_with,
str_ends_with, str_last_index_of, json_get, json_array_push, json_array_len,
now_millis, http_get, http_post, int_to_str
- Catch-all arms in el-types and el-compiler for new AST variants (Import,
ProtocolDef, ImplDef, Closure, Try, MapLiteral, TypeExpr::Result, TypeExpr::Map)
- Parser: decorators field on FnDef, import/protocol/impl parsing
2026-04-27 20:08:55 -05:00
Will Anderson
48b72843e1
feat: package manager, build system, native cross-compilation, plugin system
...
Add three new crates and extend the compiler and CLI toolchain:
- el-manifest: el.toml manifest parser using serde + toml crate; supports
package info, registry/path/version deps, build config with seal key
sources, cross targets, and plugins; Manifest::find_manifest() walks up
the directory tree
- el-registry: HTTP registry client (reqwest + tokio) for
packages.neurontechnologies.ai; PackageMetadata, fetch/download/publish/
search, BLAKE3 checksum verification, local cache at ~/.engram/packages/
- el-build: build orchestrator with incremental builds (BLAKE3 file hashes
in .el/build-cache.json), cross-compilation target tagging, dep resolution,
plugin registry with on_ast/on_typed_ast/on_bytecode hooks, test runner,
fmt/check/clean commands
- CrossTarget and NativeTarget enums with triple() and artifact_extension()
methods; NativeTarget::Host detects compile-time platform via cfg! macros
- Plugin system: CompilerPlugin trait + PluginRegistry; dynamic loading is
a marked TODO with clear extension point for libloading
- CLI extended with: new, add, remove, update, build --cross, run, test,
check, fmt, clean, publish, search, plugin add/remove/list; old
single-file commands moved to build-file/seal/unseal subcommands
- Fix pre-existing debugger.rs borrow error (unwrap_or temporary lifetime)
- Fix checker.rs and codegen.rs to handle TestDef/Seed/Assert Stmt variants
- Add spec/language.md sections 12-14: package system, build system,
plugin system, cross-compilation targets table
130 tests passing, zero warnings
2026-04-27 19:08:25 -05:00