script_core 0.2.7 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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