I have recently performed a relatively simple development by using programming languages on which I had low-to-to-no experience: Perl (low), Ruby (no), Rust (no) and Go (no). Note that I am quite adaptable on the programming language front and that this small experiment was precisely meant to showcase these adaptability skills. Rust was, by far, the most difficult-to-learn, difficult-to-research, counter-intuitive, u…
RustBelt: securing the foundations of the Rust programming language
31–40 of 109 posts
Re: RustBelt: securing the foundations of the Rust programming language
#32Earlier quoted context omitted.
One thing about formal verification, and a lesser extent automated testing, is that you often end up spending the majority of the time adapting the program or language to work with verification rather than actually solving a real-world problem or fixing a real bug. His third comment fits this category well. The problem set he describes was that the code is designed in a way that's ill suited for formal verification.…
We regard "this program is hard to test" as a problem that's worth refactoring to fix; why shouldn't we regard "this program is hard to verify" the same way?
Re: RustBelt: securing the foundations of the Rust programming language
#33I have recently performed a relatively simple development by using programming languages on which I had low-to-to-no experience: Perl (low), Ruby (no), Rust (no) and Go (no). Note that I am quite adaptable on the programming language front and that this small experiment was precisely meant to showcase these adaptability skills. Rust was, by far, the most difficult-to-learn, difficult-to-research, counter-intuitive, u…
Programs written in Rust are empirically safer than programs written in C or C++.
> The higher the freedom, the better the results delivered by a sensible/knowledgeable person.
If that were true, then C and C++ code would be safer and more secure than programs written in memory-safe languages. Obviously, that's not the case.
> seriously doubt that developers with real-world experience can like or even accept most of what this language represents.
Lots of developers with real-world experience, including me, use Rust all the time without any more problems than they would have in any other language.
Re: RustBelt: securing the foundations of the Rust programming language
#34My favourite part: > our verification work resulted in uncovering and fixing a bug in Rust’s standard library, demonstrating that our model of Rust is realistic enough to be useful. The bug was https://github.com/rust-lang/rust/issues/41622 .
One thing about formal verification, and a lesser extent automated testing, is that you often end up spending the majority of the time adapting the program or language to work with verification rather than actually solving a real-world problem or fixing a real bug. His third comment fits this category well. The problem set he describes was that the code is designed in a way that's ill suited for formal verification.…
i wonder how true this is of formal verification? especially in a language like Rust that has a fairly fancy type system?
Re: RustBelt: securing the foundations of the Rust programming language
#35Earlier quoted context omitted.
Rust is a direct contender to C and C++, not to script or GC languages. Please compare apples to apples.
For some languages, that distinction doesn't seem to apply. For example, it seems that the D language can be treated as both a scripting language and a system language, as the speed of compilation + execution can be comparable to that of scripting languages. For evidence of this, take a look at the first D versus Python comparison in this article, note that both scripts have comparable execution times (both finished…
Re: RustBelt: securing the foundations of the Rust programming language
#36Earlier quoted context omitted.
We regard "this program is hard to test" as a problem that's worth refactoring to fix; why shouldn't we regard "this program is hard to verify" the same way?
But "this language is hard to verify" should not trump the usability of the language. The verification only needs to be done once, while the language will be used to write code again and again. If it doesn't negatively affect the language users then sure, change it to make verification easier.
Re: RustBelt: securing the foundations of the Rust programming language
#37I think I can understand and appreciate many different aspects of Computer science, but programming language theory truly is a bit too arcane and formal for me. I still try to follow it somewhat though (like when the Morning Paper had its nice writeup about RustBelt) and I enjoy learning Rust (which exposes you to the theory underlying its design more than other languages). Maybe it's good that the results of formal…
Re: RustBelt: securing the foundations of the Rust programming language
#38Do this at the LLVM level and you get way more languages for free.
Rust's type system provides memory and race safety, but those details are lost at a lower level. It's very hard to analyze data races at the assembly level!
Re: RustBelt: securing the foundations of the Rust programming language
#39Earlier quoted context omitted.
We regard "this program is hard to test" as a problem that's worth refactoring to fix; why shouldn't we regard "this program is hard to verify" the same way?
But "this language is hard to verify" should not trump the usability of the language. The verification only needs to be done once, while the language will be used to write code again and again. If it doesn't negatively affect the language users then sure, change it to make verification easier.
Re: RustBelt: securing the foundations of the Rust programming language
#40Earlier quoted context omitted.
For some languages, that distinction doesn't seem to apply. For example, it seems that the D language can be treated as both a scripting language and a system language, as the speed of compilation + execution can be comparable to that of scripting languages. For evidence of this, take a look at the first D versus Python comparison in this article, note that both scripts have comparable execution times (both finished…
There are effectively two Ds: one that's garbage collected and one that's manually memory managed and unsafe. I don't think you can really consider them equivalent: there's always a large difference in development friction when you move from a managed environment to an unmanaged one.
Could you not also say there are effectively two Rusts?
https://doc.rust-lang.org/book/second-edition/ch19-01-unsafe...
"Rust has a second language hiding out inside of it, unsafe Rust, which does not enforce these memory safety guarantees. Unsafe Rust works just like regular Rust does, but it gives you extra superpowers not available in safe Rust code."
By the way, I don't say this as a criticism, I admire what the Rust team are doing, and will be glad to check out the language again in the future.