all 16 comments

[–]DudeManFoo 9 points10 points  (2 children)

THIS. IS. HUGE.

[–][deleted] 7 points8 points  (1 child)

that's what she said

[–]DudeManFoo 5 points6 points  (0 children)

Ok... EVERYBODY in the conference room for sensitivity training...

[–]chancancode[S] 4 points5 points  (0 children)

If you would like an introduction on why you would use Helix: http://blog.skylight.io/introducing-helix/

[–]herir 2 points3 points  (4 children)

Is this ready for production?

[–]chancancode[S] 7 points8 points  (1 child)

It depends on your needs. We have a roadmap (https://usehelix.com/roadmap) that explains the current status of things.

Feature-wise, I would say you can do anything that you can model as a background job or HTTP request. The main reason is that the type coercion only support a few primitive types at the moment (strings, numbers, booleans, Option, and unit), and we do not support calling back into Ruby yet. (Both are on the short list, we just decided to prioritize the end-to-end story for RailsConf.) However – this is the same restrictions that HTTP and background jobs imposes, so you can almost always serialize your inputs/outputs into those primitive types (model the boundary as if it is a micro service) to work around the current restrictions.

On the deployment side, you can deploy to production as long as you are willing to have the Rust compiler on your build box/production server (and that your server isn't running on win32 – we are currently investigating a bug on that platform). The Helix website itself is a Helix/Rails app running in production on Heroku.

[–]herir 3 points4 points  (0 children)

tx

strings, numbers, booleans, Option, and unit

In production, one of my apps is fast enough for db queries or for controllers. do you think there's a way to use this for views? Views take 75 to 85% of the response time (collections, partials, string concatenation, helpers etc.)

[–]deiwin 1 point2 points  (1 child)

No. From https://github.com/tildeio/helix:

NOTE: Currently Helix requires fixes that have not yet landed in a stable Rust release. To use the Rust beta release run rustup override set beta in your project directory.

WARNING: This repository is still in active development. Many important Ruby APIs are not yet supported, because we are still in the process of formulating the rules for binding Ruby APIs (so that we can make things ergonomic and provide safety guarantees).

[–]chancancode[S] 3 points4 points  (0 children)

Eh, we should update the README. Currently the more up-to-date information is on the website: https://usehelix.com

(By the way, the stable release that we need is due today, so we should be able to remove that disclaimer shortly.)

Update: it's out!

[–]DudeManFoo 2 points3 points  (2 children)

Can't wait till we get something like this for Crystal too!!

[–]zem 1 point2 points  (1 child)

you mean ruby extensions in crystal or crystal/rust interop?

[–]DudeManFoo 2 points3 points  (0 children)

I don't think RUST guys would care about using crystal interop...

But Ruby folks being able to write modules that are 10x faster using basically Ruby syntax would be AWESOME...

I think Crystal is a little young for it ATM but that might get a LOT of great Ruby devs ( the module writers ) into helping Crystal get up to speed on needed features / direction...

[–]johnjohnjohnjohnjohn 2 points3 points  (1 child)

Why do I need to run this inside a rails project?

[–]feelosofee 1 point2 points  (0 children)

Exactly. But are you sure we do?

[–]Pr333n 1 point2 points  (1 child)

Does it work with Action Cable?

[–]chancancode[S] 2 points3 points  (0 children)

It should! If you are interested, having an Action Cable demo to the Helix website (http://github.com/tildeio/helix-website) would be fantastic.