# The Observatory: the calendar rendered on a GPU, with one observer thread # per logical CPU behind the picture. Not published — it is a binary, and it # goes out attached to a release beside the oracle. [package] name = "loic-gui" version.workspace = true edition = "2024" authors.workspace = true repository.workspace = true license-file.workspace = true description = "A temporal meditation interface for the Loic Calendar" publish = false # What the Observatory stands on. Each dependency is here for one stated # reason, and the reason is stated beside it. [dependencies] # The calendar, at the workspace's one version. Every observer thread and # the main thread's one observation per frame call into it, and nothing on # the screen is derived from anything else. loic.workspace = true # The GPU: surfaces, pipelines, buffers and shaders, through which every # pixel of the Observatory is drawn. wgpu = "30" # The window and its events, Wayland only. `winit`'s `x11` feature would # pull in `libX11`, `x11rb` and their kin as build dependencies, and so it # is not enabled: the Observatory links only against Wayland. X11 is not # where desktop Linux is going, and a project that refuses floating-point in # a timestamp is not going to make its first compromise for a display # server. `wayland-dlopen` loads the Wayland client library at run time # rather than at link time; `wayland-csd-adwaita` draws the window's own # decorations on compositors that decline to draw them; `rwh_06` is the # `raw-window-handle` 0.6 handle wgpu asks for when it makes a surface of # the window. winit = { version = "0.30", default-features = false, features = ["wayland", "wayland-dlopen", "wayland-csd-adwaita", "rwh_06"] } # `block_on` for the two asynchronous requests wgpu insists on — an adapter, # then a device — run to completion on the calling thread, without an async # runtime brought in to wait for two things. pollster = "1" # For `setpriority(2)`: the Observatory asks for nice -11 before it looses # its observers, and threads inherit the value at creation, so one call # before the spawn is one call for all of them. libc = "0.2" # `Pod` and `Zeroable`, derived, for the structures that cross to the GPU as # bare bytes: the derive proves at compile time that a structure has no # padding it would be undefined to read, which is the only kind of proof a # vertex deserves. bytemuck = { version = "1.25", features = ["derive"] } # Audio output, for the quantum hum. Audio synthesis is the one place in the # workspace where floating-point arithmetic is tolerated, on the grounds # that a loudspeaker is an analog device and nothing it renders was ever # exact to begin with. rodio = "0.22" # The binary target, named and placed explicitly rather than inferred. [[bin]] name = "loic-gui" path = "src/main.rs"