[package]
edition = "2024"
rust-version = "1.87"
name = "kael"
version = "0.2.0"
authors = ["Augustus Otu"]
build = "build.rs"
exclude = [
"benches/",
"examples/",
]
publish = true
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "GPU-accelerated native UI framework for Rust — build desktop apps with Metal, DirectX, and Vulkan rendering"
homepage = "https://augani.github.io/kael/"
readme = "README.md"
keywords = [
"gui",
"desktop",
"gpu",
"ui-framework",
"native",
]
categories = [
"gui",
"rendering::graphics-api",
]
license = "Apache-2.0"
repository = "https://github.com/Augani/kael"
resolver = "2"
[features]
audio = ["dep:kael_audio"]
default = [
"font-kit",
"wayland",
"x11",
"windows-manifest",
]
diagnostics = ["dep:kael_diagnostics"]
document = ["dep:kael_document"]
icons = ["dep:kael_icons"]
inspector = ["kael_macros/inspector"]
leak-detection = ["backtrace"]
macos-blade = [
"blade-graphics",
"blade-macros",
"blade-util",
"bytemuck",
"objc2-metal",
]
media = ["kael_media"]
notifications-full = ["dep:kael_notifications"]
pdf = ["dep:kael_pdf"]
platform-foundation = [
"storage",
"icons",
"diagnostics",
]
runtime_shaders = []
screen-capture = ["scap"]
share = ["dep:kael_share"]
storage = ["dep:kael_storage"]
test-support = [
"leak-detection",
"collections/test-support",
"rand",
"util/test-support",
"http_client/test-support",
"wayland",
"x11",
]
wayland = [
"blade-graphics",
"blade-macros",
"blade-util",
"bytemuck",
"ashpd/wayland",
"cosmic-text",
"font-kit",
"calloop-wayland-source",
"wayland-backend",
"wayland-client",
"wayland-cursor",
"wayland-protocols",
"wayland-protocols-plasma",
"filedescriptor",
"xkbcommon",
"open",
]
windows-manifest = []
x11 = [
"blade-graphics",
"blade-macros",
"blade-util",
"bytemuck",
"ashpd",
"cosmic-text",
"font-kit",
"as-raw-xcb-connection",
"x11rb",
"xkbcommon",
"xim",
"x11-clipboard",
"filedescriptor",
"open",
"scap?/x11",
]
[lib]
name = "kael"
path = "src/kael.rs"
doctest = false
[[bin]]
name = "kael-extension-child"
path = "tests/fixtures/extension_child.rs"
[[bin]]
name = "kael-worker-child"
path = "tests/fixtures/worker_child.rs"
[[test]]
name = "action_macros"
path = "tests/action_macros.rs"
[[test]]
name = "extension_process"
path = "tests/extension_process.rs"
[[test]]
name = "worker_process"
path = "tests/worker_process.rs"
[dependencies.accesskit]
version = "0.17"
[dependencies.anyhow]
version = "1.0.86"
[dependencies.async-task]
version = "4.7"
[dependencies.backtrace]
version = "0.3"
optional = true
[dependencies.base64]
version = "0.22"
[dependencies.bitflags]
version = "2"
[dependencies.blade-graphics]
version = "0.8"
optional = true
[dependencies.blade-macros]
version = "0.3.0"
optional = true
[dependencies.blade-util]
version = "0.4"
optional = true
[dependencies.bytemuck]
version = "1"
optional = true
[dependencies.collections]
version = "0.2.0"
package = "kael_collections"
[dependencies.ctor]
version = "1"
[dependencies.derive_more]
version = "2"
features = ["full"]
[dependencies.ed25519-dalek]
version = "2"
[dependencies.etagere]
version = "0.2"
[dependencies.futures]
version = "0.3"
[dependencies.hex]
version = "0.4"
[dependencies.http_client]
version = "0.2.0"
package = "kael_http_client"
[dependencies.image]
version = "0.25.1"
[dependencies.inventory]
version = "0.3.19"
[dependencies.itertools]
version = "0.14.0"
[dependencies.kael_audio]
version = "0.2.0"
optional = true
package = "kael_audio"
[dependencies.kael_diagnostics]
version = "0.2.0"
optional = true
package = "kael_diagnostics"
[dependencies.kael_document]
version = "0.2.0"
optional = true
package = "kael_document"
[dependencies.kael_gpu_budget]
version = "0.2.0"
package = "kael_gpu_budget"
[dependencies.kael_icons]
version = "0.2.0"
optional = true
package = "kael_icons"
[dependencies.kael_macros]
version = "0.2.0"
package = "kael-macros"
[dependencies.kael_media]
version = "0.2.0"
optional = true
package = "kael-media"
[dependencies.kael_notifications]
version = "0.2.0"
optional = true
package = "kael_notifications"
[dependencies.kael_pdf]
version = "0.2.0"
optional = true
package = "kael_pdf"
[dependencies.kael_release]
version = "0.2.0"
package = "kael_release"
[dependencies.kael_share]
version = "0.2.0"
optional = true
package = "kael_share"
[dependencies.kael_storage]
version = "0.2.0"
optional = true
package = "kael_storage"
[dependencies.libc]
version = "0.2"
[dependencies.log]
version = "0.4.16"
features = [
"kv_unstable_serde",
"serde",
]
[dependencies.lyon]
version = "1.0"
[dependencies.notify]
version = "8.2.0"
[dependencies.num_cpus]
version = "1.13"
[dependencies.parking]
version = "2.0.0"
[dependencies.parking_lot]
version = "0.12.1"
[dependencies.pin-project-lite]
version = "0.2"
[dependencies.postage]
version = "0.5"
features = ["futures-traits"]
[dependencies.profiling]
version = "1"
[dependencies.rand]
version = "0.9"
optional = true
[dependencies.rasterlottie]
version = "0.2.1"
features = [
"dotlottie",
"images",
"text",
]
default-features = false
[dependencies.raw-window-handle]
version = "0.6"
[dependencies.refineable]
version = "0.2.0"
package = "kael_refineable"
[dependencies.resvg]
version = "0.45.0"
features = [
"text",
"system-fonts",
"memmap-fonts",
]
default-features = false
[dependencies.schemars]
version = "1.0"
features = [
"indexmap2",
"smallvec1",
]
[dependencies.seahash]
version = "4.1"
[dependencies.semantic_version]
version = "0.2.0"
package = "kael_semantic_version"
[dependencies.serde]
version = "1.0.221"
features = [
"derive",
"rc",
]
[dependencies.serde_json]
version = "1.0.144"
features = [
"preserve_order",
"raw_value",
]
[dependencies.sha2]
version = "0.10"
[dependencies.slotmap]
version = "1.0.6"
[dependencies.smallvec]
version = "1.6"
features = [
"union",
"serde",
]
[dependencies.smol]
version = "2.0"
[dependencies.stacksafe]
version = "0.1"
[dependencies.strum]
version = "0.28"
features = ["derive"]
[dependencies.sum_tree]
version = "0.2.0"
package = "kael_sum_tree"
[dependencies.taffy]
version = "=0.9.0"
[dependencies.thiserror]
version = "2.0.12"
[dependencies.time]
version = "0.3"
[dependencies.toml]
version = "1"
[dependencies.unicode-segmentation]
version = "1.10"
[dependencies.usvg]
version = "0.45.0"
default-features = false
[dependencies.util]
version = "0.2.0"
package = "kael_util"
[dependencies.util_macros]
version = "0.2.0"
package = "kael_util_macros"
[dependencies.uuid]
version = "1.1.2"
features = [
"v4",
"v5",
"v7",
"serde",
]
[dependencies.waker-fn]
version = "1.2.0"
[dev-dependencies.backtrace]
version = "0.3"
[dev-dependencies.collections]
version = "0.2.0"
features = ["test-support"]
package = "kael_collections"
[dev-dependencies.env_logger]
version = "0.11"
[dev-dependencies.http_client]
version = "0.2.0"
features = ["test-support"]
package = "kael_http_client"
[dev-dependencies.lyon]
version = "1.0"
features = ["extra"]
[dev-dependencies.pretty_assertions]
version = "1.3.0"
features = ["unstable"]
[dev-dependencies.proptest]
version = "1"
[dev-dependencies.rand]
version = "0.9"
[dev-dependencies.unicode-segmentation]
version = "1.10"
[dev-dependencies.util]
version = "0.2.0"
features = ["test-support"]
package = "kael_util"
[build-dependencies.resvg]
version = "0.45.0"
default-features = false
[build-dependencies.usvg]
version = "0.45.0"
default-features = false
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.as-raw-xcb-connection]
version = "1"
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.ashpd]
version = "0.13"
features = [
"async-io",
"file_chooser",
"open_uri",
"settings",
]
optional = true
default-features = false
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.blade-graphics]
version = "0.8"
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.blade-macros]
version = "0.3.0"
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.blade-util]
version = "0.4"
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.bytemuck]
version = "1"
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.calloop]
version = "0.13.0"
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.calloop-wayland-source]
version = "0.3.0"
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.cosmic-text]
version = "0.19"
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.filedescriptor]
version = "0.8.2"
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.flume]
version = "0.11"
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.font-kit]
version = "0.14.1-zed"
features = ["source-fontconfig-dlopen"]
optional = true
package = "zed-font-kit"
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.gtk]
version = "0.18.2"
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.ksni]
version = "0.2"
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.notify-rust]
version = "4"
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.oo7]
version = "0.5.0"
features = [
"async-std",
"native_crypto",
]
default-features = false
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.open]
version = "5.2.0"
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.wayland-backend]
version = "0.3.3"
features = [
"client_system",
"dlopen",
]
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.wayland-client]
version = "0.31.2"
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.wayland-cursor]
version = "0.31.1"
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.wayland-protocols]
version = "0.31.2"
features = [
"client",
"staging",
"unstable",
]
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.wayland-protocols-plasma]
version = "0.2.0"
features = ["client"]
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.wry]
version = "0.55.1"
features = [
"os-webview",
"x11",
]
default-features = false
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.x11-clipboard]
version = "0.9.3"
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.x11rb]
version = "0.13.1"
features = [
"allow-unsafe-code",
"xkb",
"randr",
"xinput",
"cursor",
"resource_manager",
"screensaver",
"shape",
"sync",
"present",
"dri3",
]
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.xim]
version = "0.4.0-zed"
features = [
"x11rb-xcb",
"x11rb-client",
]
optional = true
package = "zed-xim"
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies.xkbcommon]
version = "0.8.0"
features = [
"wayland",
"x11",
]
optional = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.build-dependencies.naga]
version = "25.0"
features = ["wgsl-in"]
[target.'cfg(any(target_os = "linux", target_os = "freebsd", target_os = "macos"))'.dependencies.pathfinder_geometry]
version = "0.5"
[target.'cfg(any(target_os = "linux", target_os = "freebsd", target_os = "windows"))'.dependencies.scap]
version = "0.0.8-zed"
optional = true
default-features = false
package = "zed-scap"
[target.'cfg(target_os = "macos")'.dependencies.block]
version = "0.1"
[target.'cfg(target_os = "macos")'.dependencies.block2]
version = "0.6"
[target.'cfg(target_os = "macos")'.dependencies.core-foundation]
version = "0.10.0"
[target.'cfg(target_os = "macos")'.dependencies.core-foundation-sys]
version = "0.8.6"
[target.'cfg(target_os = "macos")'.dependencies.core-graphics]
version = "0.24"
[target.'cfg(target_os = "macos")'.dependencies.core-text]
version = "=21.0.0"
[target.'cfg(target_os = "macos")'.dependencies.core-video]
version = "0.4.3"
features = ["metal"]
[target.'cfg(target_os = "macos")'.dependencies.font-kit]
version = "0.14.1-zed"
optional = true
package = "zed-font-kit"
[target.'cfg(target_os = "macos")'.dependencies.foreign-types]
version = "0.5"
[target.'cfg(target_os = "macos")'.dependencies.log]
version = "0.4.16"
features = [
"kv_unstable_serde",
"serde",
]
[target.'cfg(target_os = "macos")'.dependencies.media]
version = "0.2.0"
package = "kael_media_sys"
[target.'cfg(target_os = "macos")'.dependencies.metal]
version = "0.29"
[target.'cfg(target_os = "macos")'.dependencies.objc2]
version = "0.6"
[target.'cfg(target_os = "macos")'.dependencies.objc2-app-kit]
version = "0.3"
[target.'cfg(target_os = "macos")'.dependencies.objc2-foundation]
version = "0.3"
[target.'cfg(target_os = "macos")'.dependencies.objc2-metal]
version = "0.3"
optional = true
[target.'cfg(target_os = "macos")'.build-dependencies.bindgen]
version = "0.71"
[target.'cfg(target_os = "macos")'.build-dependencies.cbindgen]
version = "0.28.0"
default-features = false
[target.'cfg(target_os = "macos")'.build-dependencies.naga]
version = "25.0"
features = ["wgsl-in"]
[target.'cfg(target_os = "windows")'.dependencies.flume]
version = "0.11"
[target.'cfg(target_os = "windows")'.dependencies.rand]
version = "0.9"
[target.'cfg(target_os = "windows")'.dependencies.windows]
version = "0.62"
features = [
"Foundation",
"Foundation_Collections",
"Foundation_Numerics",
"Storage_Search",
"Storage_Streams",
"System_Threading",
"UI_ViewManagement",
"Wdk_System_SystemServices",
"Win32_Globalization",
"Win32_Graphics_Direct3D",
"Win32_Graphics_Direct3D11",
"Win32_Graphics_Direct3D_Fxc",
"Win32_Graphics_DirectComposition",
"Win32_Graphics_DirectWrite",
"Win32_Graphics_Dwm",
"Win32_Graphics_Dxgi",
"Win32_Graphics_Dxgi_Common",
"Win32_Graphics_Gdi",
"Win32_Graphics_Imaging",
"Win32_Graphics_Hlsl",
"Win32_Networking_WinSock",
"Win32_Security",
"Win32_Security_Credentials",
"Win32_Security_Cryptography",
"Win32_Storage_FileSystem",
"Win32_System_Com",
"Win32_System_Com_StructuredStorage",
"Win32_System_Console",
"Win32_System_DataExchange",
"Win32_System_IO",
"Win32_System_LibraryLoader",
"Win32_System_Memory",
"Win32_System_Ole",
"Win32_System_Performance",
"Win32_System_Pipes",
"Win32_System_SystemInformation",
"Win32_System_WindowsProgramming",
"Win32_System_SystemServices",
"Win32_System_Threading",
"Win32_System_Variant",
"Win32_System_WinRT",
"Win32_UI_Controls",
"Win32_UI_HiDpi",
"Win32_UI_Input_Ime",
"Win32_UI_Input_KeyboardAndMouse",
"Win32_UI_Shell",
"Win32_UI_Shell_Common",
"Win32_UI_Shell_PropertiesSystem",
"Win32_UI_WindowsAndMessaging",
"Win32_UI_Accessibility",
"Win32_System_Power",
"Win32_System_ProcessStatus",
"Win32_System_RemoteDesktop",
"Win32_Networking_NetworkListManager",
"Security_Credentials_UI",
"Media_Capture",
"UI_Notifications",
"Data_Xml_Dom",
"Web",
"Web_UI",
"Web_UI_Interop",
]
[target.'cfg(target_os = "windows")'.dependencies.windows-collections]
version = "0.2"
[target.'cfg(target_os = "windows")'.dependencies.windows-core]
version = "0.62"
[target.'cfg(target_os = "windows")'.dependencies.windows-future]
version = "0.3"
[target.'cfg(target_os = "windows")'.dependencies.windows-numerics]
version = "0.3"
[target.'cfg(target_os = "windows")'.dependencies.windows-registry]
version = "0.6"
[target.'cfg(target_os = "windows")'.dependencies.wry]
version = "0.55.1"
features = ["os-webview"]
default-features = false
[target.'cfg(target_os = "windows")'.build-dependencies.embed-resource]
version = "3.0"
[lints.clippy]
dbg_macro = "deny"
declare_interior_mutable_const = "deny"
disallowed_methods = "deny"
large_enum_variant = "allow"
let_underscore_future = "allow"
nonminimal_bool = "allow"
redundant_clone = "deny"
single_range_in_vec_init = "allow"
todo = "deny"
too_many_arguments = "allow"
type_complexity = "allow"
[lints.clippy.style]
level = "allow"
priority = -1
[lints.rust.unexpected_cfgs]
level = "allow"
priority = 0