diff --git a/Cargo.lock b/Cargo.lock index bb54d4d41..a811a4263 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1589,10 +1589,9 @@ dependencies = [ [[package]] name = "csv" version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" +source = "git+https://github.com/jqnatividad/rust-csv?branch=qsv-optimized#ce2fb0721c32ab512e58ee4d73976b656b4584ad" dependencies = [ - "csv-core", + "csv-core 0.1.11 (git+https://github.com/jqnatividad/rust-csv?branch=qsv-optimized)", "itoa", "ryu", "serde", @@ -1607,6 +1606,14 @@ dependencies = [ "memchr", ] +[[package]] +name = "csv-core" +version = "0.1.11" +source = "git+https://github.com/jqnatividad/rust-csv?branch=qsv-optimized#ce2fb0721c32ab512e58ee4d73976b656b4584ad" +dependencies = [ + "memchr", +] + [[package]] name = "csv-diff" version = "0.1.0" @@ -5189,7 +5196,7 @@ dependencies = [ "bitflags 2.6.0", "bytecount", "csv", - "csv-core", + "csv-core 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.14.5", "memchr", "qsv-dateparser", diff --git a/Cargo.toml b/Cargo.toml index 47d07d524..c14f407ae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -252,6 +252,9 @@ rusqlite = { version = "0.31", features = ["bundled"] } serial_test = { version = "3.1", features = ["file_locks"] } [patch.crates-io] +# use our tweaked fork of csv crate +# the csv crate underpins a lot of qsv's functionality, so every perf tweak helps +csv = { git = "https://github.com/jqnatividad/rust-csv", branch = "qsv-optimized" } # needed as dynfmt doesn't work in release mode without this # see https://github.com/jan-auer/dynfmt/pull/9 dynfmt = { git = "https://github.com/jqnatividad/dynfmt", branch = "2021-clippy_ptr_as_ptr-bumpdeps" } @@ -263,7 +266,7 @@ calamine = { git = "https://github.com/tafia/calamine", rev = "a90e877" } local-encoding = { git = "https://github.com/slonopotamus/local-encoding-rs", branch = "travis-madness" } # Polars has a much higher release tempo for its Python bindings compared # to its underlying Rust library. See https://github.com/pola-rs/polars/releases -# It's qsv's policy to use the latest release of py-polars +# It's qsv's policy to use the latest release of polars/py-polars # to take advantage of Polars' latest features and fixes. # polars = { git = "https://github.com/pola-rs/polars", tag = "py-1.4.1" } polars = { git = "https://github.com/pola-rs/polars", rev = "1dc2533" }