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
@@ -38,7 +38,7 @@ To confirm mrdb was installed properly, run mrdb with the `--version` option:
38
38
 
39
39
  ```bash
40
40
  $ mrdb --version
41
- mruby 2.1.2 (2020-08-06)
41
+ mruby 3.0.0 (2021-03-05)
42
42
  ```
43
43
 
44
44
  ## 2.2 Basic Operation
@@ -220,6 +220,7 @@ Example:
220
220
  ```
221
221
 
222
222
  Enabling all breakpoints
223
+
223
224
  ```
224
225
  (foo.rb:1) enable 1 3
225
226
  ```
@@ -263,7 +264,7 @@ Example:
263
264
 
264
265
  ```
265
266
  (sample.rb:1) info breakpoints
266
- Num Type Enb What
267
+ Num Type Enb What
267
268
  1 breakpoint y at sample.rb:3 -> file name,line number
268
269
  2 breakpoint n in Sample_class:sample_class_method -> [class:]method name
269
270
  3 breakpoint y in sample_global_method
@@ -273,8 +274,8 @@ Displaying the specified breakpoint number:
273
274
 
274
275
  ```
275
276
  (foo.rb:1) info breakpoints 1 3
276
- Num Type Enb What
277
- 1 breakpoint y at sample.rb:3
277
+ Num Type Enb What
278
+ 1 breakpoint y at sample.rb:3
278
279
  3 breakpoint y in sample_global_method
279
280
  ```
280
281
 
@@ -3,7 +3,7 @@
3
3
  _This is an English translation of [Matz's blog post][matz blog post]
4
4
  written in Japanese._
5
5
  _Some parts are updated to reflect recent changes._
6
- [matz blog post]: http://www.rubyist.net/~matz/20130731.html
6
+ [matz blog post]: https://www.rubyist.net/~matz/20130731.html
7
7
 
8
8
  When you are extending mruby using C language, you may encounter
9
9
  mysterious "arena overflow error" or memory leak or very slow
@@ -1,7 +1,9 @@
1
1
  # mruby configuration macros.
2
2
 
3
3
  ## How to use these macros.
4
+
4
5
  You can use mrbconfs with following ways:
6
+
5
7
  * Write them in `mrbconf.h`.
6
8
  * Using compiler flags is preferred when building a cross binaries or multiple mruby binaries
7
9
  since it's easier to use different mrbconf per each `MRuby::Build`.
@@ -11,7 +13,9 @@ You can use mrbconfs with following ways:
11
13
  changes `struct` layout and cause memory access error when C and other language(e.g., C++) is mixed.
12
14
 
13
15
  ## stdio setting.
14
- `MRB_DISABLE_STDIO`
16
+
17
+ `MRB_NO_STDIO`
18
+
15
19
  * When defined `<stdio.h>` functions won't be used.
16
20
  * Some features will be disabled when this is enabled:
17
21
  * `mrb_irep` load/dump from/to file.
@@ -19,80 +23,97 @@ You can use mrbconfs with following ways:
19
23
  * Printing features in **src/print.c**.
20
24
 
21
25
  ## Debug macros.
22
- `MRB_ENABLE_DEBUG_HOOK`
26
+
27
+ `MRB_USE_DEBUG_HOOK`
28
+
23
29
  * When defined code fetch hook and debug OP hook will be enabled.
24
30
  * When using any of the hook set function pointer `code_fetch_hook` and/or `debug_op_hook` of `mrb_state`.
25
31
  * Fetch hook will be called before any OP.
26
32
  * Debug OP hook will be called when dispatching `OP_DEBUG`.
27
33
 
28
34
  `MRB_DEBUG`
35
+
29
36
  * When defined `mrb_assert*` macro will be defined with macros from `<assert.h>`.
30
37
  * Could be enabled via `enable_debug` method of `MRuby::Build`.
31
38
 
32
39
  ## Stack configuration
33
40
 
34
41
  `MRB_STACK_EXTEND_DOUBLING`
42
+
35
43
  * If defined doubles the stack size when extending it.
36
44
  * Else extends stack with `MRB_STACK_GROWTH`.
37
45
 
38
46
  `MRB_STACK_GROWTH`
47
+
39
48
  * Default value is `128`.
40
49
  * Used in stack extending.
41
50
  * Ignored when `MRB_STACK_EXTEND_DOUBLING` is defined.
42
51
 
43
52
  `MRB_STACK_MAX`
53
+
44
54
  * Default value is `0x40000 - MRB_STACK_GROWTH`.
45
55
  * Raises `RuntimeError` when stack size exceeds this value.
46
56
 
47
57
  ## Primitive type configuration.
48
58
 
49
- `MRB_USE_FLOAT`
59
+ `MRB_USE_FLOAT32`
60
+
50
61
  * When defined single precision floating point type(C type `float`) is used as `mrb_float`.
51
- * Else double precision floating point type(C type `double`) is used as `mrb_float`.
62
+ * Otherwise double precision floating point type(C type `double`) is used as `mrb_float`.
63
+
64
+ `MRB_NO_FLOAT`
52
65
 
53
- `MRB_WITHOUT_FLOAT`
54
66
  * When defined removes floating point numbers from mruby.
55
67
  * It makes mruby easier to handle in "Microcontroller without FPU" and "Kernel Space".
56
68
 
57
69
  `MRB_INT32`
70
+
58
71
  * When defined, or `MRB_INT64` are not defined on 32-bit CPU mode, `mrb_int` will be defined as `int32_t`.
59
72
  * Conflicts with `MRB_INT64`.
60
73
 
61
74
  `MRB_INT64`
75
+
62
76
  * When defined, or `MRB_INT32` are not defined on 64-bit CPU mode, `mrb_int` will be defined as `int64_t`.
63
77
  * Conflicts with `MRB_INT32`.
64
78
 
65
79
  ## Garbage collector configuration.
66
80
 
67
81
  `MRB_GC_STRESS`
82
+
68
83
  * When defined full GC is emitted per each `RBasic` allocation.
69
84
  * Mainly used in memory manager debugging.
70
85
 
71
86
  `MRB_GC_TURN_OFF_GENERATIONAL`
87
+
72
88
  * When defined turns generational GC by default.
73
89
 
74
90
  `MRB_GC_FIXED_ARENA`
91
+
75
92
  * When defined used fixed size GC arena.
76
93
  * Raises `RuntimeError` when this is defined and GC arena size exceeds `MRB_GC_ARENA_SIZE`.
77
94
  * Useful tracking unnecessary mruby object allocation.
78
95
 
79
96
  `MRB_GC_ARENA_SIZE`
97
+
80
98
  * Default value is `100`.
81
99
  * Ignored when `MRB_GC_FIXED_ARENA` isn't defined.
82
100
  * Defines fixed GC arena size.
83
101
 
84
102
  `MRB_HEAP_PAGE_SIZE`
103
+
85
104
  * Defines value is `1024`.
86
105
  * Specifies number of `RBasic` per each heap page.
87
106
 
88
107
  ## Memory pool configuration.
89
108
 
90
109
  `POOL_ALIGNMENT`
110
+
91
111
  * Default value is `4`.
92
112
  * If you're allocating data types that requires alignment more than default value define the
93
113
  largest value of required alignment.
94
114
 
95
115
  `POOL_PAGE_SIZE`
116
+
96
117
  * Default value is `16000`.
97
118
  * Specifies page size of pool page.
98
119
  * Smaller the value is increases memory overhead.
@@ -100,37 +121,38 @@ largest value of required alignment.
100
121
  ## State atexit configuration.
101
122
 
102
123
  `MRB_FIXED_STATE_ATEXIT_STACK`
124
+
103
125
  * If defined enables fixed size `mrb_state` atexit stack.
104
126
  * Raises `RuntimeError` when `mrb_state_atexit` call count to same `mrb_state` exceeds
105
127
  `MRB_FIXED_STATE_ATEXIT_STACK_SIZE`'s value.
106
128
 
107
129
  `MRB_FIXED_STATE_ATEXIT_STACK_SIZE`
130
+
108
131
  * Default value is `5`.
109
132
  * If `MRB_FIXED_STATE_ATEXIT_STACK` isn't defined this macro is ignored.
110
133
 
111
134
  ## `mrb_value` configuration.
112
135
 
113
136
  `MRB_ENDIAN_BIG`
137
+
114
138
  * If defined compiles mruby for big endian machines.
115
139
  * Used in `MRB_NAN_BOXING`.
116
140
  * Some mrbgem use this mrbconf.
117
141
 
118
142
  `MRB_NAN_BOXING`
143
+
119
144
  * If defined represent `mrb_value` in boxed `double`.
120
- * Conflicts with `MRB_USE_FLOAT` and `MRB_WITHOUT_FLOAT`.
145
+ * Conflicts with `MRB_USE_FLOAT32` and `MRB_NO_FLOAT`.
121
146
 
122
147
  `MRB_WORD_BOXING`
148
+
123
149
  * If defined represent `mrb_value` as a word.
124
150
  * If defined `Float` will be a mruby object with `RBasic`.
125
151
 
126
- ## Instance variable configuration.
127
- `MRB_IV_SEGMENT_SIZE`
128
- * Default value is `4`.
129
- * Specifies size of each segment in segment list.
130
-
131
152
  ## Reduce heap memory configuration.
132
153
 
133
154
  `MRB_USE_LINK_TIME_RO_DATA_P`
155
+
134
156
  * Only available on ELF platforms.
135
157
  * If you specify the address of a read-only section when creating a symbol or string, that string will be used as it is.
136
158
  * Heap memory can be saved.
@@ -138,6 +160,7 @@ largest value of required alignment.
138
160
  * It must be `__ehdr_start < data_addr < __init_array_start`.
139
161
 
140
162
  `MRB_USE_CUSTOM_RO_DATA_P`
163
+
141
164
  * Takes precedence over `MRB_USE_LINK_TIME_RO_DATA_P`.
142
165
  * Please try if `MRB_USE_LINK_TIME_RO_DATA_P` is not available.
143
166
  * The `mrb_ro_data_p()` function is implemented by the user in an arbitrary file.
@@ -145,37 +168,41 @@ largest value of required alignment.
145
168
  * Return `TRUE` if `ptr` is in read-only section, otherwise return `FALSE`.
146
169
 
147
170
  ## Other configuration.
171
+
148
172
  `MRB_UTF8_STRING`
173
+
149
174
  * Adds UTF-8 encoding support to character-oriented String instance methods.
150
175
  * If it isn't defined, they only support the US-ASCII encoding.
151
176
 
152
177
  `MRB_FUNCALL_ARGC_MAX`
178
+
153
179
  * Default value is `16`.
154
180
  * Specifies 4th argument(`argc`) max value of `mrb_funcall`.
155
181
  * Raises `ArgumentError` when the `argc` argument is bigger then this value `mrb_funcall`.
156
182
 
157
183
  `KHASH_DEFAULT_SIZE`
184
+
158
185
  * Default value is `32`.
159
186
  * Specifies default size of khash table bucket.
160
187
  * Used in `kh_init_ ## name` function.
161
188
 
162
- `MRB_STR_BUF_MIN_SIZE`
163
- * Default value is `128`.
164
- * Specifies initial capacity of `RString` created by `mrb_str_buf_new` function..
189
+ `MRB_NO_METHOD_CACHE`
165
190
 
166
- `MRB_METHOD_CACHE`
167
- * Improve performance for method dispatch.
191
+ * Disable method cache to save memory.
168
192
 
169
193
  `MRB_METHOD_CACHE_SIZE`
170
- * Default value is `128`.
171
- * Ignored if `MRB_METHOD_CACHE` is not defined.
194
+
195
+ * Default value is `256`.
196
+ * Ignored if `MRB_NO_METHOD_CACHE` is defined.
172
197
  * Need to be the power of 2.
173
198
 
174
- `MRB_METHOD_T_STRUCT`
199
+ `MRB_USE_METHOD_T_STRUCT`
200
+
175
201
  * Use C struct to represent `mrb_method_t`
176
- * No `MRB_METHOD_T_STRUCT` requires highest 2 bits of function pointers to be zero
202
+ * No `MRB_USE_METHOD_T_STRUCT` requires highest 2 bits of function pointers to be zero
177
203
  * Define this macro on machines that use higher bits of pointers
178
204
 
179
- `MRB_ENABLE_ALL_SYMBOLS`
180
- * Make it available `Symbols.all_symbols` in `mrbgems/mruby-symbol-ext`
205
+ `MRB_USE_ALL_SYMBOLS`
206
+
207
+ * Make it available `Symbol.all_symbols` in `mrbgems/mruby-symbol-ext`
181
208
  * Increase heap memory usage.
@@ -5,21 +5,27 @@ standardised way into mruby.
5
5
 
6
6
  ## Usage
7
7
 
8
- By default mrbgems is currently deactivated. As soon as you add a GEM to your
9
- build configuration (i.e. *build_config.rb*), mrbgems will be activated and the
10
- extension integrated.
8
+ You have to activate mrbgems explicitly in your build configuration. To add
9
+ a GEM, add the following line to your build configuration file, for example:
11
10
 
12
- To add a GEM into the *build_config.rb* add the following line for example:
13
11
  ```ruby
14
12
  conf.gem '/path/to/your/gem/dir'
15
13
  ```
16
14
 
17
- You can also use a relative path which would be relative from the mruby root:
15
+ You can also use a relative path to specify a gem.
16
+
18
17
  ```ruby
19
18
  conf.gem 'examples/mrbgems/ruby_extension_example'
20
19
  ```
21
20
 
21
+ In that case,
22
+
23
+ * if your build configuration file is in the `build_config` directory, it's
24
+ relative from `MRUBY_ROOT`.
25
+ * otherwise, it is relative from the directory where your build configuration is.
26
+
22
27
  A remote GIT repository location for a GEM is also supported:
28
+
23
29
  ```ruby
24
30
  conf.gem :git => 'https://github.com/masuidrive/mrbgems-example.git', :branch => 'master'
25
31
  conf.gem :github => 'masuidrive/mrbgems-example', :branch => 'master'
@@ -27,17 +33,20 @@ conf.gem :bitbucket => 'mruby/mrbgems-example', :branch => 'master'
27
33
  ```
28
34
 
29
35
  You can specify the sub directory of the repository with `:path` option:
36
+
30
37
  ```ruby
31
38
  conf.gem github: 'mruby/mruby', path: 'mrbgems/mruby-socket'
32
39
  ```
33
40
 
34
41
  To use mrbgem from [mgem-list](https://github.com/mruby/mgem-list) use `:mgem` option:
42
+
35
43
  ```ruby
36
44
  conf.gem :mgem => 'mruby-yaml'
37
45
  conf.gem :mgem => 'yaml' # 'mruby-' prefix could be omitted
38
46
  ```
39
47
 
40
48
  For specifying commit hash to checkout use `:checksum_hash` option:
49
+
41
50
  ```ruby
42
51
  conf.gem mgem: 'mruby-redis', checksum_hash: '3446d19fc4a3f9697b5ddbf2a904f301c42f2f4e'
43
52
  ```
@@ -54,13 +63,14 @@ NOTE: `:bitbucket` option supports only git. Hg is unsupported in this version.
54
63
 
55
64
  There are instances when you wish to add a collection of mrbgems into mruby at
56
65
  once, or be able to substitute mrbgems based on configuration, without having to
57
- add each gem to the *build_config.rb* file. A packaged collection of mrbgems
66
+ add each gem to your build configuration file. A packaged collection of mrbgems
58
67
  is called a GemBox. A GemBox is a file that contains a list of mrbgems to load
59
- into mruby, in the same format as if you were adding them to *build_config.rb*
68
+ into mruby, in the same format as if you were adding them to the build config
60
69
  via `config.gem`, but wrapped in an `MRuby::GemBox` object. GemBoxes are
61
70
  loaded into mruby via `config.gembox 'boxname'`.
62
71
 
63
72
  Below we have created a GemBox containing *mruby-time* and *mrbgems-example*:
73
+
64
74
  ```ruby
65
75
  MRuby::GemBox.new do |conf|
66
76
  conf.gem "#{root}/mrbgems/mruby-time"
@@ -73,16 +83,19 @@ must be saved with a *.gembox* extension inside the *mrbgems* directory to to be
73
83
  picked up by mruby.
74
84
 
75
85
  To use this example GemBox, we save it as `custom.gembox` inside the *mrbgems*
76
- directory in mruby, and add the following to our *build_config.rb* file inside
86
+ directory in mruby, and add the following to your build configuration file inside
77
87
  the build block:
88
+
78
89
  ```ruby
79
90
  conf.gembox 'custom'
80
91
  ```
92
+
81
93
  This will cause the *custom* GemBox to be read in during the build process,
82
94
  adding *mruby-time* and *mrbgems-example* to the build.
83
95
 
84
96
  If you want, you can put GemBox outside of mruby directory. In that case you must
85
97
  specify an absolute path like below.
98
+
86
99
  ```ruby
87
100
  conf.gembox "#{ENV["HOME"]}/mygemboxes/custom"
88
101
  ```
@@ -120,6 +133,7 @@ to compile C and Ruby files. *README.md* is a short description of your GEM.
120
133
 
121
134
  mrbgems expects a specification file called *mrbgem.rake* inside of your
122
135
  GEM directory. A typical GEM specification could look like this for example:
136
+
123
137
  ```ruby
124
138
  MRuby::Gem::Specification.new('c_and_ruby_extension_example') do |spec|
125
139
  spec.license = 'MIT'
@@ -149,6 +163,7 @@ The `license` and `author` properties are required in every GEM!
149
163
 
150
164
  In case your GEM is depending on other GEMs please use
151
165
  `spec.add_dependency(gem, *requirements[, default_get_info])` like:
166
+
152
167
  ```ruby
153
168
  MRuby::Gem::Specification.new('c_and_ruby_extension_example') do |spec|
154
169
  spec.license = 'MIT'
@@ -158,10 +173,10 @@ MRuby::Gem::Specification.new('c_and_ruby_extension_example') do |spec|
158
173
  # The version must be between 1.0.0 and 1.5.2 .
159
174
  spec.add_dependency('mruby-parser', '>= 1.0.0', '<= 1.5.2')
160
175
 
161
- # Use any version of mruby-uv from github.
176
+ # Use any version of mruby-uv from GitHub.
162
177
  spec.add_dependency('mruby-uv', '>= 0.0.0', :github => 'mattn/mruby-uv')
163
178
 
164
- # Use latest mruby-onig-regexp from github. (version requirements can be omitted)
179
+ # Use latest mruby-onig-regexp from GitHub. (version requirements can be omitted)
165
180
  spec.add_dependency('mruby-onig-regexp', :github => 'mattn/mruby-onig-regexp')
166
181
 
167
182
  # You can add extra mgems active only on test
@@ -172,6 +187,7 @@ end
172
187
  The version requirements and default gem information are optional.
173
188
 
174
189
  Version requirement supports following operators:
190
+
175
191
  * '=': is equal
176
192
  * '!=': is not equal
177
193
  * '>': is greater
@@ -184,18 +200,20 @@ Version requirement supports following operators:
184
200
 
185
201
  When more than one version requirements is passed, the dependency must satisfy all of it.
186
202
 
187
- You can have default gem to use as dependency when it's not defined in *build_config.rb*.
203
+ You can have default gem to use as dependency when it's not defined in your build configuration.
188
204
  When the last argument of `add_dependency` call is `Hash`, it will be treated as default gem information.
189
205
  Its format is same as argument of method `MRuby::Build#gem`, expect that it can't be treated as path gem location.
190
206
 
191
207
  When a special version of dependency is required,
192
- use `MRuby::Build#gem` in *build_config.rb* to override default gem.
208
+ use `MRuby::Build#gem` in the build configuration to override default gem.
193
209
 
194
210
  If you have conflicting GEMs use the following method:
211
+
195
212
  * `spec.add_conflict(gem, *requirements)`
196
213
  * The `requirements` argument is same as in `add_dependency` method.
197
214
 
198
215
  like following code:
216
+
199
217
  ```ruby
200
218
  MRuby::Gem::Specification.new 'some-regexp-binding' do |spec|
201
219
  spec.license = 'BSD'
@@ -238,7 +256,6 @@ For example: when B depends to C and A depends to B, A will get include paths ex
238
256
  Exported include_paths are automatically appended to GEM local include_paths by rake.
239
257
  You can use `spec.export_include_paths` accessor if you want more complex build.
240
258
 
241
-
242
259
  ## C Extension
243
260
 
244
261
  mruby can be extended with C. This is possible by using the C API to
@@ -250,6 +267,7 @@ mrbgems expects that you have implemented a C method called
250
267
  `mrb_YOURGEMNAME_gem_init(mrb_state)`. `YOURGEMNAME` will be replaced
251
268
  by the name of your GEM. If you call your GEM *c_extension_example*, your
252
269
  initialisation method could look like this:
270
+
253
271
  ```C
254
272
  void
255
273
  mrb_c_extension_example_gem_init(mrb_state* mrb) {
@@ -294,7 +312,6 @@ mruby can be extended with pure Ruby. It is possible to override existing
294
312
  classes or add new ones in this way. Put all Ruby files into the *mrblib*
295
313
  folder.
296
314
 
297
-
298
315
  ### Pre-Conditions
299
316
 
300
317
  none
@@ -0,0 +1,83 @@
1
+ # Symbols
2
+
3
+ Symbols in `mruby` C source code is represented by `mrb_sym` which is alias of
4
+ `uint32_t`. Lower 30 bits are used for symbols so that higher 2 bits can be
5
+ used as flags, e.g. `struct mt_elem` in `class.c`.
6
+
7
+ ```C
8
+ struct mt_elem {
9
+ union mt_ptr ptr;
10
+ size_t func_p:1;
11
+ size_t noarg_p:1;
12
+ mrb_sym key:sizeof(mrb_sym)*8-2;
13
+ };
14
+ ```
15
+
16
+ ## C API
17
+
18
+ We provide following C API for symbols.
19
+
20
+ ### Generate Symbols
21
+
22
+ #### `mrb_sym mrb_intern(mrb_state*,const char*,size_t)`
23
+
24
+ Get a symbol from a string.
25
+
26
+ #### `mrb_sym mrb_intern_check_cstr(mrb_state*,const char*)`
27
+
28
+ Get a symbol from a NULL terminated (C) string.
29
+
30
+ #### `mrb_sym mrb_intern_str(mrb_state*,mrb_value)`
31
+
32
+ Get a symbol from a Ruby string object.
33
+
34
+ #### `mrb_intern_lit(mrb_state*,const char*)`
35
+
36
+ Get a symbol from a C string literal. The second argument should be a C string
37
+ literal, otherwise you will get a compilation error. It does not copy C string
38
+ given the fact it's a literal.
39
+
40
+ #### `mrb_sym mrb_intern_check(mrb_state*,const char*,size_t)`
41
+
42
+ Get a symbol from a string if the string has been already registered as a
43
+ symbol, otherwise return `0`. We also provide variants `mrb_intern_check_str()`
44
+ (from Ruby string) and `mrb_intern_check_cstr()` (from C string).
45
+
46
+ #### `const char *mrb_sym_name(mrb_state*,mrb_sym)`
47
+
48
+ Get a string representation of a symbol as a C string.
49
+
50
+ #### `const char *mrb_sym_name_len(mrb_state*,mrb_sym,mrb_int*)`
51
+
52
+ Get a string representation of a symbol, and its length.
53
+
54
+ ## Preallocate Symbols
55
+
56
+ To save RAM, `mruby` can use compile-time allocation of some symbols. You can
57
+ use following macros to get preallocated symbols by including `mruby/presym.h`
58
+ header.
59
+
60
+ * `MRB_SYM(xor)` //=> xor (Word characters)
61
+ * `MRB_SYM_B(xor)` //=> xor! (Method with Bang)
62
+ * `MRB_SYM_Q(xor)` //=> xor? (Method with Question mark)
63
+ * `MRB_SYM_E(xor)` //=> xor= (Method with Equal)
64
+ * `MRB_CVSYM(xor)` //=> @@xor (Class Variable)
65
+ * `MRB_IVSYM(xor)` //=> @xor (Instance Variable)
66
+ * `MRB_OPSYM(xor)` //=> ^ (Operator)
67
+
68
+ For `MRB_OPSYM()`, specify the names corresponding to operators (see
69
+ `MRuby::Presym::OPERATORS` in `lib/mruby/presym.rb` for the names that
70
+ can be specified for it). Other than that, describe only word characters
71
+ excluding leading and ending punctuations.
72
+
73
+ These macros are converted to static symbol IDs at compile time, unless
74
+ preallocate symbols are disabled by `conf.disable_presym`. In that case,
75
+ these macros are expanded to `mrb_intern_lit` calls, therefore the mruby state
76
+ variable is required. The above macros assume the variable name is `mrb`. If
77
+ its name is not `mrb`, you need to use macros with `_2` suffix, such as
78
+ `MRB_SYM_2` to specify `mrb_state*` variable.
79
+
80
+ ### Disabling Preallocated Symbols
81
+
82
+ You can disable preallocated symbols by specifying `conf.disable_presym` in the
83
+ configuration file.