[HN Gopher] News for Ruby 3.2.0
       ___________________________________________________________________
        
       News for Ruby 3.2.0
        
       Author : type0
       Score  : 105 points
       Date   : 2022-12-23 20:20 UTC (2 hours ago)
        
 (HTM) web link (docs.ruby-lang.org)
 (TXT) w3m dump (docs.ruby-lang.org)
        
       | mdhb wrote:
       | Quick question for the current Ruby community:
       | 
       | I kind of moved away from Ruby right around the time Ractors were
       | about to land and they looked really promising.
       | 
       | I was just curious if they ended up delivering much in the way of
       | change and if not what the main problems were?
        
         | Alifatisk wrote:
         | Ractors is still in experimental stage but I've played around
         | with it and it sure offers a huge performance benefit & true
         | concurrency
        
           | mdhb wrote:
           | I assume by the fact they are still experimental that there
           | isn't much in the way of adoption yet?
        
             | drchiu wrote:
             | I was looking into this question a few weeks ago and
             | couldn't find any libraries I would use in typical
             | applications (eg. background jobs, etc) implementing
             | Ractors.
             | 
             | There are occasional comments in GH issues discussing the
             | possibility of implementing Ractors, but nothing material.
        
               | Lammy wrote:
               | Here's one that sounds like exactly the sort of example
               | you had in mind: https://github.com/okeeblow/DistorteD/tr
               | ee/NEW%E2%80%85SENSA...
               | 
               | Disclaimer: mine :)
        
       | faebi wrote:
       | While on the topic, I still don't get it why we have [].last but
       | {}.last fails with a NoMethodError.
        
         | saghm wrote:
         | Are hashes guaranteed to be ordered in some way (not just
         | incidentally implemented that way, but specified so that
         | changing it in the future would be considered breaking)? I
         | thought they weren't, in which case there wouldn't really be
         | any obvious way to define `last`, but I might be mistaken
        
           | danielheath wrote:
           | Ruby hashes are ordered, per the docs.
        
           | sodapopcan wrote:
           | `{}.first` works, so no reason why `{}.last` shouldn't. I
           | would argue, though, that it's best not to rely on hashes for
           | ordering, though that's a relatively loose preference, and
           | I've certainly use it for quick 'n' dirty scriptss
        
             | latortuga wrote:
             | Ruby hashes have been intentionally ordered since Ruby 1.9,
             | which is ~15 years now.
        
             | BurningFrog wrote:
             | I agree that it's conceptually weird, but since Ruby
             | guarantees the ordering, you might as well have features
             | for it.
        
               | sodapopcan wrote:
               | Ya, it's one of things you have to make a team/org-level
               | call on.
               | 
               | For me, ruby is full of a lot of little conveniences that
               | shouldn't necessarily be used in production systems. I
               | always cry loud that code should be quickly "scannable",
               | and the data-structures we choose to use can help a lot
               | in the quicker understanding an unfamiliar piece of code.
               | 
               | But I stress again: these types of decisions are best
               | left up to the team or org. It's ultimately low-stakes.
        
               | Lammy wrote:
               | The best feature of `Hash` maintaining insertion order is
               | that `Set` does too, since a `Set` is a `Hash` with
               | all-`true` values: https://github.com/ruby/ruby/blob/3539
               | da64fc42d6eb76f1d4c3cc...
        
           | Lammy wrote:
           | Since 1.9: https://bugs.ruby-lang.org/issues/994
        
       | matsadler wrote:
       | Add support for bundle gem --ext=rust command.
       | 
       | Cool to see support for writing extension gems in Rust shipping
       | with Ruby.
        
       | petersafwat wrote:
       | i love javascript
        
       | meisel wrote:
       | How do MJIT and YJIT differ?
        
         | jez wrote:
         | MJIT pastes together snippets of C code that implement Ruby VM
         | bytecode instructions. It then hands off that C code to GCC
         | which compiles it to native code while the Ruby VM is running.
         | 
         | YJIT compiles from Ruby VM bytecode straight to native code
         | using a JIT technique called basic block versioning (which is
         | slightly different from how JITs like V8 work because the unit
         | of reuse is a basic block instead of a function).
         | 
         | There's more information in these links:
         | 
         | https://youtube.com/watch?v=zO9_uTaELCw&feature=shares
         | 
         | https://shopify.engineering/yjit-just-in-time-compiler-cruby
        
       ___________________________________________________________________
       (page generated 2022-12-23 23:00 UTC)