• This repository has been archived on 03/Feb/2023
  • Stars
    star
    1,980
  • Rank 22,813 (Top 0.5 %)
  • Language
    Rust
  • License
    ISC License
  • Created over 8 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Native Ruby extensions without fear

Travis Build Status AppVeyor Build Status

Helix

⚠️ Deprecated ⚠️

Sadly, we have made the decision to deprecate this project. While we had hoped to bootstrap the project to a point where it could flourish as a community project, unfortunately we ran into a number of roadblocks along the way, along with the need for significant architectural overhaul. While these issues are solvable on a technical level, doing so correctly requires more resources than we have been able to provide and progress has stalled.

One of our goals was also to integrate our own Skylight agent with Helix, aligning the company's priorities with the project. While the Skylight agent is still written in Rust with a thin layer of C bindings (which is the part Helix would replace), we were not able to get the project to the point where we felt comfortable running it on our customer's servers. We did not identify any specific blockers that would prevent us from doing this, but ultimate, we did not have the necessary time and resources to realize this.

Since we are a small team, it is unlikely that we will be able to provide the necessary investment in the foreseeable future to achieve our ambitions for the project. At this point, we believe it is in everyone's best interest to formally deprecate the project, accurately reflecting its effective state. Meanwhile, others in the Ruby and Rust communities have continued to explore in the adjacent research areas. Some of them have made great progress and brought new ideas and innovations to the table. We look forward to seeing these new ideas come to fruition and fill the void we are leaving.

Helix allows you to write Ruby classes in Rust without having to write the glue code yourself.

ruby! {
    class Console {
        def log(string: String) {
            println!("LOG: {}", string);
        }
    }
}
$ rake build
$ bundle exec irb
>> require "console"
>> Console.log("I'm in your Rust")
LOG: I'm in your Rust
 => nil

Why Helix?

Read the Introducing Helix blog post for a quick introduction to the project!

Getting Started

https://usehelix.com/getting_started

Demos

https://usehelix.com/demos

Roadmap

https://usehelix.com/roadmap

Compatibility

Helix has been tested with the following, though other combinations may also work.

  • cargo 0.18.0 (fe7b0cdcf 2017-04-24)
  • rustc 1.17.0 (56124baa9 2017-04-24)
  • ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]
  • Bundler version 1.14.6

Contributing

If you'd like to experiment with Helix, you can start with some of the examples in this repository.

Clone and download the Helix repository:

$ git clone https://github.com/tildeio/helix
$ cd helix

Navigate to the console example folder and bundle your Gemfile:

$ cd examples/console
$ bundle install

Run rake irb to build and start irb:

$ bundle exec rake irb

Try running some of the methods defined in examples/console/src/lib.rs:

> c = Console.new
Console { helix: VALUE(0x7fdacc19a6a0) }
 =>
> c.hello
hello
 => nil
> c.loglog('hello', 'world')
hello world
 => nil

More Repositories

1

rsvp.js

A lightweight library that provides tools for organizing asynchronous code
JavaScript
3,619
star
2

htmlbars

A variant of Handlebars that emits DOM and allows you to write helpers that manipulate live DOM nodes
JavaScript
1,607
star
3

router.js

TypeScript
1,348
star
4

route-recognizer

A lightweight JavaScript library that matches paths against registered routes. It includes support for dynamic and star segments and nested handlers.
TypeScript
461
star
5

bloggr-client

The Source for the Ember Get Excited Video
JavaScript
310
star
6

oasis.js

A lightweight library for embedding untrusted content and exposing capabilities. I guess it does two things? But it does them well.
JavaScript
281
star
7

conductor.js

JavaScript
150
star
8

simple-html-tokenizer

A lightweight JavaScript library for tokenizing non-`<script>` HTML expected to be found in the `<body>` of a document
TypeScript
85
star
9

learning-rust

Rust
67
star
10

kamino.js

Kamino.js is a library for passing data structures between sandboxed environments in the browser via `postMessage`.
JavaScript
48
star
11

ember-element-helper

Dynamic element helper for Glimmer templates.
JavaScript
42
star
12

ember-async-await-helper

Awaits a promise, then yields its result to a block. 👌
JavaScript
40
star
13

slackathon

A simple way to build slack interations inside a Rails app.
Ruby
31
star
14

MessageChannel.js

JavaScript
27
star
15

bound-templates.js

Bound Templates provides an interface similar to Polymer's MDV less invasively on more browsers (by using wrapper objects and an HTML parser written in JavaScript)
JavaScript
25
star
16

broccoli-typescript-compiler

TypeScript
24
star
17

json-normalizer

A small, lightweight library for normalizing JSON properties and values.
JavaScript
24
star
18

helix-rails

Helix for Rails
Ruby
22
star
19

libkit

JavaScript
17
star
20

ts-std

A standard library for TypeScript, extracted from Glimmer and other Tilde projects
TypeScript
10
star
21

buffoon

A protobuf library for Rust
Rust
10
star
22

selector-generator

A lightweight JavaScript library that generates CSS selectors from DOM nodes.
JavaScript
10
star
23

canal.js

Canal.js is a lightweight JavaScript library for creating channels, which are objects that represent a stream of events.
JavaScript
10
star
24

ember-control-flow-component

The superclass for all your "control-flow" component needs
9
star
25

ember-women

The Ember Women Helping Women Program
CSS
8
star
26

libcruby-sys

Rust
8
star
27

helix-website

Website for the Helix project
Ruby
8
star
28

kafka-librato-reporter

Report Kafka metrics to Librato
Java
8
star
29

sync.js

JavaScript
6
star
30

range-serializer

A lightweight JavaScript library that serializes/deserializes DOM range objects.
JavaScript
6
star
31

helix-flipper

A simple Rails app to get you started with Helix
Ruby
5
star
32

cfp-app

Rails app for managing a conference CFP
Ruby
5
star
33

jsframe.js

Convert JavaScript to (near) JavaScript/HTML polyglot.
JavaScript
4
star
34

oasis-website

Oasis.js helps you structure communication between multiple untrusted sandboxes
CSS
3
star
35

ember-template-string-interpolation

JavaScript
3
star
36

rustconf

Annual Rust Conference
HTML
3
star
37

ember-training-june-day2

JavaScript
3
star
38

discourse-refcount-resource-spike

JavaScript
2
star
39

skiplist.js

JavaScript
2
star
40

ember-training-nyc-june

Material for the Tilde training course in NYC
JavaScript
2
star
41

emberconf-meetups

A list of unofficial EmberConf meetups
2
star
42

ember-swappable-service

JavaScript
2
star
43

ember-better-attributes

An Ember plugin that provides a better attribute syntax, building on simple-html-tokenizer. It is expected to be merged into Ember in the future.
JavaScript
2
star
44

fastboot-test

JavaScript
1
star
45

rails_todo_app

Ruby
1
star
46

ruby-rust-musl

Test of building musl Rust extensions for Ruby
Ruby
1
star