-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
65 lines (57 loc) · 2.67 KB
/
Copy pathCargo.toml
File metadata and controls
65 lines (57 loc) · 2.67 KB
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
[package]
name = "blitzgen"
version = "0.1.0"
edition = "2024"
description = "An optimizing x86-64 compiler backend: e-graph IR with equality saturation for instruction selection, a DAG scheduler, and a graph-coloring register allocator"
repository = "https://github.com/edg-l/blitz"
license = "MIT OR Apache-2.0"
readme = "README.md"
# Both slugs are crates.io's own; a category it does not know is a publish
# error, unlike a keyword. No `development-tools::*` subcategory fits a backend
# better than `compilers` does.
categories = ["compilers", "development-tools"]
# Five is the cap. `backend` is dropped on purpose: its 343 crates are mostly
# web and storage backends, so it is noise rather than reach. `x86-64` (29
# crates) and `egraph` (4) are the two that actually name what this is, and
# `elf` is a capability someone searches for on its own.
keywords = ["compiler", "codegen", "x86-64", "egraph", "elf"]
# Let-chains, which edition 2024 stabilized in 1.88. Bisected against the
# toolchain, not assumed: 1.87 fails with E0658 and 1.88 builds.
rust-version = "1.88"
# The test corpora and the internal design notes are the repository's, not the
# crate's: 459 files and 2.5MiB of lit programs, generated-program baselines and
# saved fuzz findings, none of which a consumer builds against. `logo.svg` and
# `ROADMAP.md` stay, because README.md embeds one and links the other.
exclude = [
"tests/",
"docs/",
]
[dependencies]
smallvec = "1"
tracing = "0.1"
tracing-subscriber = "0.3"
[dev-dependencies]
blitztest = { path = "crates/blitztest" }
[workspace]
members = ["crates/tinyc", "crates/blitztest"]
# Optimized, with the assertions kept. What every test harness runs.
#
# A debug blitz is ~10x slower than an optimized one -- 25.4s against 2.6s
# compiling the 4990-line `args` seed 29 -- and the harnesses compile thousands of
# generated programs, so debug made a sweep cost an hour instead of minutes. But
# `debug_assertions` are not optional here either: several invariants of this
# backend are checked only by them, `ClassVRegMap`'s segment nesting among them,
# and a release harness would silently stop checking those.
#
# No LTO and default codegen units, deliberately: this profile is rebuilt on every
# edit, so link time is the cost that matters, not the last few percent of
# throughput. Line tables rather than full debug info, for the same reason -- they
# are what makes a panic backtrace and a `gdb` stop name a file and line, and
# inspecting blitz's own locals in a debugger is not how anything here gets
# debugged (`BLITZ_DEBUG` and the frame readers are).
[profile.checked]
inherits = "release"
debug-assertions = true
overflow-checks = true
lto = false
debug = "line-tables-only"