script_core 0.2.5 → 0.2.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +7 -1
- data/ext/enterprise_script_service/libseccomp/.travis.yml +3 -5
- data/ext/enterprise_script_service/libseccomp/CHANGELOG +10 -0
- data/ext/enterprise_script_service/libseccomp/CREDITS +3 -0
- data/ext/enterprise_script_service/libseccomp/README.md +18 -0
- data/ext/enterprise_script_service/libseccomp/configure.ac +1 -1
- data/ext/enterprise_script_service/libseccomp/include/seccomp-syscalls.h +7 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +16 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +16 -0
- data/ext/enterprise_script_service/libseccomp/tests/.gitignore +1 -0
- data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.c +3 -3
- data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.c +48 -0
- data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.py +38 -0
- data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/Makefile.am +6 -3
- data/ext/enterprise_script_service/libseccomp/tests/regression +4 -0
- data/ext/enterprise_script_service/libseccomp/tools/Makefile.am +0 -3
- data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_sim.c +2 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/build.yml +106 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/main.yml +24 -0
- data/ext/enterprise_script_service/mruby/.gitignore +3 -0
- data/ext/enterprise_script_service/mruby/.travis.yml +6 -9
- data/ext/enterprise_script_service/mruby/AUTHORS +1 -0
- data/ext/enterprise_script_service/mruby/Doxyfile +1 -1
- data/ext/enterprise_script_service/mruby/LICENSE +1 -1
- data/ext/enterprise_script_service/mruby/README.md +6 -2
- data/ext/enterprise_script_service/mruby/appveyor.yml +9 -12
- data/ext/enterprise_script_service/mruby/appveyor_config.rb +9 -0
- data/ext/enterprise_script_service/mruby/build_config.rb +6 -6
- data/ext/enterprise_script_service/mruby/doc/guides/compile.md +6 -2
- data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +1 -1
- data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +4 -8
- data/ext/enterprise_script_service/mruby/doc/limitations.md +10 -10
- data/ext/enterprise_script_service/mruby/doc/opcode.md +108 -95
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_ArduinoDue.rb +2 -2
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_IntelEdison.rb +2 -2
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_IntelGalileo.rb +2 -2
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_RX630.rb +2 -2
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_chipKITMax32.rb +2 -2
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_dreamcast_shelf.rb +108 -0
- data/ext/enterprise_script_service/mruby/include/mrbconf.h +10 -7
- data/ext/enterprise_script_service/mruby/include/mruby.h +11 -9
- data/ext/enterprise_script_service/mruby/include/mruby/array.h +4 -0
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +11 -2
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +0 -9
- data/ext/enterprise_script_service/mruby/include/mruby/common.h +10 -0
- data/ext/enterprise_script_service/mruby/include/mruby/compile.h +11 -3
- data/ext/enterprise_script_service/mruby/include/mruby/dump.h +1 -17
- data/ext/enterprise_script_service/mruby/include/mruby/irep.h +10 -0
- data/ext/enterprise_script_service/mruby/include/mruby/istruct.h +4 -1
- data/ext/enterprise_script_service/mruby/include/mruby/khash.h +23 -5
- data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +1 -0
- data/ext/enterprise_script_service/mruby/include/mruby/ops.h +3 -2
- data/ext/enterprise_script_service/mruby/include/mruby/string.h +2 -1
- data/ext/enterprise_script_service/mruby/include/mruby/value.h +7 -12
- data/ext/enterprise_script_service/mruby/include/mruby/version.h +4 -4
- data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +2 -30
- data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +21 -46
- data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +9 -0
- data/ext/enterprise_script_service/mruby/lib/mruby/source.rb +3 -1
- data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +7 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +0 -31
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +0 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +5 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +0 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +5 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +5 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +7 -11
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +0 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +6 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +6 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +6 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +76 -48
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +107 -32
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +13153 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +13 -15
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/src/exception.c +3 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +2 -213
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +21 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +1 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +39 -7
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +2 -8
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +0 -16
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +7 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +76 -30
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +9 -10
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +323 -120
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +18 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +32 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +57 -49
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +15 -17
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +9 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +3 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +113 -10
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +5 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +9 -9
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrbgem.rake +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/sockettest.c +3 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +61 -24
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +5 -23
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +3 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +1 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +6 -5
- data/ext/enterprise_script_service/mruby/mrblib/hash.rb +3 -3
- data/ext/enterprise_script_service/mruby/src/array.c +11 -0
- data/ext/enterprise_script_service/mruby/src/backtrace.c +2 -2
- data/ext/enterprise_script_service/mruby/src/class.c +26 -11
- data/ext/enterprise_script_service/mruby/src/codedump.c +4 -0
- data/ext/enterprise_script_service/mruby/src/debug.c +8 -5
- data/ext/enterprise_script_service/mruby/src/dump.c +3 -65
- data/ext/enterprise_script_service/mruby/src/error.c +57 -5
- data/ext/enterprise_script_service/mruby/src/etc.c +13 -4
- data/ext/enterprise_script_service/mruby/src/fmt_fp.c +98 -21
- data/ext/enterprise_script_service/mruby/src/gc.c +10 -275
- data/ext/enterprise_script_service/mruby/src/hash.c +5 -6
- data/ext/enterprise_script_service/mruby/src/kernel.c +2 -2
- data/ext/enterprise_script_service/mruby/src/load.c +56 -30
- data/ext/enterprise_script_service/mruby/src/numeric.c +22 -10
- data/ext/enterprise_script_service/mruby/src/object.c +12 -4
- data/ext/enterprise_script_service/mruby/src/print.c +27 -3
- data/ext/enterprise_script_service/mruby/src/proc.c +21 -1
- data/ext/enterprise_script_service/mruby/src/state.c +34 -11
- data/ext/enterprise_script_service/mruby/src/string.c +69 -35
- data/ext/enterprise_script_service/mruby/src/symbol.c +12 -10
- data/ext/enterprise_script_service/mruby/src/vm.c +21 -30
- data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +19 -22
- data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +1 -1
- data/ext/enterprise_script_service/mruby/tasks/toolchains/android.rake +46 -1
- data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +3 -3
- data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +6 -6
- data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +8 -8
- data/ext/enterprise_script_service/mruby/test/assert.rb +5 -4
- data/ext/enterprise_script_service/mruby/test/t/ensure.rb +8 -26
- data/ext/enterprise_script_service/mruby/test/t/exception.rb +2 -2
- data/ext/enterprise_script_service/mruby/test/t/kernel.rb +8 -24
- data/ext/enterprise_script_service/mruby/travis_config.rb +0 -14
- data/ext/enterprise_script_service/msgpack/.github/depends/boost.sh +56 -0
- data/ext/enterprise_script_service/msgpack/.github/workflows/coverage.yml +62 -0
- data/ext/enterprise_script_service/msgpack/.github/workflows/gha.yml +304 -0
- data/ext/enterprise_script_service/msgpack/CHANGELOG.md +11 -0
- data/ext/enterprise_script_service/msgpack/CMakeLists.txt +82 -39
- data/ext/enterprise_script_service/msgpack/Files.cmake +22 -12
- data/ext/enterprise_script_service/msgpack/QUICKSTART-C.md +26 -29
- data/ext/enterprise_script_service/msgpack/README.md +3 -2
- data/ext/enterprise_script_service/msgpack/appveyor.yml +6 -2
- data/ext/enterprise_script_service/msgpack/ci/build_cmake.sh +3 -1
- data/ext/enterprise_script_service/msgpack/cmake/CodeCoverage.cmake +55 -0
- data/ext/enterprise_script_service/msgpack/codecov.yml +36 -0
- data/ext/enterprise_script_service/msgpack/example/CMakeLists.txt +9 -5
- data/ext/enterprise_script_service/msgpack/example/boost/CMakeLists.txt +1 -1
- data/ext/enterprise_script_service/msgpack/example/c/CMakeLists.txt +17 -6
- data/ext/enterprise_script_service/msgpack/example/c/boundary.c +296 -0
- data/ext/enterprise_script_service/msgpack/example/c/jsonconv.c +419 -0
- data/ext/enterprise_script_service/msgpack/example/c/simple_c.c +1 -1
- data/ext/enterprise_script_service/msgpack/example/cpp03/CMakeLists.txt +3 -3
- data/ext/enterprise_script_service/msgpack/example/cpp11/CMakeLists.txt +2 -2
- data/ext/enterprise_script_service/msgpack/example/x3/CMakeLists.txt +2 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/pack.h +24 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +5 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp +8 -8
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/map.hpp +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector.hpp +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_char.hpp +8 -8
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +8 -8
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/wstring.hpp +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack.hpp +6 -6
- data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +2 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer.h +4 -4
- data/ext/enterprise_script_service/msgpack/make_file_list.sh +38 -11
- data/ext/enterprise_script_service/msgpack/src/vrefbuffer.c +6 -0
- data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +86 -64
- data/ext/enterprise_script_service/msgpack/test/array_ref.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/boost_optional.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/boost_string_ref.cpp +4 -1
- data/ext/enterprise_script_service/msgpack/test/boost_string_view.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/buffer.cpp +4 -47
- data/ext/enterprise_script_service/msgpack/test/buffer_c.cpp +148 -0
- data/ext/enterprise_script_service/msgpack/test/carray.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/cases.cpp +8 -4
- data/ext/enterprise_script_service/msgpack/test/convert.cpp +8 -4
- data/ext/enterprise_script_service/msgpack/test/fixint.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/fixint_c.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/iterator_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/json.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/limit.cpp +8 -4
- data/ext/enterprise_script_service/msgpack/test/msgpack_basic.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +159 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_container.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +32 -27
- data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_stream.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_tuple.cpp +4 -1
- data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/object.cpp +4 -1
- data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +12 -8
- data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +30 -26
- data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/raw.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/reference.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/reference_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/reference_wrapper_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/shared_ptr_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/size_equal_only.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/streaming.cpp +8 -4
- data/ext/enterprise_script_service/msgpack/test/streaming_c.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/unique_ptr_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/user_class.cpp +16 -12
- data/ext/enterprise_script_service/msgpack/test/version.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/visitor.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/zone.cpp +4 -0
- data/lib/script_core/version.rb +1 -1
- data/script_core.gemspec +1 -1
- metadata +23 -9
- data/ext/enterprise_script_service/msgpack/.travis.yml +0 -258
@@ -49,6 +49,16 @@ typedef struct mrb_irep {
|
|
49
49
|
|
50
50
|
MRB_API mrb_irep *mrb_add_irep(mrb_state *mrb);
|
51
51
|
|
52
|
+
/** load mruby bytecode functions
|
53
|
+
* Please note! Currently due to interactions with the GC calling these functions will
|
54
|
+
* leak one RProc object per function call.
|
55
|
+
* To prevent this save the current memory arena before calling and restore the arena
|
56
|
+
* right after, like so
|
57
|
+
* int ai = mrb_gc_arena_save(mrb);
|
58
|
+
* mrb_value status = mrb_load_irep(mrb, buffer);
|
59
|
+
* mrb_gc_arena_restore(mrb, ai);
|
60
|
+
*/
|
61
|
+
|
52
62
|
/* @param [const uint8_t*] irep code, expected as a literal */
|
53
63
|
MRB_API mrb_value mrb_load_irep(mrb_state*, const uint8_t*);
|
54
64
|
|
@@ -21,7 +21,10 @@ MRB_BEGIN_DECL
|
|
21
21
|
|
22
22
|
struct RIStruct {
|
23
23
|
MRB_OBJECT_HEADER;
|
24
|
-
|
24
|
+
union {
|
25
|
+
intptr_t inline_alignment[3];
|
26
|
+
char inline_data[ISTRUCT_DATA_SIZE];
|
27
|
+
};
|
25
28
|
};
|
26
29
|
|
27
30
|
#define RISTRUCT(obj) ((struct RIStruct*)(mrb_ptr(obj)))
|
@@ -73,6 +73,7 @@ static const uint8_t __m_either[] = {0x03, 0x0c, 0x30, 0xc0};
|
|
73
73
|
void kh_clear_##name(mrb_state *mrb, kh_##name##_t *h); \
|
74
74
|
khint_t kh_get_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key); \
|
75
75
|
khint_t kh_put_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key, int *ret); \
|
76
|
+
void kh_put_prepare_##name(mrb_state *mrb, kh_##name##_t *h); \
|
76
77
|
void kh_resize_##name(mrb_state *mrb, kh_##name##_t *h, khint_t new_n_buckets); \
|
77
78
|
void kh_del_##name(mrb_state *mrb, kh_##name##_t *h, khint_t x); \
|
78
79
|
kh_##name##_t *kh_copy_##name(mrb_state *mrb, kh_##name##_t *h);
|
@@ -95,16 +96,25 @@ kh_fill_flags(uint8_t *p, uint8_t c, size_t len)
|
|
95
96
|
__hash_equal: hash comparation function
|
96
97
|
*/
|
97
98
|
#define KHASH_DEFINE(name, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal) \
|
98
|
-
void
|
99
|
+
mrb_noreturn void mrb_raise_nomemory(mrb_state *mrb); \
|
100
|
+
int kh_alloc_simple_##name(mrb_state *mrb, kh_##name##_t *h) \
|
99
101
|
{ \
|
100
102
|
khint_t sz = h->n_buckets; \
|
101
103
|
size_t len = sizeof(khkey_t) + (kh_is_map ? sizeof(khval_t) : 0); \
|
102
|
-
uint8_t *p = (uint8_t*)
|
104
|
+
uint8_t *p = (uint8_t*)mrb_malloc_simple(mrb, sizeof(uint8_t)*sz/4+len*sz); \
|
105
|
+
if (!p) { return 1; } \
|
103
106
|
h->size = h->n_occupied = 0; \
|
104
107
|
h->keys = (khkey_t *)p; \
|
105
108
|
h->vals = kh_is_map ? (khval_t *)(p+sizeof(khkey_t)*sz) : NULL; \
|
106
109
|
h->ed_flags = p+len*sz; \
|
107
110
|
kh_fill_flags(h->ed_flags, 0xaa, sz/4); \
|
111
|
+
return 0; \
|
112
|
+
} \
|
113
|
+
void kh_alloc_##name(mrb_state *mrb, kh_##name##_t *h) \
|
114
|
+
{ \
|
115
|
+
if (kh_alloc_simple_##name(mrb, h)) { \
|
116
|
+
mrb_raise_nomemory(mrb); \
|
117
|
+
} \
|
108
118
|
} \
|
109
119
|
kh_##name##_t *kh_init_##name##_size(mrb_state *mrb, khint_t size) { \
|
110
120
|
kh_##name##_t *h = (kh_##name##_t*)mrb_calloc(mrb, 1, sizeof(kh_##name##_t)); \
|
@@ -112,7 +122,10 @@ kh_fill_flags(uint8_t *p, uint8_t c, size_t len)
|
|
112
122
|
size = KHASH_MIN_SIZE; \
|
113
123
|
khash_power2(size); \
|
114
124
|
h->n_buckets = size; \
|
115
|
-
|
125
|
+
if (kh_alloc_simple_##name(mrb, h)) { \
|
126
|
+
mrb_free(mrb, h); \
|
127
|
+
mrb_raise_nomemory(mrb); \
|
128
|
+
} \
|
116
129
|
return h; \
|
117
130
|
} \
|
118
131
|
kh_##name##_t *kh_init_##name(mrb_state *mrb) { \
|
@@ -171,12 +184,16 @@ kh_fill_flags(uint8_t *p, uint8_t c, size_t len)
|
|
171
184
|
mrb_free(mrb, old_keys); \
|
172
185
|
} \
|
173
186
|
} \
|
174
|
-
|
187
|
+
void kh_put_prepare_##name(mrb_state *mrb, kh_##name##_t *h) \
|
175
188
|
{ \
|
176
|
-
khint_t k, del_k, step = 0; \
|
177
189
|
if (h->n_occupied >= khash_upper_bound(h)) { \
|
178
190
|
kh_resize_##name(mrb, h, h->n_buckets*2); \
|
179
191
|
} \
|
192
|
+
} \
|
193
|
+
khint_t kh_put_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key, int *ret) \
|
194
|
+
{ \
|
195
|
+
khint_t k, del_k, step = 0; \
|
196
|
+
kh_put_prepare_##name(mrb, h); \
|
180
197
|
k = __hash_func(mrb,key) & khash_mask(h); \
|
181
198
|
del_k = kh_end(h); \
|
182
199
|
while (!__ac_isempty(h->ed_flags, k)) { \
|
@@ -239,6 +256,7 @@ kh_fill_flags(uint8_t *p, uint8_t c, size_t len)
|
|
239
256
|
#define kh_destroy(name, mrb, h) kh_destroy_##name(mrb, h)
|
240
257
|
#define kh_clear(name, mrb, h) kh_clear_##name(mrb, h)
|
241
258
|
#define kh_resize(name, mrb, h, s) kh_resize_##name(mrb, h, s)
|
259
|
+
#define kh_put_prepare(name, mrb, h) kh_put_prepare_##name(mrb, h)
|
242
260
|
#define kh_put(name, mrb, h, k) kh_put_##name(mrb, h, k, NULL)
|
243
261
|
#define kh_put2(name, mrb, h, k, r) kh_put_##name(mrb, h, k, r)
|
244
262
|
#define kh_get(name, mrb, h, k) kh_get_##name(mrb, h, k)
|
@@ -37,6 +37,7 @@ MRB_API mrb_value mrb_fixnum_to_str(mrb_state *mrb, mrb_value x, mrb_int base);
|
|
37
37
|
/* ArgumentError if format string doesn't match /%(\.[0-9]+)?[aAeEfFgG]/ */
|
38
38
|
#ifndef MRB_WITHOUT_FLOAT
|
39
39
|
MRB_API mrb_value mrb_float_to_str(mrb_state *mrb, mrb_value x, const char *fmt);
|
40
|
+
MRB_API int mrb_float_to_cstr(mrb_state *mrb, char *buf, size_t len, const char *fmt, mrb_float f);
|
40
41
|
MRB_API mrb_float mrb_to_flo(mrb_state *mrb, mrb_value x);
|
41
42
|
MRB_API mrb_value mrb_int_value(mrb_state *mrb, mrb_float f);
|
42
43
|
#endif
|
@@ -92,8 +92,8 @@ OPCODE(APOST, BBB) /* *R(a),R(a+1)..R(a+c) = R(a)[b..] */
|
|
92
92
|
OPCODE(INTERN, B) /* R(a) = intern(R(a)) */
|
93
93
|
OPCODE(STRING, BB) /* R(a) = str_dup(Lit(b)) */
|
94
94
|
OPCODE(STRCAT, B) /* str_cat(R(a),R(a+1)) */
|
95
|
-
OPCODE(HASH, BB) /* R(a) = hash_new(R(a),R(a+1)..R(a+b)) */
|
96
|
-
OPCODE(HASHADD, BB) /* R(a) = hash_push(R(a),R(a+1)..R(a+b)) */
|
95
|
+
OPCODE(HASH, BB) /* R(a) = hash_new(R(a),R(a+1)..R(a+b*2-1)) */
|
96
|
+
OPCODE(HASHADD, BB) /* R(a) = hash_push(R(a),R(a+1)..R(a+b*2)) */
|
97
97
|
OPCODE(HASHCAT, B) /* R(a) = hash_cat(R(a),R(a+1)) */
|
98
98
|
OPCODE(LAMBDA, BB) /* R(a) = lambda(SEQ[b],L_LAMBDA) */
|
99
99
|
OPCODE(BLOCK, BB) /* R(a) = lambda(SEQ[b],L_BLOCK) */
|
@@ -115,3 +115,4 @@ OPCODE(EXT1, Z) /* make 1st operand 16bit */
|
|
115
115
|
OPCODE(EXT2, Z) /* make 2nd operand 16bit */
|
116
116
|
OPCODE(EXT3, Z) /* make 1st and 2nd operands 16bit */
|
117
117
|
OPCODE(STOP, Z) /* stop VM */
|
118
|
+
OPCODE(LOADI16, BS) /* R(a) = mrb_int(b) */
|
@@ -465,7 +465,8 @@ mrb_bool mrb_str_beg_len(mrb_int str_len, mrb_int *begp, mrb_int *lenp);
|
|
465
465
|
mrb_value mrb_str_byte_subseq(mrb_state *mrb, mrb_value str, mrb_int beg, mrb_int len);
|
466
466
|
|
467
467
|
#ifdef MRB_UTF8_STRING
|
468
|
-
mrb_int
|
468
|
+
mrb_int mrb_utf8len(const char *str, const char *end);
|
469
|
+
mrb_int mrb_utf8_strlen(const char *str, mrb_int byte_len);
|
469
470
|
#endif
|
470
471
|
|
471
472
|
MRB_END_DECL
|
@@ -34,10 +34,6 @@ typedef uint32_t mrb_sym;
|
|
34
34
|
typedef uint8_t mrb_bool;
|
35
35
|
struct mrb_state;
|
36
36
|
|
37
|
-
#if defined(MRB_INT16) && defined(MRB_INT64)
|
38
|
-
# error "You can't define MRB_INT16 and MRB_INT64 at the same time."
|
39
|
-
#endif
|
40
|
-
|
41
37
|
#if defined _MSC_VER && _MSC_VER < 1800
|
42
38
|
# define PRIo64 "llo"
|
43
39
|
# define PRId64 "lld"
|
@@ -63,14 +59,6 @@ struct mrb_state;
|
|
63
59
|
# define MRB_PRIo PRIo64
|
64
60
|
# define MRB_PRId PRId64
|
65
61
|
# define MRB_PRIx PRIx64
|
66
|
-
#elif defined(MRB_INT16)
|
67
|
-
typedef int16_t mrb_int;
|
68
|
-
# define MRB_INT_BIT 16
|
69
|
-
# define MRB_INT_MIN (INT16_MIN>>MRB_FIXNUM_SHIFT)
|
70
|
-
# define MRB_INT_MAX (INT16_MAX>>MRB_FIXNUM_SHIFT)
|
71
|
-
# define MRB_PRIo PRIo16
|
72
|
-
# define MRB_PRId PRId16
|
73
|
-
# define MRB_PRIx PRIx16
|
74
62
|
#else
|
75
63
|
typedef int32_t mrb_int;
|
76
64
|
# define MRB_INT_BIT 32
|
@@ -161,6 +149,13 @@ typedef void mrb_value;
|
|
161
149
|
|
162
150
|
#endif
|
163
151
|
|
152
|
+
#if defined(MRB_WORD_BOXING) || (defined(MRB_NAN_BOXING) && defined(MRB_64BIT))
|
153
|
+
struct RCptr {
|
154
|
+
MRB_OBJECT_HEADER;
|
155
|
+
void *p;
|
156
|
+
};
|
157
|
+
#endif
|
158
|
+
|
164
159
|
#if defined(MRB_NAN_BOXING)
|
165
160
|
#include "boxing_nan.h"
|
166
161
|
#elif defined(MRB_WORD_BOXING)
|
@@ -47,7 +47,7 @@ MRB_BEGIN_DECL
|
|
47
47
|
/*
|
48
48
|
* Tiny release version number.
|
49
49
|
*/
|
50
|
-
#define MRUBY_RELEASE_TEENY
|
50
|
+
#define MRUBY_RELEASE_TEENY 1
|
51
51
|
|
52
52
|
/*
|
53
53
|
* The mruby version.
|
@@ -62,17 +62,17 @@ MRB_BEGIN_DECL
|
|
62
62
|
/*
|
63
63
|
* Release year.
|
64
64
|
*/
|
65
|
-
#define MRUBY_RELEASE_YEAR
|
65
|
+
#define MRUBY_RELEASE_YEAR 2020
|
66
66
|
|
67
67
|
/*
|
68
68
|
* Release month.
|
69
69
|
*/
|
70
|
-
#define MRUBY_RELEASE_MONTH
|
70
|
+
#define MRUBY_RELEASE_MONTH 6
|
71
71
|
|
72
72
|
/*
|
73
73
|
* Release day.
|
74
74
|
*/
|
75
|
-
#define MRUBY_RELEASE_DAY
|
75
|
+
#define MRUBY_RELEASE_DAY 4
|
76
76
|
|
77
77
|
/*
|
78
78
|
* Release date as a string.
|
@@ -276,14 +276,6 @@ def filename(name)
|
|
276
276
|
end
|
277
277
|
end
|
278
278
|
|
279
|
-
def cygwin_filename(name)
|
280
|
-
if name.is_a?(Array)
|
281
|
-
name.flatten.map { |n| cygwin_filename(n) }
|
282
|
-
else
|
283
|
-
'"%s"' % `cygpath -w "#{filename(name)}"`.strip
|
284
|
-
end
|
285
|
-
end
|
286
|
-
|
287
279
|
def exefile(name)
|
288
280
|
if name.is_a?(Array)
|
289
281
|
name.flatten.map { |n| exefile(n) }
|
@@ -344,7 +336,8 @@ def print_build_summary
|
|
344
336
|
puts " Binaries: #{@bins.join(', ')}" unless @bins.empty?
|
345
337
|
unless @gems.empty?
|
346
338
|
puts " Included Gems:"
|
347
|
-
@gems.
|
339
|
+
gems = @gems.sort_by { |gem| gem.name }
|
340
|
+
gems.each do |gem|
|
348
341
|
gem_version = " - #{gem.version}" if gem.version != '0.0.0'
|
349
342
|
gem_summary = " - #{gem.summary}" if gem.summary
|
350
343
|
puts " #{gem.name}#{gem_version}#{gem_summary}"
|
@@ -395,26 +388,5 @@ def run_test
|
|
395
388
|
@test_runner.run(mrbtest)
|
396
389
|
end
|
397
390
|
end
|
398
|
-
|
399
|
-
def big_endian
|
400
|
-
if @endian
|
401
|
-
puts "Endian has already specified as #{@endian}."
|
402
|
-
return
|
403
|
-
end
|
404
|
-
@endian = :big
|
405
|
-
@mrbc.compile_options += ' -E'
|
406
|
-
compilers.each do |c|
|
407
|
-
c.defines += %w(MRB_ENDIAN_BIG)
|
408
|
-
end
|
409
|
-
end
|
410
|
-
|
411
|
-
def little_endian
|
412
|
-
if @endian
|
413
|
-
puts "Endian has already specified as #{@endian}."
|
414
|
-
return
|
415
|
-
end
|
416
|
-
@endian = :little
|
417
|
-
@mrbc.compile_options += ' -e'
|
418
|
-
end
|
419
391
|
end # CrossBuild
|
420
392
|
end # MRuby
|
@@ -4,7 +4,7 @@ module MRuby
|
|
4
4
|
class Command
|
5
5
|
include Rake::DSL
|
6
6
|
extend Forwardable
|
7
|
-
def_delegators :@build, :filename, :objfile, :libfile, :exefile
|
7
|
+
def_delegators :@build, :filename, :objfile, :libfile, :exefile
|
8
8
|
attr_accessor :build, :command
|
9
9
|
|
10
10
|
def initialize(build)
|
@@ -58,9 +58,9 @@ def initialize(build, source_exts=[])
|
|
58
58
|
@source_exts = source_exts
|
59
59
|
@include_paths = ["#{MRUBY_ROOT}/include"]
|
60
60
|
@defines = %w()
|
61
|
-
@option_include_path =
|
62
|
-
@option_define =
|
63
|
-
@compile_options =
|
61
|
+
@option_include_path = %q[-I"%s"]
|
62
|
+
@option_define = %q[-D"%s"]
|
63
|
+
@compile_options = %q[%{flags} -o "%{outfile}" -c "%{infile}"]
|
64
64
|
@cxx_invalid_flags = []
|
65
65
|
end
|
66
66
|
|
@@ -79,11 +79,7 @@ def search_header(name)
|
|
79
79
|
def all_flags(_defines=[], _include_paths=[], _flags=[])
|
80
80
|
define_flags = [defines, _defines].flatten.map{ |d| option_define % d }
|
81
81
|
include_path_flags = [include_paths, _include_paths].flatten.map do |f|
|
82
|
-
|
83
|
-
option_include_path % cygwin_filename(f)
|
84
|
-
else
|
85
|
-
option_include_path % filename(f)
|
86
|
-
end
|
82
|
+
option_include_path % filename(f)
|
87
83
|
end
|
88
84
|
[flags, define_flags, include_path_flags, _flags].flatten.join(' ')
|
89
85
|
end
|
@@ -91,13 +87,8 @@ def all_flags(_defines=[], _include_paths=[], _flags=[])
|
|
91
87
|
def run(outfile, infile, _defines=[], _include_paths=[], _flags=[])
|
92
88
|
mkdir_p File.dirname(outfile)
|
93
89
|
_pp "CC", infile.relative_path, outfile.relative_path
|
94
|
-
|
95
|
-
|
96
|
-
:infile => cygwin_filename(infile), :outfile => cygwin_filename(outfile) }
|
97
|
-
else
|
98
|
-
_run compile_options, { :flags => all_flags(_defines, _include_paths, _flags),
|
99
|
-
:infile => filename(infile), :outfile => filename(outfile) }
|
100
|
-
end
|
90
|
+
_run compile_options, { :flags => all_flags(_defines, _include_paths, _flags),
|
91
|
+
:infile => filename(infile), :outfile => filename(outfile) }
|
101
92
|
end
|
102
93
|
|
103
94
|
def define_rules(build_dir, source_dir='')
|
@@ -184,18 +175,14 @@ def initialize(build)
|
|
184
175
|
@flags_before_libraries, @flags_after_libraries = [], []
|
185
176
|
@libraries = []
|
186
177
|
@library_paths = []
|
187
|
-
@option_library =
|
188
|
-
@option_library_path =
|
189
|
-
@link_options =
|
178
|
+
@option_library = %q[-l"%s"]
|
179
|
+
@option_library_path = %q[-L"%s"]
|
180
|
+
@link_options = %Q[%{flags} -o "%{outfile}" %{objs} %{flags_before_libraries} %{libs} %{flags_after_libraries}]
|
190
181
|
end
|
191
182
|
|
192
183
|
def all_flags(_library_paths=[], _flags=[])
|
193
184
|
library_path_flags = [library_paths, _library_paths].flatten.map do |f|
|
194
|
-
|
195
|
-
option_library_path % cygwin_filename(f)
|
196
|
-
else
|
197
|
-
option_library_path % filename(f)
|
198
|
-
end
|
185
|
+
option_library_path % filename(f)
|
199
186
|
end
|
200
187
|
[flags, library_path_flags, _flags].flatten.join(' ')
|
201
188
|
end
|
@@ -209,19 +196,11 @@ def run(outfile, objfiles, _libraries=[], _library_paths=[], _flags=[], _flags_b
|
|
209
196
|
library_flags = [libraries, _libraries].flatten.map { |d| option_library % d }
|
210
197
|
|
211
198
|
_pp "LD", outfile.relative_path
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
:libs => library_flags.join(' ') }
|
218
|
-
else
|
219
|
-
_run link_options, { :flags => all_flags(_library_paths, _flags),
|
220
|
-
:outfile => filename(outfile) , :objs => filename(objfiles).join(' '),
|
221
|
-
:flags_before_libraries => [flags_before_libraries, _flags_before_libraries].flatten.join(' '),
|
222
|
-
:flags_after_libraries => [flags_after_libraries, _flags_after_libraries].flatten.join(' '),
|
223
|
-
:libs => library_flags.join(' ') }
|
224
|
-
end
|
199
|
+
_run link_options, { :flags => all_flags(_library_paths, _flags),
|
200
|
+
:outfile => filename(outfile) , :objs => filename(objfiles).map{|f| %Q["#{f}"]}.join(' '),
|
201
|
+
:flags_before_libraries => [flags_before_libraries, _flags_before_libraries].flatten.join(' '),
|
202
|
+
:flags_after_libraries => [flags_after_libraries, _flags_after_libraries].flatten.join(' '),
|
203
|
+
:libs => library_flags.join(' ') }
|
225
204
|
end
|
226
205
|
end
|
227
206
|
|
@@ -231,17 +210,13 @@ class Command::Archiver < Command
|
|
231
210
|
def initialize(build)
|
232
211
|
super
|
233
212
|
@command = ENV['AR'] || 'ar'
|
234
|
-
@archive_options = 'rs %{outfile} %{objs}'
|
213
|
+
@archive_options = 'rs "%{outfile}" %{objs}'
|
235
214
|
end
|
236
215
|
|
237
216
|
def run(outfile, objfiles)
|
238
217
|
mkdir_p File.dirname(outfile)
|
239
218
|
_pp "AR", outfile.relative_path
|
240
|
-
|
241
|
-
_run archive_options, { :outfile => cygwin_filename(outfile), :objs => cygwin_filename(objfiles).join(' ') }
|
242
|
-
else
|
243
|
-
_run archive_options, { :outfile => filename(outfile), :objs => filename(objfiles).join(' ') }
|
244
|
-
end
|
219
|
+
_run archive_options, { :outfile => filename(outfile), :objs => filename(objfiles).map{|f| %Q["#{f}"]}.join(' ') }
|
245
220
|
end
|
246
221
|
end
|
247
222
|
|
@@ -251,7 +226,7 @@ class Command::Yacc < Command
|
|
251
226
|
def initialize(build)
|
252
227
|
super
|
253
228
|
@command = 'bison'
|
254
|
-
@compile_options =
|
229
|
+
@compile_options = %q[-o "%{outfile}" "%{infile}"]
|
255
230
|
end
|
256
231
|
|
257
232
|
def run(outfile, infile)
|
@@ -267,7 +242,7 @@ class Command::Gperf < Command
|
|
267
242
|
def initialize(build)
|
268
243
|
super
|
269
244
|
@command = 'gperf'
|
270
|
-
@compile_options =
|
245
|
+
@compile_options = %q[-L ANSI-C -C -p -j1 -i 1 -g -o -t -N mrb_reserved_word -k"1,3,$" "%{infile}" > "%{outfile}"]
|
271
246
|
end
|
272
247
|
|
273
248
|
def run(outfile, infile)
|
@@ -341,7 +316,7 @@ def run(out, infiles, funcname)
|
|
341
316
|
infiles.each do |f|
|
342
317
|
_pp "MRBC", f.relative_path, nil, :indent => 2
|
343
318
|
end
|
344
|
-
cmd = "#{filename @command} #{@compile_options % {:funcname => funcname}} #{filename(infiles).join(' ')}
|
319
|
+
cmd = %Q["#{filename @command}" #{@compile_options % {:funcname => funcname}} #{filename(infiles).map{|f| %Q["#{f}"]}.join(' ')}]
|
345
320
|
puts cmd if Rake.verbose
|
346
321
|
IO.popen(cmd, 'r+') do |io|
|
347
322
|
out.puts io.read
|
@@ -106,6 +106,15 @@ def setup_compilers
|
|
106
106
|
define_gem_init_builder if @generate_functions
|
107
107
|
end
|
108
108
|
|
109
|
+
def for_windows?
|
110
|
+
if build.kind_of?(MRuby::CrossBuild)
|
111
|
+
return %w(x86_64-w64-mingw32 i686-w64-mingw32).include?(build.host_target)
|
112
|
+
elsif build.kind_of?(MRuby::Build)
|
113
|
+
return ('A'..'Z').to_a.any? { |vol| Dir.exist?("#{vol}:") }
|
114
|
+
end
|
115
|
+
return false
|
116
|
+
end
|
117
|
+
|
109
118
|
def add_dependency(name, *requirements)
|
110
119
|
default_gem = requirements.last.kind_of?(Hash) ? requirements.pop : nil
|
111
120
|
requirements = ['>= 0.0.0'] if requirements.empty?
|
@@ -6,7 +6,9 @@ module Source
|
|
6
6
|
ROOT = Pathname.new(File.expand_path('../../../',__FILE__))
|
7
7
|
|
8
8
|
# Reads a constant defined at version.h
|
9
|
-
MRUBY_READ_VERSION_CONSTANT = Proc.new
|
9
|
+
MRUBY_READ_VERSION_CONSTANT = Proc.new do |name|
|
10
|
+
ROOT.join('include','mruby','version.h').read.match(/^#define #{name} +"?([\w\. ]+)"?\r?$/)[1]
|
11
|
+
end
|
10
12
|
|
11
13
|
MRUBY_RUBY_VERSION = MRUBY_READ_VERSION_CONSTANT['MRUBY_RUBY_VERSION']
|
12
14
|
MRUBY_RUBY_ENGINE = MRUBY_READ_VERSION_CONSTANT['MRUBY_RUBY_ENGINE']
|
@@ -71,6 +71,10 @@ MRuby::GemBox.new do |conf|
|
|
71
71
|
# Use toplevel object (main) methods extension
|
72
72
|
conf.gem :core => "mruby-toplevel-ext"
|
73
73
|
|
74
|
+
# Use Rational/Complex numbers
|
75
|
+
conf.gem :core => "mruby-rational"
|
76
|
+
conf.gem :core => "mruby-complex"
|
77
|
+
|
74
78
|
# Generate mirb command
|
75
79
|
conf.gem :core => "mruby-bin-mirb"
|
76
80
|
|
@@ -89,6 +93,9 @@ MRuby::GemBox.new do |conf|
|
|
89
93
|
# Use Method/UnboundMethod class
|
90
94
|
conf.gem :core => "mruby-method"
|
91
95
|
|
96
|
+
# Use eval()
|
97
|
+
conf.gem :core => "mruby-eval"
|
98
|
+
|
92
99
|
# Use mruby-compiler to build other mrbgems
|
93
100
|
conf.gem :core => "mruby-compiler"
|
94
101
|
end
|