<story><title>Rewriting Rust</title><url>https://josephg.com/blog/rewriting-rust/</url></story><parent_chain><item><author>DanielHB</author><text>The fact is that dependency jungle is the prevalent way to get shit done these days. The best the runtime can do is embrace it, make it as performant and safe as possible and try to support minimum-dependency projects by having a broad std library.&lt;p&gt;Also I am no expert, but I think file-watchers are definitely not simple at all, especially if they are multi-platform.</text></item><item><author>dist1ll</author><text>I think the dependency situation is pretty rough, and very few folks want to admit it. An example I recently stumbled upon: the cargo-watch[0] crate.&lt;p&gt;At its core its a pretty simple app. I watches for file changes, and re-runs the compiler. The implementation is less than 1000 lines of code. But what happens if I vendor the dependencies? It turns out, the deps add up to almost 4 million lines of Rust code, spread across 8000+ files. For a simple file-watcher.&lt;p&gt;[0] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;crates.io&amp;#x2F;crates&amp;#x2F;cargo-watch&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;crates.io&amp;#x2F;crates&amp;#x2F;cargo-watch&lt;/a&gt;</text></item></parent_chain><comment><author>kreyenborgi</author><text>&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;eradman&amp;#x2F;entr&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;eradman&amp;#x2F;entr&lt;/a&gt; is&lt;p&gt;&lt;pre&gt;&lt;code&gt;    Language                     files          blank        comment           code
    -------------------------------------------------------------------------------
    C                                4            154            163            880
    Bourne Shell                     2             74             28            536
    C&amp;#x2F;C++ Header                     4             21             66             70
    Markdown                         1             21              0             37
    YAML                             1              0              0             14
    -------------------------------------------------------------------------------
    SUM:                            12            270            257           1537
    -------------------------------------------------------------------------------
&lt;/code&gt;&lt;/pre&gt;
including a well-designed CLI.&lt;p&gt;entr supports BSD, Mac OS, and Linux (even WSL). So that&amp;#x27;s several platforms in &amp;lt;2k lines of code. By using MATHEMATICS and EXTRAPOLATION we find that non-WSL Windows file-watching must take four million minus two thousand equals &lt;i&gt;calculate calculate&lt;/i&gt; 3998000 lines of code. Ahem.&lt;p&gt;Though to be fair, cargo watch probably does more than just file-watching. (Should it? Is it worth the complexity? I guess that depends on where you land on the worse-is-better discussion.)</text></comment>
<story><title>Rewriting Rust</title><url>https://josephg.com/blog/rewriting-rust/</url></story><parent_chain><item><author>DanielHB</author><text>The fact is that dependency jungle is the prevalent way to get shit done these days. The best the runtime can do is embrace it, make it as performant and safe as possible and try to support minimum-dependency projects by having a broad std library.&lt;p&gt;Also I am no expert, but I think file-watchers are definitely not simple at all, especially if they are multi-platform.</text></item><item><author>dist1ll</author><text>I think the dependency situation is pretty rough, and very few folks want to admit it. An example I recently stumbled upon: the cargo-watch[0] crate.&lt;p&gt;At its core its a pretty simple app. I watches for file changes, and re-runs the compiler. The implementation is less than 1000 lines of code. But what happens if I vendor the dependencies? It turns out, the deps add up to almost 4 million lines of Rust code, spread across 8000+ files. For a simple file-watcher.&lt;p&gt;[0] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;crates.io&amp;#x2F;crates&amp;#x2F;cargo-watch&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;crates.io&amp;#x2F;crates&amp;#x2F;cargo-watch&lt;/a&gt;</text></item></parent_chain><comment><author>SkiFire13</author><text>&amp;gt; try to support minimum-dependency projects by having a broad std library.&lt;p&gt;Since everyone depends on the standard library this will just mean everyone will depend on even more lines of code. You are decreasing the number of nominal dependencies but increasing of much code those amount to.&lt;p&gt;Moreover the moment the stdlib&amp;#x27;s bundled dependency is not enough there are two problems:&lt;p&gt;- it can&amp;#x27;t be changed because that would be a breaking change, so you&amp;#x27;re stuck with the old bad implementation;&lt;p&gt;- you will have to use an alternative implementation in another crate, so now you&amp;#x27;re back at the starting situation except with another dependency bundled in the stdlib.&lt;p&gt;Just look at the dependency situation with the python stdlib, e.g. how many versions of urllib there are.</text></comment>