[HN Gopher] Rewriting (and optimizing) a tree-walking interprete...
       ___________________________________________________________________
        
       Rewriting (and optimizing) a tree-walking interpreter in Rust
        
       Author : dvko
       Score  : 15 points
       Date   : 2022-11-22 10:29 UTC (1 days ago)
        
 (HTM) web link (www.dannyvankooten.com)
 (TXT) w3m dump (www.dannyvankooten.com)
        
       | dvko wrote:
       | Hey everyone.
       | 
       | I wanted to get more experience writing Rust so I decided to
       | build an interpreter in Rust and attempt to make it just as fast
       | as another one I made in C. In this post I describe my journey to
       | make it run fast. Most of it will probably be super obvious if
       | you're experienced with Rust, but hopefully some of it is useful
       | to more people. For example, I feel it's just too easy to call
       | `.clone()` to store an owned value instead of storing a reference
       | and introducing the correct lifetime constraints.
       | 
       | Overall it was (is!) a fun project and working in Rust has been a
       | very nice experience. Let me know if you have any suggestions
       | please.
        
         | FullyFunctional wrote:
         | This was great and introduced a few tools I didn't know. I hope
         | you will take it as far as you can, but I think you're going to
         | need a better benchmark :) It would be nice if there were a way
         | to safely JIT from Rust; say a special closure that gets
         | recompiled on the fly based on the value of its free variables.
        
       | SevenNation wrote:
       | The code makes it clear that the --release flag is being used,
       | but not the text. Sometimes optimization posts written by authors
       | trying to up their skills end with a "...and then I turned on the
       | release flag and tada - 80% improvement." It might be useful to
       | point out that release mode is being used to compile.
        
       ___________________________________________________________________
       (page generated 2022-11-23 23:00 UTC)