This is an excerpt from the #cat-v IRC channel on freenode taken around late Feb 2021 Text of interest is that of Aram's opinion on the rust programming language. This is reproduced at the request of a few users in the ##9fans channel by taw. Aram: https://doc.rust-lang.org/book/ch13-00-functional-features.html I read that entire book just to become dissapointed when trying to seriously use rust I have been doing too much rust the past year, you don't have to link me to that awful "documentation". also interators are not a FP "feature" wtf. closures as well. curiousgay, care to elaborate on "why"? I consider boarding the rust plane.. rust is the most awful programming language I had the displeasure to use. worst than C++. why? Aram: iirc FP languages use recursion instead of iteration, it's just rust claims to support FP and in fact confuses people still even with those shortcuts rust's code is more verbose than haskell's "iirc" => you're arguing about a term you have no clear conception of at all. Can you even say what "support FP" would imply? tane_: int foo(int i) {if(i>0) {return foo(i-1)} return i;} iteration is different than recursion in that it requires mutation Indeed, realizing loops with recursion is a property of purely functional programming, but not a requirement for what the term "functional programming" usually implies tane_: too much to complain about in a short IRC discussion, but 1. its safety guarantees are bullshit as real life code uses unsafe every 20LOCs or so, and this is unavoidable. 2. in fact #1 is worse than you think, because unsafe in rust is much more unsafe than "regular" unsafe C, and much harder to make correct than C. 3. because of #1 and #2, the effort required to program with affine types is not worth it, because it gives you literally nothing. 4. the standard way to get out of the aliasing problem is to use arrays instead of pointers. if you do that, you trade memory safety for logic safety. yes, your program is memory-safe in rust terms, but all use after free, etc, become logical bugs instead of segfaults, which is strictly WORSE. 5. affine types are not good even for non-memory things, like file descriptors; because they are affine instead of linear, they can leak, so rust doesn't even help you with THAT. 6. rust and rust programmers don't understand the difference between abstraction and wrappers. rust gives you almost no abstraction. in a certain sense it's even more low-level than C. it just gives you wrappers. 7. everything that happens in the rust ecosystem, from decisions around langiage evolution, to things like tooling, auxiliary tools like cargo, etc, are decided exactly the opposite of a normal person would decide. cargo itself is the most frustrating piece of software I have ever used. 8. if you think perl looks like line noise, you haven't seen rust. 9. because of far away impl block and self/Self, you never know what a local piece of code refers to. 10. etc. C++-like compile times and multi page compile error messages. Aram: 2 years ago I had a funny situation when I wrote safe code which rustc considered unsafe Aram, thanks for the points rust is just C++ done by people pissed they were not invited on the C++ standards commitee. Aram, one question w.r.t. the unsafe use, what kind of programming were you doing, embedded stuff? I am writing a hypervisor in rust. without any further knowledge I'd guess that is rather low level :) the problem is that rust requires the use of unsafe even for implementing linked lists. I have yet to program a larger piece in rust to get a feeling for its pros and cons - to this days I have been put off mostly by what "the rust community" entails Aram, have you had a look at "zig" at any point in time? Aram: add to that rust takes a fuckton time to compile, is not portable) astronomicly hard to bootstrap on different OSes and hardware) and consumes so much memory it can't build itself on i386 I looked at zig, I didn't like it. s/portable) /portable (/ zig introduces red/blue functions because of async. (also a problem in rust). The saga gently continues a day or so later... Aram: https://www.boringcactus.com/2021/02/22/can-we-please-move-past-git.html Aram: pijul being written in rust did segfault :) of course it did. if you take a look at rust, you will see that it has many CVEs. all caused by the same type of problems as they claim C has. unsafe is ubiquitous in real life rust code. at least rust is not popular in my country :) software without boundaries