script_core 0.2.7 → 0.3.0

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 (283) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/Gemfile +2 -2
  4. data/ext/enterprise_script_service/Rakefile +1 -1
  5. data/ext/enterprise_script_service/mruby/.github/workflows/build.yml +117 -74
  6. data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +41 -37
  7. data/ext/enterprise_script_service/mruby/.github/workflows/lint.yml +23 -0
  8. data/ext/enterprise_script_service/mruby/.github/workflows/oss-fuzz.yml +27 -0
  9. data/ext/enterprise_script_service/mruby/.github/workflows/spell-checker.yml +17 -0
  10. data/ext/enterprise_script_service/mruby/.gitlab-ci.yml +3 -3
  11. data/ext/enterprise_script_service/mruby/.markdownlint.yml +16 -0
  12. data/ext/enterprise_script_service/mruby/.travis.yml +2 -2
  13. data/ext/enterprise_script_service/mruby/.yamllint +8 -0
  14. data/ext/enterprise_script_service/mruby/AUTHORS +3 -0
  15. data/ext/enterprise_script_service/mruby/CODEOWNERS +1 -0
  16. data/ext/enterprise_script_service/mruby/CONTRIBUTING.md +6 -13
  17. data/ext/enterprise_script_service/mruby/Doxyfile +4 -4
  18. data/ext/enterprise_script_service/mruby/LICENSE +1 -1
  19. data/ext/enterprise_script_service/mruby/Makefile +1 -1
  20. data/ext/enterprise_script_service/mruby/README.md +4 -14
  21. data/ext/enterprise_script_service/mruby/Rakefile +18 -108
  22. data/ext/enterprise_script_service/mruby/TODO.md +17 -0
  23. data/ext/enterprise_script_service/mruby/appveyor.yml +31 -25
  24. data/ext/enterprise_script_service/mruby/benchmark/bm_ao_render.rb +1 -1
  25. data/ext/enterprise_script_service/mruby/build_config.rb +9 -152
  26. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_ArduinoDue.rb → build_config/ArduinoDue.rb} +2 -19
  27. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelEdison.rb → build_config/IntelEdison.rb} +2 -2
  28. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelGalileo.rb → build_config/IntelGalileo.rb} +1 -18
  29. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_RX630.rb → build_config/RX630.rb} +2 -19
  30. data/ext/enterprise_script_service/mruby/build_config/android_arm64-v8a.rb +11 -0
  31. data/ext/enterprise_script_service/mruby/build_config/android_armeabi.rb +11 -0
  32. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_android_armeabi_v7a_neon_hard.rb → build_config/android_armeabi_v7a_neon_hard.rb} +0 -15
  33. data/ext/enterprise_script_service/mruby/build_config/bench.rb +11 -0
  34. data/ext/enterprise_script_service/mruby/build_config/boxing.rb +21 -0
  35. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_chipKITMax32.rb → build_config/chipKITMax32.rb} +2 -19
  36. data/ext/enterprise_script_service/mruby/{travis_config.rb → build_config/ci/gcc-clang.rb} +10 -10
  37. data/ext/enterprise_script_service/mruby/build_config/ci/msvc.rb +20 -0
  38. data/ext/enterprise_script_service/mruby/build_config/clang-asan.rb +11 -0
  39. data/ext/enterprise_script_service/mruby/build_config/cross-32bit.rb +14 -0
  40. data/ext/enterprise_script_service/mruby/build_config/default.rb +80 -0
  41. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_dreamcast_shelf.rb → build_config/dreamcast_shelf.rb} +5 -19
  42. data/ext/enterprise_script_service/mruby/build_config/gameboyadvance.rb +73 -0
  43. data/ext/enterprise_script_service/mruby/build_config/host-cxx.rb +12 -0
  44. data/ext/enterprise_script_service/mruby/build_config/host-debug.rb +20 -0
  45. data/ext/enterprise_script_service/mruby/build_config/host-gprof.rb +14 -0
  46. data/ext/enterprise_script_service/mruby/build_config/host-m32.rb +15 -0
  47. data/ext/enterprise_script_service/mruby/build_config/host-shared.rb +36 -0
  48. data/ext/enterprise_script_service/mruby/build_config/mrbc.rb +11 -0
  49. data/ext/enterprise_script_service/mruby/build_config/no-float.rb +17 -0
  50. data/ext/enterprise_script_service/mruby/doc/guides/compile.md +138 -49
  51. data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +5 -4
  52. data/ext/enterprise_script_service/mruby/doc/guides/gc-arena-howto.md +1 -1
  53. data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +49 -22
  54. data/ext/enterprise_script_service/mruby/doc/guides/mrbgems.md +31 -14
  55. data/ext/enterprise_script_service/mruby/doc/guides/symbol.md +83 -0
  56. data/ext/enterprise_script_service/mruby/doc/limitations.md +35 -36
  57. data/ext/enterprise_script_service/mruby/doc/mruby3.md +163 -0
  58. data/ext/enterprise_script_service/mruby/doc/opcode.md +93 -107
  59. data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb +1 -1
  60. data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +5 -1
  61. data/ext/enterprise_script_service/mruby/examples/mrbgems/c_extension_example/src/example.c +5 -1
  62. data/ext/enterprise_script_service/mruby/examples/mrbgems/ruby_extension_example/mrblib/example.rb +1 -1
  63. data/ext/enterprise_script_service/mruby/include/mrbconf.h +81 -62
  64. data/ext/enterprise_script_service/mruby/include/mruby.h +137 -96
  65. data/ext/enterprise_script_service/mruby/include/mruby/array.h +23 -6
  66. data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +73 -48
  67. data/ext/enterprise_script_service/mruby/include/mruby/boxing_no.h +8 -8
  68. data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +79 -48
  69. data/ext/enterprise_script_service/mruby/include/mruby/class.h +10 -8
  70. data/ext/enterprise_script_service/mruby/include/mruby/common.h +4 -1
  71. data/ext/enterprise_script_service/mruby/include/mruby/compile.h +13 -7
  72. data/ext/enterprise_script_service/mruby/include/mruby/debug.h +2 -2
  73. data/ext/enterprise_script_service/mruby/include/mruby/dump.h +17 -35
  74. data/ext/enterprise_script_service/mruby/include/mruby/endian.h +44 -0
  75. data/ext/enterprise_script_service/mruby/include/mruby/error.h +39 -5
  76. data/ext/enterprise_script_service/mruby/include/mruby/gc.h +1 -0
  77. data/ext/enterprise_script_service/mruby/include/mruby/hash.h +33 -13
  78. data/ext/enterprise_script_service/mruby/include/mruby/irep.h +64 -14
  79. data/ext/enterprise_script_service/mruby/include/mruby/khash.h +6 -14
  80. data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +36 -63
  81. data/ext/enterprise_script_service/mruby/include/mruby/opcode.h +1 -27
  82. data/ext/enterprise_script_service/mruby/include/mruby/ops.h +27 -23
  83. data/ext/enterprise_script_service/mruby/include/mruby/presym.h +40 -0
  84. data/ext/enterprise_script_service/mruby/include/mruby/presym/disable.h +70 -0
  85. data/ext/enterprise_script_service/mruby/include/mruby/presym/enable.h +37 -0
  86. data/ext/enterprise_script_service/mruby/include/mruby/presym/scanning.h +73 -0
  87. data/ext/enterprise_script_service/mruby/include/mruby/proc.h +80 -13
  88. data/ext/enterprise_script_service/mruby/include/mruby/string.h +10 -15
  89. data/ext/enterprise_script_service/mruby/include/mruby/throw.h +14 -3
  90. data/ext/enterprise_script_service/mruby/include/mruby/value.h +29 -19
  91. data/ext/enterprise_script_service/mruby/include/mruby/variable.h +1 -0
  92. data/ext/enterprise_script_service/mruby/include/mruby/version.h +26 -7
  93. data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +198 -44
  94. data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +55 -37
  95. data/ext/enterprise_script_service/mruby/lib/mruby/build/load_gems.rb +12 -10
  96. data/ext/enterprise_script_service/mruby/lib/{mruby-core-ext.rb → mruby/core_ext.rb} +10 -3
  97. data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +75 -32
  98. data/ext/enterprise_script_service/mruby/lib/mruby/lockfile.rb +1 -1
  99. data/ext/enterprise_script_service/mruby/lib/mruby/presym.rb +132 -0
  100. data/ext/enterprise_script_service/mruby/mrbgems/default-no-fpu.gembox +3 -0
  101. data/ext/enterprise_script_service/mruby/mrbgems/default-no-stdio.gembox +4 -0
  102. data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +9 -88
  103. data/ext/enterprise_script_service/mruby/mrbgems/full-core.gembox +1 -4
  104. data/ext/enterprise_script_service/mruby/mrbgems/math.gembox +10 -0
  105. data/ext/enterprise_script_service/mruby/mrbgems/metaprog.gembox +15 -0
  106. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +1 -1
  107. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +5 -4
  108. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +28 -19
  109. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mruby-config +18 -8
  110. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/mrdb.rb +3 -6
  111. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +10 -10
  112. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +14 -9
  113. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +3 -2
  114. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +4 -3
  115. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +2 -6
  116. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +4 -4
  117. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +23 -5
  118. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +11 -2
  119. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +41 -34
  120. data/ext/enterprise_script_service/mruby/mrbgems/{mruby-compiler → mruby-bin-mrbc}/bintest/mrbc.rb +0 -0
  121. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +3 -4
  122. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +19 -9
  123. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +25 -4
  124. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -1
  125. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +22 -6
  126. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +1 -1
  127. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +2 -2
  128. data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrbgem.rake +5 -0
  129. data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrblib/catch.rb +27 -0
  130. data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +2 -1
  131. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +430 -399
  132. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/keywords +5 -0
  133. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/lex.def +49 -44
  134. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +559 -217
  135. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +4774 -4193
  136. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +18 -19
  137. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +1 -1
  138. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +8 -7
  139. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/test/complex.rb +4 -4
  140. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +1 -0
  141. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +2 -2
  142. data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/mrbgem.rake +2 -2
  143. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +17 -25
  144. data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +18 -13
  145. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +30 -2
  146. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/test/hash.rb +7 -0
  147. data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +2 -2
  148. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/README.md +18 -16
  149. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +2 -2
  150. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file.rb +9 -4
  151. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +2 -2
  152. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +55 -52
  153. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +4 -2
  154. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +99 -87
  155. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +2 -0
  156. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +2 -3
  157. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +1 -1
  158. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +7 -6
  159. data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/src/math.c +13 -12
  160. data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/test/math.rb +5 -4
  161. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +43 -58
  162. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +4 -4
  163. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/README.md +4 -3
  164. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +77 -74
  165. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/test/method.rb +4 -4
  166. data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +14 -13
  167. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +5 -4
  168. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +18 -12
  169. data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/mrbgem.rake +10 -0
  170. data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/src/memsize.c +231 -0
  171. data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/test/memsize.rb +63 -0
  172. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/README.md +15 -18
  173. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +38 -88
  174. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -30
  175. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +62 -26
  176. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +32 -19
  177. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/test/proc.c +1 -1
  178. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/random.c +98 -43
  179. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/test/random.rb +2 -2
  180. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +39 -6
  181. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +20 -40
  182. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/test/range.rb +27 -3
  183. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +11 -17
  184. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +216 -38
  185. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/test/rational.rb +6 -6
  186. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/README.md +6 -4
  187. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +4 -4
  188. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/README.md +3 -2
  189. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/socket.c +47 -45
  190. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +102 -71
  191. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +4 -2
  192. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +23 -1
  193. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +13 -9
  194. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/mrblib/struct.rb +1 -1
  195. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +18 -25
  196. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +6 -5
  197. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +1 -1
  198. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/README.md +0 -1
  199. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/driver.c +5 -5
  200. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +16 -44
  201. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/vformat.c +4 -4
  202. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +27 -27
  203. data/ext/enterprise_script_service/mruby/mrbgems/stdlib-ext.gembox +18 -0
  204. data/ext/enterprise_script_service/mruby/mrbgems/stdlib-io.gembox +12 -0
  205. data/ext/enterprise_script_service/mruby/mrbgems/stdlib.gembox +54 -0
  206. data/ext/enterprise_script_service/mruby/mrblib/10error.rb +4 -0
  207. data/ext/enterprise_script_service/mruby/mrblib/array.rb +17 -9
  208. data/ext/enterprise_script_service/mruby/mrblib/enum.rb +1 -1
  209. data/ext/enterprise_script_service/mruby/mrblib/hash.rb +0 -20
  210. data/ext/enterprise_script_service/mruby/mrblib/init_mrblib.c +0 -11
  211. data/ext/enterprise_script_service/mruby/mrblib/numeric.rb +36 -11
  212. data/ext/enterprise_script_service/mruby/mrblib/range.rb +25 -3
  213. data/ext/enterprise_script_service/mruby/oss-fuzz/mruby_proto_fuzzer.cpp +2 -2
  214. data/ext/enterprise_script_service/mruby/oss-fuzz/proto_to_ruby.h +1 -1
  215. data/ext/enterprise_script_service/mruby/src/array.c +43 -80
  216. data/ext/enterprise_script_service/mruby/src/backtrace.c +16 -17
  217. data/ext/enterprise_script_service/mruby/src/class.c +774 -182
  218. data/ext/enterprise_script_service/mruby/src/codedump.c +223 -198
  219. data/ext/enterprise_script_service/mruby/src/debug.c +6 -6
  220. data/ext/enterprise_script_service/mruby/src/dump.c +466 -141
  221. data/ext/enterprise_script_service/mruby/src/enum.c +1 -1
  222. data/ext/enterprise_script_service/mruby/src/error.c +36 -13
  223. data/ext/enterprise_script_service/mruby/src/etc.c +43 -34
  224. data/ext/enterprise_script_service/mruby/src/fmt_fp.c +5 -6
  225. data/ext/enterprise_script_service/mruby/src/gc.c +73 -71
  226. data/ext/enterprise_script_service/mruby/src/hash.c +1050 -707
  227. data/ext/enterprise_script_service/mruby/src/kernel.c +75 -220
  228. data/ext/enterprise_script_service/mruby/src/load.c +196 -166
  229. data/ext/enterprise_script_service/mruby/src/numeric.c +352 -314
  230. data/ext/enterprise_script_service/mruby/src/object.c +97 -90
  231. data/ext/enterprise_script_service/mruby/src/print.c +4 -3
  232. data/ext/enterprise_script_service/mruby/src/proc.c +48 -56
  233. data/ext/enterprise_script_service/mruby/src/range.c +45 -21
  234. data/ext/enterprise_script_service/mruby/src/state.c +25 -32
  235. data/ext/enterprise_script_service/mruby/src/string.c +59 -101
  236. data/ext/enterprise_script_service/mruby/src/symbol.c +121 -56
  237. data/ext/enterprise_script_service/mruby/src/value_array.h +1 -0
  238. data/ext/enterprise_script_service/mruby/src/variable.c +158 -158
  239. data/ext/enterprise_script_service/mruby/src/vm.c +617 -602
  240. data/ext/enterprise_script_service/mruby/tasks/benchmark.rake +6 -6
  241. data/ext/enterprise_script_service/mruby/tasks/bin.rake +23 -0
  242. data/ext/enterprise_script_service/mruby/tasks/core.rake +12 -0
  243. data/ext/enterprise_script_service/mruby/tasks/doc.rake +50 -38
  244. data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +83 -77
  245. data/ext/enterprise_script_service/mruby/tasks/libmruby.rake +10 -1
  246. data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +13 -1
  247. data/ext/enterprise_script_service/mruby/tasks/mrblib.rake +40 -0
  248. data/ext/enterprise_script_service/mruby/tasks/presym.rake +44 -0
  249. data/ext/enterprise_script_service/mruby/tasks/test.rake +68 -0
  250. data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +6 -5
  251. data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +10 -14
  252. data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +17 -21
  253. data/ext/enterprise_script_service/mruby/test/bintest.rb +5 -5
  254. data/ext/enterprise_script_service/mruby/test/t/argumenterror.rb +16 -0
  255. data/ext/enterprise_script_service/mruby/test/t/array.rb +7 -3
  256. data/ext/enterprise_script_service/mruby/test/t/bs_literal.rb +1 -1
  257. data/ext/enterprise_script_service/mruby/test/t/float.rb +18 -8
  258. data/ext/enterprise_script_service/mruby/test/t/hash.rb +903 -281
  259. data/ext/enterprise_script_service/mruby/test/t/integer.rb +10 -38
  260. data/ext/enterprise_script_service/mruby/test/t/kernel.rb +1 -1
  261. data/ext/enterprise_script_service/mruby/test/t/literals.rb +50 -0
  262. data/ext/enterprise_script_service/mruby/test/t/module.rb +2 -2
  263. data/ext/enterprise_script_service/mruby/test/t/numeric.rb +1 -1
  264. data/ext/enterprise_script_service/mruby/test/t/range.rb +83 -1
  265. data/ext/enterprise_script_service/mruby/test/t/string.rb +4 -0
  266. data/ext/enterprise_script_service/mruby/test/t/superclass.rb +10 -10
  267. data/ext/enterprise_script_service/mruby/test/t/syntax.rb +24 -0
  268. data/ext/enterprise_script_service/mruby/test/t/vformat.rb +3 -3
  269. data/ext/enterprise_script_service/mruby_config.rb +2 -5
  270. data/ext/enterprise_script_service/mruby_engine.cpp +1 -1
  271. data/lib/script_core/version.rb +1 -1
  272. data/spec/script_core_spec.rb +13 -0
  273. metadata +61 -23
  274. data/ext/enterprise_script_service/mruby/.github/workflows/main.yml +0 -24
  275. data/ext/enterprise_script_service/mruby/TODO +0 -8
  276. data/ext/enterprise_script_service/mruby/appveyor_config.rb +0 -46
  277. data/ext/enterprise_script_service/mruby/benchmark/build_config_boxing.rb +0 -28
  278. data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_arm64-v8a.rb +0 -26
  279. data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_armeabi.rb +0 -26
  280. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/kernel.c +0 -30
  281. data/ext/enterprise_script_service/mruby/mrblib/mrblib.rake +0 -18
  282. data/ext/enterprise_script_service/mruby/src/crc.c +0 -39
  283. data/ext/enterprise_script_service/mruby/src/mruby_core.rake +0 -19
@@ -5,14 +5,14 @@ module MRuby
5
5
  $dat_files = []
6
6
 
7
7
  def bm_files
8
- Dir.glob("#{MRUBY_ROOT}/benchmark/bm_*.rb")
8
+ Dir.glob("#{MRUBY_ROOT}/benchmark/bm_*.rb").sort
9
9
  end
10
10
 
11
11
  def build_config_name
12
- if ENV['MRUBY_CONFIG']
12
+ if !ENV['MRUBY_CONFIG'].to_s.empty?
13
13
  File.basename(ENV['MRUBY_CONFIG'], '.rb').gsub('build_config_', '')
14
14
  else
15
- "build"
15
+ "bm"
16
16
  end
17
17
  end
18
18
 
@@ -50,7 +50,7 @@ def plot
50
50
 
51
51
 
52
52
  MRuby.each_target do |target|
53
- next if target.name == 'host'
53
+ next if target.name == 'host' || target.internal?
54
54
  mruby_bin = "#{target.build_dir}/bin/mruby"
55
55
 
56
56
  bm_files.each do |bm_file|
@@ -67,8 +67,8 @@ def plot
67
67
  puts "..."
68
68
 
69
69
  data = (0...MRuby::BENCHMARK_REPEAT).map do |n|
70
- str = %x{(time -f "%e %S %U" #{mruby_bin} #{bm_file}) 2>&1 >/dev/null}
71
- str.split(' ').map(&:to_f)
70
+ str = %x{(time -p #{mruby_bin} #{bm_file}) 2>&1 >/dev/null}
71
+ str.scan(/\d+\.\d+$/).map(&:to_f) # [real, user, sys]
72
72
  end
73
73
 
74
74
  File.open(task.name, "w") do |f|
@@ -0,0 +1,23 @@
1
+ MRuby.each_target do |build|
2
+ if build.host? && build.mrbc_build && !build.gems["mruby-bin-mrbc"]
3
+ exe = build.exefile("#{build.mrbc_build.build_dir}/bin/mrbc")
4
+ build.products << build.define_installer(exe)
5
+ end
6
+
7
+ build.bins.each{|bin| build.products << define_installer_if_needed(bin)}
8
+
9
+ linker_attrs = build.gems.linker_attrs
10
+ build.gems.each do |gem|
11
+ gem.bins.each do |bin|
12
+ exe = build.exefile("#{build.build_dir}/bin/#{bin}")
13
+ objs = Dir["#{gem.dir}/tools/#{bin}/*.{c,cpp,cxx,cc}"].map do |f|
14
+ build.objfile(f.pathmap("#{gem.build_dir}/tools/#{bin}/%n"))
15
+ end
16
+ file exe => objs.concat(build.libraries) do |t|
17
+ build.linker.run t.name, t.prerequisites, *linker_attrs
18
+ end
19
+
20
+ build.products << define_installer_if_needed(bin)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,12 @@
1
+ as_cxx_srcs = %w[vm error gc].map{|name| "#{MRUBY_ROOT}/src/#{name}.c"}
2
+
3
+ MRuby.each_target do
4
+ objs = Dir.glob("#{MRUBY_ROOT}/src/*.c").map do |src|
5
+ if cxx_exception_enabled? && as_cxx_srcs.include?(src)
6
+ compile_as_cxx(src)
7
+ else
8
+ objfile(src.pathmap("#{build_dir}/src/%n"))
9
+ end
10
+ end
11
+ self.libmruby_core_objs << objs
12
+ end
@@ -1,48 +1,60 @@
1
1
  desc 'generate document'
2
- task :doc => [:api_doc, :capi_doc] do
3
-
4
- end
5
-
6
- desc 'generate yard docs'
7
- task :api_doc do
8
- begin
9
- sh "mrbdoc"
10
- rescue
11
- puts "ERROR: To generate yard documentation, you should install yard-mruby gem."
12
- puts " $ gem install yard-mruby yard-coderay"
2
+ task :doc => %w[doc:api doc:capi]
3
+
4
+ namespace :doc do
5
+ desc 'generate yard docs'
6
+ task :api do
7
+ begin
8
+ sh "mrbdoc"
9
+ rescue
10
+ puts "ERROR: To generate yard documentation, you should install yard-mruby gem."
11
+ puts " $ gem install yard-mruby yard-coderay"
12
+ end
13
13
  end
14
- end
15
14
 
16
- desc 'generate doxygen docs'
17
- task :capi_doc do
18
- begin
19
- sh "doxygen Doxyfile"
20
- rescue
21
- puts "ERROR: To generate C API documents, you need Doxygen."
22
- puts " $ sudo apt-get install doxygen"
15
+ desc 'generate doxygen docs'
16
+ task :capi do
17
+ begin
18
+ sh "doxygen Doxyfile"
19
+ rescue
20
+ puts "ERROR: To generate C API documents, you need Doxygen."
21
+ puts " $ sudo apt-get install doxygen"
22
+ end
23
23
  end
24
- end
25
24
 
26
- desc 'clean all built docs'
27
- task :clean_api_doc do
28
- rm_rf 'doc/api'
29
- end
25
+ desc 'clean all built docs'
26
+ task :clean => %w[clean:api clean:capi]
30
27
 
31
- desc 'clean all built docs'
32
- task :clean_capi_doc do
33
- rm_rf 'doc/capi'
34
- end
28
+ namespace :clean do
29
+ desc 'clean yard docs'
30
+ task :api do
31
+ rm_rf 'doc/api'
32
+ end
35
33
 
36
- desc 'clean all built docs'
37
- task :clean_doc => [:clean_api_doc, :clean_capi_doc] do
38
- end
34
+ desc 'clean doxygen docs'
35
+ task :capi do
36
+ rm_rf 'doc/capi'
37
+ end
38
+ end
39
39
 
40
- desc 'clean all built docs'
41
- task :view_api => [:api_doc] do
42
- sh 'xdg-open doc/api/index.html'
43
- end
40
+ namespace :view do
41
+ desc 'open yard docs'
42
+ task :api do
43
+ sh 'xdg-open doc/api/index.html'
44
+ end
44
45
 
45
- desc 'clean all built docs'
46
- task :view_capi => [:capi_doc] do
47
- sh 'xdg-open doc/capi/html/index.html'
46
+ desc 'open doxygen docs'
47
+ task :capi do
48
+ sh 'xdg-open doc/capi/html/index.html'
49
+ end
50
+ end
48
51
  end
52
+
53
+ # deprecated
54
+ task "api_doc" => "doc:api"
55
+ task "capi_doc" => "doc:capi"
56
+ task "clean_doc" => "doc:clean"
57
+ task "clean_api_doc" => "doc:clean:api"
58
+ task "clean_capi_doc" => "doc:clean:capi"
59
+ task "view_api" => "doc:view:api"
60
+ task "view_capi" => "doc:view:capi"
@@ -25,91 +25,97 @@ def run_cmd(cmd)
25
25
  raise 'error' unless system cmd
26
26
  end
27
27
 
28
- desc 'recreate docker images for GitLab builds'
29
- task :gitlab_dockers do
30
- CI_COMPILERS.each do |compiler|
31
- tag = ci_image_tag(compiler)
32
- filename = "Dockerfile.#{tag}"
33
- File.open(filename, 'wb') do |f|
34
- f << "# #{compiler} - #{tag}\n"
35
- f << "FROM #{CI_BASE}\n"
36
- f << "RUN apt-get update && apt-get install -y git ruby2.3 ruby2.3-dev bison\n"
37
- f << "RUN apt-get update && apt-get install -y binutils manpages\n"
38
- f << "RUN apt-get update && apt-get install -y #{compiler}\n"
39
- if compiler['gcc']
40
- f << "RUN apt-get update && apt-get install -y libx32#{compiler}-dev\n"
41
- f << "RUN apt-get update && apt-get install --no-install-recommends -y #{compiler}-multilib\n"
42
- end
43
- f << "RUN dpkg --add-architecture i386\n"
44
- f << "RUN apt-get update && apt-get install -y linux-libc-dev:i386\n"
45
- if compiler['clang']
46
- f << "RUN apt-get update && apt-get install --no-install-recommends -y libc6-dev-i386\n"
47
- f << "RUN apt-get update && apt-get install -y gcc gcc-multilib\n"
28
+ namespace :gitlab do
29
+ desc 'recreate docker images for GitLab builds'
30
+ task :dockers do
31
+ CI_COMPILERS.each do |compiler|
32
+ tag = ci_image_tag(compiler)
33
+ filename = "Dockerfile.#{tag}"
34
+ File.open(filename, 'wb') do |f|
35
+ f << "# #{compiler} - #{tag}\n"
36
+ f << "FROM #{CI_BASE}\n"
37
+ f << "RUN apt-get update && apt-get install -y git ruby2.3 ruby2.3-dev bison\n"
38
+ f << "RUN apt-get update && apt-get install -y binutils manpages\n"
39
+ f << "RUN apt-get update && apt-get install -y #{compiler}\n"
40
+ if compiler['gcc']
41
+ f << "RUN apt-get update && apt-get install -y libx32#{compiler}-dev\n"
42
+ f << "RUN apt-get update && apt-get install --no-install-recommends -y #{compiler}-multilib\n"
43
+ end
44
+ f << "RUN dpkg --add-architecture i386\n"
45
+ f << "RUN apt-get update && apt-get install -y linux-libc-dev:i386\n"
46
+ if compiler['clang']
47
+ f << "RUN apt-get update && apt-get install --no-install-recommends -y libc6-dev-i386\n"
48
+ f << "RUN apt-get update && apt-get install -y gcc gcc-multilib\n"
49
+ end
48
50
  end
51
+ docker_tag = ci_docker_tag(compiler)
52
+ cmd1 = "docker build -t #{docker_tag} -f #{filename} ."
53
+ cmd2 = "docker push #{docker_tag}"
54
+ run_cmd cmd1
55
+ run_cmd cmd2
56
+ File.delete(filename)
49
57
  end
50
- docker_tag = ci_docker_tag(compiler)
51
- cmd1 = "docker build -t #{docker_tag} -f #{filename} ."
52
- cmd2 = "docker push #{docker_tag}"
53
- run_cmd cmd1
54
- run_cmd cmd2
55
- File.delete(filename)
56
58
  end
57
- end
58
59
 
59
- desc 'create build configurations and update .gitlab-ci.yml'
60
- task :gitlab_config do
61
- require 'yaml'
60
+ desc 'create build configurations and update .gitlab-ci.yml'
61
+ task :config do
62
+ require 'yaml'
62
63
 
63
- configs = []
64
- [true, false].each do |mode_32|
65
- ['', 'MRB_USE_FLOAT'].each do |float_conf|
66
- ['', 'MRB_NAN_BOXING', 'MRB_WORD_BOXING'].each do |boxing_conf|
67
- ['', 'MRB_UTF8_STRING'].each do |utf8_conf|
68
- next if (float_conf == 'MRB_USE_FLOAT') && (boxing_conf == 'MRB_NAN_BOXING')
69
- next if (int_conf == 'MRB_INT64') && (boxing_conf == 'MRB_NAN_BOXING')
70
- next if (int_conf == 'MRB_INT64') && (boxing_conf == 'MRB_WORD_BOXING') && mode_32
71
- env = [float_conf, int_conf, boxing_conf, utf8_conf].map do |conf|
72
- conf == '' ? nil : "-D#{conf}=1"
73
- end.compact.join(' ')
74
- bit = mode_32 ? '-m32 ' : ''
75
- _info = ''
76
- _info += mode_32 ? '32bit ' : '64bit '
77
- _info += float_conf['USE'] ? 'float ' : ''
78
- _info += int_conf['16'] ? 'int16 ' : ''
79
- _info += int_conf['64'] ? 'int64 ' : ''
80
- _info += boxing_conf['NAN'] ? 'nan ' : ''
81
- _info += boxing_conf['WORD'] ? 'word ' : ''
82
- _info += utf8_conf['UTF8'] ? 'utf8 ' : ''
83
- _info = _info.gsub(/ +/, ' ').strip.tr(' ', '_')
84
- configs << { '_info' => _info, 'CFLAGS' => "#{bit}#{env}", 'LDFLAGS' => bit.strip.to_s }
64
+ configs = []
65
+ [true, false].each do |mode_32|
66
+ ['', 'MRB_USE_FLOAT32'].each do |float_conf|
67
+ ['', 'MRB_NAN_BOXING', 'MRB_WORD_BOXING'].each do |boxing_conf|
68
+ ['', 'MRB_UTF8_STRING'].each do |utf8_conf|
69
+ next if (float_conf == 'MRB_USE_FLOAT32') && (boxing_conf == 'MRB_NAN_BOXING')
70
+ next if (int_conf == 'MRB_INT64') && (boxing_conf == 'MRB_NAN_BOXING')
71
+ next if (int_conf == 'MRB_INT64') && (boxing_conf == 'MRB_WORD_BOXING') && mode_32
72
+ env = [float_conf, int_conf, boxing_conf, utf8_conf].map do |conf|
73
+ conf == '' ? nil : "-D#{conf}=1"
74
+ end.compact.join(' ')
75
+ bit = mode_32 ? '-m32 ' : ''
76
+ _info = ''
77
+ _info += mode_32 ? '32bit ' : '64bit '
78
+ _info += float_conf['USE'] ? 'float ' : ''
79
+ _info += int_conf['16'] ? 'int16 ' : ''
80
+ _info += int_conf['64'] ? 'int64 ' : ''
81
+ _info += boxing_conf['NAN'] ? 'nan ' : ''
82
+ _info += boxing_conf['WORD'] ? 'word ' : ''
83
+ _info += utf8_conf['UTF8'] ? 'utf8 ' : ''
84
+ _info = _info.gsub(/ +/, ' ').strip.tr(' ', '_')
85
+ configs << { '_info' => _info, 'CFLAGS' => "#{bit}#{env}", 'LDFLAGS' => bit.strip.to_s }
86
+ end
85
87
  end
86
88
  end
87
89
  end
88
- end
89
- path = './.gitlab-ci.yml'
90
- data = YAML.load_file(path)
91
- data.keys.select do |key|
92
- key.start_with? 'Test'
93
- end.each do |key|
94
- data.delete(key)
95
- end
96
- CI_COMPILERS.each do |compiler|
97
- configs.each do |config|
98
- name = "Test #{compiler} #{config['_info']}"
99
- hash = {
100
- 'CC' => compiler,
101
- 'CXX' => compiler.gsub('gcc', 'g++').gsub('clang', 'clang++'),
102
- 'LD' => compiler
103
- }
104
- hash = hash.merge(config)
105
- hash.delete('_info')
106
- data[name] = {
107
- 'stage' => 'test',
108
- 'image' => ci_docker_tag(compiler),
109
- 'variables' => hash,
110
- 'script' => 'env; rake --verbose all test'
111
- }
90
+ path = './.gitlab-ci.yml'
91
+ data = YAML.load_file(path)
92
+ data.keys.select do |key|
93
+ key.start_with? 'Test'
94
+ end.each do |key|
95
+ data.delete(key)
96
+ end
97
+ CI_COMPILERS.each do |compiler|
98
+ configs.each do |config|
99
+ name = "Test #{compiler} #{config['_info']}"
100
+ hash = {
101
+ 'CC' => compiler,
102
+ 'CXX' => compiler.gsub('gcc', 'g++').gsub('clang', 'clang++'),
103
+ 'LD' => compiler
104
+ }
105
+ hash = hash.merge(config)
106
+ hash.delete('_info')
107
+ data[name] = {
108
+ 'stage' => 'test',
109
+ 'image' => ci_docker_tag(compiler),
110
+ 'variables' => hash,
111
+ 'script' => 'env; rake --verbose all test'
112
+ }
113
+ end
112
114
  end
115
+ File.open(path, 'w') { |f| YAML.dump(data, f) }
113
116
  end
114
- File.open(path, 'w') { |f| YAML.dump(data, f) }
115
117
  end
118
+
119
+ # deprecated
120
+ task "gitlab_config" => "gitlab:config"
121
+ task "gitlab_dockers" => "gitlab:dockers"
@@ -1,4 +1,12 @@
1
1
  MRuby.each_target do
2
+ file libmruby_core_static => libmruby_core_objs.flatten do |t|
3
+ archiver.run t.name, t.prerequisites
4
+ end
5
+
6
+ products << libmruby_core_static
7
+
8
+ next unless libmruby_enabled?
9
+
2
10
  file libmruby_static => libmruby_objs.flatten do |t|
3
11
  archiver.run t.name, t.prerequisites
4
12
  end
@@ -21,5 +29,6 @@
21
29
  f.puts "MRUBY_LIBMRUBY_PATH = #{libmruby_static}"
22
30
  end
23
31
  end
24
- task :all => "#{build_dir}/lib/libmruby.flags.mak"
32
+
33
+ products << libmruby_static
25
34
  end
@@ -1,4 +1,6 @@
1
1
  MRuby.each_target do
2
+ active_gems_txt = "#{build_dir}/mrbgems/active_gems.txt"
3
+
2
4
  if enable_gems?
3
5
  # set up all gems
4
6
  gems.each(&:setup)
@@ -7,7 +9,7 @@
7
9
  # loader all gems
8
10
  self.libmruby_objs << objfile("#{build_dir}/mrbgems/gem_init")
9
11
  file objfile("#{build_dir}/mrbgems/gem_init") => ["#{build_dir}/mrbgems/gem_init.c", "#{build_dir}/LEGAL"]
10
- file "#{build_dir}/mrbgems/gem_init.c" => [MRUBY_CONFIG, __FILE__, *Dir.glob("#{build_dir}/mrbgems/mruby-*/*.c")] do |t|
12
+ file "#{build_dir}/mrbgems/gem_init.c" => [active_gems_txt, MRUBY_CONFIG, __FILE__] do |t|
11
13
  mkdir_p "#{build_dir}/mrbgems"
12
14
  open(t.name, 'w') do |f|
13
15
  gem_func_gems = gems.select { |g| g.generate_functions }
@@ -51,6 +53,16 @@
51
53
  end
52
54
  end
53
55
 
56
+ file active_gems_txt => :generate_active_gems_txt
57
+ task :generate_active_gems_txt do |t|
58
+ def t.timestamp; Time.at(0) end
59
+ active_gems = gems.sort_by(&:name).inject(""){|s, g| s << "#{g.name}\n"}
60
+ if !File.exist?(active_gems_txt) || File.read(active_gems_txt) != active_gems
61
+ mkdir_p File.dirname(active_gems_txt)
62
+ File.write(active_gems_txt, active_gems)
63
+ end
64
+ end
65
+
54
66
  # legal documents
55
67
  file "#{build_dir}/LEGAL" => [MRUBY_CONFIG, __FILE__] do |t|
56
68
  mkdir_p File.dirname t.name
@@ -0,0 +1,40 @@
1
+ MRuby.each_target do
2
+ next unless libmruby_enabled?
3
+
4
+ src = "#{build_dir}/mrblib/mrblib.c"
5
+ rbfiles = Dir["#{MRUBY_ROOT}/mrblib/*.rb"].sort!
6
+
7
+ self.libmruby_objs << objfile(src.ext)
8
+
9
+ file src => [mrbcfile, __FILE__, *rbfiles] do |t|
10
+ if presym_enabled?
11
+ cdump = true
12
+ suffix = "proc"
13
+ else
14
+ cdump = false
15
+ suffix = "irep"
16
+ end
17
+ mkdir_p File.dirname(t.name)
18
+ File.open(t.name, 'w') do |f|
19
+ _pp "GEN", "mrblib/*.rb", "#{t.name.relative_path}"
20
+ f.puts %Q[/*]
21
+ f.puts %Q[ * This file is loading the mrblib]
22
+ f.puts %Q[ *]
23
+ f.puts %Q[ * IMPORTANT:]
24
+ f.puts %Q[ * This file was generated!]
25
+ f.puts %Q[ * All manual changes will get lost.]
26
+ f.puts %Q[ */]
27
+ unless presym_enabled?
28
+ f.puts %Q[#include <mruby.h>]
29
+ f.puts %Q[#include <mruby/irep.h>]
30
+ end
31
+ mrbc.run f, rbfiles, "mrblib_#{suffix}", cdump
32
+ f.puts %Q[void]
33
+ f.puts %Q[mrb_init_mrblib(mrb_state *mrb)]
34
+ f.puts %Q[{]
35
+ f.puts %Q[ mrblib_#{suffix}_init_syms(mrb);] if cdump
36
+ f.puts %Q[ mrb_load_#{suffix}(mrb, mrblib_#{suffix});]
37
+ f.puts %Q[}]
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,44 @@
1
+ all_prerequisites = ->(task_name, prereqs) do
2
+ Rake::Task[task_name].prerequisites.each do |prereq_name|
3
+ next if prereqs[prereq_name]
4
+ prereqs[prereq_name] = true
5
+ all_prerequisites.(Rake::Task[prereq_name].name, prereqs)
6
+ end
7
+ end
8
+
9
+ MRuby.each_target do |build|
10
+ gensym_task = task(:gensym)
11
+ next unless build.presym_enabled?
12
+
13
+ presym = build.presym
14
+
15
+ include_dir = "#{build.build_dir}/include"
16
+ build.compilers.each{|c| c.include_paths << include_dir}
17
+ build.gems.each{|gem| gem.compilers.each{|c| c.include_paths << include_dir}}
18
+
19
+ prereqs = {}
20
+ pps = []
21
+ build_dir = "#{build.build_dir}/"
22
+ mrbc_build_dir = "#{build.mrbc_build.build_dir}/" if build.mrbc_build
23
+ build.products.each{|product| all_prerequisites.(product, prereqs)}
24
+ prereqs.each_key do |prereq|
25
+ next unless File.extname(prereq) == build.exts.object
26
+ next unless prereq.start_with?(build_dir)
27
+ next if mrbc_build_dir && prereq.start_with?(mrbc_build_dir)
28
+ pps << prereq.ext(build.exts.presym_preprocessed)
29
+ end
30
+
31
+ file presym.list_path => pps do
32
+ presyms = presym.scan(pps)
33
+ current_presyms = presym.read_list if File.exist?(presym.list_path)
34
+ update = presyms != current_presyms
35
+ presym.write_list(presyms) if update
36
+ mkdir_p presym.header_dir
37
+ %w[id table].each do |type|
38
+ next if !update && File.exist?(presym.send("#{type}_header_path"))
39
+ presym.send("write_#{type}_header", presyms)
40
+ end
41
+ end
42
+
43
+ gensym_task.enhance([presym.list_path])
44
+ end