diff --git a/.cargo/config.toml b/.cargo/config.toml
deleted file mode 100644
index 0e66c8aa..00000000
--- a/.cargo/config.toml
+++ /dev/null
@@ -1,11 +0,0 @@
-# Saikuro Cargo configuration
-#
-# WASM test runner: requires `cargo install wasm-bindgen-cli`
-# Run with: cargo test -p saikuro-tests --target wasm32-unknown-unknown
-# Or: wasm-pack test --headless --chrome Build/tests
-
-[target.wasm32-unknown-unknown]
-runner = "wasm-bindgen-test-runner"
-
-# [build]
-# rustflags = ["--cfg=web_sys_unstable_apis"]
diff --git a/.gitignore b/.gitignore
index 397767db..7ff1af31 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,8 +39,10 @@ cache/
node_modules/
dist/
-bin/
-obj/
+Build/adapters/csharp/Saikuro/src/bin
+Build/adapters/csharp/Saikuro/src/obj/
+Build/adapters/csharp/tools/extractor/bin
+Build/adapters/csharp/tools/extractor/obj
.pytest_cache/
__pycache__/
.ruff_cache/
diff --git a/Build/Cargo.lock b/Build/Cargo.lock
index f94b1a0f..fab2daaf 100644
--- a/Build/Cargo.lock
+++ b/Build/Cargo.lock
@@ -11,15 +11,6 @@ dependencies = [
"memchr",
]
-[[package]]
-name = "android_system_properties"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
-dependencies = [
- "libc",
-]
-
[[package]]
name = "anstream"
version = "1.0.0"
@@ -87,6 +78,15 @@ dependencies = [
"syn",
]
+[[package]]
+name = "atomic-polyfill"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4"
+dependencies = [
+ "critical-section",
+]
+
[[package]]
name = "autocfg"
version = "1.5.0"
@@ -95,9 +95,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]]
name = "base64"
-version = "0.22.1"
+version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
[[package]]
name = "bitflags"
@@ -107,9 +107,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.11.0"
+version = "2.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
+checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
[[package]]
name = "block-buffer"
@@ -129,15 +129,6 @@ dependencies = [
"hybrid-array",
]
-[[package]]
-name = "bs58"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4"
-dependencies = [
- "tinyvec",
-]
-
[[package]]
name = "bumpalo"
version = "3.20.2"
@@ -155,6 +146,9 @@ name = "bytes"
version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
+dependencies = [
+ "portable-atomic",
+]
[[package]]
name = "cast"
@@ -164,9 +158,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
[[package]]
name = "cc"
-version = "1.2.56"
+version = "1.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2"
+checksum = "509591b7bcd67f4ef775afad7662703b4935daaa6ec0e5605cfb1090b32a2b6d"
dependencies = [
"find-msvc-tools",
"shlex",
@@ -178,6 +172,17 @@ version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
+[[package]]
+name = "chacha20"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818"
+dependencies = [
+ "cfg-if",
+ "cipher",
+ "cpufeatures 0.2.17",
+]
+
[[package]]
name = "chacha20"
version = "0.10.1"
@@ -190,17 +195,13 @@ dependencies = [
]
[[package]]
-name = "chrono"
-version = "0.4.45"
+name = "cipher"
+version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327"
+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
dependencies = [
- "iana-time-zone",
- "js-sys",
- "num-traits",
- "serde",
- "wasm-bindgen",
- "windows-link",
+ "crypto-common 0.1.7",
+ "inout",
]
[[package]]
@@ -255,12 +256,6 @@ version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c"
-[[package]]
-name = "core-foundation-sys"
-version = "0.8.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
-
[[package]]
name = "cpufeatures"
version = "0.2.17"
@@ -288,6 +283,12 @@ dependencies = [
"cfg-if",
]
+[[package]]
+name = "critical-section"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b"
+
[[package]]
name = "crossbeam-epoch"
version = "0.9.18"
@@ -324,9 +325,9 @@ dependencies = [
[[package]]
name = "darling"
-version = "0.23.0"
+version = "0.20.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d"
+checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
dependencies = [
"darling_core",
"darling_macro",
@@ -334,10 +335,11 @@ dependencies = [
[[package]]
name = "darling_core"
-version = "0.23.0"
+version = "0.20.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0"
+checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e"
dependencies = [
+ "fnv",
"ident_case",
"proc-macro2",
"quote",
@@ -347,9 +349,9 @@ dependencies = [
[[package]]
name = "darling_macro"
-version = "0.23.0"
+version = "0.20.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d"
+checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
dependencies = [
"darling_core",
"quote",
@@ -370,20 +372,55 @@ dependencies = [
"parking_lot_core 0.9.12",
]
+[[package]]
+name = "dashmap"
+version = "7.0.0-rc2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4a1e35a65fe0538a60167f0ada6e195ad5d477f6ddae273943596d4a1a5730b"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+ "equivalent",
+ "hashbrown 0.15.5",
+ "lock_api",
+ "parking_lot_core 0.9.12",
+]
+
[[package]]
name = "data-encoding"
-version = "2.10.0"
+version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea"
+checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06"
[[package]]
-name = "deranged"
-version = "0.5.8"
+name = "defmt"
+version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
+checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1"
dependencies = [
- "powerfmt",
- "serde_core",
+ "bitflags 1.3.2",
+ "defmt-macros",
+]
+
+[[package]]
+name = "defmt-macros"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8"
+dependencies = [
+ "defmt-parser",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "defmt-parser"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e"
+dependencies = [
+ "thiserror",
]
[[package]]
@@ -408,10 +445,230 @@ dependencies = [
]
[[package]]
-name = "dyn-clone"
-version = "1.0.20"
+name = "document-features"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
+dependencies = [
+ "litrs",
+]
+
+[[package]]
+name = "embassy-executor"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f102d5e04befe3ea74b6f41a0e26218740124636eb2f59e1cc215b5839b96df2"
+dependencies = [
+ "critical-section",
+ "document-features",
+ "embassy-executor-macros",
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "embassy-executor-macros"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfdddc3a04226828316bf31393b6903ee162238576b1584ee2669af215d55472"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "embassy-executor-timer-queue"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2fc328bf943af66b80b98755db9106bf7e7471b0cf47dc8559cd9a6be504cc9c"
+
+[[package]]
+name = "embassy-futures"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01"
+
+[[package]]
+name = "embassy-net"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "71f0aa32082b7df00164f485322d6edab59122c9718b363b07ec23424c2c06a0"
+dependencies = [
+ "document-features",
+ "embassy-net-driver",
+ "embassy-sync",
+ "embassy-time",
+ "embedded-io-async 0.7.0",
+ "embedded-nal-async",
+ "heapless 0.8.0",
+ "managed",
+ "smoltcp",
+]
+
+[[package]]
+name = "embassy-net-driver"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "524eb3c489760508f71360112bca70f6e53173e6fe48fc5f0efd0f5ab217751d"
+
+[[package]]
+name = "embassy-sync"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73974a3edbd0bd286759b3d483540f0ebef705919a5f56f4fc7709066f71689b"
+dependencies = [
+ "cfg-if",
+ "critical-section",
+ "embedded-io-async 0.6.1",
+ "futures-core",
+ "futures-sink",
+ "heapless 0.8.0",
+]
+
+[[package]]
+name = "embassy-time"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a"
+dependencies = [
+ "cfg-if",
+ "critical-section",
+ "document-features",
+ "embassy-time-driver",
+ "embassy-time-queue-utils",
+ "embedded-hal 0.2.7",
+ "embedded-hal 1.0.0",
+ "embedded-hal-async",
+ "futures-core",
+ "js-sys",
+ "wasm-bindgen",
+ "wasm-timer",
+]
+
+[[package]]
+name = "embassy-time-driver"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ee71af1b3a0deaa53eaf2d39252f83504c853646e472400b763060389b9fcc9"
+dependencies = [
+ "document-features",
+]
+
+[[package]]
+name = "embassy-time-queue-utils"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693"
+dependencies = [
+ "embassy-executor-timer-queue",
+ "heapless 0.9.3",
+]
+
+[[package]]
+name = "embedded-hal"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff"
+dependencies = [
+ "nb 0.1.3",
+ "void",
+]
+
+[[package]]
+name = "embedded-hal"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89"
+
+[[package]]
+name = "embedded-hal-async"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c4c685bbef7fe13c3c6dd4da26841ed3980ef33e841cddfa15ce8a8fb3f1884"
+dependencies = [
+ "embedded-hal 1.0.0",
+]
+
+[[package]]
+name = "embedded-io"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d"
+
+[[package]]
+name = "embedded-io"
+version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
+checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7"
+
+[[package]]
+name = "embedded-io-async"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ff09972d4073aa8c299395be75161d582e7629cd663171d62af73c8d50dba3f"
+dependencies = [
+ "embedded-io 0.6.1",
+]
+
+[[package]]
+name = "embedded-io-async"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0"
+dependencies = [
+ "embedded-io 0.7.1",
+]
+
+[[package]]
+name = "embedded-nal"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c56a28be191a992f28f178ec338a0bf02f63d7803244add736d026a471e6ed77"
+dependencies = [
+ "nb 1.1.0",
+]
+
+[[package]]
+name = "embedded-nal-async"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb5a1bd585135d302f8f6d7de329310938093da6271b37a6c94b8798795c0c6d"
+dependencies = [
+ "embedded-io-async 0.7.0",
+ "embedded-nal",
+]
+
+[[package]]
+name = "embedded-storage"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a21dea9854beb860f3062d10228ce9b976da520a73474aed3171ec276bc0c032"
+
+[[package]]
+name = "embedded-storage-async"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1763775e2323b7d5f0aa6090657f5e21cfa02ede71f5dc40eead06d64dcd15cc"
+dependencies = [
+ "embedded-storage",
+]
+
+[[package]]
+name = "embedded-websocket"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "527467357eb24e402fec2dc3664f0481bf457ec7344acbab19622a8b2d2d4a24"
+dependencies = [
+ "base64",
+ "byteorder",
+ "futures",
+ "heapless 0.7.17",
+ "httparse",
+ "rand_core 0.6.4",
+ "sha1 0.10.7",
+]
[[package]]
name = "equivalent"
@@ -429,23 +686,11 @@ dependencies = [
"windows-sys",
]
-[[package]]
-name = "fallible-iterator"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"
-
-[[package]]
-name = "fallible-streaming-iterator"
-version = "0.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
-
[[package]]
name = "find-msvc-tools"
-version = "0.1.9"
+version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
+checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890"
[[package]]
name = "fluvio-wasm-timer"
@@ -462,11 +707,17 @@ dependencies = [
"web-sys",
]
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
[[package]]
name = "foldhash"
-version = "0.2.0"
+version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
+checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
[[package]]
name = "fs2"
@@ -587,13 +838,16 @@ dependencies = [
[[package]]
name = "getrandom"
-version = "0.2.17"
+version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
dependencies = [
"cfg-if",
+ "js-sys",
"libc",
- "wasi",
+ "r-efi 5.3.0",
+ "wasip2",
+ "wasm-bindgen",
]
[[package]]
@@ -603,18 +857,39 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
dependencies = [
"cfg-if",
- "js-sys",
"libc",
- "r-efi",
+ "r-efi 6.0.0",
"rand_core 0.10.1",
+]
+
+[[package]]
+name = "graphitesql"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a062c2a8f9ec58e9e7a03ccf9a7698f0143bbd31be056a618b9a0bab2f2bc4fc"
+dependencies = [
+ "js-sys",
"wasm-bindgen",
+ "web-sys",
]
[[package]]
-name = "hashbrown"
-version = "0.12.3"
+name = "hash32"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67"
+dependencies = [
+ "byteorder",
+]
+
+[[package]]
+name = "hash32"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606"
+dependencies = [
+ "byteorder",
+]
[[package]]
name = "hashbrown"
@@ -624,48 +899,64 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
[[package]]
name = "hashbrown"
-version = "0.16.1"
+version = "0.15.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
+checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
dependencies = [
"foldhash",
]
[[package]]
name = "hashbrown"
-version = "0.17.1"
+version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
+
+[[package]]
+name = "heapless"
+version = "0.7.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f"
dependencies = [
- "foldhash",
+ "atomic-polyfill",
+ "hash32 0.2.1",
+ "rustc_version",
+ "spin 0.9.9",
+ "stable_deref_trait",
]
[[package]]
-name = "hashlink"
-version = "0.12.0"
+name = "heapless"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a5081f264ed7adee96ea4b4778b6bb9da0a7228b084587aa3bd3ff05da7c5a3b"
+checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad"
dependencies = [
- "hashbrown 0.17.1",
+ "hash32 0.3.1",
+ "serde",
+ "stable_deref_trait",
]
[[package]]
-name = "heck"
-version = "0.5.0"
+name = "heapless"
+version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4"
+dependencies = [
+ "hash32 0.3.1",
+ "stable_deref_trait",
+]
[[package]]
-name = "hex"
-version = "0.4.3"
+name = "heck"
+version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "http"
-version = "1.4.0"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
+checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0"
dependencies = [
"bytes",
"itoa",
@@ -679,36 +970,18 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
[[package]]
name = "hybrid-array"
-version = "0.4.13"
+version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c"
+checksum = "707114b52a152fa7bdb290cd7cd5912d9467273b6d74e21b8d81aca1f8533f6b"
dependencies = [
"typenum",
]
[[package]]
-name = "iana-time-zone"
-version = "0.1.65"
+name = "id-arena"
+version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470"
-dependencies = [
- "android_system_properties",
- "core-foundation-sys",
- "iana-time-zone-haiku",
- "js-sys",
- "log",
- "wasm-bindgen",
- "windows-core",
-]
-
-[[package]]
-name = "iana-time-zone-haiku"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
-dependencies = [
- "cc",
-]
+checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
[[package]]
name = "ident_case"
@@ -716,17 +989,6 @@ version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
-[[package]]
-name = "indexmap"
-version = "1.9.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
-dependencies = [
- "autocfg",
- "hashbrown 0.12.3",
- "serde",
-]
-
[[package]]
name = "indexmap"
version = "2.13.0"
@@ -739,6 +1001,15 @@ dependencies = [
"serde_core",
]
+[[package]]
+name = "inout"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"
+dependencies = [
+ "generic-array",
+]
+
[[package]]
name = "instant"
version = "0.1.13"
@@ -781,6 +1052,12 @@ version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+[[package]]
+name = "leb128fmt"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
+
[[package]]
name = "libc"
version = "0.2.186"
@@ -794,15 +1071,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
[[package]]
-name = "libsqlite3-sys"
-version = "0.38.1"
+name = "litrs"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6c19a05435c21ac299d71b6a9c13db3e3f47c520517d58990a462a1397a61db"
-dependencies = [
- "cc",
- "pkg-config",
- "vcpkg",
-]
+checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
[[package]]
name = "lock_api"
@@ -819,6 +1091,12 @@ version = "0.4.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
+[[package]]
+name = "managed"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ca88d725a0a943b096803bd34e73a4437208b6077654cc4ecb2947a5f91618d"
+
[[package]]
name = "matchers"
version = "0.2.0"
@@ -834,11 +1112,31 @@ version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
+[[package]]
+name = "messagepack-core"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95fe590f7b7d58bfefd83d9995c0b09eaecb8607e4bb66a658c95c0bd691f876"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "messagepack-serde"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a630d3ff4e4c893267925baffa3f8e75f0cdb20d212170ee7d8576a45ac1869"
+dependencies = [
+ "messagepack-core",
+ "num-traits",
+ "serde",
+]
+
[[package]]
name = "minicov"
-version = "0.3.8"
+version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4869b6a491569605d66d3952bcdf03df789e5b536e5f0cf7758a7f08a55ae24d"
+checksum = "c3aa3aa12b448ac225b3102217d1ac5cc717908f02722926524b0599c933c7a0"
dependencies = [
"cc",
"walkdir",
@@ -851,10 +1149,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1"
dependencies = [
"libc",
- "wasi",
+ "wasi 0.11.1+wasi-snapshot-preview1",
"windows-sys",
]
+[[package]]
+name = "nb"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f"
+dependencies = [
+ "nb 1.1.0",
+]
+
+[[package]]
+name = "nb"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d"
+
[[package]]
name = "nu-ansi-term"
version = "0.50.3"
@@ -864,12 +1177,6 @@ dependencies = [
"windows-sys",
]
-[[package]]
-name = "num-conv"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441"
-
[[package]]
name = "num-traits"
version = "0.2.19"
@@ -959,24 +1266,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
-name = "pkg-config"
-version = "0.3.33"
+name = "portable-atomic"
+version = "1.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e"
+checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3"
+dependencies = [
+ "critical-section",
+]
[[package]]
-name = "powerfmt"
-version = "0.2.0"
+name = "portable-atomic-util"
+version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
+dependencies = [
+ "portable-atomic",
+]
[[package]]
-name = "ppv-lite86"
-version = "0.2.21"
+name = "prettyplease"
+version = "0.2.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
dependencies = [
- "zerocopy",
+ "proc-macro2",
+ "syn",
]
[[package]]
@@ -999,20 +1313,15 @@ dependencies = [
[[package]]
name = "r-efi"
-version = "6.0.0"
+version = "5.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
[[package]]
-name = "rand"
-version = "0.8.6"
+name = "r-efi"
+version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a"
-dependencies = [
- "libc",
- "rand_chacha",
- "rand_core 0.6.4",
-]
+checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
[[package]]
name = "rand"
@@ -1020,28 +1329,24 @@ version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80"
dependencies = [
- "chacha20",
+ "chacha20 0.10.1",
"getrandom 0.4.3",
"rand_core 0.10.1",
]
[[package]]
-name = "rand_chacha"
-version = "0.3.1"
+name = "rand_core"
+version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
-dependencies = [
- "ppv-lite86",
- "rand_core 0.6.4",
-]
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
[[package]]
name = "rand_core"
-version = "0.6.4"
+version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
dependencies = [
- "getrandom 0.2.17",
+ "getrandom 0.3.4",
]
[[package]]
@@ -1065,27 +1370,7 @@ version = "0.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
dependencies = [
- "bitflags 2.11.0",
-]
-
-[[package]]
-name = "ref-cast"
-version = "1.0.25"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
-dependencies = [
- "ref-cast-impl",
-]
-
-[[package]]
-name = "ref-cast-impl"
-version = "1.0.25"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
+ "bitflags 2.13.1",
]
[[package]]
@@ -1137,39 +1422,12 @@ dependencies = [
]
[[package]]
-name = "rmpv"
-version = "1.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a4e1d4b9b938a26d2996af33229f0ca0956c652c1375067f0b45291c1df8417"
-dependencies = [
- "rmp",
- "serde",
- "serde_bytes",
-]
-
-[[package]]
-name = "rsqlite-vfs"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c51c9ae4df8a7fba42103df5c621fa3c37eccf3a3c650879e90fc48b11cc192c"
-dependencies = [
- "hashbrown 0.16.1",
- "thiserror 2.0.18",
-]
-
-[[package]]
-name = "rusqlite"
-version = "0.40.1"
+name = "rustc_version"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11438310b19e3109b6446c33d1ed5e889428cf2e278407bc7896bc4aaea43323"
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
dependencies = [
- "bitflags 2.11.0",
- "fallible-iterator",
- "fallible-streaming-iterator",
- "hashlink",
- "libsqlite3-sys",
- "smallvec",
- "sqlite-wasm-rs",
+ "semver",
]
[[package]]
@@ -1186,19 +1444,17 @@ dependencies = [
"async-trait",
"bytes",
"clap",
- "dashmap",
+ "dashmap 6.2.1",
"futures",
- "rmp-serde",
+ "portable-atomic-util",
"saikuro-core",
+ "saikuro-event",
"saikuro-exec",
"saikuro-storage",
"saikuro-transport",
- "serde",
"serde_json",
"syn",
- "thiserror 2.0.18",
- "tracing",
- "uuid",
+ "thiserror",
]
[[package]]
@@ -1210,11 +1466,13 @@ dependencies = [
"regex",
"saikuro",
"saikuro-core",
+ "saikuro-event",
"saikuro-exec",
"saikuro-runtime",
"saikuro-transport",
"serde_json",
- "thiserror 2.0.18",
+ "spin 0.12.3",
+ "tokio",
]
[[package]]
@@ -1227,54 +1485,101 @@ dependencies = [
"saikuro-schema",
"serde",
"serde_json",
- "thiserror 2.0.18",
+ "thiserror",
]
[[package]]
name = "saikuro-core"
version = "0.1.0"
dependencies = [
- "bytes",
- "chrono",
- "rmp-serde",
- "rmpv",
+ "heapless 0.8.0",
+ "messagepack-serde",
+ "portable-atomic",
+ "saikuro-event",
+ "saikuro-random",
"serde",
"serde_bytes",
"serde_json",
- "serde_with",
"strum",
- "thiserror 2.0.18",
+ "thiserror",
"uuid",
]
+[[package]]
+name = "saikuro-event"
+version = "0.1.0"
+dependencies = [
+ "async-trait",
+ "embedded-io-async 0.7.0",
+ "getrandom 0.3.4",
+ "heapless 0.8.0",
+ "messagepack-serde",
+ "serde",
+ "serde_bytes",
+ "serde_json",
+ "spin 0.12.3",
+ "strum",
+ "thiserror",
+ "tracing",
+ "wasm-bindgen",
+ "web-sys",
+]
+
[[package]]
name = "saikuro-exec"
version = "0.1.0"
dependencies = [
+ "critical-section",
+ "embassy-executor",
+ "embassy-futures",
+ "embassy-net",
+ "embassy-sync",
+ "embassy-time",
"fluvio-wasm-timer",
"futures",
+ "portable-atomic",
+ "portable-atomic-util",
"tokio",
"tokio-util",
"wasm-bindgen-futures",
]
+[[package]]
+name = "saikuro-net"
+version = "0.1.0"
+dependencies = [
+ "embassy-net",
+ "embassy-time",
+ "embedded-io-async 0.7.0",
+ "futures",
+ "tokio",
+]
+
+[[package]]
+name = "saikuro-random"
+version = "0.1.0"
+dependencies = [
+ "chacha20 0.9.1",
+ "getrandom 0.3.4",
+ "portable-atomic",
+ "rand_core 0.9.5",
+ "saikuro-event",
+ "uuid",
+]
+
[[package]]
name = "saikuro-router"
version = "0.1.0"
dependencies = [
"async-trait",
- "bytes",
- "dashmap",
- "futures",
- "rmp-serde",
+ "portable-atomic",
+ "portable-atomic-util",
"saikuro-core",
+ "saikuro-event",
"saikuro-exec",
"saikuro-schema",
- "serde",
- "thiserror 2.0.18",
- "tracing",
+ "thiserror",
"tracing-subscriber",
- "uuid",
]
[[package]]
@@ -1285,37 +1590,38 @@ dependencies = [
"async-trait",
"bytes",
"clap",
- "dashmap",
+ "embassy-executor",
"futures",
- "parking_lot 0.12.5",
- "rmp-serde",
+ "portable-atomic",
+ "portable-atomic-util",
"saikuro-core",
+ "saikuro-event",
"saikuro-exec",
+ "saikuro-net",
+ "saikuro-random",
"saikuro-router",
"saikuro-schema",
"saikuro-transport",
"serde",
"serde_json",
- "serde_with",
- "thiserror 2.0.18",
- "tokio-tungstenite",
+ "spin 0.12.3",
+ "talc",
"tracing",
"tracing-subscriber",
- "tungstenite 0.30.0",
- "uuid",
+ "wasi 0.14.7+wasi-0.2.4",
+ "wasm-bindgen",
]
[[package]]
name = "saikuro-schema"
version = "0.1.0"
dependencies = [
- "dashmap",
- "parking_lot 0.12.5",
+ "portable-atomic",
+ "portable-atomic-util",
"saikuro-core",
- "serde",
- "serde_json",
- "thiserror 2.0.18",
- "tracing",
+ "saikuro-event",
+ "saikuro-exec",
+ "thiserror",
]
[[package]]
@@ -1324,44 +1630,54 @@ version = "0.1.0"
dependencies = [
"async-trait",
"bytes",
- "dashmap",
+ "dashmap 7.0.0-rc2",
+ "embedded-storage-async",
"futures",
+ "futures-executor",
+ "graphitesql",
"js-sys",
- "parking_lot 0.12.5",
- "rmp-serde",
- "rusqlite",
"saikuro-core",
+ "saikuro-event",
"saikuro-exec",
+ "sequential-storage",
"serde",
"serde_json",
"sled",
- "thiserror 2.0.18",
+ "spin 0.12.3",
+ "thiserror",
"tokio",
- "tracing",
- "tracing-subscriber",
+ "wasi 0.14.7+wasi-0.2.4",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
+ "wit-bindgen 0.46.0",
]
[[package]]
name = "saikuro-tests"
version = "0.1.0"
dependencies = [
+ "async-trait",
"bytes",
+ "embedded-storage-async",
+ "futures",
+ "futures-executor",
"js-sys",
"rmp-serde",
"saikuro",
"saikuro-codegen",
"saikuro-core",
+ "saikuro-event",
"saikuro-exec",
+ "saikuro-random",
"saikuro-router",
"saikuro-runtime",
"saikuro-schema",
+ "saikuro-storage",
"saikuro-transport",
+ "serde",
"serde_json",
- "tracing",
- "tracing-subscriber",
+ "tokio",
"wasm-bindgen",
"wasm-bindgen-futures",
"wasm-bindgen-test",
@@ -1374,20 +1690,27 @@ version = "0.1.0"
dependencies = [
"async-trait",
"bytes",
+ "embassy-sync",
+ "embedded-io-async 0.7.0",
+ "embedded-websocket",
"futures",
- "getrandom 0.4.3",
+ "getrandom 0.3.4",
"js-sys",
"pin-project-lite",
- "rmp-serde",
+ "portable-atomic",
+ "portable-atomic-util",
+ "rand_core 0.6.4",
"saikuro-core",
+ "saikuro-event",
"saikuro-exec",
+ "saikuro-net",
+ "saikuro-random",
"send_wrapper",
"serde",
- "thiserror 2.0.18",
+ "thiserror",
"tokio-tungstenite",
- "tracing",
- "tracing-subscriber",
- "tungstenite 0.30.0",
+ "wasi 0.14.7+wasi-0.2.4",
+ "wasip1",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
@@ -1402,42 +1725,34 @@ dependencies = [
"winapi-util",
]
-[[package]]
-name = "schemars"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f"
-dependencies = [
- "dyn-clone",
- "ref-cast",
- "serde",
- "serde_json",
-]
-
-[[package]]
-name = "schemars"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc"
-dependencies = [
- "dyn-clone",
- "ref-cast",
- "serde",
- "serde_json",
-]
-
[[package]]
name = "scopeguard"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+[[package]]
+name = "semver"
+version = "1.0.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
+
[[package]]
name = "send_wrapper"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73"
+[[package]]
+name = "sequential-storage"
+version = "8.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e750f14f4f6e5a81277c66311713a56106c8df0196df62a634d1fc806556832b"
+dependencies = [
+ "defmt",
+ "embedded-storage-async",
+]
+
[[package]]
name = "serde"
version = "1.0.228"
@@ -1491,43 +1806,11 @@ dependencies = [
"zmij",
]
-[[package]]
-name = "serde_with"
-version = "3.21.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76a5c54c7310e7b8b9577c286d7e399ddd876c3e12b3ed917a8aabc4b96e9e8c"
-dependencies = [
- "base64",
- "bs58",
- "chrono",
- "hex",
- "indexmap 1.9.3",
- "indexmap 2.13.0",
- "schemars 0.9.0",
- "schemars 1.2.1",
- "serde_core",
- "serde_json",
- "serde_with_macros",
- "time",
-]
-
-[[package]]
-name = "serde_with_macros"
-version = "3.21.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84d57bc0c8b9a17920c178daa6bb924850d54a9c97ab45194bb8c17ad66bb660"
-dependencies = [
- "darling",
- "proc-macro2",
- "quote",
- "syn",
-]
-
[[package]]
name = "sha1"
-version = "0.10.6"
+version = "0.10.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
+checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8"
dependencies = [
"cfg-if",
"cpufeatures 0.2.17",
@@ -1556,9 +1839,9 @@ dependencies = [
[[package]]
name = "shlex"
-version = "1.3.0"
+version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
[[package]]
name = "signal-hook-registry"
@@ -1598,6 +1881,19 @@ version = "1.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
+[[package]]
+name = "smoltcp"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dad095989c1533c1c266d9b1e8d70a1329dd3723c3edac6d03bbd67e7bf6f4bb"
+dependencies = [
+ "bitflags 1.3.2",
+ "byteorder",
+ "cfg-if",
+ "heapless 0.8.0",
+ "managed",
+]
+
[[package]]
name = "socket2"
version = "0.6.3"
@@ -1609,17 +1905,30 @@ dependencies = [
]
[[package]]
-name = "sqlite-wasm-rs"
-version = "0.5.5"
+name = "spin"
+version = "0.9.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc3efc0da82635d7e1ced0053bbbfa8c7ab9645d0bf36ceb4f7127bb85315d75"
+checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e"
dependencies = [
- "cc",
- "js-sys",
- "rsqlite-vfs",
- "wasm-bindgen",
+ "lock_api",
+]
+
+[[package]]
+name = "spin"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0134f9043ed38b087ac4f7d4af44c79e2c9e5094421fe3164f435ce585953b10"
+dependencies = [
+ "lock_api",
+ "portable-atomic",
]
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
+
[[package]]
name = "strsim"
version = "0.11.1"
@@ -1659,12 +1968,12 @@ dependencies = [
]
[[package]]
-name = "thiserror"
-version = "1.0.69"
+name = "talc"
+version = "4.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
+checksum = "a3ae828aa394de34c7de08f522d1b86bd1c182c668d27da69caadda00590f26d"
dependencies = [
- "thiserror-impl 1.0.69",
+ "lock_api",
]
[[package]]
@@ -1673,18 +1982,7 @@ version = "2.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
dependencies = [
- "thiserror-impl 2.0.18",
-]
-
-[[package]]
-name = "thiserror-impl"
-version = "1.0.69"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
+ "thiserror-impl",
]
[[package]]
@@ -1707,52 +2005,6 @@ dependencies = [
"cfg-if",
]
-[[package]]
-name = "time"
-version = "0.3.47"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c"
-dependencies = [
- "deranged",
- "itoa",
- "num-conv",
- "powerfmt",
- "serde_core",
- "time-core",
- "time-macros",
-]
-
-[[package]]
-name = "time-core"
-version = "0.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca"
-
-[[package]]
-name = "time-macros"
-version = "0.2.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215"
-dependencies = [
- "num-conv",
- "time-core",
-]
-
-[[package]]
-name = "tinyvec"
-version = "1.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"
-dependencies = [
- "tinyvec_macros",
-]
-
-[[package]]
-name = "tinyvec_macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
-
[[package]]
name = "tokio"
version = "1.53.0"
@@ -1783,14 +2035,14 @@ dependencies = [
[[package]]
name = "tokio-tungstenite"
-version = "0.24.0"
+version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9"
+checksum = "17a073bfed563fa236697a068031408a93cd9522e08abf9933ead3e73411bd71"
dependencies = [
"futures-util",
"log",
"tokio",
- "tungstenite 0.24.0",
+ "tungstenite",
]
[[package]]
@@ -1812,6 +2064,7 @@ version = "0.1.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
dependencies = [
+ "log",
"pin-project-lite",
"tracing-attributes",
"tracing-core",
@@ -1880,24 +2133,6 @@ dependencies = [
"tracing-serde",
]
-[[package]]
-name = "tungstenite"
-version = "0.24.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a"
-dependencies = [
- "byteorder",
- "bytes",
- "data-encoding",
- "http",
- "httparse",
- "log",
- "rand 0.8.6",
- "sha1 0.10.6",
- "thiserror 1.0.69",
- "utf-8",
-]
-
[[package]]
name = "tungstenite"
version = "0.30.0"
@@ -1909,9 +2144,9 @@ dependencies = [
"http",
"httparse",
"log",
- "rand 0.10.2",
+ "rand",
"sha1 0.11.0",
- "thiserror 2.0.18",
+ "thiserror",
]
[[package]]
@@ -1927,10 +2162,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
[[package]]
-name = "utf-8"
-version = "0.7.6"
+name = "unicode-xid"
+version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
+checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
[[package]]
name = "utf8parse"
@@ -1943,12 +2178,6 @@ name = "uuid"
version = "1.23.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53"
-dependencies = [
- "getrandom 0.4.3",
- "js-sys",
- "serde_core",
- "wasm-bindgen",
-]
[[package]]
name = "valuable"
@@ -1956,18 +2185,18 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
-[[package]]
-name = "vcpkg"
-version = "0.2.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
-
[[package]]
name = "version_check"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+[[package]]
+name = "void"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
+
[[package]]
name = "walkdir"
version = "2.5.0"
@@ -1984,6 +2213,30 @@ version = "0.11.1+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
+[[package]]
+name = "wasi"
+version = "0.14.7+wasi-0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c"
+dependencies = [
+ "wasip2",
+]
+
+[[package]]
+name = "wasip1"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5e26842486624357dbeb8f0381cf1fb42f022291fd787d4a816768fec8cc760"
+
+[[package]]
+name = "wasip2"
+version = "1.0.4+wasi-0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487"
+dependencies = [
+ "wit-bindgen 0.57.1",
+]
+
[[package]]
name = "wasm-bindgen"
version = "0.2.122"
@@ -2078,6 +2331,55 @@ version = "0.2.122"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "684365b586a9a6256c1cc3544eee8680de48d6041142f581776ec7b139622ae9"
+[[package]]
+name = "wasm-encoder"
+version = "0.239.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5be00faa2b4950c76fe618c409d2c3ea5a3c9422013e079482d78544bb2d184c"
+dependencies = [
+ "leb128fmt",
+ "wasmparser",
+]
+
+[[package]]
+name = "wasm-metadata"
+version = "0.239.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20b3ec880a9ac69ccd92fbdbcf46ee833071cf09f82bb005b2327c7ae6025ae2"
+dependencies = [
+ "anyhow",
+ "indexmap",
+ "wasm-encoder",
+ "wasmparser",
+]
+
+[[package]]
+name = "wasm-timer"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f"
+dependencies = [
+ "futures",
+ "js-sys",
+ "parking_lot 0.11.2",
+ "pin-utils",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "wasmparser"
+version = "0.239.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c9d90bb93e764f6beabf1d02028c70a2156a6583e63ac4218dd07ef733368b0"
+dependencies = [
+ "bitflags 2.13.1",
+ "hashbrown 0.15.5",
+ "indexmap",
+ "semver",
+]
+
[[package]]
name = "web-sys"
version = "0.3.99"
@@ -2120,91 +2422,118 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
-name = "windows-core"
-version = "0.62.2"
+name = "windows-link"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
-dependencies = [
- "windows-implement",
- "windows-interface",
- "windows-link",
- "windows-result",
- "windows-strings",
-]
+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
[[package]]
-name = "windows-implement"
-version = "0.60.2"
+name = "windows-sys"
+version = "0.61.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
dependencies = [
- "proc-macro2",
- "quote",
- "syn",
+ "windows-link",
]
[[package]]
-name = "windows-interface"
-version = "0.59.3"
+name = "wit-bindgen"
+version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
+checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
dependencies = [
- "proc-macro2",
- "quote",
- "syn",
+ "bitflags 2.13.1",
+ "futures",
+ "once_cell",
+ "wit-bindgen-rust-macro",
]
[[package]]
-name = "windows-link"
-version = "0.2.1"
+name = "wit-bindgen"
+version = "0.57.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
+checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
+dependencies = [
+ "bitflags 2.13.1",
+]
[[package]]
-name = "windows-result"
-version = "0.4.1"
+name = "wit-bindgen-core"
+version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
+checksum = "cabd629f94da277abc739c71353397046401518efb2c707669f805205f0b9890"
dependencies = [
- "windows-link",
+ "anyhow",
+ "heck",
+ "wit-parser",
]
[[package]]
-name = "windows-strings"
-version = "0.5.1"
+name = "wit-bindgen-rust"
+version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
+checksum = "9a4232e841089fa5f3c4fc732a92e1c74e1a3958db3b12f1de5934da2027f1f4"
dependencies = [
- "windows-link",
+ "anyhow",
+ "heck",
+ "indexmap",
+ "prettyplease",
+ "syn",
+ "wasm-metadata",
+ "wit-bindgen-core",
+ "wit-component",
]
[[package]]
-name = "windows-sys"
-version = "0.61.2"
+name = "wit-bindgen-rust-macro"
+version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
+checksum = "1e0d4698c2913d8d9c2b220d116409c3f51a7aa8d7765151b886918367179ee9"
dependencies = [
- "windows-link",
+ "anyhow",
+ "prettyplease",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wit-bindgen-core",
+ "wit-bindgen-rust",
]
[[package]]
-name = "zerocopy"
-version = "0.8.40"
+name = "wit-component"
+version = "0.239.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a789c6e490b576db9f7e6b6d661bcc9799f7c0ac8352f56ea20193b2681532e5"
+checksum = "88a866b19dba2c94d706ec58c92a4c62ab63e482b4c935d2a085ac94caecb136"
dependencies = [
- "zerocopy-derive",
+ "anyhow",
+ "bitflags 2.13.1",
+ "indexmap",
+ "log",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "wasm-encoder",
+ "wasm-metadata",
+ "wasmparser",
+ "wit-parser",
]
[[package]]
-name = "zerocopy-derive"
-version = "0.8.40"
+name = "wit-parser"
+version = "0.239.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953"
+checksum = "55c92c939d667b7bf0c6bf2d1f67196529758f99a2a45a3355cc56964fd5315d"
dependencies = [
- "proc-macro2",
- "quote",
- "syn",
+ "anyhow",
+ "id-arena",
+ "indexmap",
+ "log",
+ "semver",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "unicode-xid",
+ "wasmparser",
]
[[package]]
diff --git a/Build/Cargo.toml b/Build/Cargo.toml
index a408cee0..8a4ebe89 100644
--- a/Build/Cargo.toml
+++ b/Build/Cargo.toml
@@ -2,16 +2,19 @@
resolver = "2"
members = [
"crates/saikuro-core",
+ "crates/saikuro-event",
"crates/saikuro-schema",
- "crates/saikuro-storage",
"crates/saikuro-transport",
+ "crates/saikuro-storage",
"crates/saikuro-router",
"crates/saikuro-runtime",
"crates/saikuro-exec",
+ "crates/saikuro-net",
+ "crates/saikuro-random",
"crates/saikuro-codegen",
"adapters/c",
"adapters/rust",
- "tests",
+ "tests"
]
[workspace.package]
@@ -24,48 +27,124 @@ rust-version = "1.75"
[workspace.dependencies]
# Serialization
-serde = { version = "1.0", features = ["derive"] }
-serde_json = "1.0"
-serde_bytes = "0.11"
-rmp-serde = "1.3"
-rmpv = { version = "1.3", features = ["with-serde"] }
-bytes = "1.7"
-futures = "0.3"
+serde = { version = "1.0", default-features = false, features = [
+ "alloc",
+ "derive",
+] }
+serde_json = { version = "1.0", default-features = false }
+serde_bytes = { version = "0.11", default-features = false, features = [
+ "alloc",
+] }
+messagepack-serde = { version = "0.2.4", default-features = false, features = [
+ "alloc",
+] }
+rmp-serde = { version = "1.3", default-features = false }
+bytes = { version = "1.12", default-features = false }
+futures = { version = "0.3", default-features = false, features = ["alloc"] }
async-trait = "0.1"
pin-project-lite = "0.2"
-# UUID
-uuid = { version = "1.23.2", features = ["v4", "serde", "js"] }
+uuid = { version = "1.23", default-features = false }
+
+getrandom = { version = "0.3", default-features = false }
+chacha20 = { version = "0.9", default-features = false }
+portable-atomic = { version = "1", default-features = false, features = [
+ "fallback",
+ "critical-section",
+] }
+portable-atomic-util = { version = "0.2", default-features = false, features = ["alloc"] }
+
+rand_core = { version = "0.9", default-features = false }
+
+heapless = { version = "0.8", default-features = false, features = ["serde"] }
-# Duration / utility serde helpers
serde_with = "3.0"
-# Enum string conversion
-strum = { version = "0.28.0", features = ["derive"] }
+strum = { version = "0.28", default-features = false, features = ["derive"] }
-# Logging / tracing: tracing itself is wasm-safe; the subscriber is not
-# used directly from WASM so it only appears in crates that explicitly need it.
-tracing = "0.1"
-tracing-subscriber = { version = "0.3.23", features = ["env-filter", "fmt", "json"] }
+tracing = { version = "0.1", default-features = false }
+tracing-subscriber = { version = "0.3", features = [
+ "env-filter",
+ "fmt",
+ "json",
+] }
-# Error handling: both are wasm-safe
-thiserror = "2.0"
+embassy-sync = { version = "0.7", default-features = false }
+embassy-time = { version = "0.5", default-features = false }
+embassy-futures = { version = "0.1", default-features = false }
+embassy-net = { version = "0.8", default-features = false }
+embedded-storage-async = { version = "0.4", default-features = false }
+sequential-storage = { version = "8", default-features = false, features = ["alloc"] }
+
+thiserror = { version = "2", default-features = false }
anyhow = "1.0"
-# Concurrency: dashmap and parking_lot are wasm-safe for single-threaded WASM i think
-dashmap = "6.1"
+dashmap = "7.0.0-rc2"
parking_lot = "0.12"
+spin = { version = "0.12", default-features = false, features = [
+ "mutex",
+ "spin_mutex",
+ "rwlock",
+ "portable-atomic",
+] }
+
+chrono = { version = "0.4", default-features = false, features = ["serde", "wasmbind"] }
+
+# Tokio
+tokio = { version = "1.53", default-features = false }
+tokio-util = { version = "0.7", default-features = false }
+
+# Embassy executor
+embassy-executor = { version = "0.8", default-features = false }
+embassy-net-driver-channel = "0.4"
+critical-section = { version = "1" }
-# Time: chrono is wasm-safe when 'wasmbind' feature is enabled
-chrono = { version = "0.4", features = ["serde", "wasmbind"] }
+# WASM
+wasm-bindgen = "0.2"
+wasm-bindgen-futures = "0.4"
+js-sys = "0.3"
+web-sys = "0.3"
+fluvio-wasm-timer = "0.2"
+send_wrapper = "0.6"
+wasm-bindgen-test = "0.3"
+
+# Embedded
+embedded-io-async = { version = "0.7", default-features = false }
+
+# WASM Alloc
+talc = { version = "4", default-features = false, features = ["lock_api"] }
+
+# WebSocket
+tokio-tungstenite = { version = "0.30", default-features = false }
+embedded-websocket = { version = "0.9", default-features = false }
+rand_core_06 = { package = "rand_core", version = "0.6", default-features = false }
+
+# Storage backends
+sled = "0.34"
+graphitesql = "0.1.6"
+wit-bindgen = "0.46"
+wasi = "0.14"
+wasip1 = "1"
+
+# Futures
+futures-executor = "0.3"
+
+# CLI
+clap = { version = "4", features = ["derive", "env"] }
# Internal crates
-saikuro-core = { path = "crates/saikuro-core" }
-saikuro-schema = { path = "crates/saikuro-schema" }
-saikuro-storage = { path = "crates/saikuro-storage", default-features = false }
+saikuro-core = { path = "crates/saikuro-core", default-features = false }
+saikuro-schema = { path = "crates/saikuro-schema", default-features = false }
+saikuro-storage = { path = "crates/saikuro-storage", default-features = false }
saikuro-transport = { path = "crates/saikuro-transport", default-features = false }
-saikuro-router = { path = "crates/saikuro-router", default-features = false }
-saikuro-runtime = { path = "crates/saikuro-runtime", default-features = false }
-saikuro-codegen = { path = "crates/saikuro-codegen" }
-saikuro-exec = { path = "crates/saikuro-exec", default-features = false }
-saikuro = { path = "adapters/rust", default-features = false }
+saikuro-router = { path = "crates/saikuro-router", default-features = false }
+saikuro-runtime = { path = "crates/saikuro-runtime", default-features = false }
+saikuro-codegen = { path = "crates/saikuro-codegen" }
+saikuro-exec = { path = "crates/saikuro-exec", default-features = false }
+saikuro-random = { path = "crates/saikuro-random", default-features = false }
+saikuro-event = { path = "crates/saikuro-event", default-features = false }
+saikuro = { path = "adapters/rust", default-features = false }
+
+[profile.dev]
+
+[profile.release]
diff --git a/Build/adapters/c/Cargo.toml b/Build/adapters/c/Cargo.toml
index a9d8c2c2..62225b9f 100644
--- a/Build/adapters/c/Cargo.toml
+++ b/Build/adapters/c/Cargo.toml
@@ -15,22 +15,40 @@ crate-type = ["cdylib", "staticlib", "rlib"]
[[bin]]
name = "saikuro-c-schema"
path = "src/cli/saikuro_c_schema.rs"
+required-features = ["native"]
[features]
-default = ["saikuro/default"]
-wasm = ["saikuro/wasm", "saikuro-exec/wasm-runtime"]
+default = ["std", "native", "saikuro/default"]
+std = ["saikuro/std"]
+no_std = ["saikuro/no_std", "saikuro-exec/no_std"]
+native = ["std", "saikuro/native", "saikuro-exec/native", "dep:tokio", "dep:anyhow", "dep:clap", "dep:regex"]
+wasm = ["saikuro/wasm", "saikuro-exec/wasm"]
+embedded = ["saikuro/embedded", "saikuro-exec/embedded"]
+tcp = ["saikuro/tcp"]
+unix = ["saikuro/unix"]
+ws = ["saikuro/ws"]
+ws-wasi = ["saikuro/ws-wasi"]
+wasi-tcp = ["saikuro/wasi-tcp"]
+wasi-host = ["saikuro/wasi-host"]
+wasi-preview1 = ["saikuro/wasi-preview1"]
+wasi-preview2 = ["saikuro/wasi-preview2"]
[dependencies]
saikuro = { workspace = true, default-features = false }
-anyhow = { workspace = true }
-serde_json = { workspace = true }
-thiserror = { workspace = true }
-
saikuro-exec = { workspace = true, default-features = false }
-clap = { version = "4.5", features = ["derive"] }
-regex = "1.11"
+serde_json = { workspace = true, features = ["alloc"] }
+spin = "0.12.3"
+anyhow = { workspace = true, optional = true }
+clap = { version = "4.5", features = ["derive"], optional = true }
+regex = { version = "1.11", optional = true }
+
+[dependencies.tokio]
+version = "1"
+features = ["rt", "rt-multi-thread"]
+optional = true
[dev-dependencies]
-saikuro-core = { workspace = true }
+saikuro-core = { workspace = true, features = ["std"] }
+saikuro-event = { workspace = true }
saikuro-runtime = { workspace = true }
saikuro-transport = { workspace = true }
diff --git a/Build/adapters/c/src/lib.rs b/Build/adapters/c/src/lib.rs
index 8dcb6536..9e753199 100644
--- a/Build/adapters/c/src/lib.rs
+++ b/Build/adapters/c/src/lib.rs
@@ -1,36 +1,227 @@
-use std::cell::RefCell;
-use std::ffi::{c_char, c_int, c_void, CStr, CString};
-use std::ptr;
-use std::thread_local;
-use std::time::Duration;
+#![cfg_attr(not(feature = "std"), no_std)]
+
+extern crate alloc;
+
+#[cfg(all(
+ not(feature = "std"),
+ not(feature = "native"),
+ any(target_os = "none", all(target_os = "wasi", target_env = "p1"),),
+))]
+mod embedded_rt {
+ use core::alloc::{GlobalAlloc, Layout};
+
+ struct StubAllocator;
+
+ unsafe impl GlobalAlloc for StubAllocator {
+ unsafe fn alloc(&self, _layout: Layout) -> *mut u8 {
+ core::ptr::null_mut()
+ }
+ unsafe fn dealloc(&self, _ptr: *mut u8, _layout: Layout) {}
+ }
+
+ #[global_allocator]
+ static ALLOCATOR: StubAllocator = StubAllocator;
+
+ #[panic_handler]
+ fn panic(_info: &core::panic::PanicInfo) -> ! {
+ loop {}
+ }
+}
+
+#[cfg(not(feature = "std"))]
+use alloc::borrow::ToOwned;
+#[cfg(not(feature = "std"))]
+use alloc::boxed::Box;
+use alloc::ffi::CString;
+#[cfg(not(feature = "std"))]
+use alloc::format;
+#[cfg(not(feature = "std"))]
+use alloc::string::String;
+#[cfg(not(feature = "std"))]
+use alloc::vec::Vec;
+use core::ffi::{c_char, c_int, c_void, CStr};
+use core::future::Future;
+use core::ptr;
use saikuro::{
- ArgDescriptor, Client, FunctionSchema, PrimitiveType, Provider, RegisterOptions,
- SaikuroChannel, TypeDescriptor, Value,
+ ArgDescriptor, FunctionSchema, PrimitiveType, Provider, RegisterOptions, TypeDescriptor, Value,
};
-use saikuro_exec::Runtime;
-use std::sync::Arc;
+#[cfg(feature = "std")]
+use saikuro::{Client, SaikuroChannel, SaikuroStream};
-// C API helpers for client handle validation and result serialization
+// C API helpers for client handle validation and result serialization.
const ERR_HANDLE_NULL: &str = "handle must not be null";
-thread_local! {
- static LAST_ERROR: RefCell