9504 shaares
222 private links
222 private links
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.