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.
Files changed (224) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -1
  3. data/ext/enterprise_script_service/libseccomp/.travis.yml +3 -5
  4. data/ext/enterprise_script_service/libseccomp/CHANGELOG +10 -0
  5. data/ext/enterprise_script_service/libseccomp/CREDITS +3 -0
  6. data/ext/enterprise_script_service/libseccomp/README.md +18 -0
  7. data/ext/enterprise_script_service/libseccomp/configure.ac +1 -1
  8. data/ext/enterprise_script_service/libseccomp/include/seccomp-syscalls.h +7 -0
  9. data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +16 -0
  10. data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +16 -0
  11. data/ext/enterprise_script_service/libseccomp/tests/.gitignore +1 -0
  12. data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.c +3 -3
  13. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.c +48 -0
  14. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.py +38 -0
  15. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.tests +11 -0
  16. data/ext/enterprise_script_service/libseccomp/tests/Makefile.am +6 -3
  17. data/ext/enterprise_script_service/libseccomp/tests/regression +4 -0
  18. data/ext/enterprise_script_service/libseccomp/tools/Makefile.am +0 -3
  19. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_sim.c +2 -0
  20. data/ext/enterprise_script_service/mruby/.github/workflows/build.yml +106 -0
  21. data/ext/enterprise_script_service/mruby/.github/workflows/main.yml +24 -0
  22. data/ext/enterprise_script_service/mruby/.gitignore +3 -0
  23. data/ext/enterprise_script_service/mruby/.travis.yml +6 -9
  24. data/ext/enterprise_script_service/mruby/AUTHORS +1 -0
  25. data/ext/enterprise_script_service/mruby/Doxyfile +1 -1
  26. data/ext/enterprise_script_service/mruby/LICENSE +1 -1
  27. data/ext/enterprise_script_service/mruby/README.md +6 -2
  28. data/ext/enterprise_script_service/mruby/appveyor.yml +9 -12
  29. data/ext/enterprise_script_service/mruby/appveyor_config.rb +9 -0
  30. data/ext/enterprise_script_service/mruby/build_config.rb +6 -6
  31. data/ext/enterprise_script_service/mruby/doc/guides/compile.md +6 -2
  32. data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +1 -1
  33. data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +4 -8
  34. data/ext/enterprise_script_service/mruby/doc/limitations.md +10 -10
  35. data/ext/enterprise_script_service/mruby/doc/opcode.md +108 -95
  36. data/ext/enterprise_script_service/mruby/examples/targets/build_config_ArduinoDue.rb +2 -2
  37. data/ext/enterprise_script_service/mruby/examples/targets/build_config_IntelEdison.rb +2 -2
  38. data/ext/enterprise_script_service/mruby/examples/targets/build_config_IntelGalileo.rb +2 -2
  39. data/ext/enterprise_script_service/mruby/examples/targets/build_config_RX630.rb +2 -2
  40. data/ext/enterprise_script_service/mruby/examples/targets/build_config_chipKITMax32.rb +2 -2
  41. data/ext/enterprise_script_service/mruby/examples/targets/build_config_dreamcast_shelf.rb +108 -0
  42. data/ext/enterprise_script_service/mruby/include/mrbconf.h +10 -7
  43. data/ext/enterprise_script_service/mruby/include/mruby.h +11 -9
  44. data/ext/enterprise_script_service/mruby/include/mruby/array.h +4 -0
  45. data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +11 -2
  46. data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +0 -9
  47. data/ext/enterprise_script_service/mruby/include/mruby/common.h +10 -0
  48. data/ext/enterprise_script_service/mruby/include/mruby/compile.h +11 -3
  49. data/ext/enterprise_script_service/mruby/include/mruby/dump.h +1 -17
  50. data/ext/enterprise_script_service/mruby/include/mruby/irep.h +10 -0
  51. data/ext/enterprise_script_service/mruby/include/mruby/istruct.h +4 -1
  52. data/ext/enterprise_script_service/mruby/include/mruby/khash.h +23 -5
  53. data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +1 -0
  54. data/ext/enterprise_script_service/mruby/include/mruby/ops.h +3 -2
  55. data/ext/enterprise_script_service/mruby/include/mruby/string.h +2 -1
  56. data/ext/enterprise_script_service/mruby/include/mruby/value.h +7 -12
  57. data/ext/enterprise_script_service/mruby/include/mruby/version.h +4 -4
  58. data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +2 -30
  59. data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +21 -46
  60. data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +9 -0
  61. data/ext/enterprise_script_service/mruby/lib/mruby/source.rb +3 -1
  62. data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +7 -0
  63. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +0 -31
  64. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +0 -13
  65. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +5 -2
  66. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +0 -1
  67. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +5 -1
  68. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +5 -1
  69. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +7 -11
  70. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +0 -1
  71. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +6 -2
  72. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +6 -2
  73. data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +6 -1
  74. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +76 -48
  75. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +107 -32
  76. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +13153 -0
  77. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +13 -15
  78. data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/src/exception.c +3 -3
  79. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +2 -213
  80. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +21 -0
  81. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +1 -3
  82. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +39 -7
  83. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +2 -8
  84. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +0 -16
  85. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +7 -12
  86. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +76 -30
  87. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +9 -10
  88. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +323 -120
  89. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +18 -12
  90. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +32 -0
  91. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +57 -49
  92. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +15 -17
  93. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +9 -0
  94. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +1 -1
  95. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +3 -12
  96. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +113 -10
  97. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +5 -1
  98. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +2 -2
  99. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +9 -9
  100. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +1 -1
  101. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrbgem.rake +1 -1
  102. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/sockettest.c +3 -2
  103. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +61 -24
  104. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +5 -23
  105. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +3 -3
  106. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +1 -1
  107. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +1 -0
  108. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +6 -5
  109. data/ext/enterprise_script_service/mruby/mrblib/hash.rb +3 -3
  110. data/ext/enterprise_script_service/mruby/src/array.c +11 -0
  111. data/ext/enterprise_script_service/mruby/src/backtrace.c +2 -2
  112. data/ext/enterprise_script_service/mruby/src/class.c +26 -11
  113. data/ext/enterprise_script_service/mruby/src/codedump.c +4 -0
  114. data/ext/enterprise_script_service/mruby/src/debug.c +8 -5
  115. data/ext/enterprise_script_service/mruby/src/dump.c +3 -65
  116. data/ext/enterprise_script_service/mruby/src/error.c +57 -5
  117. data/ext/enterprise_script_service/mruby/src/etc.c +13 -4
  118. data/ext/enterprise_script_service/mruby/src/fmt_fp.c +98 -21
  119. data/ext/enterprise_script_service/mruby/src/gc.c +10 -275
  120. data/ext/enterprise_script_service/mruby/src/hash.c +5 -6
  121. data/ext/enterprise_script_service/mruby/src/kernel.c +2 -2
  122. data/ext/enterprise_script_service/mruby/src/load.c +56 -30
  123. data/ext/enterprise_script_service/mruby/src/numeric.c +22 -10
  124. data/ext/enterprise_script_service/mruby/src/object.c +12 -4
  125. data/ext/enterprise_script_service/mruby/src/print.c +27 -3
  126. data/ext/enterprise_script_service/mruby/src/proc.c +21 -1
  127. data/ext/enterprise_script_service/mruby/src/state.c +34 -11
  128. data/ext/enterprise_script_service/mruby/src/string.c +69 -35
  129. data/ext/enterprise_script_service/mruby/src/symbol.c +12 -10
  130. data/ext/enterprise_script_service/mruby/src/vm.c +21 -30
  131. data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +19 -22
  132. data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +1 -1
  133. data/ext/enterprise_script_service/mruby/tasks/toolchains/android.rake +46 -1
  134. data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +3 -3
  135. data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +6 -6
  136. data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +8 -8
  137. data/ext/enterprise_script_service/mruby/test/assert.rb +5 -4
  138. data/ext/enterprise_script_service/mruby/test/t/ensure.rb +8 -26
  139. data/ext/enterprise_script_service/mruby/test/t/exception.rb +2 -2
  140. data/ext/enterprise_script_service/mruby/test/t/kernel.rb +8 -24
  141. data/ext/enterprise_script_service/mruby/travis_config.rb +0 -14
  142. data/ext/enterprise_script_service/msgpack/.github/depends/boost.sh +56 -0
  143. data/ext/enterprise_script_service/msgpack/.github/workflows/coverage.yml +62 -0
  144. data/ext/enterprise_script_service/msgpack/.github/workflows/gha.yml +304 -0
  145. data/ext/enterprise_script_service/msgpack/CHANGELOG.md +11 -0
  146. data/ext/enterprise_script_service/msgpack/CMakeLists.txt +82 -39
  147. data/ext/enterprise_script_service/msgpack/Files.cmake +22 -12
  148. data/ext/enterprise_script_service/msgpack/QUICKSTART-C.md +26 -29
  149. data/ext/enterprise_script_service/msgpack/README.md +3 -2
  150. data/ext/enterprise_script_service/msgpack/appveyor.yml +6 -2
  151. data/ext/enterprise_script_service/msgpack/ci/build_cmake.sh +3 -1
  152. data/ext/enterprise_script_service/msgpack/cmake/CodeCoverage.cmake +55 -0
  153. data/ext/enterprise_script_service/msgpack/codecov.yml +36 -0
  154. data/ext/enterprise_script_service/msgpack/example/CMakeLists.txt +9 -5
  155. data/ext/enterprise_script_service/msgpack/example/boost/CMakeLists.txt +1 -1
  156. data/ext/enterprise_script_service/msgpack/example/c/CMakeLists.txt +17 -6
  157. data/ext/enterprise_script_service/msgpack/example/c/boundary.c +296 -0
  158. data/ext/enterprise_script_service/msgpack/example/c/jsonconv.c +419 -0
  159. data/ext/enterprise_script_service/msgpack/example/c/simple_c.c +1 -1
  160. data/ext/enterprise_script_service/msgpack/example/cpp03/CMakeLists.txt +3 -3
  161. data/ext/enterprise_script_service/msgpack/example/cpp11/CMakeLists.txt +2 -2
  162. data/ext/enterprise_script_service/msgpack/example/x3/CMakeLists.txt +2 -2
  163. data/ext/enterprise_script_service/msgpack/include/msgpack/pack.h +24 -1
  164. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +5 -4
  165. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp +4 -4
  166. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp +8 -8
  167. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/map.hpp +4 -4
  168. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector.hpp +4 -4
  169. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_char.hpp +8 -8
  170. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +8 -8
  171. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/wstring.hpp +4 -4
  172. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack.hpp +6 -6
  173. data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +2 -2
  174. data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer.h +4 -4
  175. data/ext/enterprise_script_service/msgpack/make_file_list.sh +38 -11
  176. data/ext/enterprise_script_service/msgpack/src/vrefbuffer.c +6 -0
  177. data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +86 -64
  178. data/ext/enterprise_script_service/msgpack/test/array_ref.cpp +4 -0
  179. data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +4 -0
  180. data/ext/enterprise_script_service/msgpack/test/boost_optional.cpp +4 -0
  181. data/ext/enterprise_script_service/msgpack/test/boost_string_ref.cpp +4 -1
  182. data/ext/enterprise_script_service/msgpack/test/boost_string_view.cpp +4 -0
  183. data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +4 -0
  184. data/ext/enterprise_script_service/msgpack/test/buffer.cpp +4 -47
  185. data/ext/enterprise_script_service/msgpack/test/buffer_c.cpp +148 -0
  186. data/ext/enterprise_script_service/msgpack/test/carray.cpp +4 -0
  187. data/ext/enterprise_script_service/msgpack/test/cases.cpp +8 -4
  188. data/ext/enterprise_script_service/msgpack/test/convert.cpp +8 -4
  189. data/ext/enterprise_script_service/msgpack/test/fixint.cpp +4 -0
  190. data/ext/enterprise_script_service/msgpack/test/fixint_c.cpp +4 -0
  191. data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +4 -0
  192. data/ext/enterprise_script_service/msgpack/test/iterator_cpp11.cpp +4 -0
  193. data/ext/enterprise_script_service/msgpack/test/json.cpp +4 -0
  194. data/ext/enterprise_script_service/msgpack/test/limit.cpp +8 -4
  195. data/ext/enterprise_script_service/msgpack/test/msgpack_basic.cpp +4 -0
  196. data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +159 -0
  197. data/ext/enterprise_script_service/msgpack/test/msgpack_container.cpp +4 -0
  198. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +32 -27
  199. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +4 -0
  200. data/ext/enterprise_script_service/msgpack/test/msgpack_stream.cpp +4 -0
  201. data/ext/enterprise_script_service/msgpack/test/msgpack_tuple.cpp +4 -1
  202. data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +4 -0
  203. data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +4 -0
  204. data/ext/enterprise_script_service/msgpack/test/object.cpp +4 -1
  205. data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +12 -8
  206. data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +30 -26
  207. data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +4 -0
  208. data/ext/enterprise_script_service/msgpack/test/raw.cpp +4 -0
  209. data/ext/enterprise_script_service/msgpack/test/reference.cpp +4 -0
  210. data/ext/enterprise_script_service/msgpack/test/reference_cpp11.cpp +4 -0
  211. data/ext/enterprise_script_service/msgpack/test/reference_wrapper_cpp11.cpp +4 -0
  212. data/ext/enterprise_script_service/msgpack/test/shared_ptr_cpp11.cpp +4 -0
  213. data/ext/enterprise_script_service/msgpack/test/size_equal_only.cpp +4 -0
  214. data/ext/enterprise_script_service/msgpack/test/streaming.cpp +8 -4
  215. data/ext/enterprise_script_service/msgpack/test/streaming_c.cpp +4 -0
  216. data/ext/enterprise_script_service/msgpack/test/unique_ptr_cpp11.cpp +4 -0
  217. data/ext/enterprise_script_service/msgpack/test/user_class.cpp +16 -12
  218. data/ext/enterprise_script_service/msgpack/test/version.cpp +4 -0
  219. data/ext/enterprise_script_service/msgpack/test/visitor.cpp +4 -0
  220. data/ext/enterprise_script_service/msgpack/test/zone.cpp +4 -0
  221. data/lib/script_core/version.rb +1 -1
  222. data/script_core.gemspec +1 -1
  223. metadata +23 -9
  224. 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
- char inline_data[ISTRUCT_DATA_SIZE];
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 kh_alloc_##name(mrb_state *mrb, kh_##name##_t *h) \
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*)mrb_malloc(mrb, sizeof(uint8_t)*sz/4+len*sz); \
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
- kh_alloc_##name(mrb, h); \
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
- khint_t kh_put_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key, int *ret) \
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 mrb_utf8_len(const char *str, mrb_int byte_len);
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 0
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 2019
65
+ #define MRUBY_RELEASE_YEAR 2020
66
66
 
67
67
  /*
68
68
  * Release month.
69
69
  */
70
- #define MRUBY_RELEASE_MONTH 11
70
+ #define MRUBY_RELEASE_MONTH 6
71
71
 
72
72
  /*
73
73
  * Release day.
74
74
  */
75
- #define MRUBY_RELEASE_DAY 19
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.map do |gem|
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, :cygwin_filename
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 = '-I%s'
62
- @option_define = '-D%s'
63
- @compile_options = '%{flags} -o %{outfile} -c %{infile}'
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
- if MRUBY_BUILD_HOST_IS_CYGWIN
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
- if MRUBY_BUILD_HOST_IS_CYGWIN
95
- _run compile_options, { :flags => all_flags(_defines, _include_paths, _flags),
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 = '-l%s'
188
- @option_library_path = '-L%s'
189
- @link_options = "%{flags} -o %{outfile} %{objs} %{flags_before_libraries} %{libs} %{flags_after_libraries}"
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
- if MRUBY_BUILD_HOST_IS_CYGWIN
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
- if MRUBY_BUILD_HOST_IS_CYGWIN
213
- _run link_options, { :flags => all_flags(_library_paths, _flags),
214
- :outfile => cygwin_filename(outfile) , :objs => cygwin_filename(objfiles).join(' '),
215
- :flags_before_libraries => [flags_before_libraries, _flags_before_libraries].flatten.join(' '),
216
- :flags_after_libraries => [flags_after_libraries, _flags_after_libraries].flatten.join(' '),
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
- if MRUBY_BUILD_HOST_IS_CYGWIN
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 = '-o %{outfile} %{infile}'
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 = '-L ANSI-C -C -p -j1 -i 1 -g -o -t -N mrb_reserved_word -k"1,3,$" %{infile} > %{outfile}'
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 { |name| ROOT.join('include','mruby','version.h').read.match(/^#define #{name} +"?([\w\. ]+)"?$/)[1] }
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