The only specific statements about Rust quoted in that thread appears to be: > And so Rust has a good set of ingredients there. The problem that I have with it is when I'm working on really hard stuff, I don't exactly know what I'm doing for a long time. And so if the cost of experimentation is driven too high, it actually impairs my ability to get work done. The rest seems to be a discussion about the problems of me…
I'm finding exactly the same problem with Rust -- I am do exploratory programming in GAP (a Python-like language), then rewriting to Rust once I'm confident I have all the basic data structures and code down. The compile speed of Rust alone is painful. Also, when converting C++ code to Rust, I find many places where I'm having to de-optimise code to get it past the borrow checker. Large cyclic data structures which a…
Jonathan Blow on Rust
41–50 of 52 posts
Re: Jonathan Blow on Rust
#42The only specific statements about Rust quoted in that thread appears to be: > And so Rust has a good set of ingredients there. The problem that I have with it is when I'm working on really hard stuff, I don't exactly know what I'm doing for a long time. And so if the cost of experimentation is driven too high, it actually impairs my ability to get work done. The rest seems to be a discussion about the problems of me…
I'm finding exactly the same problem with Rust -- I am do exploratory programming in GAP (a Python-like language), then rewriting to Rust once I'm confident I have all the basic data structures and code down. The compile speed of Rust alone is painful. Also, when converting C++ code to Rust, I find many places where I'm having to de-optimise code to get it past the borrow checker. Large cyclic data structures which a…
If you really are deallocating the cyclic structure all at once, just use an arena and represent each element as an indice. Like https://docs.rs/petgraph/0.5.0/petgraph/ or https://docs.rs/specs/0.15.1/specs/
Re: Jonathan Blow on Rust
#43I would recommend the entire episode, it was very good. Only a small part is about Rust. I’ve listened to plenty of interviews and talks/rants by Jonathan Blow, and while I think he has a lot of interesting ideas, he also has a well earned reputation for being very blunt in how he expresses his opinions. Bryan Cantrill was an excellent interviewer, and managed to bring out the best side of Blow.
Re: Jonathan Blow on Rust
#44Earlier quoted context omitted.
Is it possible to use the speech to text feature of your OS to transcribe the podcast quickly? Just curious...
A hacky solution is to point your speakers at a device running Google Docs with speech-to-text turned on, but I haven't found anything that handles multiple speakers well - especially with overlapping voices, as happens often in this episode.
Re: Jonathan Blow on Rust
#45Earlier quoted context omitted.
I'm finding exactly the same problem with Rust -- I am do exploratory programming in GAP (a Python-like language), then rewriting to Rust once I'm confident I have all the basic data structures and code down. The compile speed of Rust alone is painful. Also, when converting C++ code to Rust, I find many places where I'm having to de-optimise code to get it past the borrow checker. Large cyclic data structures which a…
> Large cyclic data structures which are freed as one piece are annoyingly difficult in Rust. If you really are deallocating the cyclic structure all at once, just use an arena and represent each element as an indice. Like https://docs.rs/petgraph/0.5.0/petgraph/ or https://docs.rs/specs/0.15.1/specs/
His point being that now you're effectively implementing a form of manual memory management to circumvent the borrow checker.
Re: Jonathan Blow on Rust
#46Earlier quoted context omitted.
I like this idea too, but bear in mind that the world of SMT in general (Z3 not an exception) seems to have a lot of cosmetically-similar formulations some of which are trivial and some of which will take forever to solve. The honeymoon with SMT is often brief. You've gotten through the whole 'hooray, now I can nuke Sudoko and those "Mr Brown lives on the same street as the baker, who has a white house" problems' and…
> I'd love it if there were more "intermediate" level documentation sets on SMT - aimed not at people who have just started using SMT, but also not aimed at people who are going to start doing SMT research. Agreed. I've been doing some research to create an SAT Solver and found surprisingly low amount of learning material. I'd love some recommendations from HN crowd.
Lecture notes are there; exercises are available in the linked earlier instances of the course.
Re: Jonathan Blow on Rust
#47I've been arguing lately that C++ should do something like this: Add a full-on theorem-prover to the language so that I can write my own safety rules specific to how my program works. In the Cloudflare Workers runtime we have a sort of analogous problem to what Blow has in his game engine. We have certain objects that live on the JavaScript heap (which is garbage collected), or are directly owned by objects on the JS…
Re: Jonathan Blow on Rust
#48About a year ago I really devoured Jonathan Blow's opinions. He is definitely correct in many, many aspects. I've been paying less and less attention lately because he explains the problems of virtually any language, then explains how his language solves it all perfectly. I am personally incapable of taking firesale arguments like that seriously. I too have many great ideas, but you need to be honest about the limita…
I seriously doubt that he would say that his language "solves it all perfectly." He's still making changes to his language to fix things that don't work right or to change his language to implement features that either didn't exist before, or don't solve the problem as he now sees it (which is different than how he saw it when he initially implemented that feature).
> I am personally incapable of taking firesale arguments like that seriously.
I would challenge you to understand how Jonathan Blow talks. He says what he says, and nothing more. He does not give you things to read "between the lines" or anything like that. He says what he says, and if he did not say some thing, he did not mean that thing, barring mistaken speech, of course. He also continually learns and adapts what he says, which can appear as if he says one thing on one occasion and something different on another, which is of course what happens to anyone who talks about things as they are learning those things.
> Rust has a place alongside Jai, they don't have to compete.
This is, of course, correct. Jon mentions Rust as he does because it doesn't solve the problems that he (specifically) has. Rust is just not an option for him, so he's creating something that is an option for him, and for other people who value the things he values in a language. I don't think Jon will lose any sleep at all if you don't like his language once it is generally available.
Re: Jonathan Blow on Rust
#49I've been arguing lately that C++ should do something like this: Add a full-on theorem-prover to the language so that I can write my own safety rules specific to how my program works. In the Cloudflare Workers runtime we have a sort of analogous problem to what Blow has in his game engine. We have certain objects that live on the JavaScript heap (which is garbage collected), or are directly owned by objects on the JS…
- reduce compile time by at least 100000000000000000000x
- shrink stl by at least 100000000000000000000000000x
Re: Jonathan Blow on Rust
#50I've been arguing lately that C++ should do something like this: Add a full-on theorem-prover to the language so that I can write my own safety rules specific to how my program works. In the Cloudflare Workers runtime we have a sort of analogous problem to what Blow has in his game engine. We have certain objects that live on the JavaScript heap (which is garbage collected), or are directly owned by objects on the JS…
VCC[1] was a substantial piece of research from MSR aimed at supporting the verification of C (not C++) via a theorem prover. However, it appears in a study[2] of its application to parts of the Hyper-V code-base, there were some practical difficulties relating to proving performance in the developer workflow. Still, fascinating to see work like this on real-world code-bases with established languages. You can also s…
Adding verification once you have code is generally more difficult, though in case of VCC it was helpful to have a large example code base to make sure the tool would cover the major patterns, especially relating to concurrency primitives.