helix_runtime 0.5.0.alpha.2 → 0.5.0.alpha.3
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 +4 -4
- data/.rspec +2 -2
- data/ext/helix_runtime/native/extconf.rb +7 -7
- data/ext/helix_runtime/native/helix_runtime.c +145 -145
- data/ext/helix_runtime/native/helix_runtime.h +103 -103
- data/lib/helix_runtime/cli.rb +2 -2
- data/lib/helix_runtime/cli/bootstrap.rb +4 -0
- data/lib/helix_runtime/cli/templates/lib.rs +7 -7
- data/lib/helix_runtime/parent_build_task.rb +2 -0
- data/lib/helix_runtime/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68ae586ba4881d2d4fb90ec601a1c78eb66f2079
|
4
|
+
data.tar.gz: c2fa2c6630908957c75a10122bf00cff93d0c590
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6a2310a4de5cd65ac1ae731b19ea21c92a69adecb0a98e1a2a6df9df711846ac39bf264d62b9e30124c705dcd0a44cc54993f74722e086603cb273561f926e6
|
7
|
+
data.tar.gz: 385a78fe6ac0c6d5f188d3986273744471ccb0e914312292b060f4c770e61faa897fbd00a1a0f855b12735dcdc087fb03f838ae252bc830dff0d16c76d2557f9
|
data/.rspec
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
--format documentation
|
2
|
-
--color
|
1
|
+
--format documentation
|
2
|
+
--color
|
@@ -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-
|
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-3";
|
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 */
|
data/lib/helix_runtime/cli.rb
CHANGED
@@ -7,8 +7,8 @@ module HelixRuntime
|
|
7
7
|
|
8
8
|
register CLI::Bootstrap, "bootstrap", "bootstrap PATH [NAME]", "Bootstrap Helix"
|
9
9
|
|
10
|
-
desc "
|
11
|
-
def
|
10
|
+
desc "crate NAME", "Generate a Helix crate"
|
11
|
+
def crate(name)
|
12
12
|
bootstrap("crates/#{name}", name)
|
13
13
|
append_to_file "Gemfile", "gem '#{name}', path: 'crates/#{name}'\n"
|
14
14
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
#[macro_use]
|
2
2
|
extern crate helix_runtime as helix;
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
ruby! {
|
5
|
+
class <%= class_name %> {
|
6
|
+
def hello() {
|
7
|
+
println!("Hello form <%= app_name %>!");
|
8
|
+
}
|
9
|
+
}
|
10
|
+
}
|
@@ -10,6 +10,7 @@ module HelixRuntime
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def define
|
13
|
+
desc "Build Helix projects in crates"
|
13
14
|
task :build do
|
14
15
|
project.projects.each do |p|
|
15
16
|
puts "Building #{p.name}"
|
@@ -17,6 +18,7 @@ module HelixRuntime
|
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
21
|
+
desc "Clobber Helix builds in crates"
|
20
22
|
task :clobber do
|
21
23
|
project.projects.each do |p|
|
22
24
|
puts "Clobbering #{p.name}"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: helix_runtime
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.0.alpha.
|
4
|
+
version: 0.5.0.alpha.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yehuda Katz
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-04-
|
12
|
+
date: 2017-04-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -137,8 +137,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
137
|
version: 1.3.1
|
138
138
|
requirements: []
|
139
139
|
rubyforge_project:
|
140
|
-
rubygems_version: 2.
|
140
|
+
rubygems_version: 2.5.1
|
141
141
|
signing_key:
|
142
142
|
specification_version: 4
|
143
143
|
summary: The Helix Runtime
|
144
144
|
test_files: []
|
145
|
+
has_rdoc:
|