helix_runtime 0.5.0.alpha.1 → 0.5.0.alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0b4438222f9794f2c145316fbec7f715f95d9e8e
4
- data.tar.gz: 2be760bde89497aebda357c70149fb65a2e11200
3
+ metadata.gz: ab00e046b76ca504ff8caff613845ff820e9fcbb
4
+ data.tar.gz: d6356cc4e6458241ba777668f88a13c482038ff0
5
5
  SHA512:
6
- metadata.gz: b7683df79bb1db4a26c97aa9a7e2c242aa3b9e30d3bb83182b6d4a0f8acad0e73a2a763f292a4110151a24deda7333f1dcd3f0d0789743de1deb65bd438bed60
7
- data.tar.gz: 369f997ae6fba5d87004c969b6024d6cd304272f4d0893f8987c164a5c6dc2454b068661778323515d757a4d9f9361e4aaaa2371c3bc6178a6df689c7076552b
6
+ metadata.gz: 8ea5cf554df32877b5bacb969b7829d54d082ae54f5bf11b6272d812eaaff83f41ba03703400fd752a92cd1dc0e2979b6b356296717913058721574b12564dd4
7
+ data.tar.gz: 3bfef6858197cfc99908131fa100bba9d9fc9c6ac17bb47bf78de327a45315341f622a95d651b84b074285a6e5e48d6044cc4287f73d31d9963afe3374583a60
data/README.md CHANGED
@@ -1 +1 @@
1
- # Helix Runtime
1
+ # Helix Runtime
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'helix_runtime'
4
+ require 'helix_runtime/cli'
5
+
6
+ HelixRuntime::CLI::Base.start(ARGV)
@@ -1,7 +1,7 @@
1
- require "mkmf"
2
-
3
- if RUBY_PLATFORM =~ /mingw/
4
- system "rake native_def_file"
5
- end
6
-
7
- create_makefile "helix_runtime/native"
1
+ require "mkmf"
2
+
3
+ if RUBY_PLATFORM =~ /mingw/
4
+ system "rake native_def_file"
5
+ end
6
+
7
+ create_makefile "helix_runtime/native"
@@ -1,145 +1,145 @@
1
- #define BUILDING_DLL
2
-
3
- #include <ruby.h>
4
- #include <ruby/intern.h>
5
- #include <stdbool.h>
6
- #include <helix_runtime.h>
7
-
8
- // Update with version.rb
9
- const char* HELIX_RUNTIME_VERSION = "0.5.0.alpha.1";
10
-
11
- const char* HELIX_PRIsVALUE = PRIsVALUE;
12
- const char* HELIX_SPRINTF_TO_S = "%" PRIsVALUE;
13
- const char* HELIX_SPRINTF_INSPECT = "%+" PRIsVALUE;
14
-
15
- VALUE HELIX_Qtrue = Qtrue;
16
- VALUE HELIX_Qfalse = Qfalse;
17
- VALUE HELIX_Qnil = Qnil;
18
-
19
- long HELIX_RSTRING_LEN(VALUE string) {
20
- return RSTRING_LEN(string);
21
- }
22
-
23
- const char* HELIX_RSTRING_PTR(VALUE string) {
24
- return RSTRING_PTR(string);
25
- }
26
-
27
- long HELIX_RARRAY_LEN(VALUE array) {
28
- return RARRAY_LEN(array);
29
- }
30
-
31
- void* HELIX_RARRAY_PTR(VALUE array) {
32
- return RARRAY_PTR(array);
33
- }
34
-
35
- const void* HELIX_RARRAY_CONST_PTR(VALUE array) {
36
- return RARRAY_CONST_PTR(array);
37
- }
38
-
39
- bool HELIX_RB_TYPE_P(VALUE v, int type) {
40
- return RB_TYPE_P(v, type);
41
- }
42
-
43
- VALUE HELIX_INT2FIX(int c_int) {
44
- return INT2FIX(c_int);
45
- }
46
-
47
- VALUE HELIX_FIX2INT(VALUE v) {
48
- return FIX2INT(v);
49
- }
50
-
51
- VALUE HELIX_rb_utf8_str_new(const char* str, long len) {
52
- return rb_utf8_str_new(str, len);
53
- }
54
-
55
- VALUE HELIX_Data_Wrap_Struct(VALUE klass, HELIX_RUBY_DATA_FUNC mark, HELIX_RUBY_DATA_FUNC free, void* data) {
56
- return Data_Wrap_Struct(klass, mark, free, data);
57
- }
58
-
59
- RUST_U64 HELIX_NUM2U64(VALUE obj) {
60
- return NUM2ULL(obj);
61
- }
62
-
63
- VALUE HELIX_U642NUM(RUST_U64 num) {
64
- return ULL2NUM(num);
65
- }
66
-
67
- RUST_I64 HELIX_NUM2I64(VALUE obj) {
68
- return NUM2LL(obj);
69
- }
70
-
71
- VALUE HELIX_I642NUM(RUST_I64 num) {
72
- return LL2NUM(num);
73
- }
74
-
75
- RUST_U32 HELIX_NUM2U32(VALUE obj) {
76
- return NUM2UINT(obj);
77
- }
78
-
79
- VALUE HELIX_U322NUM(RUST_U32 num) {
80
- return UINT2NUM(num);
81
- }
82
-
83
- RUST_I32 HELIX_NUM2I32(VALUE obj) {
84
- return NUM2INT(obj);
85
- }
86
-
87
- VALUE HELIX_I322NUM(RUST_I32 num) {
88
- return INT2NUM(num);
89
- }
90
-
91
- RUST_F64 HELIX_NUM2F64(VALUE obj) {
92
- return NUM2DBL(obj);
93
- }
94
-
95
- VALUE HELIX_F642NUM(RUST_F64 num) {
96
- return DBL2NUM(num);
97
- }
98
-
99
- void* HELIX_Data_Get_Struct_Value(VALUE obj) {
100
- void* data;
101
- Data_Get_Struct(obj, void*, data);
102
- return data;
103
- }
104
-
105
- void HELIX_Data_Set_Struct_Value(VALUE obj, void* data) {
106
- DATA_PTR(obj) = data;
107
- }
108
-
109
- // void HELIX_rb_define_alloc_func(VALUE klass, HELIX_rb_alloc_func_t func) {
110
- // rb_define_alloc_func(klass, func);
111
- // }
112
-
113
- int HELIX_TYPE(VALUE v) {
114
- return TYPE(v);
115
- }
116
-
117
- int HELIX_T_NONE = T_NONE;
118
- int HELIX_T_NIL = T_NIL;
119
- int HELIX_T_OBJECT = T_OBJECT;
120
- int HELIX_T_CLASS = T_CLASS;
121
- int HELIX_T_ICLASS = T_ICLASS;
122
- int HELIX_T_MODULE = T_MODULE;
123
- int HELIX_T_FLOAT = T_FLOAT;
124
- int HELIX_T_STRING = T_STRING;
125
- int HELIX_T_REGEXP = T_REGEXP;
126
- int HELIX_T_ARRAY = T_ARRAY;
127
- int HELIX_T_HASH = T_HASH;
128
- int HELIX_T_STRUCT = T_STRUCT;
129
- int HELIX_T_BIGNUM = T_BIGNUM;
130
- int HELIX_T_FILE = T_FILE;
131
- int HELIX_T_FIXNUM = T_FIXNUM;
132
- int HELIX_T_TRUE = T_TRUE;
133
- int HELIX_T_FALSE = T_FALSE;
134
- int HELIX_T_DATA = T_DATA;
135
- int HELIX_T_MATCH = T_MATCH;
136
- int HELIX_T_SYMBOL = T_SYMBOL;
137
- int HELIX_T_RATIONAL = T_RATIONAL;
138
- int HELIX_T_COMPLEX = T_COMPLEX;
139
- int HELIX_T_UNDEF = T_UNDEF;
140
- int HELIX_T_NODE = T_NODE;
141
- int HELIX_T_ZOMBIE = T_ZOMBIE;
142
- int HELIX_T_MASK = T_MASK;
143
- // int HELIX_T_IMEMO = T_IMEMO;
144
-
145
- void Init_native() {}
1
+ #define BUILDING_DLL
2
+
3
+ #include <ruby.h>
4
+ #include <ruby/intern.h>
5
+ #include <stdbool.h>
6
+ #include <helix_runtime.h>
7
+
8
+ // Update with version.rb
9
+ const char* HELIX_RUNTIME_VERSION = "0.5.0-alpha-2";
10
+
11
+ const char* HELIX_PRIsVALUE = PRIsVALUE;
12
+ const char* HELIX_SPRINTF_TO_S = "%" PRIsVALUE;
13
+ const char* HELIX_SPRINTF_INSPECT = "%+" PRIsVALUE;
14
+
15
+ VALUE HELIX_Qtrue = Qtrue;
16
+ VALUE HELIX_Qfalse = Qfalse;
17
+ VALUE HELIX_Qnil = Qnil;
18
+
19
+ long HELIX_RSTRING_LEN(VALUE string) {
20
+ return RSTRING_LEN(string);
21
+ }
22
+
23
+ const char* HELIX_RSTRING_PTR(VALUE string) {
24
+ return RSTRING_PTR(string);
25
+ }
26
+
27
+ long HELIX_RARRAY_LEN(VALUE array) {
28
+ return RARRAY_LEN(array);
29
+ }
30
+
31
+ void* HELIX_RARRAY_PTR(VALUE array) {
32
+ return RARRAY_PTR(array);
33
+ }
34
+
35
+ const void* HELIX_RARRAY_CONST_PTR(VALUE array) {
36
+ return RARRAY_CONST_PTR(array);
37
+ }
38
+
39
+ bool HELIX_RB_TYPE_P(VALUE v, int type) {
40
+ return RB_TYPE_P(v, type);
41
+ }
42
+
43
+ VALUE HELIX_INT2FIX(int c_int) {
44
+ return INT2FIX(c_int);
45
+ }
46
+
47
+ VALUE HELIX_FIX2INT(VALUE v) {
48
+ return FIX2INT(v);
49
+ }
50
+
51
+ VALUE HELIX_rb_utf8_str_new(const char* str, long len) {
52
+ return rb_utf8_str_new(str, len);
53
+ }
54
+
55
+ VALUE HELIX_Data_Wrap_Struct(VALUE klass, HELIX_RUBY_DATA_FUNC mark, HELIX_RUBY_DATA_FUNC free, void* data) {
56
+ return Data_Wrap_Struct(klass, mark, free, data);
57
+ }
58
+
59
+ RUST_U64 HELIX_NUM2U64(VALUE obj) {
60
+ return NUM2ULL(obj);
61
+ }
62
+
63
+ VALUE HELIX_U642NUM(RUST_U64 num) {
64
+ return ULL2NUM(num);
65
+ }
66
+
67
+ RUST_I64 HELIX_NUM2I64(VALUE obj) {
68
+ return NUM2LL(obj);
69
+ }
70
+
71
+ VALUE HELIX_I642NUM(RUST_I64 num) {
72
+ return LL2NUM(num);
73
+ }
74
+
75
+ RUST_U32 HELIX_NUM2U32(VALUE obj) {
76
+ return NUM2UINT(obj);
77
+ }
78
+
79
+ VALUE HELIX_U322NUM(RUST_U32 num) {
80
+ return UINT2NUM(num);
81
+ }
82
+
83
+ RUST_I32 HELIX_NUM2I32(VALUE obj) {
84
+ return NUM2INT(obj);
85
+ }
86
+
87
+ VALUE HELIX_I322NUM(RUST_I32 num) {
88
+ return INT2NUM(num);
89
+ }
90
+
91
+ RUST_F64 HELIX_NUM2F64(VALUE obj) {
92
+ return NUM2DBL(obj);
93
+ }
94
+
95
+ VALUE HELIX_F642NUM(RUST_F64 num) {
96
+ return DBL2NUM(num);
97
+ }
98
+
99
+ void* HELIX_Data_Get_Struct_Value(VALUE obj) {
100
+ void* data;
101
+ Data_Get_Struct(obj, void*, data);
102
+ return data;
103
+ }
104
+
105
+ void HELIX_Data_Set_Struct_Value(VALUE obj, void* data) {
106
+ DATA_PTR(obj) = data;
107
+ }
108
+
109
+ // void HELIX_rb_define_alloc_func(VALUE klass, HELIX_rb_alloc_func_t func) {
110
+ // rb_define_alloc_func(klass, func);
111
+ // }
112
+
113
+ int HELIX_TYPE(VALUE v) {
114
+ return TYPE(v);
115
+ }
116
+
117
+ int HELIX_T_NONE = T_NONE;
118
+ int HELIX_T_NIL = T_NIL;
119
+ int HELIX_T_OBJECT = T_OBJECT;
120
+ int HELIX_T_CLASS = T_CLASS;
121
+ int HELIX_T_ICLASS = T_ICLASS;
122
+ int HELIX_T_MODULE = T_MODULE;
123
+ int HELIX_T_FLOAT = T_FLOAT;
124
+ int HELIX_T_STRING = T_STRING;
125
+ int HELIX_T_REGEXP = T_REGEXP;
126
+ int HELIX_T_ARRAY = T_ARRAY;
127
+ int HELIX_T_HASH = T_HASH;
128
+ int HELIX_T_STRUCT = T_STRUCT;
129
+ int HELIX_T_BIGNUM = T_BIGNUM;
130
+ int HELIX_T_FILE = T_FILE;
131
+ int HELIX_T_FIXNUM = T_FIXNUM;
132
+ int HELIX_T_TRUE = T_TRUE;
133
+ int HELIX_T_FALSE = T_FALSE;
134
+ int HELIX_T_DATA = T_DATA;
135
+ int HELIX_T_MATCH = T_MATCH;
136
+ int HELIX_T_SYMBOL = T_SYMBOL;
137
+ int HELIX_T_RATIONAL = T_RATIONAL;
138
+ int HELIX_T_COMPLEX = T_COMPLEX;
139
+ int HELIX_T_UNDEF = T_UNDEF;
140
+ int HELIX_T_NODE = T_NODE;
141
+ int HELIX_T_ZOMBIE = T_ZOMBIE;
142
+ int HELIX_T_MASK = T_MASK;
143
+ // int HELIX_T_IMEMO = T_IMEMO;
144
+
145
+ void Init_native() {}
@@ -1,103 +1,103 @@
1
- #include <ruby.h>
2
- #include <ruby/intern.h>
3
- #include <stdbool.h>
4
-
5
- #if defined _WIN32 || defined __CYGWIN__
6
- #ifdef BUILDING_DLL
7
- #define HELIX_EXTERN __declspec(dllexport)
8
- #else
9
- #define HELIX_EXTERN __declspec(dllimport)
10
- #endif
11
- #else
12
- #define HELIX_EXTERN extern
13
- #endif
14
-
15
- #ifndef HELIXRUNTIME_H
16
- #define HELIXRUNTIME_H
17
-
18
- #define RUST_U64 uint64_t
19
- #define RUST_I64 int64_t
20
-
21
- #define RUST_U32 uint32_t
22
- #define RUST_I32 int32_t
23
-
24
- #define RUST_F64 double
25
-
26
- HELIX_EXTERN const char* HELIX_RUNTIME_VERSION;
27
-
28
- HELIX_EXTERN const char* HELIX_PRIsVALUE;
29
- HELIX_EXTERN const char* HELIX_SPRINTF_TO_S;
30
- HELIX_EXTERN const char* HELIX_SPRINTF_INSPECT;
31
-
32
- HELIX_EXTERN RUST_U64 HELIX_NUM2U64(VALUE);
33
- HELIX_EXTERN VALUE HELIX_U642NUM(RUST_U64);
34
-
35
- HELIX_EXTERN RUST_I64 HELIX_NUM2I64(VALUE);
36
- HELIX_EXTERN VALUE HELIX_I642NUM(RUST_I64);
37
-
38
- HELIX_EXTERN RUST_U32 HELIX_NUM2U32(VALUE);
39
- HELIX_EXTERN VALUE HELIX_U322NUM(RUST_U32);
40
-
41
- HELIX_EXTERN RUST_I32 HELIX_NUM2I32(VALUE);
42
- HELIX_EXTERN VALUE HELIX_I322NUM(RUST_I32);
43
-
44
- HELIX_EXTERN RUST_F64 HELIX_NUM2F64(VALUE);
45
- HELIX_EXTERN VALUE HELIX_F642NUM(RUST_F64);
46
-
47
- HELIX_EXTERN VALUE HELIX_Qtrue;
48
- HELIX_EXTERN VALUE HELIX_Qfalse;
49
- HELIX_EXTERN VALUE HELIX_Qnil;
50
-
51
- HELIX_EXTERN long HELIX_RSTRING_LEN(VALUE string);
52
- HELIX_EXTERN const char* HELIX_RSTRING_PTR(VALUE string);
53
-
54
- HELIX_EXTERN long HELIX_RARRAY_LEN(VALUE array);
55
- HELIX_EXTERN void* HELIX_RARRAY_PTR(VALUE array);
56
- HELIX_EXTERN const void* HELIX_RARRAY_CONST_PTR(VALUE array);
57
-
58
- HELIX_EXTERN bool HELIX_RB_TYPE_P(VALUE v, int type);
59
- HELIX_EXTERN int HELIX_TYPE(VALUE v);
60
-
61
- HELIX_EXTERN VALUE HELIX_INT2FIX(int c_int);
62
- HELIX_EXTERN VALUE HELIX_FIX2INT(VALUE fix);
63
-
64
- HELIX_EXTERN VALUE HELIX_rb_utf8_str_new(const char* str, long len);
65
-
66
- // typedef VALUE (*HELIX_rb_alloc_func_t)(VALUE);
67
- // void HELIX_rb_define_alloc_func(VALUE klass, HELIX_rb_alloc_func_t func);
68
-
69
- typedef void (*HELIX_RUBY_DATA_FUNC)(void*);
70
-
71
- HELIX_EXTERN VALUE HELIX_Data_Wrap_Struct(VALUE klass, HELIX_RUBY_DATA_FUNC mark, HELIX_RUBY_DATA_FUNC free, void* data);
72
- HELIX_EXTERN void* HELIX_Data_Get_Struct_Value(VALUE obj);
73
- HELIX_EXTERN void HELIX_Data_Set_Struct_Value(VALUE obj, void* data);
74
-
75
- HELIX_EXTERN int HELIX_T_NONE;
76
- HELIX_EXTERN int HELIX_T_NIL;
77
- HELIX_EXTERN int HELIX_T_OBJECT;
78
- HELIX_EXTERN int HELIX_T_CLASS;
79
- HELIX_EXTERN int HELIX_T_ICLASS;
80
- HELIX_EXTERN int HELIX_T_MODULE;
81
- HELIX_EXTERN int HELIX_T_FLOAT;
82
- HELIX_EXTERN int HELIX_T_STRING;
83
- HELIX_EXTERN int HELIX_T_REGEXP;
84
- HELIX_EXTERN int HELIX_T_ARRAY;
85
- HELIX_EXTERN int HELIX_T_HASH;
86
- HELIX_EXTERN int HELIX_T_STRUCT;
87
- HELIX_EXTERN int HELIX_T_BIGNUM;
88
- HELIX_EXTERN int HELIX_T_FILE;
89
- HELIX_EXTERN int HELIX_T_FIXNUM;
90
- HELIX_EXTERN int HELIX_T_TRUE;
91
- HELIX_EXTERN int HELIX_T_FALSE;
92
- HELIX_EXTERN int HELIX_T_DATA;
93
- HELIX_EXTERN int HELIX_T_MATCH;
94
- HELIX_EXTERN int HELIX_T_SYMBOL;
95
- HELIX_EXTERN int HELIX_T_RATIONAL;
96
- HELIX_EXTERN int HELIX_T_COMPLEX;
97
- HELIX_EXTERN int HELIX_T_UNDEF;
98
- HELIX_EXTERN int HELIX_T_NODE;
99
- HELIX_EXTERN int HELIX_T_ZOMBIE;
100
- HELIX_EXTERN int HELIX_T_MASK;
101
- // HELIX_EXTERN int HELIX_T_IMEMO = T_IMEMO;
102
-
103
- #endif /* HELIXRUNTIME_H */
1
+ #include <ruby.h>
2
+ #include <ruby/intern.h>
3
+ #include <stdbool.h>
4
+
5
+ #if defined _WIN32 || defined __CYGWIN__
6
+ #ifdef BUILDING_DLL
7
+ #define HELIX_EXTERN __declspec(dllexport)
8
+ #else
9
+ #define HELIX_EXTERN __declspec(dllimport)
10
+ #endif
11
+ #else
12
+ #define HELIX_EXTERN extern
13
+ #endif
14
+
15
+ #ifndef HELIXRUNTIME_H
16
+ #define HELIXRUNTIME_H
17
+
18
+ #define RUST_U64 uint64_t
19
+ #define RUST_I64 int64_t
20
+
21
+ #define RUST_U32 uint32_t
22
+ #define RUST_I32 int32_t
23
+
24
+ #define RUST_F64 double
25
+
26
+ HELIX_EXTERN const char* HELIX_RUNTIME_VERSION;
27
+
28
+ HELIX_EXTERN const char* HELIX_PRIsVALUE;
29
+ HELIX_EXTERN const char* HELIX_SPRINTF_TO_S;
30
+ HELIX_EXTERN const char* HELIX_SPRINTF_INSPECT;
31
+
32
+ HELIX_EXTERN RUST_U64 HELIX_NUM2U64(VALUE);
33
+ HELIX_EXTERN VALUE HELIX_U642NUM(RUST_U64);
34
+
35
+ HELIX_EXTERN RUST_I64 HELIX_NUM2I64(VALUE);
36
+ HELIX_EXTERN VALUE HELIX_I642NUM(RUST_I64);
37
+
38
+ HELIX_EXTERN RUST_U32 HELIX_NUM2U32(VALUE);
39
+ HELIX_EXTERN VALUE HELIX_U322NUM(RUST_U32);
40
+
41
+ HELIX_EXTERN RUST_I32 HELIX_NUM2I32(VALUE);
42
+ HELIX_EXTERN VALUE HELIX_I322NUM(RUST_I32);
43
+
44
+ HELIX_EXTERN RUST_F64 HELIX_NUM2F64(VALUE);
45
+ HELIX_EXTERN VALUE HELIX_F642NUM(RUST_F64);
46
+
47
+ HELIX_EXTERN VALUE HELIX_Qtrue;
48
+ HELIX_EXTERN VALUE HELIX_Qfalse;
49
+ HELIX_EXTERN VALUE HELIX_Qnil;
50
+
51
+ HELIX_EXTERN long HELIX_RSTRING_LEN(VALUE string);
52
+ HELIX_EXTERN const char* HELIX_RSTRING_PTR(VALUE string);
53
+
54
+ HELIX_EXTERN long HELIX_RARRAY_LEN(VALUE array);
55
+ HELIX_EXTERN void* HELIX_RARRAY_PTR(VALUE array);
56
+ HELIX_EXTERN const void* HELIX_RARRAY_CONST_PTR(VALUE array);
57
+
58
+ HELIX_EXTERN bool HELIX_RB_TYPE_P(VALUE v, int type);
59
+ HELIX_EXTERN int HELIX_TYPE(VALUE v);
60
+
61
+ HELIX_EXTERN VALUE HELIX_INT2FIX(int c_int);
62
+ HELIX_EXTERN VALUE HELIX_FIX2INT(VALUE fix);
63
+
64
+ HELIX_EXTERN VALUE HELIX_rb_utf8_str_new(const char* str, long len);
65
+
66
+ // typedef VALUE (*HELIX_rb_alloc_func_t)(VALUE);
67
+ // void HELIX_rb_define_alloc_func(VALUE klass, HELIX_rb_alloc_func_t func);
68
+
69
+ typedef void (*HELIX_RUBY_DATA_FUNC)(void*);
70
+
71
+ HELIX_EXTERN VALUE HELIX_Data_Wrap_Struct(VALUE klass, HELIX_RUBY_DATA_FUNC mark, HELIX_RUBY_DATA_FUNC free, void* data);
72
+ HELIX_EXTERN void* HELIX_Data_Get_Struct_Value(VALUE obj);
73
+ HELIX_EXTERN void HELIX_Data_Set_Struct_Value(VALUE obj, void* data);
74
+
75
+ HELIX_EXTERN int HELIX_T_NONE;
76
+ HELIX_EXTERN int HELIX_T_NIL;
77
+ HELIX_EXTERN int HELIX_T_OBJECT;
78
+ HELIX_EXTERN int HELIX_T_CLASS;
79
+ HELIX_EXTERN int HELIX_T_ICLASS;
80
+ HELIX_EXTERN int HELIX_T_MODULE;
81
+ HELIX_EXTERN int HELIX_T_FLOAT;
82
+ HELIX_EXTERN int HELIX_T_STRING;
83
+ HELIX_EXTERN int HELIX_T_REGEXP;
84
+ HELIX_EXTERN int HELIX_T_ARRAY;
85
+ HELIX_EXTERN int HELIX_T_HASH;
86
+ HELIX_EXTERN int HELIX_T_STRUCT;
87
+ HELIX_EXTERN int HELIX_T_BIGNUM;
88
+ HELIX_EXTERN int HELIX_T_FILE;
89
+ HELIX_EXTERN int HELIX_T_FIXNUM;
90
+ HELIX_EXTERN int HELIX_T_TRUE;
91
+ HELIX_EXTERN int HELIX_T_FALSE;
92
+ HELIX_EXTERN int HELIX_T_DATA;
93
+ HELIX_EXTERN int HELIX_T_MATCH;
94
+ HELIX_EXTERN int HELIX_T_SYMBOL;
95
+ HELIX_EXTERN int HELIX_T_RATIONAL;
96
+ HELIX_EXTERN int HELIX_T_COMPLEX;
97
+ HELIX_EXTERN int HELIX_T_UNDEF;
98
+ HELIX_EXTERN int HELIX_T_NODE;
99
+ HELIX_EXTERN int HELIX_T_ZOMBIE;
100
+ HELIX_EXTERN int HELIX_T_MASK;
101
+ // HELIX_EXTERN int HELIX_T_IMEMO = T_IMEMO;
102
+
103
+ #endif /* HELIXRUNTIME_H */
@@ -5,7 +5,7 @@ require 'helix_runtime/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "helix_runtime"
8
- spec.version = HelixRuntime::VERSION
8
+ spec.version = HelixRuntime::GEM_VERSION
9
9
  spec.authors = ["Yehuda Katz", "Godfrey Chan"]
10
10
  spec.email = ["wycats@gmail.com", "godfreykfc@gmail.com"]
11
11
 
@@ -13,12 +13,13 @@ Gem::Specification.new do |spec|
13
13
  spec.homepage = "https://github.com/tildeio/helix"
14
14
 
15
15
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
16
- spec.bindir = "exe"
16
+ spec.bindir = "bin"
17
17
  spec.extensions = ["ext/helix_runtime/native/extconf.rb"]
18
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "rake", "~> 10.0"
21
+ spec.add_dependency "rake", ">= 10.0"
22
+ spec.add_dependency "thor", "~> 0.19.4"
22
23
 
23
24
  spec.add_development_dependency "bundler", "~> 1.10"
24
25
  spec.add_development_dependency "rspec", "~> 3.4"
@@ -1,2 +1,54 @@
1
1
  require "helix_runtime/version"
2
2
  require "helix_runtime/native"
3
+ require "helix_runtime/platform"
4
+ require 'helix_runtime/project'
5
+ require 'helix_runtime/parent_project'
6
+
7
+ module HelixRuntime
8
+ IS_WINDOWS = RUBY_PLATFORM =~ /mingw/
9
+
10
+ class MissingDllError < RuntimeError; end
11
+
12
+ @@dll_filename = "helix-runtime-#{VERSION.gsub('.', '-')}.#{Platform.libext}"
13
+ @@dll_path_searched = false
14
+
15
+ def self.dll_filename
16
+ @@dll_filename
17
+ end
18
+
19
+ def self.dll_path
20
+ return nil unless IS_WINDOWS
21
+ return @@dll_path if @@dll_path_searched
22
+
23
+ dir = ENV['PATH'].split(';').find do |dir|
24
+ File.exist?(File.expand_path("#{dir}/#{dll_filename}", __FILE__))
25
+ end
26
+
27
+ @@dll_path_searched = true
28
+ @@dll_path = dir ? File.join(dir, dll_filename) : nil
29
+ end
30
+
31
+ def self.ensure_dll!
32
+ if IS_WINDOWS
33
+ unless dll_path
34
+ raise MissingDllError, "Unable to find #{dll_filename} in $PATH."
35
+ end
36
+ else
37
+ # No-op
38
+ end
39
+ end
40
+
41
+ def self.copy_dll
42
+ if IS_WINDOWS
43
+ so_path = File.expand_path("../native.#{Platform.dlext}", __FILE__)
44
+ raise "Unable to find native bundle at #{so_path}" unless File.exists?(so_path)
45
+
46
+ bindir = RbConfig::CONFIG['bindir']
47
+ raise "Unable to determine Ruby bindir" unless bindir
48
+
49
+ FileUtils.cp so_path, File.join(bindir, dll_filename)
50
+ else
51
+ # No-op
52
+ end
53
+ end
54
+ end
@@ -1,18 +1,24 @@
1
1
  require 'rake/tasklib'
2
- require 'rake/clean'
3
- require 'helix_runtime/version'
4
- require 'helix_runtime/platform'
2
+ require 'helix_runtime'
5
3
 
6
4
  module HelixRuntime
7
5
  class BuildTask < Rake::TaskLib
8
6
 
9
- IS_WINDOWS = RUBY_PLATFORM =~ /mingw/
7
+ def self.delegate_attr(getter, to:)
8
+ setter = "#{getter}="
9
+ define_method(getter, -> { send(to).send(getter) })
10
+ define_method(setter, -> (val) { send(to).send(setter, val) })
11
+ end
12
+
13
+ def project
14
+ @project ||= Project.new(Dir.pwd)
15
+ end
16
+
17
+ delegate_attr :name, to: :project
18
+ delegate_attr :helix_lib_dir, to: :project
19
+ delegate_attr :debug_rust, to: :project
20
+ delegate_attr :build_root, to: :project
10
21
 
11
- attr_accessor :name
12
- attr_accessor :debug_rust
13
- attr_accessor :build_root
14
- attr_accessor :lib_path
15
- attr_accessor :helix_lib_dir
16
22
  attr_accessor :pre_build
17
23
 
18
24
  def initialize(name = nil, gem_spec = nil)
@@ -23,17 +29,6 @@ module HelixRuntime
23
29
 
24
30
  def init(name = nil, gem_spec = nil)
25
31
  @name = name
26
- @debug_rust = ENV['DEBUG_RUST']
27
- @build_root = nil
28
- @lib_path = "lib/#{name}"
29
- end
30
-
31
- def debug_rust?
32
- !!@debug_rust
33
- end
34
-
35
- def build_path
36
- File.expand_path(debug_rust? ? 'target/debug' : 'target/release', build_root)
37
32
  end
38
33
 
39
34
  def define
@@ -45,90 +40,35 @@ module HelixRuntime
45
40
  end
46
41
 
47
42
  task "helix:check_path" do
48
- if IS_WINDOWS
49
- unless dll_path
50
- abort "Unable to find #{dll_filename} in $PATH.\n" \
51
- "Run `rake helix:copy_dll` to copy to your Ruby bin dir or manually copy #{File.expand_path("../native.so", __FILE__)} to #{dll_filename} at a location in your $PATH"
52
- end
53
- else
54
- # No-op
43
+ begin
44
+ HelixRuntime.ensure_dll!
45
+ rescue HelixRuntime::MissingDllError => e
46
+ puts e.message
47
+ abort "Run `rake helix:copy_dll` to copy to your Ruby bin dir."
55
48
  end
56
49
  end
57
50
 
58
51
  task "helix:copy_dll" do
59
- if IS_WINDOWS
60
- so_path = File.expand_path("../native.#{Platform.dlext}", __FILE__)
61
- abort "Unable to find native bundle at #{so_path}" unless File.exists?(so_path)
62
-
63
- bindir = RbConfig::CONFIG['bindir']
64
- abort "Unable to determine Ruby bindir" unless bindir
65
-
66
- cp so_path, File.join(bindir, dll_filename)
67
- else
68
- # No-op
69
- end
52
+ HelixRuntime.copy_dll
70
53
  end
71
54
 
72
- # Checking the path isn't a real dependency, but this is a good time to do it
73
55
  task "cargo:build" => ["helix:pre_build", "helix:check_path"] do
74
- # We have to do this here since Cargo has no internal means of specifying `-C` flags
75
- link_args = if IS_WINDOWS
76
- # SAFESEH is added to i686 Rust hosts
77
- # https://github.com/rust-lang/rust/blob/1.15.1/src/librustc_back/target/i686_pc_windows_msvc.rs#L25
78
- if `rustc -vV` =~ /host:\s+i686/
79
- '/SAFESEH:NO' # Can't use SAFESEH with .libs from dlltool
80
- end
81
- else
82
- # Allowing all methods to be undefined is a bit risky, would be nice to have a specific list.
83
- '-Wl,-undefined,dynamic_lookup'
84
- end
85
-
86
- env = {}
87
- env['HELIX_LIB_DIR'] = helix_lib_dir if helix_lib_dir
88
-
89
- cargo_args = []
90
- rustc_args = []
91
-
92
- if ENV['DEBUG_RUST_MACROS']
93
- rustc_args << "--pretty expanded"
94
- rustc_args << "-Z unstable-options"
95
- end
96
- unless debug_rust?
97
- cargo_args << ["--release"]
98
- end
99
- if ENV['VERBOSE']
100
- cargo_args << " --verbose"
101
- end
102
- if link_args
103
- rustc_args << "-C link-args=#{link_args}"
104
- end
105
-
106
- unless rustc_args.empty?
107
- cargo_args << "-- #{rustc_args.join(' ')}"
108
- end
109
-
110
- sh env, "cargo rustc #{cargo_args.join(' ')}"
56
+ project.cargo_build
111
57
  end
112
58
 
113
59
  task "cargo:clean" do
114
- sh "cargo clean"
60
+ project.cargo_clean
115
61
  end
116
62
 
117
- directory lib_path
118
-
119
- task :clobber => "cargo:clean"
120
-
121
- libfile_prefix = IS_WINDOWS ? '' : 'lib'
122
- native_path = "#{lib_path}/native.#{Platform.dlext}"
123
- native_lib = "#{libfile_prefix}#{name}.#{Platform.libext}"
124
-
125
- file native_path => [lib_path, "cargo:build"] do
126
- cp "#{build_path}/#{native_lib}", native_path
63
+ desc "Build #{name}"
64
+ task :build => ["helix:pre_build", "helix:check_path"] do
65
+ project.build
127
66
  end
128
- CLOBBER.include(native_path)
129
67
 
130
- desc "Build #{name}"
131
- task :build => native_path
68
+ desc "Remove build artifacts"
69
+ task :clobber do
70
+ project.clobber
71
+ end
132
72
 
133
73
  desc "Launch an IRB console for #{name}"
134
74
  task :irb => :build do
@@ -136,23 +76,5 @@ module HelixRuntime
136
76
  end
137
77
  end
138
78
 
139
- private
140
-
141
- def dll_filename
142
- @dll_filename ||= "helix-runtime-#{VERSION.gsub('.', '-')}.#{Platform.libext}"
143
- end
144
-
145
- def dll_path
146
- return nil unless IS_WINDOWS
147
- return @dll_path if @dll_path_searched
148
-
149
- dir = ENV['PATH'].split(';').find do |dir|
150
- File.exist?(File.expand_path("#{dir}/#{dll_filename}", __FILE__))
151
- end
152
-
153
- @dll_path_searched = true
154
- @dll_path = dir ? File.join(dir, dll_filename) : nil
155
- end
156
-
157
79
  end
158
80
  end
@@ -0,0 +1,17 @@
1
+ require 'helix_runtime/cli/bootstrap'
2
+
3
+ module HelixRuntime
4
+ module CLI
5
+ class Base < Thor
6
+ include Thor::Actions
7
+
8
+ register CLI::Bootstrap, "bootstrap", "bootstrap PATH [NAME]", "Bootstrap Helix"
9
+
10
+ desc "add_crate NAME", "Add child project"
11
+ def add_crate(name)
12
+ bootstrap("crates/#{name}", name)
13
+ append_to_file "Gemfile", "gem '#{name}', path: 'crates/#{name}'\n"
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,73 @@
1
+ require 'thor'
2
+
3
+ module HelixRuntime
4
+ module CLI
5
+ class Bootstrap < Thor::Group
6
+ argument :path, type: :string
7
+ argument :name, type: :string, optional: true
8
+ class_option :skip_bundle, type: :boolean, default: false
9
+
10
+ include Thor::Actions
11
+
12
+ desc "Bootstrap Helix"
13
+ source_root File.expand_path("../templates", __FILE__)
14
+
15
+ # NOTE: Instead of using destination_root, we include the full path so
16
+ # that we see the path relative to the root of where we're running the command.
17
+
18
+ def create_cargo_toml
19
+ template "Cargo.toml", "#{base_path}/Cargo.toml"
20
+ end
21
+
22
+ def add_rust_lib_file
23
+ copy_file "lib.rs", "#{base_path}/src/lib.rs"
24
+ end
25
+
26
+ def create_gemspec
27
+ template "gem.gemspec", "#{base_path}/#{app_name}.gemspec"
28
+ end
29
+
30
+ def create_gemfile
31
+ template "Gemfile", "#{base_path}/Gemfile"
32
+ end
33
+
34
+ def add_rake_task
35
+ template "helix_runtime.rake", "#{base_path}/lib/tasks/helix_runtime.rake"
36
+ end
37
+
38
+ def add_ruby_lib_file
39
+ template "lib.rb", "#{base_path}/lib/#{app_name}.rb"
40
+ end
41
+
42
+ def add_gitignore
43
+ template "gitignore", "#{base_path}/.gitignore"
44
+ end
45
+
46
+ def update_rakefile
47
+ unless File.exists?("#{base_path}/Rakefile")
48
+ create_file "#{base_path}/Rakefile", "require 'bundler/setup'\n"
49
+ end
50
+
51
+ append_to_file "#{base_path}/Rakefile", "import 'lib/tasks/helix_runtime.rake'\n"
52
+ end
53
+
54
+ def bundle
55
+ unless options.skip_bundle
56
+ inside path do
57
+ run "bundle"
58
+ end
59
+ end
60
+ end
61
+
62
+ private
63
+
64
+ def base_path
65
+ File.expand_path(path)
66
+ end
67
+
68
+ def app_name
69
+ name || File.basename(base_path)
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,9 @@
1
+ [package]
2
+ name = "<%= app_name %>"
3
+ version = "0.1.0"
4
+
5
+ [lib]
6
+ crate-type = ["cdylib"]
7
+
8
+ [dependencies]
9
+ helix_runtime = "<%= HelixRuntime::VERSION %>"
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = '<%= app_name %>'
5
+ s.version = '1.0.0'
6
+ s.authors = ['Ruby Developer']
7
+ s.summary = "A Helix project"
8
+ s.files = Dir['{lib/**/*,[A-Z]*}']
9
+
10
+ s.platform = Gem::Platform::RUBY
11
+ s.require_path = 'lib'
12
+
13
+ s.add_dependency 'helix_runtime', '~> <%= HelixRuntime::GEM_VERSION %>'
14
+ end
@@ -0,0 +1,4 @@
1
+ target
2
+ tmp
3
+ *.bundle
4
+ *.so
@@ -0,0 +1,5 @@
1
+ require 'helix_runtime/build_task'
2
+
3
+ HelixRuntime::BuildTask.new("<%= app_name %>")
4
+
5
+ task :default => :build
@@ -0,0 +1,7 @@
1
+ require "helix_runtime"
2
+
3
+ begin
4
+ require "<%= app_name %>/native"
5
+ rescue LoadError
6
+ warn "Unable to load <%= app_name %>/native. Please run `rake build`"
7
+ end
@@ -0,0 +1,10 @@
1
+ #[macro_use]
2
+ extern crate helix_runtime as helix;
3
+
4
+ // declare_types! {
5
+ // class MyClass {
6
+ // def hello(&self) {
7
+ // println!("Hello!");
8
+ // }
9
+ // }
10
+ // }
@@ -0,0 +1,35 @@
1
+ require 'rake/tasklib'
2
+ require 'helix_runtime'
3
+
4
+ module HelixRuntime
5
+ # FIXME: I don't like this name
6
+ class ParentBuildTask < Rake::TaskLib
7
+
8
+ def initialize
9
+ define
10
+ end
11
+
12
+ def define
13
+ task :build do
14
+ project.projects.each do |p|
15
+ puts "Building #{p.name}"
16
+ p.build
17
+ end
18
+ end
19
+
20
+ task :clobber do
21
+ project.projects.each do |p|
22
+ puts "Clobbering #{p.name}"
23
+ p.clobber
24
+ end
25
+ end
26
+ end
27
+
28
+ private
29
+
30
+ def project
31
+ @project ||= ParentProject.new(Dir.pwd)
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,40 @@
1
+ module HelixRuntime
2
+ class ParentProject
3
+
4
+ attr_accessor :root
5
+
6
+ def initialize(root)
7
+ @root = find_root(root)
8
+ end
9
+
10
+ def projects
11
+ @projects ||= Dir["#{root}/crates/*"]
12
+ .select{|f| File.directory?(f) }
13
+ .map{|d| Project.new(d) }
14
+ end
15
+
16
+ def ensure_built!
17
+ projects.each(&:ensure_built!)
18
+ end
19
+
20
+ def outdated_build?
21
+ projects.any?(&:outdated_build?)
22
+ end
23
+
24
+ private
25
+
26
+ def find_root(root)
27
+ root = File.expand_path(root)
28
+ dir = root
29
+ loop do
30
+ return dir if !Dir["#{dir}/{Gemfile,*.gemspec}"].empty?
31
+
32
+ new_dir = File.dirname(dir)
33
+ raise "Unable to find root for #{root}" if new_dir == dir
34
+
35
+ dir = new_dir
36
+ end
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,147 @@
1
+ module HelixRuntime
2
+ class Project
3
+
4
+ class OutdatedBuildError < StandardError
5
+ def initialize(name)
6
+ super("\n\nHelix crate '#{name}' is outdated. To resolve this issue, run `rake build` and restart your server.\n\n")
7
+ end
8
+ end
9
+
10
+ attr_accessor :root
11
+ attr_accessor :name
12
+ attr_accessor :helix_lib_dir
13
+ attr_accessor :debug_rust
14
+ attr_accessor :build_root
15
+
16
+ def initialize(root)
17
+ @root = find_root(root)
18
+ @name = File.basename(@root)
19
+ @debug_rust = ENV['DEBUG_RUST']
20
+ @build_root = @root
21
+ end
22
+
23
+ def debug_rust?
24
+ !!debug_rust
25
+ end
26
+
27
+ def build_path
28
+ File.expand_path(debug_rust? ? 'target/debug' : 'target/release', build_root)
29
+ end
30
+
31
+ def lib_path
32
+ "#{root}/lib/#{name}"
33
+ end
34
+
35
+ def libfile_prefix
36
+ IS_WINDOWS ? '' : 'lib'
37
+ end
38
+
39
+ def native_path
40
+ "#{lib_path}/native.#{Platform.dlext}"
41
+ end
42
+
43
+ def native_lib
44
+ "#{libfile_prefix}#{name}.#{Platform.libext}"
45
+ end
46
+
47
+ def outdated_build?
48
+ mtime = Dir["#{root}/src/**/*.rs"].map{|file| File.mtime(file) }.max
49
+ native = "#{root}/lib/#{name}/native.#{Platform.dlext}"
50
+ !File.exist?(native) || File.mtime(native) < mtime
51
+ end
52
+
53
+ def ensure_built!
54
+ raise OutdatedBuildError.new(name) if outdated_build?
55
+ end
56
+
57
+ def autobuild
58
+ build if outdated_build?
59
+ end
60
+
61
+ def cargo_build
62
+ HelixRuntime.ensure_dll!
63
+
64
+ # We have to do this here since Cargo has no internal means of specifying `-C` flags
65
+ link_args = if IS_WINDOWS
66
+ # SAFESEH is added to i686 Rust hosts
67
+ # https://github.com/rust-lang/rust/blob/1.15.1/src/librustc_back/target/i686_pc_windows_msvc.rs#L25
68
+ if `rustc -vV` =~ /host:\s+i686/
69
+ '/SAFESEH:NO' # Can't use SAFESEH with .libs from dlltool
70
+ end
71
+ else
72
+ # Allowing all methods to be undefined is a bit risky, would be nice to have a specific list.
73
+ '-Wl,-undefined,dynamic_lookup'
74
+ end
75
+
76
+ env = {}
77
+ env['HELIX_LIB_DIR'] = helix_lib_dir if helix_lib_dir
78
+
79
+ cargo_args = []
80
+ rustc_args = []
81
+
82
+ if ENV['DEBUG_RUST_MACROS']
83
+ rustc_args << "--pretty expanded"
84
+ rustc_args << "-Z unstable-options"
85
+ end
86
+ unless debug_rust?
87
+ cargo_args << ["--release"]
88
+ end
89
+ if ENV['VERBOSE']
90
+ cargo_args << " --verbose"
91
+ end
92
+ if link_args
93
+ rustc_args << "-C link-args=#{link_args}"
94
+ end
95
+
96
+ unless rustc_args.empty?
97
+ cargo_args << "-- #{rustc_args.join(' ')}"
98
+ end
99
+
100
+ run env, "cargo rustc #{cargo_args.join(' ')}"
101
+ end
102
+
103
+ def cargo_clean
104
+ run("cargo clean")
105
+ end
106
+
107
+ def copy_native
108
+ source = "#{build_path}/#{native_lib}"
109
+ raise "native source doesn't exist, run `cargo_build` first; source=#{source}" unless File.exist?(source)
110
+ FileUtils.mkdir_p(File.dirname(native_path))
111
+ FileUtils.cp source, native_path
112
+ end
113
+
114
+ def build
115
+ cargo_build
116
+ copy_native
117
+ end
118
+
119
+ def clobber
120
+ cargo_clean
121
+ FileUtils.rm_f native_path
122
+ end
123
+
124
+ private
125
+
126
+ def run(*args)
127
+ Dir.chdir(root) do
128
+ puts *args
129
+ system(*args)
130
+ end
131
+ end
132
+
133
+ def find_root(root)
134
+ root = File.expand_path(root)
135
+ dir = root
136
+ loop do
137
+ return dir if File.exist?("#{dir}/Cargo.toml")
138
+
139
+ new_dir = File.dirname(dir)
140
+ raise "Unable to find root for #{root}" if new_dir == dir
141
+
142
+ dir = new_dir
143
+ end
144
+ end
145
+
146
+ end
147
+ end
@@ -1,4 +1,5 @@
1
1
  module HelixRuntime
2
2
  # Also update helix_runtime.c
3
- VERSION = "0.5.0.alpha.1"
3
+ VERSION = "0.5.0-alpha-2"
4
+ GEM_VERSION = VERSION.gsub("-", ".")
4
5
  end
metadata CHANGED
@@ -1,30 +1,44 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: helix_runtime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.alpha.1
4
+ version: 0.5.0.alpha.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yehuda Katz
8
8
  - Godfrey Chan
9
9
  autorequire:
10
- bindir: exe
10
+ bindir: bin
11
11
  cert_chain: []
12
- date: 2017-04-17 00:00:00.000000000 Z
12
+ date: 2017-04-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '10.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '10.0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: thor
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: 0.19.4
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 0.19.4
28
42
  - !ruby/object:Gem::Dependency
29
43
  name: bundler
30
44
  requirement: !ruby/object:Gem::Requirement
@@ -71,7 +85,8 @@ description:
71
85
  email:
72
86
  - wycats@gmail.com
73
87
  - godfreykfc@gmail.com
74
- executables: []
88
+ executables:
89
+ - helix
75
90
  extensions:
76
91
  - ext/helix_runtime/native/extconf.rb
77
92
  extra_rdoc_files: []
@@ -81,6 +96,7 @@ files:
81
96
  - Gemfile
82
97
  - README.md
83
98
  - Rakefile
99
+ - bin/helix
84
100
  - ext/helix_runtime/extconf.rb
85
101
  - ext/helix_runtime/native/extconf.rb
86
102
  - ext/helix_runtime/native/helix_runtime.c
@@ -88,7 +104,19 @@ files:
88
104
  - helix_runtime.gemspec
89
105
  - lib/helix_runtime.rb
90
106
  - lib/helix_runtime/build_task.rb
107
+ - lib/helix_runtime/cli.rb
108
+ - lib/helix_runtime/cli/bootstrap.rb
109
+ - lib/helix_runtime/cli/templates/Cargo.toml
110
+ - lib/helix_runtime/cli/templates/Gemfile
111
+ - lib/helix_runtime/cli/templates/gem.gemspec
112
+ - lib/helix_runtime/cli/templates/gitignore
113
+ - lib/helix_runtime/cli/templates/helix_runtime.rake
114
+ - lib/helix_runtime/cli/templates/lib.rb
115
+ - lib/helix_runtime/cli/templates/lib.rs
116
+ - lib/helix_runtime/parent_build_task.rb
117
+ - lib/helix_runtime/parent_project.rb
91
118
  - lib/helix_runtime/platform.rb
119
+ - lib/helix_runtime/project.rb
92
120
  - lib/helix_runtime/version.rb
93
121
  homepage: https://github.com/tildeio/helix
94
122
  licenses: []
@@ -109,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
137
  version: 1.3.1
110
138
  requirements: []
111
139
  rubyforge_project:
112
- rubygems_version: 2.6.8
140
+ rubygems_version: 2.6.11
113
141
  signing_key:
114
142
  specification_version: 4
115
143
  summary: The Helix Runtime