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
@@ -1,5 +1,7 @@
1
- #assert('Kernel.sprintf') do
2
- #end
1
+ assert('sprintf invalid') do
2
+ assert_raise(ArgumentError) { sprintf('%1$*d', 3) }
3
+ assert_raise(ArgumentError) { sprintf('%1$.*d', 3) }
4
+ end
3
5
 
4
6
  assert('String#%') do
5
7
  assert_equal "one=1", "one=%d" % 1
@@ -422,7 +422,6 @@ def upto(max, exclusive=false, &block)
422
422
  # both edges are all digits
423
423
  bi = self.to_i(10)
424
424
  ei = max.to_i(10)
425
- len = self.length
426
425
  if (bi > 0 or bi == "0"*len) and (ei > 0 or ei == "0"*maxlen)
427
426
  while bi <= ei
428
427
  break if exclusive and bi == ei
@@ -444,4 +443,27 @@ def upto(max, exclusive=false, &block)
444
443
  end
445
444
  self
446
445
  end
446
+
447
+ def __upto_endless(&block)
448
+ return to_enum(:__upto_endless) unless block
449
+
450
+ len = self.length
451
+ # both edges are all digits
452
+ bi = self.to_i(10)
453
+ if bi > 0 or bi == "0"*len
454
+ while true
455
+ s = bi.to_s
456
+ s = s.rjust(len, "0") if s.length < len
457
+ yield s
458
+ bi += 1
459
+ end
460
+ return self
461
+ end
462
+ bs = self
463
+ while true
464
+ yield bs
465
+ bs = bs.succ
466
+ end
467
+ self
468
+ end
447
469
  end
@@ -12,7 +12,7 @@
12
12
  #define ENC_COMP_P(enc, enc_lit) \
13
13
  str_casecmp_p(RSTRING_PTR(enc), RSTRING_LEN(enc), enc_lit, sizeof(enc_lit"")-1)
14
14
 
15
- #ifdef MRB_WITHOUT_FLOAT
15
+ #ifdef MRB_NO_FLOAT
16
16
  # define mrb_float_p(o) FALSE
17
17
  #endif
18
18
 
@@ -166,7 +166,7 @@ mrb_str_concat_m(mrb_state *mrb, mrb_value self)
166
166
  {
167
167
  mrb_value str = mrb_get_arg1(mrb);
168
168
 
169
- if (mrb_fixnum_p(str) || mrb_float_p(str))
169
+ if (mrb_integer_p(str) || mrb_float_p(str))
170
170
  #ifdef MRB_UTF8_STRING
171
171
  str = int_chr_utf8(mrb, str);
172
172
  #else
@@ -194,7 +194,8 @@ mrb_str_concat_m(mrb_state *mrb, mrb_value self)
194
194
  static mrb_value
195
195
  mrb_str_start_with(mrb_state *mrb, mrb_value self)
196
196
  {
197
- mrb_value *argv, sub;
197
+ const mrb_value *argv;
198
+ mrb_value sub;
198
199
  mrb_int argc, i;
199
200
  mrb_get_args(mrb, "*", &argv, &argc);
200
201
 
@@ -223,7 +224,8 @@ mrb_str_start_with(mrb_state *mrb, mrb_value self)
223
224
  static mrb_value
224
225
  mrb_str_end_with(mrb_state *mrb, mrb_value self)
225
226
  {
226
- mrb_value *argv, sub;
227
+ const mrb_value *argv;
228
+ mrb_value sub;
227
229
  mrb_int argc, i;
228
230
  mrb_get_args(mrb, "*", &argv, &argc);
229
231
 
@@ -1072,7 +1074,8 @@ static mrb_value
1072
1074
  mrb_str_del_prefix_bang(mrb_state *mrb, mrb_value self)
1073
1075
  {
1074
1076
  mrb_int plen, slen;
1075
- char *ptr, *s;
1077
+ const char *ptr;
1078
+ char *s;
1076
1079
  struct RString *str = RSTRING(self);
1077
1080
 
1078
1081
  mrb_get_args(mrb, "s", &ptr, &plen);
@@ -1105,7 +1108,7 @@ static mrb_value
1105
1108
  mrb_str_del_prefix(mrb_state *mrb, mrb_value self)
1106
1109
  {
1107
1110
  mrb_int plen, slen;
1108
- char *ptr;
1111
+ const char *ptr;
1109
1112
 
1110
1113
  mrb_get_args(mrb, "s", &ptr, &plen);
1111
1114
  slen = RSTRING_LEN(self);
@@ -1129,7 +1132,8 @@ static mrb_value
1129
1132
  mrb_str_del_suffix_bang(mrb_state *mrb, mrb_value self)
1130
1133
  {
1131
1134
  mrb_int plen, slen;
1132
- char *ptr, *s;
1135
+ const char *ptr;
1136
+ char *s;
1133
1137
  struct RString *str = RSTRING(self);
1134
1138
 
1135
1139
  mrb_get_args(mrb, "s", &ptr, &plen);
@@ -1160,7 +1164,7 @@ static mrb_value
1160
1164
  mrb_str_del_suffix(mrb_state *mrb, mrb_value self)
1161
1165
  {
1162
1166
  mrb_int plen, slen;
1163
- char *ptr;
1167
+ const char *ptr;
1164
1168
 
1165
1169
  mrb_get_args(mrb, "s", &ptr, &plen);
1166
1170
  slen = RSTRING_LEN(self);
@@ -1229,7 +1233,7 @@ mrb_mruby_string_ext_gem_init(mrb_state* mrb)
1229
1233
 
1230
1234
  mrb_define_method(mrb, s, "__lines", mrb_str_lines, MRB_ARGS_NONE());
1231
1235
 
1232
- mrb_define_method(mrb, mrb_module_get(mrb, "Integral"), "chr", mrb_int_chr, MRB_ARGS_OPT(1));
1236
+ mrb_define_method(mrb, mrb_class_get(mrb, "Integer"), "chr", mrb_int_chr, MRB_ARGS_OPT(1));
1233
1237
  }
1234
1238
 
1235
1239
  void
@@ -20,7 +20,7 @@ def each(&block)
20
20
 
21
21
  ##
22
22
  # Calls the given block for each element of +self+
23
- # and pass the name and value of the respectiev
23
+ # and pass the name and value of the respective
24
24
  # element.
25
25
  #
26
26
  # ISO 15.2.18.4.5
@@ -13,6 +13,7 @@
13
13
  #include <mruby/hash.h>
14
14
  #include <mruby/range.h>
15
15
  #include <mruby/proc.h>
16
+ #include <mruby/presym.h>
16
17
 
17
18
  #define RSTRUCT_LEN(st) RARRAY_LEN(st)
18
19
  #define RSTRUCT_PTR(st) RARRAY_PTR(st)
@@ -20,7 +21,7 @@
20
21
  static struct RClass *
21
22
  struct_class(mrb_state *mrb)
22
23
  {
23
- return mrb_class_get(mrb, "Struct");
24
+ return mrb_class_get_id(mrb, MRB_SYM(Struct));
24
25
  }
25
26
 
26
27
  static inline mrb_value
@@ -42,7 +43,7 @@ struct_ivar_get(mrb_state *mrb, mrb_value cls, mrb_sym id)
42
43
  static mrb_value
43
44
  struct_s_members(mrb_state *mrb, struct RClass *klass)
44
45
  {
45
- mrb_value members = struct_ivar_get(mrb, mrb_obj_value(klass), mrb_intern_lit(mrb, "__members__"));
46
+ mrb_value members = struct_ivar_get(mrb, mrb_obj_value(klass), MRB_SYM(__members__));
46
47
 
47
48
  if (mrb_nil_p(members)) {
48
49
  mrb_raise(mrb, E_TYPE_ERROR, "uninitialized struct");
@@ -113,7 +114,7 @@ mrb_struct_members(mrb_state *mrb, mrb_value obj)
113
114
  static mrb_value
114
115
  mrb_struct_ref(mrb_state *mrb, mrb_value obj)
115
116
  {
116
- mrb_int i = mrb_fixnum(mrb_proc_cfunc_env_get(mrb, 0));
117
+ mrb_int i = mrb_integer(mrb_proc_cfunc_env_get(mrb, 0));
117
118
  mrb_value *ptr = RSTRUCT_PTR(obj);
118
119
 
119
120
  if (!ptr) return mrb_nil_value();
@@ -152,7 +153,7 @@ mrb_id_attrset(mrb_state *mrb, mrb_sym id)
152
153
  static mrb_value
153
154
  mrb_struct_set_m(mrb_state *mrb, mrb_value obj)
154
155
  {
155
- mrb_int i = mrb_fixnum(mrb_proc_cfunc_env_get(mrb, 0));
156
+ mrb_int i = mrb_integer(mrb_proc_cfunc_env_get(mrb, 0));
156
157
  mrb_value *ptr;
157
158
  mrb_value val = mrb_get_arg1(mrb);
158
159
 
@@ -214,7 +215,7 @@ make_struct(mrb_state *mrb, mrb_value name, mrb_value members, struct RClass *kl
214
215
  }
215
216
  MRB_SET_INSTANCE_TT(c, MRB_TT_ARRAY);
216
217
  nstr = mrb_obj_value(c);
217
- mrb_iv_set(mrb, nstr, mrb_intern_lit(mrb, "__members__"), members);
218
+ mrb_iv_set(mrb, nstr, MRB_SYM(__members__), members);
218
219
 
219
220
  mrb_define_class_method(mrb, c, "new", mrb_instance_new, MRB_ARGS_ANY());
220
221
  mrb_define_class_method(mrb, c, "[]", mrb_instance_new, MRB_ARGS_ANY());
@@ -262,12 +263,12 @@ static mrb_value
262
263
  mrb_struct_s_def(mrb_state *mrb, mrb_value klass)
263
264
  {
264
265
  mrb_value name, rest;
265
- mrb_value *pargv;
266
+ const mrb_value *pargv;
266
267
  mrb_int argcnt;
267
268
  mrb_int i;
268
269
  mrb_value b, st;
269
270
  mrb_sym id;
270
- mrb_value *argv;
271
+ const mrb_value *argv;
271
272
  mrb_int argc;
272
273
 
273
274
  name = mrb_nil_value();
@@ -310,7 +311,7 @@ num_members(mrb_state *mrb, struct RClass *klass)
310
311
  {
311
312
  mrb_value members;
312
313
 
313
- members = struct_ivar_get(mrb, mrb_obj_value(klass), mrb_intern_lit(mrb, "__members__"));
314
+ members = struct_ivar_get(mrb, mrb_obj_value(klass), MRB_SYM(__members__));
314
315
  if (!mrb_array_p(members)) {
315
316
  mrb_raise(mrb, E_TYPE_ERROR, "broken members");
316
317
  }
@@ -321,7 +322,7 @@ num_members(mrb_state *mrb, struct RClass *klass)
321
322
  /*
322
323
  */
323
324
  static mrb_value
324
- mrb_struct_initialize_withArg(mrb_state *mrb, mrb_int argc, mrb_value *argv, mrb_value self)
325
+ mrb_struct_initialize_withArg(mrb_state *mrb, mrb_int argc, const mrb_value *argv, mrb_value self)
325
326
  {
326
327
  struct RClass *klass = mrb_obj_class(mrb, self);
327
328
  mrb_int i, n;
@@ -343,7 +344,7 @@ mrb_struct_initialize_withArg(mrb_state *mrb, mrb_int argc, mrb_value *argv, mrb
343
344
  static mrb_value
344
345
  mrb_struct_initialize(mrb_state *mrb, mrb_value self)
345
346
  {
346
- mrb_value *argv;
347
+ const mrb_value *argv;
347
348
  mrb_int argc;
348
349
 
349
350
  mrb_get_args(mrb, "*!", &argv, &argc);
@@ -428,12 +429,8 @@ mrb_struct_aref(mrb_state *mrb, mrb_value s)
428
429
  mrb_value idx = mrb_get_arg1(mrb);
429
430
 
430
431
  if (mrb_string_p(idx)) {
431
- mrb_value sym = mrb_check_intern_str(mrb, idx);
432
-
433
- if (mrb_nil_p(sym)) {
434
- mrb_name_error(mrb, mrb_intern_str(mrb, idx), "no member '%v' in struct", idx);
435
- }
436
- idx = sym;
432
+ mrb_sym sym = mrb_intern_str(mrb, idx);
433
+ idx = mrb_symbol_value(sym);
437
434
  }
438
435
  if (mrb_symbol_p(idx)) {
439
436
  return struct_aref_sym(mrb, s, mrb_symbol(idx));
@@ -495,12 +492,8 @@ mrb_struct_aset(mrb_state *mrb, mrb_value s)
495
492
  mrb_get_args(mrb, "oo", &idx, &val);
496
493
 
497
494
  if (mrb_string_p(idx)) {
498
- mrb_value sym = mrb_check_intern_str(mrb, idx);
499
-
500
- if (mrb_nil_p(sym)) {
501
- mrb_name_error(mrb, mrb_intern_str(mrb, idx), "no member '%v' in struct", idx);
502
- }
503
- idx = sym;
495
+ mrb_sym sym = mrb_intern_str(mrb, idx);
496
+ idx = mrb_symbol_value(sym);
504
497
  }
505
498
  if (mrb_symbol_p(idx)) {
506
499
  return mrb_struct_aset_sym(mrb, s, mrb_symbol(idx), val);
@@ -604,8 +597,8 @@ mrb_struct_eql(mrb_state *mrb, mrb_value s)
604
597
 
605
598
  /*
606
599
  * call-seq:
607
- * struct.length -> Fixnum
608
- * struct.size -> Fixnum
600
+ * struct.length -> Integer
601
+ * struct.size -> Integer
609
602
  *
610
603
  * Returns number of struct members.
611
604
  */
@@ -654,7 +647,7 @@ static mrb_value
654
647
  mrb_struct_values_at(mrb_state *mrb, mrb_value self)
655
648
  {
656
649
  mrb_int argc;
657
- mrb_value *argv;
650
+ const mrb_value *argv;
658
651
 
659
652
  mrb_get_args(mrb, "*", &argv, &argc);
660
653
 
@@ -1,5 +1,4 @@
1
1
  #include <mruby.h>
2
- #include <mruby/khash.h>
3
2
  #include <mruby/array.h>
4
3
  #include <mruby/string.h>
5
4
 
@@ -18,16 +17,18 @@
18
17
  * :Tms, :getwd, :$=, :ThreadGroup,
19
18
  * :wait2, :$>]
20
19
  */
21
- #ifdef MRB_ENABLE_ALL_SYMBOLS
20
+ #ifdef MRB_USE_ALL_SYMBOLS
22
21
  static mrb_value
23
22
  mrb_sym_all_symbols(mrb_state *mrb, mrb_value self)
24
23
  {
25
24
  mrb_sym i, lim;
26
25
  mrb_value ary = mrb_ary_new_capa(mrb, mrb->symidx);
27
26
 
27
+ for (i=1; i<=MRB_PRESYM_MAX; i++) {
28
+ mrb_ary_push(mrb, ary, mrb_symbol_value(i));
29
+ }
28
30
  for (i=1, lim=mrb->symidx+1; i<lim; i++) {
29
- mrb_sym sym = i<<1;
30
- mrb_ary_push(mrb, ary, mrb_symbol_value(sym));
31
+ mrb_ary_push(mrb, ary, mrb_symbol_value(i+MRB_PRESYM_MAX));
31
32
  }
32
33
 
33
34
  return ary;
@@ -58,7 +59,7 @@ void
58
59
  mrb_mruby_symbol_ext_gem_init(mrb_state* mrb)
59
60
  {
60
61
  struct RClass *s = mrb->symbol_class;
61
- #ifdef MRB_ENABLE_ALL_SYMBOLS
62
+ #ifdef MRB_USE_ALL_SYMBOLS
62
63
  mrb_define_class_method(mrb, s, "all_symbols", mrb_sym_all_symbols, MRB_ARGS_NONE());
63
64
  #endif
64
65
  mrb_define_method(mrb, s, "length", mrb_sym_length, MRB_ARGS_NONE());
@@ -48,7 +48,7 @@
48
48
  end
49
49
 
50
50
  assert("Symbol#empty?") do
51
- assert_true :''.empty?
51
+ assert_false :'a'.empty?
52
52
  end
53
53
 
54
54
  assert('Symbol#intern') do
@@ -4,4 +4,3 @@ Running Tests
4
4
  To run the tests, execute the following from the project's root directory.
5
5
 
6
6
  $ make test
7
-
@@ -50,7 +50,7 @@ eval_test(mrb_state *mrb)
50
50
  static mrb_value
51
51
  t_print(mrb_state *mrb, mrb_value self)
52
52
  {
53
- mrb_value *argv;
53
+ const mrb_value *argv;
54
54
  mrb_int argc;
55
55
  mrb_int i;
56
56
 
@@ -224,8 +224,8 @@ mrb_init_test_driver(mrb_state *mrb, mrb_bool verbose)
224
224
  mrb_define_const(mrb, mrbtest, "FIXNUM_MIN", mrb_fixnum_value(MRB_INT_MIN));
225
225
  mrb_define_const(mrb, mrbtest, "FIXNUM_BIT", mrb_fixnum_value(MRB_INT_BIT));
226
226
 
227
- #ifndef MRB_WITHOUT_FLOAT
228
- #ifdef MRB_USE_FLOAT
227
+ #ifndef MRB_NO_FLOAT
228
+ #ifdef MRB_USE_FLOAT32
229
229
  mrb_define_const(mrb, mrbtest, "FLOAT_TOLERANCE", mrb_float_value(mrb, 1e-6));
230
230
  #else
231
231
  mrb_define_const(mrb, mrbtest, "FLOAT_TOLERANCE", mrb_float_value(mrb, 1e-12));
@@ -252,9 +252,9 @@ mrb_t_pass_result(mrb_state *mrb_dst, mrb_state *mrb_src)
252
252
  #define TEST_COUNT_PASS(name) \
253
253
  do { \
254
254
  res_src = mrb_gv_get(mrb_src, mrb_intern_lit(mrb_src, "$" #name)); \
255
- if (mrb_fixnum_p(res_src)) { \
255
+ if (mrb_integer_p(res_src)) { \
256
256
  mrb_value res_dst = mrb_gv_get(mrb_dst, mrb_intern_lit(mrb_dst, "$" #name)); \
257
- mrb_gv_set(mrb_dst, mrb_intern_lit(mrb_dst, "$" #name), mrb_fixnum_value(mrb_fixnum(res_dst) + mrb_fixnum(res_src))); \
257
+ mrb_gv_set(mrb_dst, mrb_intern_lit(mrb_dst, "$" #name), mrb_int_value(mrb_dst, mrb_integer(res_dst) + mrb_integer(res_src))); \
258
258
  } \
259
259
  } while (FALSE) \
260
260
 
@@ -3,32 +3,24 @@
3
3
  spec.author = 'mruby developers'
4
4
  spec.summary = 'mruby test'
5
5
 
6
- build.bins << 'mrbtest'
7
- spec.add_dependency('mruby-compiler', :core => 'mruby-compiler')
8
-
9
6
  spec.test_rbfiles = Dir.glob("#{MRUBY_ROOT}/test/t/*.rb")
10
7
 
11
8
  clib = "#{build_dir}/mrbtest.c"
12
9
  mlib = clib.ext(exts.object)
13
10
  exec = exefile("#{build.build_dir}/bin/mrbtest")
14
-
15
- mrbtest_lib = libfile("#{build_dir}/mrbtest")
16
- mrbtest_objs = []
17
-
18
- driver_objs = Dir.glob("#{dir}/*.{c,cpp,cxx,cc,m,asm,s,S}").map do |f|
19
- objfile(f.relative_path_from(dir).to_s.pathmap("#{build_dir}/%X"))
20
- end
21
-
22
11
  assert_c = "#{build_dir}/assert.c"
23
12
  assert_rb = "#{MRUBY_ROOT}/test/assert.rb"
24
13
  assert_lib = assert_c.ext(exts.object)
25
- mrbtest_objs << assert_lib
14
+ mrbtest_lib = libfile("#{build_dir}/mrbtest")
15
+ mrbtest_objs = [assert_lib]
16
+ driver_objs = srcs_to_objs(".")
26
17
 
27
18
  file assert_lib => assert_c
28
19
  file assert_c => [assert_rb, build.mrbcfile] do |t|
20
+ _pp "GEN", t.name.relative_path
29
21
  mkdir_p File.dirname(t.name)
30
22
  open(t.name, 'w') do |f|
31
- mrbc.run f, assert_rb, 'mrbtest_assert_irep'
23
+ mrbc.run f, assert_rb, 'mrbtest_assert_irep', false
32
24
  end
33
25
  end
34
26
 
@@ -36,11 +28,13 @@
36
28
 
37
29
  build.gems.each do |g|
38
30
  test_rbobj = g.test_rbireps.ext(exts.object)
39
- g.test_objs << test_rbobj
40
- dep_list = build.gems.tsort_dependencies(g.test_dependencies, gem_table).select(&:generate_functions)
31
+ mrbtest_objs.concat(g.test_objs)
32
+ mrbtest_objs << test_rbobj
33
+ dep_list = build.gems.tsort_dependencies([g.name], gem_table).select(&:generate_functions)
41
34
 
42
35
  file test_rbobj => g.test_rbireps
43
36
  file g.test_rbireps => [g.test_rbfiles, build.mrbcfile].flatten do |t|
37
+ _pp "GEN", t.name.relative_path
44
38
  mkdir_p File.dirname(t.name)
45
39
  open(t.name, 'w') do |f|
46
40
  g.print_gem_test_header(f)
@@ -58,12 +52,12 @@
58
52
  if test_preload.nil?
59
53
  f.puts %Q[extern const uint8_t mrbtest_assert_irep[];]
60
54
  else
61
- g.build.mrbc.run f, test_preload, "gem_test_irep_#{g.funcname}_preload"
55
+ g.build.mrbc.run f, test_preload, "gem_test_irep_#{g.funcname}_preload", false
62
56
  end
63
57
  g.test_rbfiles.flatten.each_with_index do |rbfile, i|
64
- g.build.mrbc.run f, rbfile, "gem_test_irep_#{g.funcname}_#{i}"
58
+ g.build.mrbc.run f, rbfile, "gem_test_irep_#{g.funcname}_#{i}", false
65
59
  end
66
- f.puts %Q[void mrb_#{g.funcname}_gem_test(mrb_state *mrb);] unless g.test_objs.empty?
60
+ f.puts %Q[void mrb_#{g.funcname}_gem_test(mrb_state *mrb);] if g.custom_test_init?
67
61
  dep_list.each do |d|
68
62
  f.puts %Q[void GENERATED_TMP_mrb_#{d.funcname}_gem_init(mrb_state *mrb);]
69
63
  f.puts %Q[void GENERATED_TMP_mrb_#{d.funcname}_gem_final(mrb_state *mrb);]
@@ -81,7 +75,7 @@
81
75
  f.puts %Q[ ai = mrb_gc_arena_save(mrb);]
82
76
  f.puts %Q[ mrb2 = mrb_open_core(mrb_default_allocf, NULL);]
83
77
  f.puts %Q[ if (mrb2 == NULL) {]
84
- f.puts %Q[ fprintf(stderr, "Invalid mrb_state, exiting \%s", __FUNCTION__);]
78
+ f.puts %Q[ fprintf(stderr, "Invalid mrb_state, exiting \%s", __func__);]
85
79
  f.puts %Q[ exit(EXIT_FAILURE);]
86
80
  f.puts %Q[ }]
87
81
  dep_list.each do |d|
@@ -126,41 +120,19 @@
126
120
  end
127
121
  end
128
122
 
129
- build.gems.each do |v|
130
- mrbtest_objs.concat v.test_objs
131
- end
132
-
133
123
  file mrbtest_lib => mrbtest_objs do |t|
134
124
  build.archiver.run t.name, t.prerequisites
135
125
  end
136
126
 
137
127
  unless build.build_mrbtest_lib_only?
138
128
  file exec => [*driver_objs, mlib, mrbtest_lib, build.libmruby_static] do |t|
139
- gem_flags = build.gems.map { |g| g.linker.flags }
140
- gem_flags_before_libraries = build.gems.map { |g| g.linker.flags_before_libraries }
141
- gem_flags_after_libraries = build.gems.map { |g| g.linker.flags_after_libraries }
142
- gem_libraries = build.gems.map { |g| g.linker.libraries }
143
- gem_library_paths = build.gems.map { |g| g.linker.library_paths }
144
- build.linker.run t.name, t.prerequisites, gem_libraries, gem_library_paths, gem_flags,
145
- gem_flags_before_libraries, gem_flags_after_libraries
129
+ build.linker.run t.name, t.prerequisites, *build.gems.linker_attrs
146
130
  end
147
131
  end
148
132
 
149
- # store the last gem selection and make the re-build
150
- # of the test gem depending on a change to the gem
151
- # selection
152
- active_gems_path = "#{build_dir}/active_gems_path.lst"
153
- active_gem_list = File.read active_gems_path if File.exist? active_gems_path
154
- current_gem_list = build.gems.map(&:name).join("\n")
155
- task active_gems_path do |_t|
156
- mkdir_p File.dirname(active_gems_path)
157
- File.write active_gems_path, current_gem_list
158
- end
159
- file clib => active_gems_path if active_gem_list != current_gem_list
160
-
161
133
  file mlib => clib
162
- file clib => [build.mrbcfile, __FILE__] do |_t|
163
- _pp "GEN", "*.rb", "#{clib.relative_path}"
134
+ file clib => ["#{build.build_dir}/mrbgems/active_gems.txt", build.mrbcfile, __FILE__] do |_t|
135
+ _pp "GEN", clib.relative_path
164
136
  mkdir_p File.dirname(clib)
165
137
  open(clib, 'w') do |f|
166
138
  f.puts %Q[/*]