diff --git a/.cargo/config.toml.example b/.cargo/config.toml.example index 01e632d..32322b8 100644 --- a/.cargo/config.toml.example +++ b/.cargo/config.toml.example @@ -2,4 +2,4 @@ datex-core = { path = "../datex/crates/datex-core", default-features = false, features = [ "target_native", "decompiler", "syntax_highlighting_legacy", "compiler", "allow_unsigned_blocks" ] } -datex-macro-utils = { path = "../datex/crates/datex-macro-utils" } \ No newline at end of file +datex-macro-utils = { path = "../datex/crates/datex-macro-utils" } diff --git a/.gitignore b/.gitignore index 101ff07..cb3dba3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ target/ .idea -.cargo/config.toml \ No newline at end of file +.cargo/config.toml +.DS_Store \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index b721c6e..effebb8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -123,6 +123,15 @@ version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" +[[package]] +name = "ar_archive_writer" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73cd58deff2140a0a8eae87e417bd01db68a33e148aa93d1e8cd837e55e312b6" +dependencies = [ + "object", +] + [[package]] name = "arc-swap" version = "1.9.2" @@ -313,12 +322,6 @@ version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" -[[package]] -name = "beef" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" - [[package]] name = "bigdecimal" version = "0.4.10" @@ -871,7 +874,7 @@ checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" [[package]] name = "datex" -version = "0.0.11" +version = "0.0.12" dependencies = [ "datex-native", "datex-native-macros", @@ -882,9 +885,7 @@ dependencies = [ [[package]] name = "datex-core" -version = "0.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "881cd35d4c800494480935b3b969aaadacccfd2fff3afede8c5e1d018cf783d0" +version = "0.0.13" dependencies = [ "ariadne", "async-select", @@ -895,10 +896,12 @@ dependencies = [ "binrw", "bytes", "cfg-if", + "chrono", "datex-crypto-facade", "datex-crypto-native", "datex-macros-internal", "dotenvy", + "fnv64-rs", "foldhash 0.2.0", "futures", "futures-core", @@ -921,6 +924,7 @@ dependencies = [ "pretty", "realhydroper-lsp", "ringmap", + "seq-macro", "serde", "serde-big-array", "serde-val", @@ -928,19 +932,19 @@ dependencies = [ "serde_repr", "serde_with", "spin", + "stacker", "strum 0.27.2", "strum_macros 0.27.2", "syntect", "thiserror 2.0.18", "tokio", + "twox-hash", "url", ] [[package]] name = "datex-crypto-facade" version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4139e03ec405b07919a6eea76461459f86bef9972502998c67d4326550444e4" dependencies = [ "bs58", ] @@ -948,8 +952,6 @@ dependencies = [ [[package]] name = "datex-crypto-native" version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6712d9a9a6473522ee6cbe3116b945c0cfd7b7b718dcb97a6a316c1c791c9b" dependencies = [ "datex-crypto-facade", "openssl", @@ -960,8 +962,6 @@ dependencies = [ [[package]] name = "datex-macro-utils" version = "0.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7577e48f1ae2a3f6f322542006bfffa2c26a619407a07a3de6bf9d940a886702" dependencies = [ "datex-core", "proc-macro2", @@ -972,8 +972,6 @@ dependencies = [ [[package]] name = "datex-macros-internal" version = "0.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af9a6c6d89345ed94485fa403766e1fa26337c66938f33daa56dbba1f6bc1eb" dependencies = [ "pathdiff", "proc-macro-crate", @@ -984,7 +982,7 @@ dependencies = [ [[package]] name = "datex-native" -version = "0.0.11" +version = "0.0.12" dependencies = [ "async_tiny", "bytes", @@ -1017,7 +1015,7 @@ dependencies = [ [[package]] name = "datex_cli" -version = "0.0.11" +version = "0.0.12" dependencies = [ "clap", "colored", @@ -1307,6 +1305,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "fnv64-rs" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cc850b3c085261b3d9436bfea82ff6339750590e8edc815fb5c5ef8b801cb24" + [[package]] name = "foldhash" version = "0.1.5" @@ -2087,34 +2091,32 @@ dependencies = [ [[package]] name = "logos" -version = "0.15.1" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff472f899b4ec2d99161c51f60ff7075eeb3097069a36050d8037a6325eb8154" +checksum = "eb2c55a318a87600ea870ff8c2012148b44bf18b74fad48d0f835c38c7d07c5f" dependencies = [ "logos-derive", ] [[package]] name = "logos-codegen" -version = "0.15.1" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "192a3a2b90b0c05b27a0b2c43eecdb7c415e29243acc3f89cc8247a5b693045c" +checksum = "58b3ffaa284e1350d017a57d04ada118c4583cf260c8fb01e0fe28a2e9cf8970" dependencies = [ - "beef", "fnv", - "lazy_static", "proc-macro2", "quote", + "regex-automata", "regex-syntax", - "rustc_version", "syn 2.0.118", ] [[package]] name = "logos-derive" -version = "0.15.1" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "605d9697bcd5ef3a42d38efc51541aa3d6a4a25f7ab6d1ed0da5ac632a26b470" +checksum = "52d3a9855747c17eaf4383823f135220716ab49bea5fbea7dd42cc9a92f8aa31" dependencies = [ "logos-codegen", ] @@ -2348,9 +2350,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +checksum = "c863e9ab5e7bf9c99ba75e1050f1e4d624ae87ed3532d6238ffbdc7b585dbbe6" dependencies = [ "num-integer", "num-traits", @@ -2434,6 +2436,15 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "object" +version = "0.39.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e5a6c098c7a3b6547378093f5cc30bc54fd361ce711e05293a5cc589562739b" +dependencies = [ + "memchr", +] + [[package]] name = "oid-registry" version = "0.7.1" @@ -2751,6 +2762,16 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "psm" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd034599e63b970727f70d79e02d62390a4a84f7c6b827c27c46d5ac3fa622" +dependencies = [ + "ar_archive_writer", + "cc", +] + [[package]] name = "ptr_meta" version = "0.3.1" @@ -3014,9 +3035,9 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rend" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cadadef317c2f20755a64d7fdc48f9e7178ee6b0e1f7fce33fa60f1d68a276e6" +checksum = "663ba70707f96e871406fe10d68128412e619b06d1d47cb91c3a4c6501176240" dependencies = [ "bytecheck", ] @@ -3363,6 +3384,12 @@ version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +[[package]] +name = "seq-macro" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc" + [[package]] name = "serde" version = "1.0.228" @@ -3385,8 +3412,7 @@ dependencies = [ [[package]] name = "serde-val" version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8075daef7fd08d39b83bf3606feab616391269df779fae7172f5558b3b220d10" +source = "git+https://github.com/unyt-org/serde-value#b774c8c4316b1e5b87a5d766df6c4c8b7b6511b0" dependencies = [ "ordered-float", "serde", @@ -3643,6 +3669,19 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" +[[package]] +name = "stacker" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707f49d46706bacf8a2b00d51dace3f9de527c13eec3778f570c411f89e69967" +dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "windows-sys 0.61.2", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -4206,6 +4245,12 @@ dependencies = [ "webrtc-util", ] +[[package]] +name = "twox-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8464ec13c3691491391d9fce00f6416c9a48e46972f72d7865688be2080192c9" + [[package]] name = "typed-arena" version = "2.0.2" diff --git a/crates/datex-cli/Cargo.toml b/crates/datex-cli/Cargo.toml index 1cd6a9e..e3b5876 100644 --- a/crates/datex-cli/Cargo.toml +++ b/crates/datex-cli/Cargo.toml @@ -7,7 +7,7 @@ authors = [ ] license-file = "../../LICENSE" -version = "0.0.11" +version = "0.0.12" edition = "2024" build = "build.rs" @@ -16,7 +16,7 @@ crate-type = ["cdylib", "rlib"] [dependencies] clap = { version = "4.0.23", features = ["derive"] } -datex-core = { version = "0.0.12", default-features = false, features = [ +datex-core = { version = "0.0.13", default-features = false, features = [ "target_native", "decompiler", "syntax_highlighting_legacy", @@ -24,7 +24,7 @@ datex-core = { version = "0.0.12", default-features = false, features = [ "lsp_tokio", "allow_unsigned_blocks", ] } -datex-native = { path = "../datex-native", version = "0.0.11" } +datex-native = { path = "../datex-native", version = "0.0.12" } tokio = { version = "1.17.0", features = ["full"] } serde = { version = "1.0", features = ["derive"] } diff --git a/crates/datex-cli/src/utils/config.rs b/crates/datex-cli/src/utils/config.rs index 5f71edb..4f558d3 100644 --- a/crates/datex-cli/src/utils/config.rs +++ b/crates/datex-cli/src/utils/config.rs @@ -88,7 +88,7 @@ pub fn create_new_config_file( let mut config_path = base_path.clone(); config_path.push(".datex"); config_path.push(format!("{endpoint}.dx")); - let config = config.to_value_container(); + let config = config.to_value_container_without_cache(); let datex_script = decompile_value( &config, DecompileOptions { diff --git a/crates/datex-native-macros/src/lib.rs b/crates/datex-native-macros/src/lib.rs index 99bf553..ac3d3f0 100644 --- a/crates/datex-native-macros/src/lib.rs +++ b/crates/datex-native-macros/src/lib.rs @@ -16,7 +16,7 @@ pub fn main(attr: TokenStream, item: TokenStream) -> TokenStream { func: original_function, datex_core_namespace: "datex::core", setup: None, - init: Some(quote! { + init_scoped: Some(quote! { datex::flexi_logger::Logger::try_with_env_or_str("warn") .unwrap_or_else(|_e| datex::flexi_logger::Logger::with(datex::flexi_logger::LogSpecification::warn())) .log_to_stderr() @@ -24,6 +24,7 @@ pub fn main(attr: TokenStream, item: TokenStream) -> TokenStream { .ok(); datex::com_interfaces::register_native_interface_factories(&runtime.com_hub()); }), + init_unscoped: None, pre_body: None, additional_attributes: vec![parse_quote! {#[tokio::main]}], custom_main_inputs: vec![], diff --git a/crates/datex-native/Cargo.toml b/crates/datex-native/Cargo.toml index 9e920e4..5628340 100644 --- a/crates/datex-native/Cargo.toml +++ b/crates/datex-native/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "datex-native" -version = "0.0.11" +version = "0.0.12" description = "DATEX Native Extensions" authors = [ "Benedikt Strehle ", @@ -14,7 +14,7 @@ license-file = "../../LICENSE" crate-type = ["cdylib", "rlib"] [dependencies] -datex-core = { version = "0.0.12", default-features = false, features = [ +datex-core = { version = "0.0.13", default-features = false, features = [ "target_native", "decompiler", "syntax_highlighting_legacy", diff --git a/crates/datex-native/src/com_interfaces/http/http_client.rs b/crates/datex-native/src/com_interfaces/http/http_client.rs index d6192e4..57731ad 100644 --- a/crates/datex-native/src/com_interfaces/http/http_client.rs +++ b/crates/datex-native/src/com_interfaces/http/http_client.rs @@ -23,6 +23,7 @@ use datex_core::{ }; #[derive(Datex)] +#[datex(structural_recursive)] pub struct HTTPClientInterfaceSetupDataNative(pub HTTPClientInterfaceSetupData); impl Deref for HTTPClientInterfaceSetupDataNative { type Target = HTTPClientInterfaceSetupData; diff --git a/crates/datex-native/src/com_interfaces/http/http_server.rs b/crates/datex-native/src/com_interfaces/http/http_server.rs index 69d4e72..e37a662 100644 --- a/crates/datex-native/src/com_interfaces/http/http_server.rs +++ b/crates/datex-native/src/com_interfaces/http/http_server.rs @@ -22,6 +22,7 @@ use datex_core::{ }; #[derive(Datex)] +#[datex(structural_recursive)] pub struct HTTPServerInterfaceSetupDataNative(pub HTTPServerInterfaceSetupData); impl Deref for HTTPServerInterfaceSetupDataNative { type Target = HTTPServerInterfaceSetupData; diff --git a/crates/datex-native/src/com_interfaces/serial/serial_client.rs b/crates/datex-native/src/com_interfaces/serial/serial_client.rs index 6aa8edd..276b06e 100644 --- a/crates/datex-native/src/com_interfaces/serial/serial_client.rs +++ b/crates/datex-native/src/com_interfaces/serial/serial_client.rs @@ -29,6 +29,7 @@ use std::{ use tokio::task::spawn_blocking; #[derive(Datex)] +#[datex(structural_recursive)] pub struct SerialClientInterfaceSetupDataNative( pub SerialClientInterfaceSetupData, ); diff --git a/crates/datex-native/src/com_interfaces/tcp/tcp_client.rs b/crates/datex-native/src/com_interfaces/tcp/tcp_client.rs index f638446..ed2cd88 100644 --- a/crates/datex-native/src/com_interfaces/tcp/tcp_client.rs +++ b/crates/datex-native/src/com_interfaces/tcp/tcp_client.rs @@ -24,6 +24,7 @@ use tokio::{ }; #[derive(Datex)] +#[datex(structural_recursive)] pub struct TCPClientInterfaceSetupDataNative(pub TCPClientInterfaceSetupData); impl Deref for TCPClientInterfaceSetupDataNative { type Target = TCPClientInterfaceSetupData; diff --git a/crates/datex-native/src/com_interfaces/tcp/tcp_server.rs b/crates/datex-native/src/com_interfaces/tcp/tcp_server.rs index 8af848b..8f583b3 100644 --- a/crates/datex-native/src/com_interfaces/tcp/tcp_server.rs +++ b/crates/datex-native/src/com_interfaces/tcp/tcp_server.rs @@ -29,6 +29,7 @@ use tokio::{ }; #[derive(Datex)] +#[datex(structural_recursive)] pub struct TCPServerInterfaceSetupDataNative(pub TCPServerInterfaceSetupData); impl Deref for TCPServerInterfaceSetupDataNative { diff --git a/crates/datex-native/src/com_interfaces/webrtc/mod.rs b/crates/datex-native/src/com_interfaces/webrtc/mod.rs index 5109fae..abb5e5a 100644 --- a/crates/datex-native/src/com_interfaces/webrtc/mod.rs +++ b/crates/datex-native/src/com_interfaces/webrtc/mod.rs @@ -32,6 +32,7 @@ use webrtc::{ }; #[derive(Datex)] +#[datex(structural_recursive)] pub struct WebRTCInterfaceSetupDataNative { pub setup: WebRTCInterfaceSetupData, #[datex(skip)] diff --git a/crates/datex-native/src/com_interfaces/websocket/websocket_client.rs b/crates/datex-native/src/com_interfaces/websocket/websocket_client.rs index 3e72942..cac88b9 100644 --- a/crates/datex-native/src/com_interfaces/websocket/websocket_client.rs +++ b/crates/datex-native/src/com_interfaces/websocket/websocket_client.rs @@ -34,6 +34,7 @@ use datex_core::{ use tokio_tungstenite::{MaybeTlsStream, WebSocketStream}; #[derive(Datex)] +#[datex(structural_recursive)] pub struct WebSocketClientInterfaceSetupDataNative( pub WebSocketClientInterfaceSetupData, ); diff --git a/crates/datex-native/src/com_interfaces/websocket/websocket_server.rs b/crates/datex-native/src/com_interfaces/websocket/websocket_server.rs index 3142e60..16c6b24 100644 --- a/crates/datex-native/src/com_interfaces/websocket/websocket_server.rs +++ b/crates/datex-native/src/com_interfaces/websocket/websocket_server.rs @@ -29,6 +29,7 @@ use tokio_tungstenite::{WebSocketStream, accept_async}; use tungstenite::Message; #[derive(Datex)] +#[datex(structural_recursive)] pub struct WebSocketServerInterfaceSetupDataNative( pub WebSocketServerInterfaceSetupData, ); diff --git a/crates/datex/Cargo.toml b/crates/datex/Cargo.toml index 5547abc..723d856 100644 --- a/crates/datex/Cargo.toml +++ b/crates/datex/Cargo.toml @@ -6,7 +6,7 @@ authors = [ "Jonas Strehle ", ] license-file = "../../LICENSE" -version = "0.0.11" +version = "0.0.12" edition = "2024" @@ -18,9 +18,9 @@ name = "datex" path = "./src/main.rs" [dependencies] -datex-native = { path = "../datex-native", version = "0.0.11" } +datex-native = { path = "../datex-native", version = "0.0.12" } datex-native-macros = { path = "../datex-native-macros", version = "0.0.3" } -datex_cli = { path = "../datex-cli", version = "0.0.11" } +datex_cli = { path = "../datex-cli", version = "0.0.12" } tokio = { version = "1.17.0", features = ["full"] } diff --git a/example-config-client.dx b/example-config-client.dx index 2c702f9..a9ccfbc 100644 --- a/example-config-client.dx +++ b/example-config-client.dx @@ -4,7 +4,7 @@ { type: "websocket-client", config: { - url: "ws://0.0.0.0:8042" + url: "ws://0.0.0.0:8043" }, priority: #None } diff --git a/example-config-server.dx b/example-config-server.dx index 2b14011..801d964 100644 --- a/example-config-server.dx +++ b/example-config-server.dx @@ -1,20 +1,12 @@ { endpoint: @server, interfaces: [ - { - type: "tcp-server", - config: { - host: "0.0.0.0", - port: 8042u16 - }, - priority: #None - }, { type: "websocket-server", config: { bind_address: "0.0.0.0:8043" }, - priority: #None + priority: #Priority(1u16) } ] } \ No newline at end of file