[HN Gopher] Artichoke is a Ruby made with Rust that compiles to ...
       ___________________________________________________________________
        
       Artichoke is a Ruby made with Rust that compiles to WebAssembly
        
       Author : ibraheemdev
       Score  : 153 points
       Date   : 2021-01-01 18:40 UTC (4 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | jtstanley wrote:
       | The use of traits here is really cool. It looks like the entire
       | language implementation is defined as a trait, which allows for
       | language backends to be swapped out while maintaining the same
       | outward API.
        
         | p4lindromica wrote:
         | Thanks for catching this. That is spot on. These APIs in the
         | `Symbol` backend [0] show this concept off really well I think.
         | 
         | The `Symbol` data structure knows how to, e.g. render its
         | `Symbol#inspect` implementation [1]. To extract the underlying
         | bytes associated with the `Symbol`, however, it needs an
         | interpreter. But not a whole interpreter or any particular
         | interpreter, just one that implements `Intern` [2].
         | 
         | All of these generics get monomorphized so there are no vtables
         | or other indirection. Because it's unlikely you'll have more
         | than one interpreter implementation in your program, there is
         | no code bloat either.
         | 
         | [0]:
         | https://github.com/artichoke/artichoke/blob/2d67d8537c1340f1...
         | 
         | [1]:
         | https://artichoke.github.io/artichoke/spinoso_symbol/struct....
         | 
         | [2]:
         | https://artichoke.github.io/artichoke/artichoke_core/intern/...
        
       | pupdogg wrote:
       | I'm trying to learn more about "artichoke" from their website but
       | the hamburger menu won't work on my iPhone safari. Pls fix!
        
         | p4lindromica wrote:
         | Fixed [0]. Thanks for the report. The navbar could still use a
         | bit of love though :(.
         | 
         | [0]:
         | https://github.com/artichoke/www.artichokeruby.org/pull/171
        
       | dwheeler wrote:
       | Artichoke is interesting, but it's still really young and doesn't
       | have a lot of compatibility with MRuby yet:
       | https://eregon.me/blog/2020/06/27/ruby-spec-compatibility-re... I
       | don't know of any reason it can't grow to be much more
       | compatible.
       | 
       | There's a 2019 video about Artichoke:
       | https://www.youtube.com/watch?v=QMni48MBqFw
        
       | mesaframe wrote:
       | All the correct keywords used in the post to make it to the front
       | page of HN.
        
         | da_big_ghey wrote:
         | Yeah, I came here thinking the same. Looks like someone made
         | use of that HN title A/B tester posted a few weeks back, maybe.
         | https://www.hacker-ai.com/
        
           | ibraheemdev wrote:
           | Nope. The title is just an accurate description of what
           | Artichoke is. Artichoke is an implementation of Ruby made
           | with Rust that compiles to WebAssembly.
        
         | nindalf wrote:
         | I for one am tired of HN constantly upvoting vegetable related
         | posts. Give it a rest folks.
        
         | faitswulff wrote:
         | Just missing blockchain (but in a negative light, these days).
        
         | blunte wrote:
         | It's almost as if a lot of HN readers are interested in Ruby,
         | Rust, and WebAssembly...
        
         | nerdponx wrote:
         | They are the correct keywords because HN users are interested
         | in these technologies. I don't see anything wrong with that.
        
         | bryanrasmussen wrote:
         | I used to think like you too, but then I looked at the Best of
         | HN for 2020 post
         | https://hn.algolia.com/?dateEnd=1609415804&dateRange=custom&...
         | and I realized there was no Rust or Webassembly or even Ruby or
         | artichokes mentioned there.
        
         | conradev wrote:
         | All of the correct keywords and 3900 of the correct commits to
         | ago along with them
        
         | SoSoRoCoCo wrote:
         | Came here to say that at the risk of losing rep, but thanks for
         | taking one for the team. That headline is peak 2020.
        
       | p4lindromica wrote:
       | Hi folks, Artichoke author here. I mostly post project updates on
       | Twitter. Here's a selection of some cool things I've been working
       | on recently:
       | 
       | - https://twitter.com/artichokeruby/status/1339581223119679493
       | 
       | - https://twitter.com/artichokeruby/status/1339578582222266368
       | 
       | - https://twitter.com/artichokeruby/status/1332772105126105089
       | 
       | - https://twitter.com/artichokeruby/status/1332880679655247872
        
         | chrisseaton wrote:
         | It's a great project thanks for working on it and sharing!
        
           | ksec wrote:
           | Thanks all for working on alternative Ruby Implementation,
           | both Artichoke and TruffleRuby. (Edit: And also JRuby )
        
       | codeulike wrote:
       | Peak HN
        
       | root_axis wrote:
       | This is awesome! When the WASM effort was first announced many
       | years ago I happened to be steeped in a ton of ruby work (the
       | ruby/coffeescript era) and had fantasized about the far future
       | when something like this might be a reality... and here it is!
       | 
       | These days I don't use ruby much at all, and I use groovy where I
       | might have used ruby (because static types), but I still love the
       | language and admire this effort. Awesome!
        
       | pansa2 wrote:
       | What makes Artichoke more suitable than MRI for compilation to
       | WebAssembly (and for embedding, and for single-binary
       | distribution [0])?
       | 
       | Is it just that Artichoke is written in Rust? Or does it make
       | different trade-offs in its design?
       | 
       | [0]
       | https://github.com/artichoke/artichoke/blob/2d67d8537c1340f1...
        
       | runawaybottle wrote:
       | JavaScript developers seek their Scala and Kotlin, I suppose.
       | Trying to stop this is like trying to stop your young
       | son/daughter from finding romance.
       | 
       | It's gonna happen one way or another. I just want everyone to be
       | happy and healthy.
        
       | mickallen wrote:
       | Are there any performance benefits over MRI?
        
         | jtstanley wrote:
         | The talk at rubyconf mentioned that `string.scan` was 100%
         | faster due to specialized string implementations in the Rust
         | backend. I wonder if there are any performance gains from the
         | actual runtime rather than from std optimizations?
        
           | spullara wrote:
           | 100% faster? Does that mean twice as fast or is string.scan
           | now take 0 time?
        
             | ibraheemdev wrote:
             | 100% faster means speed is increased by 100%, i.e. double
             | the speed or half the time.
             | 
             | MRI took 89ms/iter to scan for a regex pattern over 6.8MB
             | of text, while Artichoke took 48ms/iter [0]
             | 
             | 0: https://youtu.be/QMni48MBqFw?t=1378
        
         | chrisseaton wrote:
         | I don't think it runs Optcarrot (the current most prominent
         | Ruby benchmark) otherwise it'd be listed here
         | https://github.com/mame/optcarrot. It doesn't have a lot of
         | compatibility with standard Ruby yet according to
         | https://eregon.me/blog/2020/06/27/ruby-spec-compatibility-re...
         | which could be why it doesn't run it. But it's a really
         | exciting project!
        
       | notretarded wrote:
       | Why should I care? What problem is this designed to solve, or is
       | it another pet project which has grown legs?
        
         | p4lindromica wrote:
         | You might want to check out
         | https://github.com/artichoke/artichoke/blob/2d67d8537c1340f1...
         | which lays out the goals for the project.
        
       | ibraheemdev wrote:
       | Is there a timeline as to when artichoke will be stable enough to
       | say... run a Rails app? Or is that not a goal of this project?
        
         | chrisweekly wrote:
         | Same question here.
        
       ___________________________________________________________________
       (page generated 2021-01-01 23:00 UTC)