48b72843e1
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
43 lines
1.1 KiB
TOML
43 lines
1.1 KiB
TOML
[workspace]
|
|
members = [
|
|
"crates/el-lexer",
|
|
"crates/el-parser",
|
|
"crates/el-types",
|
|
"crates/el-compiler",
|
|
"crates/el-seal",
|
|
"crates/el-manifest",
|
|
"crates/el-registry",
|
|
"crates/el-build",
|
|
"bin/el",
|
|
]
|
|
resolver = "2"
|
|
|
|
[workspace.package]
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
license = "MIT"
|
|
authors = ["Neuron Technologies"]
|
|
|
|
[workspace.dependencies]
|
|
# Internal crates
|
|
el-lexer = { path = "crates/el-lexer" }
|
|
el-parser = { path = "crates/el-parser" }
|
|
el-types = { path = "crates/el-types" }
|
|
el-compiler = { path = "crates/el-compiler" }
|
|
el-seal = { path = "crates/el-seal" }
|
|
el-manifest = { path = "crates/el-manifest" }
|
|
el-registry = { path = "crates/el-registry" }
|
|
el-build = { path = "crates/el-build" }
|
|
|
|
# Engram crypto (path dep — the sealed target depends on it)
|
|
engram-crypto = { path = "../engram/crates/engram-crypto" }
|
|
|
|
# External
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
thiserror = "2"
|
|
blake3 = "1"
|
|
aes-gcm = "0.10"
|
|
rand = "0.8"
|
|
clap = { version = "4", features = ["derive", "env"] }
|