forked from nulang-org/nulang
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
158 lines (139 loc) · 5.93 KB
/
Copy pathCargo.toml
File metadata and controls
158 lines (139 loc) · 5.93 KB
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
[workspace]
members = ["crates/nulang-ai"]
[package]
name = "nulang"
version = "0.1.0"
edition = "2021"
authors = ["David Porkka"]
license = "Apache-2.0"
description = "Nulang - Distributed Actor-Based Programming Language with AI Agent Support"
homepage = "https://nulang.org"
repository = "https://github.com/dporkka/nulang"
documentation = "https://nulang.org"
keywords = ["actor", "distributed", "programming-language", "ai", "compiler"]
categories = ["development-tools", "programming-languages"]
# benches/actor_bench.rs etc. are `mod`-included submodules of bench_main
# (see benches/bench_main.rs), not standalone bench targets. Without this,
# Cargo auto-discovers every top-level benches/*.rs as its own bench binary,
# compiling each submodule twice (once alone, once via bench_main) and
# breaking on the criterion harness conflict.
autobenches = false
[package.metadata]
# The Nulang *language* version, distinct from the crate `version` above.
# The crate version may rev freely; this moves only on RFC-ratified change to
# Frozen or Stable surfaces (see GOVERNANCE.md and CHANGELOG.md). Recorded in
# every `.nbc` artifact as the `language_version` header field; a runtime
# rejects an artifact whose language version exceeds its own. The runtime
# truth is the `LANGUAGE_VERSION` const in src/format/constants.rs; this field
# is the human-readable mirror.
language-version = "1.0.0-frozen"
[features]
default = ["python", "sqlite", "lsp", "ai-runtime", "tls"]
python = ["dep:pyo3"]
sqlite = ["dep:libsql"]
lsp = ["dep:tower-lsp", "dep:tokio", "dep:futures", "dep:tower-service"]
ai-runtime = ["dep:nulang-ai", "dep:reqwest", "dep:tokio"]
wasm-backend = ["dep:wasm-encoder", "dep:wasmtime", "dep:wat"]
# WasmFX stack-switching backend: depends on wasm-backend, and additionally
# enables wasmtime's GC support (required for exception tags, which carry
# `suspend` payloads).
wasmfx-backend = ["wasm-backend", "wasmtime/gc-null"]
http-client = ["dep:reqwest", "dep:tokio"]
otel = ["dep:opentelemetry", "dep:opentelemetry-otlp", "dep:opentelemetry_sdk", "dep:tokio", "dep:tracing-opentelemetry"]
tls = []
[dependencies]
# Memory & concurrency
mimalloc = "0.1"
crossbeam = "0.8"
parking_lot = "0.12"
# OS primitives (core affinity for thread-per-core pinning, unix-only)
libc = "0.2"
httparse = "1"
# HTTP client (synchronous, for standalone VM)
ureq = "2"
# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
# Manifest/lockfile parsing for the `nula` package manager
toml = "1"
# Fast hashing for compiler-internal maps (already a transitive dep via cranelift)
rustc-hash = "2"
# Tracing/logging framework for structured diagnostics (zero-cost when off)
tracing = "0.1"
tracing-opentelemetry = { version = "0.25", optional = true }
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
# REPL line editing, history, and completion
rustyline = { version = "15", default-features = false, features = ["with-file-history"] }
# Cranelift JIT backend
cranelift = "0.132"
cranelift-jit = "0.132"
cranelift-module = "0.132"
cranelift-native = "0.132"
cranelift-frontend = "0.132"
cranelift-codegen = { version = "0.132", features = ["riscv64"] }
# LSP server (optional, see [features])
tower-lsp = { version = "0.20", optional = true }
tokio = { version = "1.37.0", features = ["full", "macros", "net", "rt-multi-thread", "time"], optional = true }
# Used by the protocol-level LSP tests to drive the server->client
# notification stream (ClientSocket implements futures::Stream) and to
# call the LspService's tower::Service impl.
futures = { version = "0.3", optional = true }
tower-service = { version = "0.3", optional = true }
# OpenTelemetry observability (optional, see [features])
opentelemetry = { version = "0.24", optional = true }
opentelemetry-otlp = { version = "0.17", optional = true, default-features = false, features = ["trace", "metrics", "http-proto", "reqwest-client"] }
opentelemetry_sdk = { version = "0.24", optional = true, features = ["rt-tokio", "rt-tokio-current-thread"] }
# Python interop (optional, see [features])
pyo3 = { version = "0.29", features = ["auto-initialize", "py-clone"], optional = true }
# libSQL persistence backend (LibsqlStore + remote Turso support). Only
# `core` (local SQLite) + `remote` (hrana/HTTP Turso access, what
# `Builder::new_remote` uses) + `tls` are needed -- default-features also
# pulls `replication`/`sync` (embedded-replica gRPC sync via tonic/axum),
# which nothing in this codebase calls (verified: no `.sync()`/
# `new_synced_database` usage).
libsql = { version = "0.10.0-pre.4", optional = true, default-features = false, features = ["core", "remote", "tls"] }
# Native library loading
libloading = "0.8"
# AI runtime crate (optional; enabled by the `ai-runtime` feature).
nulang-ai = { path = "crates/nulang-ai", version = "0.1.0", optional = true }
reqwest = { version = "0.12", features = ["json"], optional = true }
wasm-encoder = { version = "0.220", optional = true }
# WASM runtime using Wasmtime (optional, see [features])
wasmtime = { version = "46", optional = true, default-features = false, features = ["cranelift", "runtime", "std", "anyhow", "component-model", "wat"] }
wat = { version = "1.254", optional = true }
blake3 = "1.8"
rustls = { version = "0.23", default-features = false, features = ["std", "tls12", "ring", "logging"] }
rustls-pemfile = { version = "2" }
ed25519-dalek = { version = "2.1.1", features = ["rand_core"] }
hex = "0.4.3"
rand_core = { version = "0.6.4", features = ["getrandom"] }
target-lexicon = "0.13"
flate2 = "1"
tar = "0.4"
[lib]
name = "nulang"
crate-type = ["rlib", "cdylib"]
path = "src/lib.rs"
[[bin]]
name = "nulang"
path = "src/main.rs"
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
[profile.dev]
opt-level = 0
debug = true
incremental = true
split-debuginfo = "unpacked"
[profile.dev.package."*"]
opt-level = 1
[profile.test]
lto = false
codegen-units = 16
[dev-dependencies]
criterion = "0.5"
rcgen = "0.14"
[[bench]]
name = "bench_main"
harness = false