9# panic = "unwind" (the default) is load-bearing: the runtime's catch_unwind
10# recovery sites (HTTP worker 500 responses, race-loser cancellation, atomic
11# rollback on handler panic) depend on it. Unwinding across the FFI boundary
12# into Cranelift-generated code is sound because (a) every runtime function
13# callable from generated code is `extern "C-unwind"`, and (b) the compiler
14# emits .eh_frame unwind info for every generated function (knot-compiler's
15# unwind.rs), so the system unwinder can walk those frames.
17[workspace.dependencies]
19knot = { path = "crates/knot" }
20knot-descriptor = { path = "crates/knot-descriptor" }
21knot-compiler = { path = "crates/knot-compiler" }
22knot-runtime = { path = "crates/knot-runtime" }
23knot-jit = { path = "crates/knot-jit" }
24knot-compile-rt = { path = "crates/knot-compile-rt" }
25cranelift-codegen = "0.131"
26cranelift-frontend = "0.131"
27cranelift-module = "0.131"
28cranelift-object = "0.131"
29cranelift-jit = "0.131"
30cranelift-native = "0.131"
31target-lexicon = "0.13"
32rusqlite = { version = "0.39", features = ["bundled", "collation"] }
38# Strip DEBUG INFO (not symbols) from release binaries, incl. the released
39# `knot` compiler. Debug info is the dominant size cost and is useless in a
40# shipped compiler. Symbols are KEPT so panic backtraces stay readable — the
41# runtime recovers from panics via catch_unwind (see the panic=unwind note
42# above), and a stripped-of-symbols compiler would make those backtraces
43# opaque. This is independent of the `-s` the linker adds to PRODUCED knot
44# binaries (those need --export-dynamic/.dynsym for JIT; this is the compiler).
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list