mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 16:42:05 +00:00
1107988a82
LTO in Rust produces multiple definition of `rust_eh_personality' (and few others), and to overcome this --allow-multiple-definition has been added. Query for benchmark: SELECT ignore(BLAKE3(materialize('Lorem ipsum dolor sit amet, consectetur adipiscing elit'))) FROM numbers(1000000000) FORMAT `Null` upstream : Elapsed: 2.494 sec. Processed 31.13 million rows, 249.08 MB (12.48 million rows/s., 99.86 MB/s.) upstream + rust lto: Elapsed: 13.56 sec. Processed 191.9 million rows, 1.5400 GB (14.15 million rows/s., 113.22 MB/s.) llvm BLAKE3 : Elapsed: 3.053 sec. Processed 43.24 million rows, 345.88 MB (14.16 million rows/s., 113.28 MB/s.) Note, I thought about simply replacing it with BLAKE3 from LLVM, but: - this will not solve LTO issues for Rust (and in future more libraries could be added) - it makes integrating_rust_libraries.md useless (and there is even blog post) So instead I've decided to add this quirk (--allow-multiple-definition) to fix builds. Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
26 lines
460 B
TOML
26 lines
460 B
TOML
[package]
|
|
name = "_ch_rust_skim_rust"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[dependencies]
|
|
skim = "0.10.2"
|
|
cxx = "1.0.83"
|
|
term = "0.7.0"
|
|
|
|
[build-dependencies]
|
|
cxx-build = "1.0.83"
|
|
|
|
[lib]
|
|
crate-type = ["staticlib"]
|
|
|
|
[profile.release]
|
|
debug = true
|
|
|
|
[profile.release-thinlto]
|
|
inherits = "release"
|
|
# We use LTO here as well to slightly decrease binary size
|
|
lto = true
|