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
@@ -3,9 +3,9 @@ mruby-pack (pack / unpack)
3
3
 
4
4
  mruby-pack provides `Array#pack` and `String#unpack` for mruby.
5
5
 
6
-
7
6
  ## Installation
8
- Add the line below into your `build_config.rb`:
7
+
8
+ Add the line below into your build configuration:
9
9
 
10
10
  ```
11
11
  conf.gem :github => 'iij/mruby-pack'
@@ -13,8 +13,8 @@ Add the line below into your `build_config.rb`:
13
13
 
14
14
  There is no dependency on other mrbgems.
15
15
 
16
-
17
16
  ## Supported template string
17
+
18
18
  - A : arbitrary binary string (space padded, count is width)
19
19
  - a : arbitrary binary string (null padded, count is width)
20
20
  - C : 8-bit unsigned (unsigned char)
@@ -44,28 +44,25 @@ There is no dependency on other mrbgems.
44
44
  - x : null byte
45
45
  - Z : same as "a", except that null is added with *
46
46
 
47
-
48
-
49
47
  ## License
50
48
 
51
49
  Copyright (c) 2012 Internet Initiative Japan Inc.
52
50
  Copyright (c) 2017 mruby developers
53
51
 
54
- Permission is hereby granted, free of charge, to any person obtaining a
55
- copy of this software and associated documentation files (the "Software"),
56
- to deal in the Software without restriction, including without limitation
57
- the rights to use, copy, modify, merge, publish, distribute, sublicense,
58
- and/or sell copies of the Software, and to permit persons to whom the
52
+ Permission is hereby granted, free of charge, to any person obtaining a
53
+ copy of this software and associated documentation files (the "Software"),
54
+ to deal in the Software without restriction, including without limitation
55
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
56
+ and/or sell copies of the Software, and to permit persons to whom the
59
57
  Software is furnished to do so, subject to the following conditions:
60
58
 
61
- The above copyright notice and this permission notice shall be included in
59
+ The above copyright notice and this permission notice shall be included in
62
60
  all copies or substantial portions of the Software.
63
61
 
64
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
65
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
66
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
67
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
68
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
69
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
62
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
63
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
64
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
65
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
66
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
67
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
70
68
  DEALINGS IN THE SOFTWARE.
71
-
@@ -9,12 +9,15 @@
9
9
  #include "mruby/numeric.h"
10
10
  #include "mruby/string.h"
11
11
  #include "mruby/variable.h"
12
+ #include "mruby/endian.h"
12
13
 
13
14
  #include <ctype.h>
14
15
  #include <errno.h>
15
- #include <limits.h>
16
16
  #include <string.h>
17
17
 
18
+ #define INT_OVERFLOW_P(n) ((n) < MRB_INT_MIN || (n) > MRB_INT_MAX)
19
+ #define UINT_OVERFLOW_P(n) ((n) > MRB_INT_MAX)
20
+
18
21
  struct tmpl {
19
22
  mrb_value str;
20
23
  int idx;
@@ -63,36 +66,6 @@ const static unsigned char base64chars[] =
63
66
  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
64
67
  static unsigned char base64_dec_tab[128];
65
68
 
66
- #if !defined(BYTE_ORDER) && defined(__BYTE_ORDER__)
67
- # define BYTE_ORDER __BYTE_ORDER__
68
- #endif
69
- #if !defined(BIG_ENDIAN) && defined(__ORDER_BIG_ENDIAN__)
70
- # define BIG_ENDIAN __ORDER_BIG_ENDIAN__
71
- #endif
72
- #if !defined(LITTLE_ENDIAN) && defined(__ORDER_LITTLE_ENDIAN__)
73
- # define LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
74
- #endif
75
-
76
- #ifdef BYTE_ORDER
77
- # if BYTE_ORDER == BIG_ENDIAN
78
- # define littleendian 0
79
- # define check_little_endian() (void)0
80
- # elif BYTE_ORDER == LITTLE_ENDIAN
81
- # define littleendian 1
82
- # define check_little_endian() (void)0
83
- # endif
84
- #endif
85
- #ifndef littleendian
86
- /* can't distinguish endian in compile time */
87
- static int littleendian = 0;
88
- static void
89
- check_little_endian(void)
90
- {
91
- unsigned int n = 1;
92
- littleendian = (*(unsigned char *)&n == 1);
93
- }
94
- #endif
95
-
96
69
  static unsigned int
97
70
  hex2int(unsigned char ch)
98
71
  {
@@ -143,7 +116,7 @@ static int
143
116
  pack_c(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int flags)
144
117
  {
145
118
  str = str_len_ensure(mrb, str, sidx + 1);
146
- RSTRING_PTR(str)[sidx] = (char)mrb_fixnum(o);
119
+ RSTRING_PTR(str)[sidx] = (char)mrb_integer(o);
147
120
  return 1;
148
121
  }
149
122
 
@@ -163,7 +136,7 @@ pack_s(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int fl
163
136
  uint16_t n;
164
137
 
165
138
  str = str_len_ensure(mrb, str, sidx + 2);
166
- n = (uint16_t)mrb_fixnum(o);
139
+ n = (uint16_t)mrb_integer(o);
167
140
  if (flags & PACK_FLAG_LITTLEENDIAN) {
168
141
  RSTRING_PTR(str)[sidx+0] = n % 256;
169
142
  RSTRING_PTR(str)[sidx+1] = n / 256;
@@ -197,7 +170,7 @@ pack_l(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int fl
197
170
  uint32_t n;
198
171
 
199
172
  str = str_len_ensure(mrb, str, sidx + 4);
200
- n = (uint32_t)mrb_fixnum(o);
173
+ n = (uint32_t)mrb_integer(o);
201
174
  if (flags & PACK_FLAG_LITTLEENDIAN) {
202
175
  RSTRING_PTR(str)[sidx+0] = (char)(n & 0xff);
203
176
  RSTRING_PTR(str)[sidx+1] = (char)(n >> 8);
@@ -216,7 +189,7 @@ pack_l(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int fl
216
189
  static void
217
190
  u32tostr(char *buf, size_t len, uint32_t n)
218
191
  {
219
- #ifdef MRB_DISABLE_STDIO
192
+ #ifdef MRB_NO_STDIO
220
193
  char *bufend = buf + len;
221
194
  char *p = bufend - 1;
222
195
 
@@ -241,27 +214,7 @@ u32tostr(char *buf, size_t len, uint32_t n)
241
214
  memmove(buf, p, bufend - p);
242
215
  #else
243
216
  snprintf(buf, len, "%" PRIu32, n);
244
- #endif /* MRB_DISABLE_STDIO */
245
- }
246
-
247
- static void
248
- i32tostr(char *buf, size_t len, int32_t n)
249
- {
250
- #ifdef MRB_DISABLE_STDIO
251
- if (len < 1) {
252
- return;
253
- }
254
-
255
- if (n < 0) {
256
- *buf ++ = '-';
257
- len --;
258
- n = -n;
259
- }
260
-
261
- u32tostr(buf, len, (uint32_t)n);
262
- #else
263
- snprintf(buf, len, "%" PRId32, n);
264
- #endif /* MRB_DISABLE_STDIO */
217
+ #endif /* MRB_NO_STDIO */
265
218
  }
266
219
  #endif /* MRB_INT64 */
267
220
 
@@ -286,24 +239,17 @@ unpack_l(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, un
286
239
  ul += (uint32_t)src[3];
287
240
  }
288
241
  if (flags & PACK_FLAG_SIGNED) {
289
- int32_t sl = ul;
290
- #ifndef MRB_INT64
291
- if (!FIXABLE(sl)) {
292
- i32tostr(msg, sizeof(msg), sl);
293
- mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Fixnum: %s", msg);
294
- }
295
- #endif
296
- n = sl;
242
+ n = (int32_t)ul;
297
243
  } else {
298
244
  #ifndef MRB_INT64
299
- if (!POSFIXABLE(ul)) {
245
+ if (UINT_OVERFLOW_P(ul)) {
300
246
  u32tostr(msg, sizeof(msg), ul);
301
- mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Fixnum: %s", msg);
247
+ mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Integer: %s", msg);
302
248
  }
303
249
  #endif
304
250
  n = ul;
305
251
  }
306
- mrb_ary_push(mrb, ary, mrb_fixnum_value(n));
252
+ mrb_ary_push(mrb, ary, mrb_int_value(mrb, n));
307
253
  return 4;
308
254
  }
309
255
 
@@ -313,7 +259,7 @@ pack_q(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int fl
313
259
  uint64_t n;
314
260
 
315
261
  str = str_len_ensure(mrb, str, sidx + 8);
316
- n = (uint64_t)mrb_fixnum(o);
262
+ n = (uint64_t)mrb_integer(o);
317
263
  if (flags & PACK_FLAG_LITTLEENDIAN) {
318
264
  RSTRING_PTR(str)[sidx+0] = (char)(n & 0xff);
319
265
  RSTRING_PTR(str)[sidx+1] = (char)(n >> 8);
@@ -339,7 +285,7 @@ pack_q(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int fl
339
285
  static void
340
286
  u64tostr(char *buf, size_t len, uint64_t n)
341
287
  {
342
- #ifdef MRB_DISABLE_STDIO
288
+ #ifdef MRB_NO_STDIO
343
289
  char *bufend = buf + len;
344
290
  char *p = bufend - 1;
345
291
 
@@ -364,13 +310,14 @@ u64tostr(char *buf, size_t len, uint64_t n)
364
310
  memmove(buf, p, bufend - p);
365
311
  #else
366
312
  snprintf(buf, len, "%" PRIu64, n);
367
- #endif /* MRB_DISABLE_STDIO */
313
+ #endif /* MRB_NO_STDIO */
368
314
  }
369
315
 
316
+ #ifndef MRB_INT64
370
317
  static void
371
318
  i64tostr(char *buf, size_t len, int64_t n)
372
319
  {
373
- #ifdef MRB_DISABLE_STDIO
320
+ #ifdef MRB_NO_STDIO
374
321
  if (len < 1) {
375
322
  return;
376
323
  }
@@ -384,8 +331,9 @@ i64tostr(char *buf, size_t len, int64_t n)
384
331
  u64tostr(buf, len, (uint64_t)n);
385
332
  #else
386
333
  snprintf(buf, len, "%" PRId64, n);
387
- #endif /* MRB_DISABLE_STDIO */
334
+ #endif /* MRB_NO_STDIO */
388
335
  }
336
+ #endif /* MRB_INT64 */
389
337
 
390
338
  static int
391
339
  unpack_q(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, unsigned int flags)
@@ -409,23 +357,25 @@ unpack_q(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, un
409
357
  }
410
358
  if (flags & PACK_FLAG_SIGNED) {
411
359
  int64_t sll = ull;
412
- if (!FIXABLE(sll)) {
360
+ #ifndef MRB_INT64
361
+ if (INT_OVERFLOW_P(sll)) {
413
362
  i64tostr(msg, sizeof(msg), sll);
414
- mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Fixnum: %s", msg);
363
+ mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Integer: %s", msg);
415
364
  }
416
- n = sll;
365
+ #endif
366
+ n = (mrb_int)sll;
417
367
  } else {
418
- if (!POSFIXABLE(ull)) {
368
+ if (UINT_OVERFLOW_P(ull)) {
419
369
  u64tostr(msg, sizeof(msg), ull);
420
- mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Fixnum: %s", msg);
370
+ mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Integer: %s", msg);
421
371
  }
422
- n = ull;
372
+ n = (mrb_int)ull;
423
373
  }
424
- mrb_ary_push(mrb, ary, mrb_fixnum_value(n));
374
+ mrb_ary_push(mrb, ary, mrb_int_value(mrb, n));
425
375
  return 8;
426
376
  }
427
377
 
428
- #ifndef MRB_WITHOUT_FLOAT
378
+ #ifndef MRB_NO_FLOAT
429
379
  static int
430
380
  pack_double(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int flags)
431
381
  {
@@ -560,7 +510,7 @@ pack_utf8(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, long count,
560
510
  int len = 0;
561
511
  uint32_t c = 0;
562
512
 
563
- c = (uint32_t)mrb_fixnum(o);
513
+ c = (uint32_t)mrb_integer(o);
564
514
 
565
515
  /* Unicode character */
566
516
  /* from mruby-compiler gem */
@@ -828,7 +778,7 @@ unpack_h(mrb_state *mrb, const void *src, int slen, mrb_value ary, int count, un
828
778
  }
829
779
  }
830
780
 
831
- dst = mrb_str_resize(mrb, dst, dptr - dptr0);
781
+ dst = mrb_str_resize(mrb, dst, (mrb_int)(dptr - dptr0));
832
782
  mrb_ary_push(mrb, ary, dst);
833
783
  return (int)(sptr - sptr0);
834
784
  }
@@ -951,7 +901,7 @@ unpack_m(mrb_state *mrb, const void *src, int slen, mrb_value ary, unsigned int
951
901
  }
952
902
 
953
903
  done:
954
- dst = mrb_str_resize(mrb, dst, dptr - dptr0);
904
+ dst = mrb_str_resize(mrb, dst, (mrb_int)(dptr - dptr0));
955
905
  mrb_ary_push(mrb, ary, dst);
956
906
  return (int)(sptr - sptr0);
957
907
  }
@@ -1248,7 +1198,7 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary)
1248
1198
  if (type == PACK_TYPE_INTEGER) {
1249
1199
  o = mrb_to_int(mrb, o);
1250
1200
  }
1251
- #ifndef MRB_WITHOUT_FLOAT
1201
+ #ifndef MRB_NO_FLOAT
1252
1202
  else if (type == PACK_TYPE_FLOAT) {
1253
1203
  if (!mrb_float_p(o)) {
1254
1204
  mrb_float f = mrb_to_flo(mrb, o);
@@ -1284,7 +1234,7 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary)
1284
1234
  case PACK_DIR_STR:
1285
1235
  ridx += pack_a(mrb, o, result, ridx, count, flags);
1286
1236
  break;
1287
- #ifndef MRB_WITHOUT_FLOAT
1237
+ #ifndef MRB_NO_FLOAT
1288
1238
  case PACK_DIR_DOUBLE:
1289
1239
  ridx += pack_double(mrb, o, result, ridx, flags);
1290
1240
  break;
@@ -1298,7 +1248,8 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary)
1298
1248
  default:
1299
1249
  break;
1300
1250
  }
1301
- if (dir == PACK_DIR_STR || dir == PACK_DIR_BASE64) { /* always consumes 1 entry */
1251
+ if (dir == PACK_DIR_STR || dir == PACK_DIR_BASE64 || dir == PACK_DIR_HEX) {
1252
+ /* always consumes 1 entry */
1302
1253
  aidx++;
1303
1254
  break;
1304
1255
  }
@@ -1380,7 +1331,7 @@ pack_unpack(mrb_state *mrb, mrb_value str, int single)
1380
1331
  case PACK_DIR_QUAD:
1381
1332
  srcidx += unpack_q(mrb, sptr, srclen - srcidx, result, flags);
1382
1333
  break;
1383
- #ifndef MRB_WITHOUT_FLOAT
1334
+ #ifndef MRB_NO_FLOAT
1384
1335
  case PACK_DIR_FLOAT:
1385
1336
  srcidx += unpack_float(mrb, sptr, srclen - srcidx, result, flags);
1386
1337
  break;
@@ -1425,7 +1376,6 @@ mrb_pack_unpack1(mrb_state *mrb, mrb_value str)
1425
1376
  void
1426
1377
  mrb_mruby_pack_gem_init(mrb_state *mrb)
1427
1378
  {
1428
- check_little_endian();
1429
1379
  make_base64_dec_tab();
1430
1380
 
1431
1381
  mrb_define_method(mrb, mrb->array_class, "pack", mrb_pack_pack, MRB_ARGS_REQ(1));
@@ -3,39 +3,10 @@
3
3
  #
4
4
  # ISO 15.3.1
5
5
  module Kernel
6
- ##
7
- # Invoke method +print+ on STDOUT and passing +*args+
8
- #
9
- # ISO 15.3.1.2.10
10
- def print(*args)
11
- i = 0
12
- len = args.size
13
- while i < len
14
- __printstr__ args[i].to_s
15
- i += 1
16
- end
17
- end
18
-
19
- ##
20
- # Invoke method +puts+ on STDOUT and passing +*args*+
21
- #
22
- # ISO 15.3.1.2.11
23
- def puts(*args)
24
- i = 0
25
- len = args.size
26
- while i < len
27
- s = args[i].to_s
28
- __printstr__ s
29
- __printstr__ "\n" if (s[-1] != "\n")
30
- i += 1
31
- end
32
- __printstr__ "\n" if len == 0
33
- nil
34
- end
35
-
36
6
  ##
37
7
  # Print human readable object description
38
8
  #
9
+ # ISO 15.3.1.2.9
39
10
  # ISO 15.3.1.3.34
40
11
  def p(*args)
41
12
  i = 0
@@ -1,7 +1,7 @@
1
1
  #include <mruby.h>
2
2
 
3
- #ifdef MRB_DISABLE_STDIO
4
- # error print conflicts 'MRB_DISABLE_STDIO' configuration in your 'build_config.rb'
3
+ #ifdef MRB_NO_STDIO
4
+ # error print conflicts 'MRB_NO_STDIO' in your build configuration
5
5
  #endif
6
6
 
7
7
  #include <mruby/string.h>
@@ -17,39 +17,73 @@
17
17
  #endif
18
18
 
19
19
  static void
20
- printstr(mrb_state *mrb, mrb_value obj)
20
+ printstr(mrb_state *mrb, const char *p, mrb_int len)
21
21
  {
22
- if (mrb_string_p(obj)) {
23
22
  #if defined(_WIN32)
24
- if (isatty(fileno(stdout))) {
25
- DWORD written;
26
- int mlen = (int)RSTRING_LEN(obj);
27
- char* utf8 = RSTRING_PTR(obj);
28
- int wlen = MultiByteToWideChar(CP_UTF8, 0, utf8, mlen, NULL, 0);
29
- wchar_t* utf16 = (wchar_t*)mrb_malloc(mrb, (wlen+1) * sizeof(wchar_t));
30
- if (MultiByteToWideChar(CP_UTF8, 0, utf8, mlen, utf16, wlen) > 0) {
31
- utf16[wlen] = 0;
32
- WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE),
33
- utf16, wlen, &written, NULL);
34
- }
35
- mrb_free(mrb, utf16);
36
- } else
23
+ if (isatty(fileno(stdout))) {
24
+ DWORD written;
25
+ int wlen = MultiByteToWideChar(CP_UTF8, 0, p, (int)len, NULL, 0);
26
+ wchar_t* utf16 = (wchar_t*)mrb_malloc(mrb, (wlen+1) * sizeof(wchar_t));
27
+ if (MultiByteToWideChar(CP_UTF8, 0, p, (int)len, utf16, wlen) > 0) {
28
+ utf16[wlen] = 0;
29
+ WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE),
30
+ utf16, (DWORD)wlen, &written, NULL);
31
+ }
32
+ mrb_free(mrb, utf16);
33
+ } else
37
34
  #endif
38
- fwrite(RSTRING_PTR(obj), RSTRING_LEN(obj), 1, stdout);
39
- fflush(stdout);
40
- }
35
+ fwrite(p, (size_t)len, 1, stdout);
36
+ fflush(stdout);
41
37
  }
42
38
 
43
- /* 15.3.1.2.9 */
44
- /* 15.3.1.3.34 */
45
- mrb_value
39
+ static mrb_value
46
40
  mrb_printstr(mrb_state *mrb, mrb_value self)
47
41
  {
48
- mrb_value argv = mrb_get_arg1(mrb);
42
+ mrb_value s = mrb_get_arg1(mrb);
43
+
44
+ if (mrb_string_p(s)) {
45
+ printstr(mrb, RSTRING_PTR(s), RSTRING_LEN(s));
46
+ }
47
+ return s;
48
+ }
49
+
50
+ /* 15.3.1.2.10 */
51
+ /* 15.3.1.3.35 */
52
+ static mrb_value
53
+ mrb_print(mrb_state *mrb, mrb_value self)
54
+ {
55
+ mrb_int argc, i;
56
+ const mrb_value *argv;
49
57
 
50
- printstr(mrb, argv);
58
+ mrb_get_args(mrb, "*", &argv, &argc);
59
+ for (i=0; i<argc; i++) {
60
+ mrb_value s = mrb_obj_as_string(mrb, argv[i]);
61
+ printstr(mrb, RSTRING_PTR(s), RSTRING_LEN(s));
62
+ }
63
+ return mrb_nil_value();
64
+ }
65
+
66
+ /* 15.3.1.2.11 */
67
+ /* 15.3.1.3.39 */
68
+ static mrb_value
69
+ mrb_puts(mrb_state *mrb, mrb_value self)
70
+ {
71
+ mrb_int argc, i;
72
+ const mrb_value *argv;
51
73
 
52
- return argv;
74
+ mrb_get_args(mrb, "*", &argv, &argc);
75
+ for (i=0; i<argc; i++) {
76
+ mrb_value s = mrb_obj_as_string(mrb, argv[i]);
77
+ mrb_int len = RSTRING_LEN(s);
78
+ printstr(mrb, RSTRING_PTR(s), len);
79
+ if (len == 0 || RSTRING_PTR(s)[len-1] != '\n') {
80
+ printstr(mrb, "\n", 1);
81
+ }
82
+ }
83
+ if (argc == 0) {
84
+ printstr(mrb, "\n", 1);
85
+ }
86
+ return mrb_nil_value();
53
87
  }
54
88
 
55
89
  void
@@ -58,6 +92,8 @@ mrb_mruby_print_gem_init(mrb_state* mrb)
58
92
  struct RClass *krn;
59
93
  krn = mrb->kernel_module;
60
94
  mrb_define_method(mrb, krn, "__printstr__", mrb_printstr, MRB_ARGS_REQ(1));
95
+ mrb_define_method(mrb, krn, "print", mrb_print, MRB_ARGS_ANY());
96
+ mrb_define_method(mrb, krn, "puts", mrb_puts, MRB_ARGS_ANY());
61
97
  }
62
98
 
63
99
  void