228 private links
On average, there are more than eight changes per hour in the source code, which has grown to over 40 million lines of code. Errors also occur: according to Kroah-Hartman, there are 13 CVE reports per week. Due to the widespread use of Linux, this number is alarming. Although errors are human, they require the source code to be checked by other developers. However, the use of Rust could reduce this workload.
Note that this tool is originally a fork of BurntSushi's xsv, but has been nearly entirely rewritten at that point, to fit SciencesPo's médialab use-cases, rooted in web data collection and analysis geared towards social sciences (you might think CSV is outdated by now, but read our love letter to the format before judging too quickly).
A compile time macro similar to Zig
The replacement of the GNU coreutils is not for the sake of security or performance. The expérience will allow to integrate more Rust code in the long term.
- rustlings
- rustfinity
- 100 exercises to learn Rust
- Codecrafters
- Workshops
A bundle size analyzer for rust
The business apps are characteristic because their main complexity comes from the domain: which is not hardware/software related but it's more about modelling complexities of human interactions in code.
The author tells Rust is not good for business apps.
- The stdlib abstractions are right in size and scope, but they are lacking concrete implementations (RNG, cryptoghraphy, serialization, ...). The crate ecosystem is enormous, but it takes time and attention to to sift the wheat from the chaff. Attention that is limited and could be put to better use elsewhere.
- Business apps requires solid defaults for common problems that are desired
- Lifetime and mutability modifiers can not be abstracted the same degree as regular generics
- Cyclic data structures are hard in Rust, because of the borrow checker
- The borrow checker also explicitly makes a conservative assumption that if you call method over some reference, this method will try to access ALL fields of that references, forcing any other field accessed outside of it to be invalidated: the structs must be build in respect to the borrow checker.
- Performance of business apps rarely matters, because the underlying
- To gain performance optimization out of Rust, you need more than "it compiles". Its performance ceiling are excellent (some platforms .NET or Swift choose to work closer to the metal), but its time to performance is low: it falls behind many managed languages on that metric.
- Arc/Rc or Box have few issues: this technique of allocating is nowhere near as fast as bump pointer allocators that managed languages use. The actual win here is when we need to release memory: which in Rust doesn't introduce GC pauses.
and moreYou're here to solve business problems, yet on every step you need to solve "plumbing issues", make decisions about memory model including possible feature changes and refactoring they'll require in the future. [...] you're not going to be praised because your asset management app takes 10% less CPU while the task backlog has doubled in the meantime.
Rust tends to attract those that:
- understand the intrinsic complexity of software;
- have a realistic opinion about their ability to deal with accidental complexity (or lack thereof);
- that look beyond the happy path and methodically reason about failure modes;
- value consistency and predictability.
This is this piece of code that you realise HTML+CSS are awesome :D