[package] name = "iris" version.workspace = true edition.workspace = true # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] iris-core = { workspace = true } iris-macro = { workspace = true } parley = { workspace = true } swash = { workspace = true } pollster = { workspace = true } wgpu = { workspace = true } image = { workspace = true } tokio = { workspace = true, features = ["sync", "rt", "rt-multi-thread"] } # winit everywhere except Android; android-view (below) is what stands in # for it there. Both backends live in this crate (see `src/android/mod.rs`'s # doc comment) but are never compiled together: winit's own Android support # pulls in `android-activity`, which panics at compile time unless one of # its own backend features is picked, and picking one is exactly what # `iris-core` was kept free of (RUST.md's I0b). Confirmed by trying it # 2026-09-05: `cargo ndk -t x86_64 -P 26 build -p iris` failed inside # `android-activity` itself with "Either game-activity or native-activity # must be enabled" before this split existed. [target.'cfg(not(target_os = "android"))'.dependencies] winit = { workspace = true } arboard = { workspace = true, features = ["wayland-data-control"] } # Pinned to the exact commit RUST.md's E1 (2026-09-04) measured on this # emulator -- real Vulkan rendering, a working `InputConnection`, and the # accesskit-detach abort, all against this rev specifically. Advancing it # wants re-running E1's checks, the same reason the nightly toolchain pin # is dated rather than floating. [target.'cfg(target_os = "android")'.dependencies] android-view = { git = "https://github.com/rust-mobile/android-view.git", rev = "bec6c62a96cef8239b0fd7fedeef9b184d02e3a1" } # Not re-exported by android-view (only `jni` and `ndk` are), and needed # for `android/insets.rs`'s own id -> state map -- the same reason # android-view's own `PEER_MAP` carries one. send_wrapper = "0.6.0" # For diagnostics visible through android_logger, wherever the app crate # installs it -- this crate never installs a logger itself. log = "0.4.28" [dev-dependencies] tokio = { workspace = true, features = ["sync", "rt", "rt-multi-thread", "time"] } # The tabs example's widget tree. A dev-dependency cycle back to this # package is fine -- cargo excludes dev-dependencies from the graph used # to build the library itself, so this only matters for `--examples`. tabs-ui = { path = "tabs-ui" } # Plain Instant-timed binaries, not criterion -- see benches/message_list.rs's # header for why. `harness = false` opts out of the unstable `#[bench]` # test-crate harness cargo would otherwise want, in favour of an ordinary # `fn main()`. [[bench]] name = "message_list" harness = false [workspace] members = ["core", "macro", "tabs-ui"] # android-app pulls in android-view, which needs the NDK sysroot to link # -- excluded so `cargo build --workspace --all-targets` on the host stays # buildable. Cross-compile it from its own directory (its own single-crate # workspace, since it has no `[workspace]` table of its own and this # exclusion stops it inheriting this one): `cd android-app && cargo ndk # -t x86_64 -P 26 build`. exclude = ["android-app"] [workspace.package] version = "0.1.0" edition = "2024" [workspace.dependencies] pollster = "0.4.0" winit = "0.30.12" wgpu = "28.0.0" bytemuck = "1.23.1" image = "0.25.6" parley = "0.11.1" swash = "0.2.10" fxhash = "0.2.1" arboard = "3.6.1" iris-core = { path = "core" } iris-macro = { path = "macro" } tokio = "1.49.0"