Never block a thread on the `PeerManager` event handling lock
[rust-lightning] / Cargo.toml
index 63251c618cdb69352283a847bf68b2acaaee3ca3..afc0092c72da50a1a9fecbf8bfb2edf5daa04104 100644 (file)
@@ -1,38 +1,42 @@
-[package]
-name = "lightning"
-version = "0.0.9"
-authors = ["Matt Corallo"]
-license = "Apache-2.0"
-repository = "https://github.com/rust-bitcoin/rust-lightning/"
-description = """
-A Bitcoin Lightning library in Rust.
-Does most of the hard work, without implying a specific runtime, requiring clients implement basic network logic, chain interactions and disk storage.
-Still missing tons of error-handling. See GitHub issues for suggested projects if you want to contribute. Don't have to bother telling you not to use this for anything serious, because you'd have to build a client around it to even try.
-"""
+[workspace]
 
-[features]
-# Supports tracking channels with a non-bitcoin chain hashes. Currently enables all kinds of fun DoS attacks.
-non_bitcoin_chain_hash_routing = []
-fuzztarget = ["secp256k1/fuzztarget", "bitcoin/fuzztarget", "bitcoin_hashes/fuzztarget"]
-# Unlog messages superior at targeted level.
-max_level_off = []
-max_level_error = []
-max_level_warn = []
-max_level_info = []
-max_level_debug = []
+members = [
+    "lightning",
+    "lightning-block-sync",
+    "lightning-invoice",
+    "lightning-net-tokio",
+    "lightning-persister",
+    "lightning-background-processor",
+    "lightning-rapid-gossip-sync"
+]
 
-[dependencies]
-bitcoin = "0.18"
-bitcoin_hashes = "0.3"
-rand = "0.4"
-secp256k1 = "0.12"
+exclude = [
+    "lightning-custom-message",
+    "lightning-transaction-sync",
+    "no-std-check",
+]
 
-[dev-dependencies.bitcoin]
-version = "0.18"
-features = ["bitcoinconsensus"]
-
-[dev-dependencies]
-hex = "0.3"
+# Our tests do actual crypto and lots of work, the tradeoff for -O2 is well
+# worth it. Note that we only apply optimizations to dependencies, not workspace
+# crates themselves.
+# https://doc.rust-lang.org/cargo/reference/profiles.html#profile-selection
+[profile.dev.package."*"]
+opt-level = 2
 
+# It appears some minimal optimizations are required to inline many std methods
+# and reduce the otherwise-substantial time spent in std self-checks. We do so
+# here but ensure we keep LTO disabled as otherwise we're re-optimizing all our
+# dependencies every time we make any local changes.
 [profile.dev]
 opt-level = 1
+lto = "off"
+
+[profile.release]
+opt-level = 3
+lto = true
+panic = "abort"
+
+[profile.bench]
+opt-level = 3
+codegen-units = 1
+lto = true