photog.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A place for your photos and banter. Photog first is our motto Please refer to the site rules before posting.

Administered by:

Server stats:

247
active users

#CSVDiff

0 posts0 participants0 posts today
Jan :rust: :ferris:<p>I can't wait to use `extract_if` in <a href="https://floss.social/tags/CSVDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSVDiff</span></a>! :awesome: </p><p>csv-diff makes use of a "manual" (aka hacky) implementation of it using `drain` (to remove equal csv records) in combination with an "intermediate" HashMap to restore the not-to-be-removed csv records (the ones that are different):</p><p><a href="https://gitlab.com/janriemer/csv-diff/-/blob/main/src/diff_result.rs?ref_type=heads#L599" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">gitlab.com/janriemer/csv-diff/</span><span class="invisible">-/blob/main/src/diff_result.rs?ref_type=heads#L599</span></a></p><p>We can _probably_ remove this hacky implementation and replace it with `extract_if`! Very exciting!</p><p>2/2</p><p><a href="https://floss.social/tags/CSVDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSVDiff</span></a></p>
Jan :rust: :ferris:<p><a href="https://floss.social/tags/Fuzzing" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Fuzzing</span></a> along in <a href="https://floss.social/tags/CSVDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSVDiff</span></a> :awesome: </p><p>In the second screenshot I've highlighted some interesting parts:</p><p>Key field indices are 2 and 3, so when diffing the records, where key fields are highlighted, they'll be compared as `Modify`, because:<br>- key fields are equal between left and right record<br>- other fields are unequal between left and right record</p><p>The other two records on the right have no corresponding left record - so those are `Add`ed records</p><p><a href="https://floss.social/tags/Rust" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Rust</span></a> <a href="https://floss.social/tags/FuzzTesting" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>FuzzTesting</span></a> <a href="https://floss.social/tags/RustLang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RustLang</span></a> <a href="https://floss.social/tags/PropertyTesting" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PropertyTesting</span></a></p>
Jan :rust: :ferris:<p>Huh, seems like I really have been living on the bleeding edge (of <a href="https://floss.social/tags/FormalVerification" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>FormalVerification</span></a>):</p><p><a href="https://github.com/creusot-rs/creusot/discussions/1477#discussioncomment-12991148" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/creusot-rs/creusot/</span><span class="invisible">discussions/1477#discussioncomment-12991148</span></a></p><p>The verification in the prev toot is currently not possible in <a href="https://floss.social/tags/Creusot" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Creusot</span></a> due to missing specs for the `Hash` trait and HashMap more broadly. 😔 </p><p>Oh well, seems like (at least currently!) I won't be able to fully verify the diffing algorithm of <a href="https://floss.social/tags/CSVDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSVDiff</span></a>.🥺 </p><p>Options I have now are:<br>- Only verify parts of the algorithm (that don't depend on HashMap ops)<br>or<br>- Use fuzzing/property testing</p>
Jan :rust: :ferris:<p>Just published a new version of csv-diff (v0.1.1) 🚀 </p><p><a href="https://lib.rs/crates/csv-diff" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">lib.rs/crates/csv-diff</span><span class="invisible"></span></a></p><p>This fixes a nasty bug regarding sort order of modified csv records. 😖 </p><p>Details in the MR/PR:<br><a href="https://gitlab.com/janriemer/csv-diff/-/merge_requests/31" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">gitlab.com/janriemer/csv-diff/</span><span class="invisible">-/merge_requests/31</span></a></p><p>Also, two new incoming PRs for <a href="https://floss.social/tags/qsv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>qsv</span></a>, the <a href="https://floss.social/tags/CSV" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSV</span></a> toolkit:</p><p>The first updates to the latest csv-diff, fixing aforementioned bug:<br><a href="https://github.com/dathere/qsv/pull/2456" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/dathere/qsv/pull/24</span><span class="invisible">56</span></a></p><p>The second fixes a bug regarding conversion from column names to indices:<br><a href="https://github.com/dathere/qsv/pull/2457" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/dathere/qsv/pull/24</span><span class="invisible">57</span></a></p><p><a href="https://floss.social/tags/Rust" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Rust</span></a> <a href="https://floss.social/tags/RustLang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RustLang</span></a> <a href="https://floss.social/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://floss.social/tags/CSVDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSVDiff</span></a></p>
Jan :rust: :ferris:<p>Ouch, there is another bug and this time it is actually _in <a href="https://floss.social/tags/CSVDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSVDiff</span></a> itself_!</p><p>It happens with sorting the results of modified rows (urgh, I'm also not happy with the sorting code).😨 </p><p>Thankfully, datatraveller1 already has found a reproducible example - thank you so much! ❤️ </p><p>Bug:<br><a href="https://github.com/dathere/qsv/issues/2443#issuecomment-2598987465" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/dathere/qsv/issues/</span><span class="invisible">2443#issuecomment-2598987465</span></a></p><p>I think I already found a solution, but needs rigorous testing first!</p><p>Potential solution:<br><a href="https://github.com/dathere/qsv/issues/2443#issuecomment-2599681431" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/dathere/qsv/issues/</span><span class="invisible">2443#issuecomment-2599681431</span></a></p><p><a href="https://floss.social/tags/qsv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>qsv</span></a> <a href="https://floss.social/tags/Bug" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Bug</span></a> <a href="https://floss.social/tags/csv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>csv</span></a></p>
Jan :rust: :ferris:<p>Nice, I think I found the bug! 🐛 </p><p>See all the explanation and possible solution here:</p><p>=&gt; <a href="https://github.com/dathere/qsv/issues/2443#issuecomment-2597097311" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/dathere/qsv/issues/</span><span class="invisible">2443#issuecomment-2597097311</span></a></p><p>Workaround is also present and explained, so should be no blocker for people.</p><p>Will prob provide a fix on the weekend. 🤞 </p><p><a href="https://floss.social/tags/CSVDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSVDiff</span></a> <a href="https://floss.social/tags/qsv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>qsv</span></a> <a href="https://floss.social/tags/Bug" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Bug</span></a> <a href="https://floss.social/tags/Fix" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Fix</span></a> <a href="https://floss.social/tags/Bugfix" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Bugfix</span></a></p>
Jan :rust: :ferris:<p>Uh ohhhh, someone reported a bug in qsv's `diff` command.😮 🙈 </p><p><a href="https://github.com/dathere/qsv/issues/2443" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/dathere/qsv/issues/</span><span class="invisible">2443</span></a></p><p>Hopefully, we can resolve this soon! 🤞🥺 </p><p>I have a strong suspicion, but let's see... I need more info first from the OP.</p><p><a href="https://floss.social/tags/Bug" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Bug</span></a> <a href="https://floss.social/tags/Issue" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Issue</span></a> <a href="https://floss.social/tags/CSVDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSVDiff</span></a> <a href="https://floss.social/tags/Diff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Diff</span></a> <a href="https://floss.social/tags/CLI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CLI</span></a> <a href="https://floss.social/tags/qsv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>qsv</span></a></p>
Jan :rust: :ferris:<p><span class="h-card" translate="no"><a href="https://mastodon.online/@shuttle" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>shuttle</span></a></span> I consequently use <a href="https://floss.social/tags/TDD" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TDD</span></a>, where possible.</p><p>Yes, sure, <a href="https://floss.social/tags/Rust" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Rust</span></a> prevents a lot of bugs at compile time already, but not logic bugs.</p><p>For example in <a href="https://floss.social/tags/CSVDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSVDiff</span></a> we have ~70 unit tests and ~12 integration tests. The only "bug report" we have ever gotten was due to a corrupted CSV file (being mistaken with a bug in diff):</p><p>See here (qsv):<br><a href="https://github.com/jqnatividad/qsv/issues/1258#issuecomment-1712924932" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/jqnatividad/qsv/iss</span><span class="invisible">ues/1258#issuecomment-1712924932</span></a></p><p>csv-diff:<br><a href="https://gitlab.com/janriemer/csv-diff" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">gitlab.com/janriemer/csv-diff</span><span class="invisible"></span></a></p><p>In the future I'd like to add property and mutation testing as well 🤓 </p><p><a href="https://floss.social/tags/RustLang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RustLang</span></a> <a href="https://floss.social/tags/Testing" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Testing</span></a> <a href="https://floss.social/tags/UnitTest" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>UnitTest</span></a></p>
Jan :rust: :ferris:<p><a href="https://floss.social/tags/CsvDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CsvDiff</span></a> has finally reached v0.1.0, it's first ever non-alpha/-beta release! 🎉 </p><p>New features like getting at the headers from the diffresult have been needed for the following PR in qsv (which is in final review):<br><a href="https://github.com/jqnatividad/qsv/pull/1395" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/jqnatividad/qsv/pul</span><span class="invisible">l/1395</span></a></p><p>When merged, you'll be able to decide, whether the diffresult should output headers or not (see examples in the PR). :awesome: </p><p>Check out csv-diff's Changelog for the full details:<br><a href="https://gitlab.com/janriemer/csv-diff/-/blob/main/CHANGELOG.md?ref_type=heads#010-30-october-2023" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">gitlab.com/janriemer/csv-diff/</span><span class="invisible">-/blob/main/CHANGELOG.md?ref_type=heads#010-30-october-2023</span></a></p><p><a href="https://floss.social/tags/CSV" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSV</span></a> <a href="https://floss.social/tags/qsv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>qsv</span></a> <a href="https://floss.social/tags/CLI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CLI</span></a> <a href="https://floss.social/tags/DataScience" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DataScience</span></a> <a href="https://floss.social/tags/DataEngineering" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DataEngineering</span></a></p>
Jan :rust: :ferris:<p>And this is why <a href="https://floss.social/tags/UnitTests" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>UnitTests</span></a> and <a href="https://floss.social/tags/TDD" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TDD</span></a> are awesome/necessary (even in <a href="https://floss.social/tags/Rust" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Rust</span></a>/ <a href="https://floss.social/tags/RustLang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RustLang</span></a>):</p><p>The original requirement:<br>figure out how many columns the _result_ of diffing two CSVs in <a href="https://floss.social/tags/CsvDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CsvDiff</span></a> have.</p><p>Do you see the error-pattern?</p><p>It's<br>- when we have no diff<br>&amp;&amp;<br>- at least one CSV has headers</p><p>which makes sense, because I've implemented the feature in the diffing logic, but at that point header information is already lost (in some other thread).</p><p>Isn't that beautiful!?🥰 </p><p><a href="https://floss.social/tags/SoftwareEngineering" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SoftwareEngineering</span></a> <a href="https://floss.social/tags/UnitTest" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>UnitTest</span></a></p>
Jan :rust: :ferris:<p>I can't reproduce the bug. ¯\_(ツ)_/¯</p><p>Neither in <a href="https://floss.social/tags/CsvDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CsvDiff</span></a> ...<br><a href="https://gitlab.com/janriemer/csv-diff/-/commit/0ac6ba724656dbcc620eefda3f8ec5d8064134d6" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">gitlab.com/janriemer/csv-diff/</span><span class="invisible">-/commit/0ac6ba724656dbcc620eefda3f8ec5d8064134d6</span></a></p><p>...nor in <a href="https://floss.social/tags/qsv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>qsv</span></a><br><a href="https://github.com/jqnatividad/qsv/pull/1297" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/jqnatividad/qsv/pul</span><span class="invisible">l/1297</span></a></p><p>My assumption is that they have forgotten to specify the option --right-delimiter (or --left-delimiter, respectively), when executing `qsv diff`:<br><a href="https://github.com/jqnatividad/qsv/issues/1258#issuecomment-1712842883" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/jqnatividad/qsv/iss</span><span class="invisible">ues/1258#issuecomment-1712842883</span></a></p><p>Anyway, we now have additional tests in csv-diff and qsv, so definitely a win, regardless of the outcome! 🎉 </p><p><span class="h-card"><a href="https://infosec.exchange/@floriann" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>floriann</span></a></span> FYI</p><p><a href="https://floss.social/tags/Rust" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Rust</span></a> <a href="https://floss.social/tags/RustLang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RustLang</span></a> <a href="https://floss.social/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://floss.social/tags/NotReproducible" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NotReproducible</span></a></p>
Jan :rust: :ferris:<p>Oh noes, apparently I haven't considered different delimiters for the left and right <a href="https://floss.social/tags/CSV" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSV</span></a> in <a href="https://floss.social/tags/CsvDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CsvDiff</span></a>.😱 </p><p>Someone reported a bug in `qsv diff` (which uses csv-diff) with this scenario.</p><p><a href="https://github.com/jqnatividad/qsv/issues/1258" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/jqnatividad/qsv/iss</span><span class="invisible">ues/1258</span></a></p><p>I'll have a look at it tomorrow.</p><p>Glad, csv-diff is actively used! ❤️ </p><p><a href="https://floss.social/tags/Rust" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Rust</span></a> <a href="https://floss.social/tags/RustLang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RustLang</span></a> <a href="https://floss.social/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://floss.social/tags/Bug" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Bug</span></a> <a href="https://floss.social/tags/Bugs" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Bugs</span></a></p>
Jan :rust: :ferris:<p>If you want to know, how to provide a large resource (such as an owned String) to a criterion benchmark, you can use the `iter_batched` method:</p><p><a href="https://docs.rs/criterion/latest/criterion/struct.Bencher.html#method.iter_batched" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">docs.rs/criterion/latest/crite</span><span class="invisible">rion/struct.Bencher.html#method.iter_batched</span></a></p><p>See an example of this in <a href="https://floss.social/tags/CsvDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CsvDiff</span></a></p><p><a href="https://gitlab.com/janriemer/csv-diff/-/blob/main/benches/bench_csv_diff.rs#L67" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">gitlab.com/janriemer/csv-diff/</span><span class="invisible">-/blob/main/benches/bench_csv_diff.rs#L67</span></a></p><p>3/3</p><p><a href="https://floss.social/tags/Rust" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Rust</span></a> <a href="https://floss.social/tags/RustLang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RustLang</span></a> <a href="https://floss.social/tags/Performance" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Performance</span></a> <a href="https://floss.social/tags/Benchmark" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Benchmark</span></a> <a href="https://floss.social/tags/AIIsNotIntelligent" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>AIIsNotIntelligent</span></a></p>
Jan :rust: :ferris:<p>Not sure where this will lead to, but it sounds fun and exciting, so let's try! :awesome: :rust: :ferris: </p><p><a href="https://floss.social/tags/CSVDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSVDiff</span></a></p>
Jan :rust: :ferris:<p>Yay! Sorting the <a href="https://floss.social/tags/csv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>csv</span></a> diff result by columns has just been merged into <a href="https://floss.social/tags/qsv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>qsv</span></a>! 🥳 </p><p><a href="https://github.com/jqnatividad/qsv/pull/827" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/jqnatividad/qsv/pul</span><span class="invisible">l/827</span></a></p><p><a href="https://floss.social/tags/CSVDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSVDiff</span></a> <a href="https://floss.social/tags/DataScience" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DataScience</span></a> <a href="https://floss.social/tags/CLI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CLI</span></a> <a href="https://floss.social/tags/Data" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Data</span></a></p>
Jan :rust: :ferris:<p>A new version of csv-diff is out (v0.1.0-beta.2) 🎉 </p><p><a href="https://lib.rs/crates/csv-diff" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">lib.rs/crates/csv-diff</span><span class="invisible"></span></a></p><p>This version adds a method, which allows you to sort your diff result by columns (it was already possible to sort by lines).</p><p>See the changelog for an example:<br><a href="https://gitlab.com/janriemer/csv-diff/-/blob/8642a8a7ba14e22d076cee8c3f690c17f41d7528/CHANGELOG.md#010-beta2-19-february-2023" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">gitlab.com/janriemer/csv-diff/</span><span class="invisible">-/blob/8642a8a7ba14e22d076cee8c3f690c17f41d7528/CHANGELOG.md#010-beta2-19-february-2023</span></a></p><p>Sorting by columns will soon be integrated into qsv, the <a href="https://floss.social/tags/CSV" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSV</span></a> toolkit:<br><a href="https://github.com/jqnatividad/qsv/issues/714" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/jqnatividad/qsv/iss</span><span class="invisible">ues/714</span></a></p><p>Thank you @jqnatividad for the idea of this feature! 💚 </p><p><a href="https://floss.social/tags/Rust" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Rust</span></a> <a href="https://floss.social/tags/RustLang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RustLang</span></a> <a href="https://floss.social/tags/CSVDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSVDiff</span></a> <a href="https://floss.social/tags/DataScience" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DataScience</span></a> <a href="https://floss.social/tags/qsv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>qsv</span></a> <a href="https://floss.social/tags/CLI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CLI</span></a></p>
Jan :rust: :ferris:<p><span class="h-card"><a href="https://lazybear.social/@hyde" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>hyde</span></a></span> Also check out `qsv`. 🙂 </p><p>It's an actively maintained fork of xsv (xsv is not maintained anymore).</p><p>qsv is _very active_ in development.</p><p>And shameless plug in the end 😁 <br>Just a few days ago, `csv-diff` got merged:<br><a href="https://github.com/jqnatividad/qsv/pull/711" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/jqnatividad/qsv/pul</span><span class="invisible">l/711</span></a></p><p>csv-diff is a crate for comparing CSVs with ludicrous speed:<br><a href="https://gitlab.com/janriemer/csv-diff" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">gitlab.com/janriemer/csv-diff</span><span class="invisible"></span></a></p><p>So the new command `qsv diff` is now the fastest <a href="https://floss.social/tags/CSV" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSV</span></a> differ in the world! 🚀 </p><p><a href="https://floss.social/tags/BlazinglyFast" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>BlazinglyFast</span></a> <a href="https://floss.social/tags/CSV" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSV</span></a> <a href="https://floss.social/tags/CSVDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSVDiff</span></a> <a href="https://floss.social/tags/Data" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Data</span></a> <a href="https://floss.social/tags/CLI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CLI</span></a> <a href="https://floss.social/tags/Rust" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Rust</span></a> <a href="https://floss.social/tags/RustLang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RustLang</span></a></p>
Jan :rust: :ferris:<p>Announcement 🎉 🥳 </p><p>csv-diff will be integrated into qsv, the CSV toolkit soon! 🎉 :ferris: </p><p>PR:<br><a href="https://github.com/jqnatividad/qsv/pull/711" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/jqnatividad/qsv/pul</span><span class="invisible">l/711</span></a></p><p>Comparing the majestic million dataset with 1,000,000 rows x 12 columns takes less than 800ms and only about 150mb of RAM!<br>With this, it is the fastest <a href="https://floss.social/tags/CSV" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSV</span></a> differ in the world!🚀 </p><p>See the following svg recording for a demo:</p><p><a href="https://gist.githubusercontent.com/janriemer/0e86a236a7174af6faed1b981815a5ea/raw/2ab235a2bdd5798f2348d42da48fdda276fb5f0f/qsv_diff_recording.svg" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">gist.githubusercontent.com/jan</span><span class="invisible">riemer/0e86a236a7174af6faed1b981815a5ea/raw/2ab235a2bdd5798f2348d42da48fdda276fb5f0f/qsv_diff_recording.svg</span></a></p><p>csv-diff:<br><a href="https://gitlab.com/janriemer/csv-diff" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">gitlab.com/janriemer/csv-diff</span><span class="invisible"></span></a></p><p><a href="https://floss.social/tags/Rust" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Rust</span></a> <a href="https://floss.social/tags/RustLang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RustLang</span></a> <a href="https://floss.social/tags/Data" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Data</span></a> <a href="https://floss.social/tags/Diff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Diff</span></a> <a href="https://floss.social/tags/CsvDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CsvDiff</span></a> <a href="https://floss.social/tags/Difference" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Difference</span></a> <a href="https://floss.social/tags/Performance" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Performance</span></a> <a href="https://floss.social/tags/DataScience" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DataScience</span></a> <a href="https://floss.social/tags/Oxidization" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Oxidization</span></a></p>
Jan :rust: :ferris:<p>🥳 A new version of csv-diff has just been released! 🚀 </p><p><a href="https://docs.rs/csv-diff/latest/csv_diff/" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">docs.rs/csv-diff/latest/csv_di</span><span class="invisible">ff/</span></a></p><p>csv-diff is the fastest CSV-diffing library in the world - written in <a href="https://floss.social/tags/Rust" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Rust</span></a></p><p>It can compare two 1,000,000 rows x 9 columns CSVs in &lt; 600ms!</p><p>Note that this is still a beta release and the library itself is still very young.</p><p><a href="https://floss.social/tags/RustLang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RustLang</span></a> <a href="https://floss.social/tags/Release" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Release</span></a> <a href="https://floss.social/tags/CSV" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSV</span></a> <a href="https://floss.social/tags/CSVDiff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSVDiff</span></a> <a href="https://floss.social/tags/Performance" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Performance</span></a> <a href="https://floss.social/tags/DataScience" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DataScience</span></a> <a href="https://floss.social/tags/Data" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Data</span></a> <a href="https://floss.social/tags/Diff" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Diff</span></a> <a href="https://floss.social/tags/Difference" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Difference</span></a> <a href="https://floss.social/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://floss.social/tags/Crate" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Crate</span></a></p>