[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)