994 karma · joined September 9, 2016
If the compiler is allowed to embed a JIT or other runtime system, then all bets are off.
On another front, Rust is working hard to get people off of nightly. This project, for example, uses 3 unstable features. Clippy can already work on stable (edit: code that is linted with Clippy can also build on stable in some setups), Custom Derive will be stable in less than a month, and inclusive ranges is a pretty minor feature.
I would expect this project to begin working on stable for Rust 1.15, but I'm not affiliated with it directly, that's just my guess.
> This is how they are utilized by Diesel, for example, a popular ORM and SQL query interface; or Serde, a serialization framework.
Diesel and Serde are going to be fully available on Rust 1.15, which is < 6 weeks away. This is actually an example of the complete opposite: the Rust project is working hard to get important projects to work on stable Rust so that people don't need nightlies.
Credit cards are always overdrawn in the sense that the bank has extended you a line of credit, but they don't have a fee associated with typical use.
"rumored memory issues" just sounds like FUD.
I'm aware of catch-panic and the unwinding related to panics. Nevertheless, the vast majority of panic usage I've seen is related to the semantic that a panic signals an error that is fatal to the context of the panic. (This is a more nuanced view of panics that didn't exist in my previous post.)
Yes, you can use catch-panic on a server that is meant to stay up even if one of its threads panics. Or you can replace unwinding with aborting to save on code size. But idiomatic Rust code doesn't use panics simply to signal to a caller that some sort of typical error occurred like a file not existing.
Edit: I realize that my post may come across as arguing over semantics. I really don't care whether they're called exceptions or panics or even if they're mechanically the same thing. What I'm trying to talk about is whether they cause code to become harder to understand because of implicit error cases that are invisible in the source.
2nd edit: I appreciate your several good points in your replies to my posts.
I agree that OOM handling in Rust should be improved.
I don't agree with the way you talk about panics. They aren't just exceptions by another name because they're not intended to be used for handling expected errors (like exceptions are). Instead, they terminate the program. That's like attacking Java's System.exit() for not being just another exception. Many other environments share this distinction between fatal and recoverable errors. It can sometimes be a difficult choice to choose what to use, but having panics doesn't mean that all code must somehow try to handle them.
if err != nil { return err }
Comparing Rust to a language with exceptions, like Java, the only difference is that they places that the code can return is explicit rather than implicit, because of that one extra character. I find this extremely pragmatic since most of the time errors just need to be propagated up to a place where they can be handled, but you still need to know when that may happen.
I don't agree with this. I think often a function will drift from its name if functionality is added to an aspect of its implementation or because of refactoring.
There are only five well studied prion diseases (because of their rarity). Two are exclusively heritable: fatal-familial insomnia and Gerstmann–Sträussler–Scheinker syndrome. One, Kuru, is transmitted via cannibalism.
The incubation times are extremely long. Some estimates for Kuru go up to 20-50 years.
The most prevalent form of prion disease in humans is new variant Creutzfeldt–Jakob disease (nvCJD) or Human Mad Cow which has a lag of about 10 years based on CDC data. It is transmitted by eating tainted beef products. Let me stress that this is extremely rare: there have been 3 confirmed cases in the United States.
It is extremely unlikely that Soylent is a vector for prion disease, especially since it's been vegan since version 1.2 and never contained beef as an ingredient. Even if it somehow contained tainted beef, given that it's been available for less than 3 years, it's extremely unlikely that any cases of nvCJD (of which there have only a few in the last decade) or any other cases of prion disease were caused by Soylent.
There is good reason to question the safety of Soylent given its record but "prion disease rumors circulating on Twitter" are utterly ridiculous.
The name of a piece of data is cryptographically secure. It is permanent, but the data that is being named doesn't have to continue to exist on a hard drive just because its name exists.
statically-linked by default except for on Linux where it links to glibc dynamically by default IIRC, but going fully static there is easy, and going fully dynamic is easy too.
I haven't used pip-tools, but I have used pip, npm, bower, and other more modern dependency mangers that work for non-systems programming languages. Cargo has never given me any trouble. Pip has occasionally given me weird issues about things not being installed in the right places or on my path. NPM regularly required `rm -r node_modules` and starting from scratch. Bower has had the same trouble as npm. It's not that these tools don't work for me, I've always been able to google the error message and find someone with the same problem. It's that Cargo has never given me an error message that wasn't my fault like "This package doesn't exist" when it's a typo. It just works.