nandi/jolt-nativepublic Fork 0
c41903b106d04e5cf80828c49e2d7d456a54739d
Commits
Clone
git clone https://git.rickub.com/nandi/jolt-native.git
git clone ssh://git@rickub.com/nandi/jolt-native.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Paint the same tree into a terminal, for the machines with no window a7f6202 · on c41903b106d04e5cf80828c49e2d7d456a54739d · nandi · 17d ago
Cargo.toml · 82 lines · 4.2 KBTOML Blame HistoryRaw
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# One repo, one crate per shared object.
#
# Every crate here builds a `.so` that a jolt library binds through
# `jolt.ffi/defcfn`, plus `jolt-abi`, which is the rules they all keep at the
# edge rather than a library anyone loads.
#
# Deliberately NOT one cdylib with cargo features selecting the parts. Features
# are additive within a library, so `graphics` + `moq` would mean one object
# carrying egui *and* QUIC, Opus, H.264 and the camera stacks — a chat client
# that is not in a call would link the whole media plane to open a window. The
# feature unification that comes with it has bitten this code before: enabling
# eframe's wayland/x11 features for the desktop build pulled them into the
# Android one and made the activity exit on launch.
#
# A workspace gives the parts of a monorepo worth having — one CI, one release,
# shared conventions in `jolt-abi` — while each consumer still links only what
# it asked for. jolt's `:jolt/native` is a vector; naming two objects there is
# no harder than naming one.
[workspace]
resolver = "2"
members = [
    "crates/jolt-abi",
    "crates/jolt-moq",
    "crates/jolt-tui",
    "crates/jolt-vidya",
    "crates/vidya-core",
]
# The third-party tree is reindeer's, not this workspace's: it carries its own
# lockfile and the vendored cpal that patches the floating one. Without
# excluding it, `cargo test --workspace` builds cpal's own default feature set
# — which reaches for the Windows ASIO SDK and fails on Linux.
exclude = ["third-party/rust"]

[workspace.package]
version = "0.1.0"
edition = "2021"
license = "MIT"
repository = "https://gitlab.com/nandithebull/jolt-native"

# vidya-ffi set opt-level 2 when it was its own workspace: the tree walk and
# the texture uploads are hot every frame, and a debug build of them is not
# worth looking at. A member cannot set this, so it is set here.
[profile.release]
opt-level = 2
# The same pair the buck2 cdylib sets in crates/jolt-vidya/BUCK, so the two
# builds of libvidya agree on more than opt-level. 1.5M off the desktop object;
# opt-level 3 was measured alongside and is larger, so it stays at 2.
lto = "fat"
codegen-units = 1

[workspace.dependencies]
jolt-abi = { path = "crates/jolt-abi" }
log = "0.4"

# iroh-live wants an unreleased iroh 0.97 — the released one has no
# `tls-aws-lc-rs` feature and resolution fails outright without these. The revs
# are the ones freeq locks in its own workspace; they travel together and are
# not independently bumpable.
[patch.crates-io]
iroh = { git = "https://github.com/n0-computer/iroh", rev = "8af8370b" }
iroh-base = { git = "https://github.com/n0-computer/iroh", rev = "8af8370b" }
iroh-relay = { git = "https://github.com/n0-computer/iroh", rev = "8af8370b" }
iroh-gossip = { git = "https://github.com/n0-computer/iroh-gossip", rev = "1038f721" }
# noq's main tip is 1.1.0, which breaks iroh 0.97 — pin the rev freeq pins.
noq = { git = "https://github.com/n0-computer/noq", rev = "ab042ea7e3f7bae1e43eaba2ac9dba47ddb52e69" }
noq-proto = { git = "https://github.com/n0-computer/noq", rev = "ab042ea7e3f7bae1e43eaba2ac9dba47ddb52e69" }
noq-udp = { git = "https://github.com/n0-computer/noq", rev = "ab042ea7e3f7bae1e43eaba2ac9dba47ddb52e69" }
web-transport-iroh = { git = "https://github.com/Frando/web-transport", rev = "f7a523f1" }
web-transport-noq = { git = "https://github.com/Frando/web-transport", rev = "f7a523f1" }
web-transport-proto = { git = "https://github.com/Frando/web-transport", rev = "f7a523f1" }
web-transport-trait = { git = "https://github.com/Frando/web-transport", rev = "f7a523f1" }

# moq-media (inside iroh-live) asks for cpal on `branch = "master"`, which
# floats — and master has since removed `StreamError` and `DeviceTrait::name()`
# in favour of a unified error API, which does not compile against the
# iroh-live rev pinned below. Pin the last commit that does. sleek vendors this
# same commit into its tree; a pinned rev says the same thing without carrying
# Cargo will not let a patch retarget the same source it replaces, so this has
# to be a vendored path rather than a pinned rev of the same URL. Drop the
# vendor and this patch when iroh-live moves to the new cpal API.
[patch."https://github.com/RustAudio/cpal.git"]
cpal = { path = "third-party/rust/cpal" }