script_core 0.2.5 → 0.2.6

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.
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