script_core 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (529) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +35 -57
  3. data/.ruby-version +1 -1
  4. data/Gemfile +2 -2
  5. data/README.md +7 -1
  6. data/ext/enterprise_script_service/Rakefile +1 -1
  7. data/ext/enterprise_script_service/libseccomp/.travis.yml +24 -12
  8. data/ext/enterprise_script_service/libseccomp/CHANGELOG +32 -0
  9. data/ext/enterprise_script_service/libseccomp/CONTRIBUTING.md +37 -26
  10. data/ext/enterprise_script_service/libseccomp/CREDITS +11 -0
  11. data/ext/enterprise_script_service/libseccomp/README.md +21 -1
  12. data/ext/enterprise_script_service/libseccomp/configure.ac +13 -8
  13. data/ext/enterprise_script_service/libseccomp/doc/Makefile.am +6 -0
  14. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_api_get.3 +12 -2
  15. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_arch_add.3 +38 -6
  16. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_attr_set.3 +53 -2
  17. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_export_bpf.3 +20 -2
  18. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_init.3 +9 -2
  19. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_load.3 +32 -2
  20. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_merge.3 +16 -2
  21. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_alloc.3 +113 -0
  22. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_fd.3 +1 -0
  23. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_free.3 +1 -0
  24. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_id_valid.3 +1 -0
  25. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_receive.3 +1 -0
  26. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_respond.3 +1 -0
  27. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_rule_add.3 +64 -3
  28. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_syscall_priority.3 +18 -3
  29. data/ext/enterprise_script_service/libseccomp/include/seccomp-syscalls.h +19 -0
  30. data/ext/enterprise_script_service/libseccomp/include/seccomp.h.in +116 -0
  31. data/ext/enterprise_script_service/libseccomp/src/.gitignore +2 -0
  32. data/ext/enterprise_script_service/libseccomp/src/Makefile.am +31 -17
  33. data/ext/enterprise_script_service/libseccomp/src/api.c +254 -58
  34. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64.h +1 -9
  35. data/ext/enterprise_script_service/libseccomp/src/arch-arm.c +47 -2
  36. data/ext/enterprise_script_service/libseccomp/src/arch-arm.h +1 -9
  37. data/ext/enterprise_script_service/libseccomp/src/arch-gperf-generate +40 -0
  38. data/ext/enterprise_script_service/libseccomp/src/arch-mips.c +41 -4
  39. data/ext/enterprise_script_service/libseccomp/src/arch-mips.h +2 -10
  40. data/ext/enterprise_script_service/libseccomp/src/arch-mips64.c +41 -4
  41. data/ext/enterprise_script_service/libseccomp/src/arch-mips64.h +3 -11
  42. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.c +41 -4
  43. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.h +2 -10
  44. data/ext/enterprise_script_service/libseccomp/src/arch-parisc.h +1 -10
  45. data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.c +3 -3
  46. data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.h +29 -0
  47. data/ext/enterprise_script_service/libseccomp/src/arch-ppc.h +1 -9
  48. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.c +606 -8
  49. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.h +2 -10
  50. data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.c +31 -0
  51. data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.h +22 -0
  52. data/ext/enterprise_script_service/libseccomp/src/arch-s390.c +171 -12
  53. data/ext/enterprise_script_service/libseccomp/src/arch-s390.h +1 -17
  54. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.c +166 -10
  55. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.h +1 -20
  56. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-dump.c +8 -1
  57. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-validate +359 -143
  58. data/ext/enterprise_script_service/libseccomp/src/arch-x32.c +36 -2
  59. data/ext/enterprise_script_service/libseccomp/src/arch-x32.h +2 -10
  60. data/ext/enterprise_script_service/libseccomp/src/arch-x86.c +172 -10
  61. data/ext/enterprise_script_service/libseccomp/src/arch-x86.h +1 -14
  62. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64.h +1 -9
  63. data/ext/enterprise_script_service/libseccomp/src/arch.c +11 -3
  64. data/ext/enterprise_script_service/libseccomp/src/arch.h +7 -0
  65. data/ext/enterprise_script_service/libseccomp/src/db.c +268 -57
  66. data/ext/enterprise_script_service/libseccomp/src/db.h +16 -2
  67. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.c +503 -148
  68. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.h +2 -1
  69. data/ext/enterprise_script_service/libseccomp/src/gen_pfc.c +165 -37
  70. data/ext/enterprise_script_service/libseccomp/src/python/libseccomp.pxd +37 -1
  71. data/ext/enterprise_script_service/libseccomp/src/python/seccomp.pyx +295 -5
  72. data/ext/enterprise_script_service/libseccomp/src/syscalls.c +56 -0
  73. data/ext/enterprise_script_service/libseccomp/src/syscalls.csv +470 -0
  74. data/ext/enterprise_script_service/libseccomp/src/syscalls.h +62 -0
  75. data/ext/enterprise_script_service/libseccomp/src/syscalls.perf.template +82 -0
  76. data/ext/enterprise_script_service/libseccomp/src/system.c +196 -16
  77. data/ext/enterprise_script_service/libseccomp/src/system.h +68 -13
  78. data/ext/enterprise_script_service/libseccomp/tests/.gitignore +10 -2
  79. data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.tests +1 -1
  80. data/ext/enterprise_script_service/libseccomp/tests/11-basic-basic_errors.c +5 -5
  81. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.c +35 -1
  82. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.py +10 -1
  83. data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.c +4 -3
  84. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.c +12 -0
  85. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.py +1 -0
  86. data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.c → 18-sim-basic_allowlist.c} +0 -0
  87. data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.py → 18-sim-basic_allowlist.py} +0 -0
  88. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_allowlist.tests +32 -0
  89. data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.c +3 -0
  90. data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.py +1 -0
  91. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.c +3 -0
  92. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.py +1 -0
  93. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.tests +33 -17
  94. data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.c → 34-sim-basic_denylist.c} +0 -0
  95. data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.py → 34-sim-basic_denylist.py} +0 -0
  96. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_denylist.tests +32 -0
  97. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.c +3 -0
  98. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.py +1 -0
  99. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.tests +25 -25
  100. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.c +24 -3
  101. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.py +16 -1
  102. data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.c +3 -3
  103. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.c +112 -0
  104. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.py +60 -0
  105. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.tests +11 -0
  106. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.c +48 -0
  107. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.py +38 -0
  108. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.tests +11 -0
  109. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.c +156 -0
  110. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.py +95 -0
  111. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.tests +65 -0
  112. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.c +128 -0
  113. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.py +95 -0
  114. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.tests +11 -0
  115. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.c +134 -0
  116. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.sh +46 -0
  117. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.tests +11 -0
  118. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.c +90 -0
  119. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.py +65 -0
  120. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.tests +11 -0
  121. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.c +64 -0
  122. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.py +46 -0
  123. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.tests +11 -0
  124. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.c +116 -0
  125. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.py +61 -0
  126. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.tests +11 -0
  127. data/ext/enterprise_script_service/libseccomp/tests/Makefile.am +34 -10
  128. data/ext/enterprise_script_service/libseccomp/tests/regression +10 -3
  129. data/ext/enterprise_script_service/libseccomp/tests/util.c +3 -3
  130. data/ext/enterprise_script_service/libseccomp/tools/Makefile.am +0 -3
  131. data/ext/enterprise_script_service/libseccomp/tools/check-syntax +1 -1
  132. data/ext/enterprise_script_service/libseccomp/tools/scmp_arch_detect.c +3 -0
  133. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_disasm.c +4 -2
  134. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_sim.c +4 -0
  135. data/ext/enterprise_script_service/libseccomp/tools/util.c +14 -12
  136. data/ext/enterprise_script_service/libseccomp/tools/util.h +7 -0
  137. data/ext/enterprise_script_service/mruby/.github/workflows/build.yml +149 -0
  138. data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +55 -0
  139. data/ext/enterprise_script_service/mruby/.github/workflows/lint.yml +23 -0
  140. data/ext/enterprise_script_service/mruby/.github/workflows/oss-fuzz.yml +27 -0
  141. data/ext/enterprise_script_service/mruby/.github/workflows/spell-checker.yml +17 -0
  142. data/ext/enterprise_script_service/mruby/.gitignore +3 -0
  143. data/ext/enterprise_script_service/mruby/.gitlab-ci.yml +3 -3
  144. data/ext/enterprise_script_service/mruby/.markdownlint.yml +16 -0
  145. data/ext/enterprise_script_service/mruby/.travis.yml +7 -10
  146. data/ext/enterprise_script_service/mruby/.yamllint +8 -0
  147. data/ext/enterprise_script_service/mruby/AUTHORS +4 -0
  148. data/ext/enterprise_script_service/mruby/CODEOWNERS +1 -0
  149. data/ext/enterprise_script_service/mruby/CONTRIBUTING.md +6 -13
  150. data/ext/enterprise_script_service/mruby/Doxyfile +4 -4
  151. data/ext/enterprise_script_service/mruby/LICENSE +1 -1
  152. data/ext/enterprise_script_service/mruby/Makefile +1 -1
  153. data/ext/enterprise_script_service/mruby/README.md +5 -11
  154. data/ext/enterprise_script_service/mruby/Rakefile +18 -108
  155. data/ext/enterprise_script_service/mruby/TODO.md +17 -0
  156. data/ext/enterprise_script_service/mruby/appveyor.yml +29 -26
  157. data/ext/enterprise_script_service/mruby/benchmark/bm_ao_render.rb +1 -1
  158. data/ext/enterprise_script_service/mruby/build_config.rb +9 -152
  159. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_ArduinoDue.rb → build_config/ArduinoDue.rb} +4 -21
  160. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelEdison.rb → build_config/IntelEdison.rb} +4 -4
  161. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelGalileo.rb → build_config/IntelGalileo.rb} +3 -20
  162. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_RX630.rb → build_config/RX630.rb} +4 -21
  163. data/ext/enterprise_script_service/mruby/build_config/android_arm64-v8a.rb +11 -0
  164. data/ext/enterprise_script_service/mruby/build_config/android_armeabi.rb +11 -0
  165. 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
  166. data/ext/enterprise_script_service/mruby/build_config/bench.rb +11 -0
  167. data/ext/enterprise_script_service/mruby/build_config/boxing.rb +21 -0
  168. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_chipKITMax32.rb → build_config/chipKITMax32.rb} +4 -21
  169. data/ext/enterprise_script_service/mruby/{appveyor_config.rb → build_config/ci/gcc-clang.rb} +11 -8
  170. data/ext/enterprise_script_service/mruby/build_config/ci/msvc.rb +20 -0
  171. data/ext/enterprise_script_service/mruby/build_config/clang-asan.rb +11 -0
  172. data/ext/enterprise_script_service/mruby/build_config/cross-32bit.rb +14 -0
  173. data/ext/enterprise_script_service/mruby/build_config/default.rb +80 -0
  174. data/ext/enterprise_script_service/mruby/build_config/dreamcast_shelf.rb +94 -0
  175. data/ext/enterprise_script_service/mruby/build_config/gameboyadvance.rb +73 -0
  176. data/ext/enterprise_script_service/mruby/build_config/host-cxx.rb +12 -0
  177. data/ext/enterprise_script_service/mruby/build_config/host-debug.rb +20 -0
  178. data/ext/enterprise_script_service/mruby/build_config/host-gprof.rb +14 -0
  179. data/ext/enterprise_script_service/mruby/build_config/host-m32.rb +15 -0
  180. data/ext/enterprise_script_service/mruby/build_config/host-shared.rb +36 -0
  181. data/ext/enterprise_script_service/mruby/build_config/mrbc.rb +11 -0
  182. data/ext/enterprise_script_service/mruby/build_config/no-float.rb +17 -0
  183. data/ext/enterprise_script_service/mruby/doc/guides/compile.md +142 -49
  184. data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +5 -4
  185. data/ext/enterprise_script_service/mruby/doc/guides/gc-arena-howto.md +1 -1
  186. data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +53 -30
  187. data/ext/enterprise_script_service/mruby/doc/guides/mrbgems.md +31 -14
  188. data/ext/enterprise_script_service/mruby/doc/guides/symbol.md +83 -0
  189. data/ext/enterprise_script_service/mruby/doc/limitations.md +35 -36
  190. data/ext/enterprise_script_service/mruby/doc/mruby3.md +163 -0
  191. data/ext/enterprise_script_service/mruby/doc/opcode.md +102 -103
  192. data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb +1 -1
  193. data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +5 -1
  194. data/ext/enterprise_script_service/mruby/examples/mrbgems/c_extension_example/src/example.c +5 -1
  195. data/ext/enterprise_script_service/mruby/examples/mrbgems/ruby_extension_example/mrblib/example.rb +1 -1
  196. data/ext/enterprise_script_service/mruby/include/mrbconf.h +88 -66
  197. data/ext/enterprise_script_service/mruby/include/mruby.h +160 -104
  198. data/ext/enterprise_script_service/mruby/include/mruby/array.h +27 -6
  199. data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +80 -46
  200. data/ext/enterprise_script_service/mruby/include/mruby/boxing_no.h +8 -8
  201. data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +76 -55
  202. data/ext/enterprise_script_service/mruby/include/mruby/class.h +10 -8
  203. data/ext/enterprise_script_service/mruby/include/mruby/common.h +14 -1
  204. data/ext/enterprise_script_service/mruby/include/mruby/compile.h +20 -6
  205. data/ext/enterprise_script_service/mruby/include/mruby/debug.h +2 -2
  206. data/ext/enterprise_script_service/mruby/include/mruby/dump.h +18 -52
  207. data/ext/enterprise_script_service/mruby/include/mruby/endian.h +44 -0
  208. data/ext/enterprise_script_service/mruby/include/mruby/error.h +39 -5
  209. data/ext/enterprise_script_service/mruby/include/mruby/gc.h +1 -0
  210. data/ext/enterprise_script_service/mruby/include/mruby/hash.h +33 -13
  211. data/ext/enterprise_script_service/mruby/include/mruby/irep.h +74 -14
  212. data/ext/enterprise_script_service/mruby/include/mruby/istruct.h +4 -1
  213. data/ext/enterprise_script_service/mruby/include/mruby/khash.h +19 -9
  214. data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +37 -63
  215. data/ext/enterprise_script_service/mruby/include/mruby/opcode.h +1 -27
  216. data/ext/enterprise_script_service/mruby/include/mruby/ops.h +29 -24
  217. data/ext/enterprise_script_service/mruby/include/mruby/presym.h +40 -0
  218. data/ext/enterprise_script_service/mruby/include/mruby/presym/disable.h +70 -0
  219. data/ext/enterprise_script_service/mruby/include/mruby/presym/enable.h +37 -0
  220. data/ext/enterprise_script_service/mruby/include/mruby/presym/scanning.h +73 -0
  221. data/ext/enterprise_script_service/mruby/include/mruby/proc.h +93 -21
  222. data/ext/enterprise_script_service/mruby/include/mruby/string.h +12 -16
  223. data/ext/enterprise_script_service/mruby/include/mruby/throw.h +14 -3
  224. data/ext/enterprise_script_service/mruby/include/mruby/value.h +60 -59
  225. data/ext/enterprise_script_service/mruby/include/mruby/variable.h +1 -0
  226. data/ext/enterprise_script_service/mruby/include/mruby/version.h +25 -6
  227. data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +198 -72
  228. data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +71 -78
  229. data/ext/enterprise_script_service/mruby/lib/mruby/build/load_gems.rb +12 -10
  230. data/ext/enterprise_script_service/mruby/lib/{mruby-core-ext.rb → mruby/core_ext.rb} +10 -3
  231. data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +84 -32
  232. data/ext/enterprise_script_service/mruby/lib/mruby/lockfile.rb +1 -1
  233. data/ext/enterprise_script_service/mruby/lib/mruby/presym.rb +132 -0
  234. data/ext/enterprise_script_service/mruby/lib/mruby/source.rb +3 -1
  235. data/ext/enterprise_script_service/mruby/mrbgems/default-no-fpu.gembox +3 -0
  236. data/ext/enterprise_script_service/mruby/mrbgems/default-no-stdio.gembox +4 -0
  237. data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +9 -81
  238. data/ext/enterprise_script_service/mruby/mrbgems/full-core.gembox +1 -4
  239. data/ext/enterprise_script_service/mruby/mrbgems/math.gembox +10 -0
  240. data/ext/enterprise_script_service/mruby/mrbgems/metaprog.gembox +15 -0
  241. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +1 -32
  242. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +10 -12
  243. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +0 -13
  244. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +30 -18
  245. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mruby-config +18 -8
  246. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/mrdb.rb +3 -6
  247. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +10 -10
  248. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +14 -9
  249. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +3 -2
  250. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +4 -4
  251. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +2 -6
  252. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +6 -2
  253. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +23 -5
  254. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +11 -2
  255. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +46 -35
  256. data/ext/enterprise_script_service/mruby/mrbgems/{mruby-compiler → mruby-bin-mrbc}/bintest/mrbc.rb +0 -0
  257. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +3 -4
  258. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +41 -28
  259. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +25 -4
  260. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -2
  261. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +26 -6
  262. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +1 -1
  263. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +6 -2
  264. data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrbgem.rake +5 -0
  265. data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrblib/catch.rb +27 -0
  266. data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +7 -1
  267. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +495 -436
  268. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/keywords +5 -0
  269. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/lex.def +49 -44
  270. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +637 -220
  271. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +13734 -0
  272. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +20 -23
  273. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +2 -2
  274. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +9 -9
  275. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/test/complex.rb +4 -4
  276. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +1 -0
  277. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +2 -2
  278. data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/mrbgem.rake +2 -2
  279. data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/src/exception.c +3 -3
  280. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +19 -238
  281. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +21 -0
  282. data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +19 -15
  283. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +31 -5
  284. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/test/hash.rb +7 -0
  285. data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +5 -6
  286. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/README.md +18 -16
  287. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +39 -7
  288. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +2 -8
  289. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file.rb +9 -4
  290. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +0 -16
  291. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +9 -14
  292. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +107 -59
  293. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +22 -38
  294. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +417 -203
  295. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +20 -12
  296. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +33 -2
  297. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +58 -50
  298. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +13 -14
  299. data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/src/math.c +13 -12
  300. data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/test/math.rb +5 -4
  301. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +56 -73
  302. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +13 -4
  303. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/README.md +4 -3
  304. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +80 -78
  305. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/test/method.rb +4 -4
  306. data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +14 -13
  307. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +8 -16
  308. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +18 -13
  309. data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/mrbgem.rake +10 -0
  310. data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/src/memsize.c +231 -0
  311. data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/test/memsize.rb +63 -0
  312. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/README.md +15 -18
  313. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +120 -67
  314. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -30
  315. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +65 -26
  316. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +34 -21
  317. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/test/proc.c +1 -1
  318. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/random.c +98 -43
  319. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/test/random.rb +2 -2
  320. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +39 -6
  321. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +21 -43
  322. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/test/range.rb +27 -3
  323. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +12 -20
  324. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +216 -38
  325. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/test/rational.rb +6 -6
  326. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/README.md +6 -4
  327. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +5 -5
  328. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/README.md +3 -2
  329. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrbgem.rake +1 -1
  330. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/socket.c +47 -45
  331. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/sockettest.c +3 -2
  332. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +161 -93
  333. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +9 -25
  334. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +23 -1
  335. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +17 -14
  336. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/mrblib/struct.rb +1 -1
  337. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +23 -36
  338. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +7 -6
  339. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +1 -1
  340. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/README.md +0 -1
  341. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/driver.c +5 -5
  342. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +17 -44
  343. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/vformat.c +4 -4
  344. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +37 -41
  345. data/ext/enterprise_script_service/mruby/mrbgems/stdlib-ext.gembox +18 -0
  346. data/ext/enterprise_script_service/mruby/mrbgems/stdlib-io.gembox +12 -0
  347. data/ext/enterprise_script_service/mruby/mrbgems/stdlib.gembox +54 -0
  348. data/ext/enterprise_script_service/mruby/mrblib/00class.rb +10 -0
  349. data/ext/enterprise_script_service/mruby/mrblib/10error.rb +4 -0
  350. data/ext/enterprise_script_service/mruby/mrblib/array.rb +17 -9
  351. data/ext/enterprise_script_service/mruby/mrblib/enum.rb +1 -1
  352. data/ext/enterprise_script_service/mruby/mrblib/hash.rb +3 -23
  353. data/ext/enterprise_script_service/mruby/mrblib/init_mrblib.c +0 -11
  354. data/ext/enterprise_script_service/mruby/mrblib/numeric.rb +36 -11
  355. data/ext/enterprise_script_service/mruby/mrblib/range.rb +25 -3
  356. data/ext/enterprise_script_service/mruby/oss-fuzz/mruby_proto_fuzzer.cpp +2 -2
  357. data/ext/enterprise_script_service/mruby/oss-fuzz/proto_to_ruby.h +1 -1
  358. data/ext/enterprise_script_service/mruby/src/array.c +67 -90
  359. data/ext/enterprise_script_service/mruby/src/backtrace.c +18 -19
  360. data/ext/enterprise_script_service/mruby/src/class.c +819 -211
  361. data/ext/enterprise_script_service/mruby/src/codedump.c +226 -197
  362. data/ext/enterprise_script_service/mruby/src/debug.c +14 -11
  363. data/ext/enterprise_script_service/mruby/src/dump.c +470 -207
  364. data/ext/enterprise_script_service/mruby/src/enum.c +1 -1
  365. data/ext/enterprise_script_service/mruby/src/error.c +94 -20
  366. data/ext/enterprise_script_service/mruby/src/etc.c +56 -39
  367. data/ext/enterprise_script_service/mruby/src/fmt_fp.c +103 -27
  368. data/ext/enterprise_script_service/mruby/src/gc.c +86 -349
  369. data/ext/enterprise_script_service/mruby/src/hash.c +1058 -723
  370. data/ext/enterprise_script_service/mruby/src/kernel.c +78 -226
  371. data/ext/enterprise_script_service/mruby/src/load.c +215 -159
  372. data/ext/enterprise_script_service/mruby/src/numeric.c +400 -382
  373. data/ext/enterprise_script_service/mruby/src/object.c +115 -90
  374. data/ext/enterprise_script_service/mruby/src/print.c +31 -6
  375. data/ext/enterprise_script_service/mruby/src/proc.c +56 -45
  376. data/ext/enterprise_script_service/mruby/src/range.c +49 -33
  377. data/ext/enterprise_script_service/mruby/src/state.c +58 -42
  378. data/ext/enterprise_script_service/mruby/src/string.c +151 -156
  379. data/ext/enterprise_script_service/mruby/src/symbol.c +132 -66
  380. data/ext/enterprise_script_service/mruby/src/value_array.h +1 -0
  381. data/ext/enterprise_script_service/mruby/src/variable.c +158 -158
  382. data/ext/enterprise_script_service/mruby/src/vm.c +655 -645
  383. data/ext/enterprise_script_service/mruby/tasks/benchmark.rake +6 -6
  384. data/ext/enterprise_script_service/mruby/tasks/bin.rake +23 -0
  385. data/ext/enterprise_script_service/mruby/tasks/core.rake +12 -0
  386. data/ext/enterprise_script_service/mruby/tasks/doc.rake +50 -38
  387. data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +64 -61
  388. data/ext/enterprise_script_service/mruby/tasks/libmruby.rake +10 -1
  389. data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +13 -1
  390. data/ext/enterprise_script_service/mruby/tasks/mrblib.rake +40 -0
  391. data/ext/enterprise_script_service/mruby/tasks/presym.rake +44 -0
  392. data/ext/enterprise_script_service/mruby/tasks/test.rake +68 -0
  393. data/ext/enterprise_script_service/mruby/tasks/toolchains/android.rake +46 -1
  394. data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +8 -7
  395. data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +13 -17
  396. data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +21 -25
  397. data/ext/enterprise_script_service/mruby/test/assert.rb +5 -4
  398. data/ext/enterprise_script_service/mruby/test/bintest.rb +5 -5
  399. data/ext/enterprise_script_service/mruby/test/t/argumenterror.rb +16 -0
  400. data/ext/enterprise_script_service/mruby/test/t/array.rb +7 -3
  401. data/ext/enterprise_script_service/mruby/test/t/bs_literal.rb +1 -1
  402. data/ext/enterprise_script_service/mruby/test/t/ensure.rb +8 -26
  403. data/ext/enterprise_script_service/mruby/test/t/exception.rb +2 -2
  404. data/ext/enterprise_script_service/mruby/test/t/float.rb +18 -8
  405. data/ext/enterprise_script_service/mruby/test/t/hash.rb +903 -281
  406. data/ext/enterprise_script_service/mruby/test/t/integer.rb +10 -38
  407. data/ext/enterprise_script_service/mruby/test/t/kernel.rb +16 -25
  408. data/ext/enterprise_script_service/mruby/test/t/literals.rb +50 -0
  409. data/ext/enterprise_script_service/mruby/test/t/module.rb +2 -2
  410. data/ext/enterprise_script_service/mruby/test/t/numeric.rb +1 -1
  411. data/ext/enterprise_script_service/mruby/test/t/range.rb +83 -1
  412. data/ext/enterprise_script_service/mruby/test/t/string.rb +4 -0
  413. data/ext/enterprise_script_service/mruby/test/t/superclass.rb +10 -10
  414. data/ext/enterprise_script_service/mruby/test/t/syntax.rb +24 -0
  415. data/ext/enterprise_script_service/mruby/test/t/vformat.rb +3 -3
  416. data/ext/enterprise_script_service/mruby_config.rb +2 -5
  417. data/ext/enterprise_script_service/mruby_engine.cpp +1 -1
  418. data/ext/enterprise_script_service/msgpack/.github/depends/boost.sh +56 -0
  419. data/ext/enterprise_script_service/msgpack/.github/workflows/coverage.yml +62 -0
  420. data/ext/enterprise_script_service/msgpack/.github/workflows/gha.yml +304 -0
  421. data/ext/enterprise_script_service/msgpack/CHANGELOG.md +11 -0
  422. data/ext/enterprise_script_service/msgpack/CMakeLists.txt +82 -39
  423. data/ext/enterprise_script_service/msgpack/Files.cmake +22 -12
  424. data/ext/enterprise_script_service/msgpack/QUICKSTART-C.md +26 -29
  425. data/ext/enterprise_script_service/msgpack/README.md +3 -2
  426. data/ext/enterprise_script_service/msgpack/appveyor.yml +6 -2
  427. data/ext/enterprise_script_service/msgpack/ci/build_cmake.sh +3 -1
  428. data/ext/enterprise_script_service/msgpack/cmake/CodeCoverage.cmake +55 -0
  429. data/ext/enterprise_script_service/msgpack/codecov.yml +36 -0
  430. data/ext/enterprise_script_service/msgpack/example/CMakeLists.txt +9 -5
  431. data/ext/enterprise_script_service/msgpack/example/boost/CMakeLists.txt +1 -1
  432. data/ext/enterprise_script_service/msgpack/example/c/CMakeLists.txt +17 -6
  433. data/ext/enterprise_script_service/msgpack/example/c/boundary.c +296 -0
  434. data/ext/enterprise_script_service/msgpack/example/c/jsonconv.c +419 -0
  435. data/ext/enterprise_script_service/msgpack/example/c/simple_c.c +1 -1
  436. data/ext/enterprise_script_service/msgpack/example/cpp03/CMakeLists.txt +3 -3
  437. data/ext/enterprise_script_service/msgpack/example/cpp11/CMakeLists.txt +2 -2
  438. data/ext/enterprise_script_service/msgpack/example/x3/CMakeLists.txt +2 -2
  439. data/ext/enterprise_script_service/msgpack/include/msgpack/pack.h +24 -1
  440. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +5 -4
  441. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp +4 -4
  442. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp +8 -8
  443. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/map.hpp +4 -4
  444. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector.hpp +4 -4
  445. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_char.hpp +8 -8
  446. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +8 -8
  447. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/wstring.hpp +4 -4
  448. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack.hpp +6 -6
  449. data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +2 -2
  450. data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer.h +4 -4
  451. data/ext/enterprise_script_service/msgpack/make_file_list.sh +38 -11
  452. data/ext/enterprise_script_service/msgpack/src/vrefbuffer.c +6 -0
  453. data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +86 -64
  454. data/ext/enterprise_script_service/msgpack/test/array_ref.cpp +4 -0
  455. data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +4 -0
  456. data/ext/enterprise_script_service/msgpack/test/boost_optional.cpp +4 -0
  457. data/ext/enterprise_script_service/msgpack/test/boost_string_ref.cpp +4 -1
  458. data/ext/enterprise_script_service/msgpack/test/boost_string_view.cpp +4 -0
  459. data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +4 -0
  460. data/ext/enterprise_script_service/msgpack/test/buffer.cpp +4 -47
  461. data/ext/enterprise_script_service/msgpack/test/buffer_c.cpp +148 -0
  462. data/ext/enterprise_script_service/msgpack/test/carray.cpp +4 -0
  463. data/ext/enterprise_script_service/msgpack/test/cases.cpp +8 -4
  464. data/ext/enterprise_script_service/msgpack/test/convert.cpp +8 -4
  465. data/ext/enterprise_script_service/msgpack/test/fixint.cpp +4 -0
  466. data/ext/enterprise_script_service/msgpack/test/fixint_c.cpp +4 -0
  467. data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +4 -0
  468. data/ext/enterprise_script_service/msgpack/test/iterator_cpp11.cpp +4 -0
  469. data/ext/enterprise_script_service/msgpack/test/json.cpp +4 -0
  470. data/ext/enterprise_script_service/msgpack/test/limit.cpp +8 -4
  471. data/ext/enterprise_script_service/msgpack/test/msgpack_basic.cpp +4 -0
  472. data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +159 -0
  473. data/ext/enterprise_script_service/msgpack/test/msgpack_container.cpp +4 -0
  474. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +32 -27
  475. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +4 -0
  476. data/ext/enterprise_script_service/msgpack/test/msgpack_stream.cpp +4 -0
  477. data/ext/enterprise_script_service/msgpack/test/msgpack_tuple.cpp +4 -1
  478. data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +4 -0
  479. data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +4 -0
  480. data/ext/enterprise_script_service/msgpack/test/object.cpp +4 -1
  481. data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +12 -8
  482. data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +30 -26
  483. data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +4 -0
  484. data/ext/enterprise_script_service/msgpack/test/raw.cpp +4 -0
  485. data/ext/enterprise_script_service/msgpack/test/reference.cpp +4 -0
  486. data/ext/enterprise_script_service/msgpack/test/reference_cpp11.cpp +4 -0
  487. data/ext/enterprise_script_service/msgpack/test/reference_wrapper_cpp11.cpp +4 -0
  488. data/ext/enterprise_script_service/msgpack/test/shared_ptr_cpp11.cpp +4 -0
  489. data/ext/enterprise_script_service/msgpack/test/size_equal_only.cpp +4 -0
  490. data/ext/enterprise_script_service/msgpack/test/streaming.cpp +8 -4
  491. data/ext/enterprise_script_service/msgpack/test/streaming_c.cpp +4 -0
  492. data/ext/enterprise_script_service/msgpack/test/unique_ptr_cpp11.cpp +4 -0
  493. data/ext/enterprise_script_service/msgpack/test/user_class.cpp +16 -12
  494. data/ext/enterprise_script_service/msgpack/test/version.cpp +4 -0
  495. data/ext/enterprise_script_service/msgpack/test/visitor.cpp +4 -0
  496. data/ext/enterprise_script_service/msgpack/test/zone.cpp +4 -0
  497. data/lib/script_core/engine.rb +24 -5
  498. data/lib/script_core/executable.rb +4 -3
  499. data/lib/script_core/version.rb +1 -1
  500. data/lib/tasks/script_core.rake +3 -1
  501. data/script_core.gemspec +1 -2
  502. data/spec/dummy/app/lib/script_engine.rb +64 -5
  503. data/spec/script_core_spec.rb +13 -0
  504. metadata +123 -61
  505. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64-syscalls.c +0 -559
  506. data/ext/enterprise_script_service/libseccomp/src/arch-arm-syscalls.c +0 -570
  507. data/ext/enterprise_script_service/libseccomp/src/arch-mips-syscalls.c +0 -562
  508. data/ext/enterprise_script_service/libseccomp/src/arch-mips64-syscalls.c +0 -562
  509. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32-syscalls.c +0 -562
  510. data/ext/enterprise_script_service/libseccomp/src/arch-parisc-syscalls.c +0 -542
  511. data/ext/enterprise_script_service/libseccomp/src/arch-ppc-syscalls.c +0 -559
  512. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64-syscalls.c +0 -559
  513. data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +0 -626
  514. data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +0 -626
  515. data/ext/enterprise_script_service/libseccomp/src/arch-x32-syscalls.c +0 -558
  516. data/ext/enterprise_script_service/libseccomp/src/arch-x86-syscalls.c +0 -692
  517. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64-syscalls.c +0 -559
  518. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.tests +0 -32
  519. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.tests +0 -32
  520. data/ext/enterprise_script_service/mruby/TODO +0 -8
  521. data/ext/enterprise_script_service/mruby/benchmark/build_config_boxing.rb +0 -28
  522. data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_arm64-v8a.rb +0 -26
  523. data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_armeabi.rb +0 -26
  524. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/kernel.c +0 -30
  525. data/ext/enterprise_script_service/mruby/mrblib/mrblib.rake +0 -18
  526. data/ext/enterprise_script_service/mruby/src/crc.c +0 -39
  527. data/ext/enterprise_script_service/mruby/src/mruby_core.rake +0 -19
  528. data/ext/enterprise_script_service/mruby/travis_config.rb +0 -54
  529. data/ext/enterprise_script_service/msgpack/.travis.yml +0 -258
@@ -1,5 +1,5 @@
1
1
  module CRubyExtension
2
2
  def CRubyExtension.ruby_method
3
- puts "A Ruby Extension"
3
+ puts "#{self}: A Ruby Extension"
4
4
  end
5
5
  end
@@ -1,10 +1,14 @@
1
1
  #include <mruby.h>
2
+ #include <mruby/string.h>
2
3
  #include <stdio.h>
3
4
 
4
5
  static mrb_value
5
6
  mrb_c_method(mrb_state *mrb, mrb_value self)
6
7
  {
7
- puts("A C Extension");
8
+ mrb_value self_str = mrb_str_to_str(mrb, self);
9
+
10
+ printf("%s: A C Extension\n", mrb_str_to_cstr(mrb, self_str));
11
+
8
12
  return self;
9
13
  }
10
14
 
@@ -1,10 +1,14 @@
1
1
  #include <mruby.h>
2
+ #include <mruby/string.h>
2
3
  #include <stdio.h>
3
4
 
4
5
  static mrb_value
5
6
  mrb_c_method(mrb_state *mrb, mrb_value self)
6
7
  {
7
- puts("A C Extension");
8
+ mrb_value self_str = mrb_str_to_str(mrb, self);
9
+
10
+ printf("%s: A C Extension\n", mrb_str_to_cstr(mrb, self_str));
11
+
8
12
  return self;
9
13
  }
10
14
 
@@ -1,5 +1,5 @@
1
1
  class RubyExtension
2
2
  def RubyExtension.ruby_method
3
- puts "A Ruby Extension"
3
+ puts "#{self}: A Ruby Extension"
4
4
  end
5
5
  end
@@ -25,34 +25,73 @@
25
25
  #endif
26
26
 
27
27
  /* configuration options: */
28
- /* add -DMRB_USE_FLOAT to use float instead of double for floating point numbers */
29
- //#define MRB_USE_FLOAT
28
+ /* add -DMRB_USE_FLOAT32 to use float instead of double for floating point numbers */
29
+ //#define MRB_USE_FLOAT32
30
30
 
31
31
  /* exclude floating point numbers */
32
- //#define MRB_WITHOUT_FLOAT
32
+ //#define MRB_NO_FLOAT
33
33
 
34
- /* add -DMRB_METHOD_CACHE to use method cache to improve performance */
35
- //#define MRB_METHOD_CACHE
34
+ /* obsolete configuration */
35
+ #if defined(MRB_USE_FLOAT)
36
+ # define MRB_USE_FLOAT32
37
+ #endif
38
+
39
+ /* obsolete configuration */
40
+ #if defined(MRB_WITHOUT_FLOAT)
41
+ # define MRB_NO_FLOAT
42
+ #endif
43
+
44
+ #if defined(MRB_USE_FLOAT32) && defined(MRB_NO_FLOAT)
45
+ #error Cannot define MRB_USE_FLOAT32 and MRB_NO_FLOAT at the same time
46
+ #endif
47
+
48
+ /* add -DMRB_NO_METHOD_CACHE to disable method cache to save memory */
49
+ //#define MRB_NO_METHOD_CACHE
36
50
  /* size of the method cache (need to be the power of 2) */
37
- //#define MRB_METHOD_CACHE_SIZE (1<<7)
51
+ //#define MRB_METHOD_CACHE_SIZE (1<<8)
52
+
53
+ /* add -DMRB_USE_METHOD_T_STRUCT on machines that use higher bits of function pointers */
54
+ /* no MRB_USE_METHOD_T_STRUCT requires highest 2 bits of function pointers to be zero */
55
+ #ifndef MRB_USE_METHOD_T_STRUCT
56
+ // can't use highest 2 bits of function pointers at least on 32bit
57
+ // Windows and 32bit Linux.
58
+ # ifdef MRB_32BIT
59
+ # define MRB_USE_METHOD_T_STRUCT
60
+ # endif
61
+ #endif
38
62
 
39
- /* add -DMRB_METHOD_T_STRUCT on machines that use higher bits of pointers */
40
- /* no MRB_METHOD_T_STRUCT requires highest 2 bits of function pointers to be zero */
41
- //#define MRB_METHOD_T_STRUCT
63
+ /* define on big endian machines; used by MRB_NAN_BOXING, etc. */
64
+ #ifndef MRB_ENDIAN_BIG
65
+ # if (defined(BYTE_ORDER) && defined(BIG_ENDIAN) && BYTE_ORDER == BIG_ENDIAN) || \
66
+ (defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
67
+ # define MRB_ENDIAN_BIG
68
+ # endif
69
+ #endif
42
70
 
43
- /* add -DMRB_INT16 to use 16bit integer for mrb_int; conflict with MRB_INT32 and MRB_INT64 */
44
- //#define MRB_INT16
71
+ /* represent mrb_value in boxed double; conflict with MRB_USE_FLOAT32 and MRB_NO_FLOAT */
72
+ //#define MRB_NAN_BOXING
73
+
74
+ /* represent mrb_value as a word (natural unit of data for the processor) */
75
+ //#define MRB_WORD_BOXING
76
+
77
+ /* represent mrb_value as a struct; occupies 2 words */
78
+ //#define MRB_NO_BOXING
79
+
80
+ /* if no specific boxing type is chosen */
81
+ #if !defined(MRB_NAN_BOXING) && !defined(MRB_WORD_BOXING) && !defined(MRB_NO_BOXING)
82
+ # define MRB_WORD_BOXING
83
+ #endif
45
84
 
46
- /* add -DMRB_INT32 to use 32bit integer for mrb_int; conflict with MRB_INT16 and MRB_INT64;
85
+ /* add -DMRB_INT32 to use 32bit integer for mrb_int; conflict with MRB_INT64;
47
86
  Default for 32-bit CPU mode. */
48
87
  //#define MRB_INT32
49
88
 
50
- /* add -DMRB_INT64 to use 64bit integer for mrb_int; conflict with MRB_INT16 and MRB_INT32;
51
- Default for 64-bit CPU mode. */
89
+ /* add -DMRB_INT64 to use 64bit integer for mrb_int; conflict with MRB_INT32;
90
+ Default for 64-bit CPU mode (unless using MRB_NAN_BOXING). */
52
91
  //#define MRB_INT64
53
92
 
54
93
  /* if no specific integer type is chosen */
55
- #if !defined(MRB_INT16) && !defined(MRB_INT32) && !defined(MRB_INT64)
94
+ #if !defined(MRB_INT32) && !defined(MRB_INT64)
56
95
  # if defined(MRB_64BIT) && !defined(MRB_NAN_BOXING)
57
96
  /* Use 64bit integers on 64bit architecture (without MRB_NAN_BOXING) */
58
97
  # define MRB_INT64
@@ -62,19 +101,8 @@
62
101
  # endif
63
102
  #endif
64
103
 
65
- /* define on big endian machines; used by MRB_NAN_BOXING, etc. */
66
- #ifndef MRB_ENDIAN_BIG
67
- # if (defined(BYTE_ORDER) && defined(BIG_ENDIAN) && BYTE_ORDER == BIG_ENDIAN) || \
68
- (defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
69
- # define MRB_ENDIAN_BIG
70
- # endif
71
- #endif
72
-
73
- /* represent mrb_value in boxed double; conflict with MRB_USE_FLOAT and MRB_WITHOUT_FLOAT */
74
- //#define MRB_NAN_BOXING
75
-
76
- /* represent mrb_value as a word (natural unit of data for the processor) */
77
- //#define MRB_WORD_BOXING
104
+ /* call malloc_trim(0) from mrb_full_gc() */
105
+ //#define MRB_USE_MALLOC_TRIM
78
106
 
79
107
  /* string class to handle UTF-8 encoding */
80
108
  //#define MRB_UTF8_STRING
@@ -105,9 +133,6 @@
105
133
  /* page size of memory pool */
106
134
  //#define POOL_PAGE_SIZE 16000
107
135
 
108
- /* initial minimum size for string buffer */
109
- //#define MRB_STR_BUF_MIN_SIZE 128
110
-
111
136
  /* arena size */
112
137
  //#define MRB_GC_ARENA_SIZE 100
113
138
 
@@ -120,26 +145,39 @@
120
145
  /* fixed size state atexit stack */
121
146
  //#define MRB_FIXED_STATE_ATEXIT_STACK
122
147
 
123
- /* -DMRB_DISABLE_XXXX to drop following features */
124
- //#define MRB_DISABLE_STDIO /* use of stdio */
125
-
126
- /* -DMRB_ENABLE_XXXX to enable following features */
127
- //#define MRB_ENABLE_DEBUG_HOOK /* hooks for debugger */
128
- //#define MRB_ENABLE_ALL_SYMBOLS /* Symbols.all_symbols */
148
+ /* -DMRB_NO_XXXX to drop following features */
149
+ //#define MRB_NO_STDIO /* use of stdio */
129
150
 
130
- /* end of configuration */
151
+ /* -DMRB_USE_XXXX to enable following features */
152
+ //#define MRB_USE_DEBUG_HOOK /* hooks for debugger */
153
+ //#define MRB_USE_ALL_SYMBOLS /* Symbol.all_symbols */
131
154
 
132
- /* define MRB_DISABLE_XXXX from DISABLE_XXX (for compatibility) */
133
- #ifdef DISABLE_STDIO
134
- #define MRB_DISABLE_STDIO
155
+ /* obsolete configurations */
156
+ #ifdef MRB_METHOD_T_STRUCT
157
+ # define MRB_USE_METHOD_T_STRUCT
135
158
  #endif
136
-
137
- /* define MRB_ENABLE_XXXX from ENABLE_XXX (for compatibility) */
138
- #ifdef ENABLE_DEBUG
139
- #define MRB_ENABLE_DEBUG_HOOK
159
+ #if defined(DISABLE_STDIO) || defined(MRB_DISABLE_STDIO)
160
+ # define MRB_NO_STDIO
161
+ #endif
162
+ #ifdef MRB_DISABLE_DIRECT_THREADING
163
+ # define MRB_NO_DIRECT_THREADING
164
+ #endif
165
+ #if defined(ENABLE_DEBUG) || defined(MRB_ENABLE_DEBUG_HOOK)
166
+ # define MRB_USE_DEBUG_HOOK
167
+ #endif
168
+ #ifdef MRB_ENABLE_ALL_SYMBOLS
169
+ # define MRB_USE_ALL_SYMBOLS
170
+ #endif
171
+ #ifdef MRB_ENABLE_CXX_ABI
172
+ # define MRB_USE_CXX_ABI
173
+ #endif
174
+ #ifdef MRB_ENABLE_CXX_EXCEPTION
175
+ # define MRB_USE_CXX_EXCEPTION
140
176
  #endif
141
177
 
142
- #ifndef MRB_DISABLE_STDIO
178
+ /* end of configuration */
179
+
180
+ #ifndef MRB_NO_STDIO
143
181
  # include <stdio.h>
144
182
  #endif
145
183
 
@@ -157,12 +195,12 @@
157
195
 
158
196
  /* A profile for micro controllers */
159
197
  #if defined(MRB_CONSTRAINED_BASELINE_PROFILE)
160
- # ifndef KHASH_DEFAULT_SIZE
161
- # define KHASH_DEFAULT_SIZE 16
198
+ # ifndef MRB_NO_METHOD_CACHE
199
+ # define MRB_NO_METHOD_CACHE
162
200
  # endif
163
201
 
164
- # ifndef MRB_STR_BUF_MIN_SIZE
165
- # define MRB_STR_BUF_MIN_SIZE 32
202
+ # ifndef KHASH_DEFAULT_SIZE
203
+ # define KHASH_DEFAULT_SIZE 16
166
204
  # endif
167
205
 
168
206
  # ifndef MRB_HEAP_PAGE_SIZE
@@ -174,36 +212,20 @@
174
212
 
175
213
  /* A profile for desktop computers or workstations; rich memory! */
176
214
  #elif defined(MRB_MAIN_PROFILE)
177
- # ifndef MRB_METHOD_CACHE
178
- # define MRB_METHOD_CACHE
179
- # endif
180
-
181
215
  # ifndef MRB_METHOD_CACHE_SIZE
182
216
  # define MRB_METHOD_CACHE_SIZE (1<<10)
183
217
  # endif
184
218
 
185
- # ifndef MRB_IV_SEGMENT_SIZE
186
- # define MRB_IV_SEGMENT_SIZE 32
187
- # endif
188
-
189
219
  # ifndef MRB_HEAP_PAGE_SIZE
190
220
  # define MRB_HEAP_PAGE_SIZE 4096
191
221
  # endif
192
222
 
193
223
  /* A profile for server; mruby vm is long life */
194
224
  #elif defined(MRB_HIGH_PROFILE)
195
- # ifndef MRB_METHOD_CACHE
196
- # define MRB_METHOD_CACHE
197
- # endif
198
-
199
225
  # ifndef MRB_METHOD_CACHE_SIZE
200
226
  # define MRB_METHOD_CACHE_SIZE (1<<12)
201
227
  # endif
202
228
 
203
- # ifndef MRB_IV_SEGMENT_SIZE
204
- # define MRB_IV_SEGMENT_SIZE 64
205
- # endif
206
-
207
229
  # ifndef MRB_HEAP_PAGE_SIZE
208
230
  # define MRB_HEAP_PAGE_SIZE 4096
209
231
  # endif
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** mruby - An embeddable Ruby implementation
3
3
  **
4
- ** Copyright (c) mruby developers 2010-2019
4
+ ** Copyright (c) mruby developers 2010-2021
5
5
  **
6
6
  ** Permission is hereby granted, free of charge, to any person obtaining
7
7
  ** a copy of this software and associated documentation files (the
@@ -22,7 +22,7 @@
22
22
  ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23
23
  ** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
24
  **
25
- ** [ MIT license: http://www.opensource.org/licenses/mit-license.php ]
25
+ ** [ MIT license: https://www.opensource.org/licenses/mit-license.php ]
26
26
  */
27
27
 
28
28
  /**
@@ -53,6 +53,10 @@
53
53
  #endif
54
54
  #endif
55
55
 
56
+ #ifdef _MSC_VER
57
+ # define __func__ __FUNCTION__
58
+ #endif
59
+
56
60
  #ifdef MRB_DEBUG
57
61
  #include <assert.h>
58
62
  #define mrb_assert(p) assert(p)
@@ -62,15 +66,37 @@
62
66
  #define mrb_assert_int_fit(t1,n,t2,max) ((void)0)
63
67
  #endif
64
68
 
65
- #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L
66
- #define mrb_static_assert(exp, str) _Static_assert(exp, str)
69
+ #if (defined __cplusplus && __cplusplus >= 201103L) || \
70
+ (defined _MSC_VER) || \
71
+ (defined __GXX_EXPERIMENTAL_CXX0X__) /* for old G++/Clang++ */
72
+ # define mrb_static_assert(exp, str) static_assert(exp, str)
73
+ #elif defined __STDC_VERSION__ && \
74
+ ((__STDC_VERSION__ >= 201112L) || \
75
+ (defined __GNUC__ && __GNUC__ * 100 + __GNUC_MINOR__ >= 406))
76
+ # define mrb_static_assert(exp, str) _Static_assert(exp, str)
67
77
  #else
68
- #define mrb_static_assert(exp, str) mrb_assert(exp)
78
+ # /* alternative implementation of static_assert() */
79
+ # define _mrb_static_assert_cat0(a, b) a##b
80
+ # define _mrb_static_assert_cat(a, b) _mrb_static_assert_cat0(a, b)
81
+ # ifdef __COUNTER__
82
+ # define _mrb_static_assert_id(prefix) _mrb_static_assert_cat(prefix, __COUNTER__)
83
+ # else
84
+ # define _mrb_static_assert_id(prefix) _mrb_static_assert_cat(prefix, __LINE__)
85
+ # endif
86
+ # define mrb_static_assert(exp, str) \
87
+ struct _mrb_static_assert_id(_mrb_static_assert_) { char x[(exp) ? 1 : -1]; }
69
88
  #endif
89
+ #define mrb_static_assert1(exp) mrb_static_assert(exp, #exp)
70
90
 
71
91
  #include "mrbconf.h"
72
92
 
73
- #ifndef MRB_WITHOUT_FLOAT
93
+ #include <mruby/common.h>
94
+ #include <mruby/value.h>
95
+ #include <mruby/gc.h>
96
+ #include <mruby/version.h>
97
+
98
+ #ifndef MRB_NO_FLOAT
99
+ #include <float.h>
74
100
  #ifndef FLT_EPSILON
75
101
  #define FLT_EPSILON (1.19209290e-07f)
76
102
  #endif
@@ -81,18 +107,13 @@
81
107
  #define LDBL_EPSILON (1.08420217248550443401e-19L)
82
108
  #endif
83
109
 
84
- #ifdef MRB_USE_FLOAT
110
+ #ifdef MRB_USE_FLOAT32
85
111
  #define MRB_FLOAT_EPSILON FLT_EPSILON
86
112
  #else
87
113
  #define MRB_FLOAT_EPSILON DBL_EPSILON
88
114
  #endif
89
115
  #endif
90
116
 
91
- #include <mruby/common.h>
92
- #include <mruby/value.h>
93
- #include <mruby/gc.h>
94
- #include <mruby/version.h>
95
-
96
117
  /**
97
118
  * MRuby C API entry point
98
119
  */
@@ -129,16 +150,15 @@ typedef void* (*mrb_allocf) (struct mrb_state *mrb, void*, size_t, void *ud);
129
150
 
130
151
  typedef struct {
131
152
  mrb_sym mid;
132
- struct RProc *proc;
133
- mrb_value *stackent;
134
- uint16_t ridx;
135
- uint16_t epos;
136
- struct REnv *env;
137
- const mrb_code *pc; /* return address */
138
- const mrb_code *err; /* error position */
139
- int argc;
140
- int acc;
141
- struct RClass *target_class;
153
+ int16_t argc;
154
+ int16_t acc;
155
+ const struct RProc *proc;
156
+ mrb_value *stack;
157
+ const mrb_code *pc; /* current address on iseq of this proc */
158
+ union {
159
+ struct REnv *env;
160
+ struct RClass *target_class;
161
+ } u;
142
162
  } mrb_callinfo;
143
163
 
144
164
  enum mrb_fiber_state {
@@ -153,28 +173,22 @@ enum mrb_fiber_state {
153
173
  struct mrb_context {
154
174
  struct mrb_context *prev;
155
175
 
156
- mrb_value *stack; /* stack of virtual machine */
157
- mrb_value *stbase, *stend;
176
+ mrb_value *stbase, *stend; /* stack of virtual machine */
158
177
 
159
178
  mrb_callinfo *ci;
160
179
  mrb_callinfo *cibase, *ciend;
161
180
 
162
- uint16_t *rescue; /* exception handler stack */
163
- uint16_t rsize;
164
- struct RProc **ensure; /* ensure handler stack */
165
- uint16_t esize, eidx;
166
-
167
- enum mrb_fiber_state status;
168
- mrb_bool vmexec;
181
+ enum mrb_fiber_state status : 4;
182
+ mrb_bool vmexec : 1;
169
183
  struct RFiber *fib;
170
184
  };
171
185
 
172
186
  #ifdef MRB_METHOD_CACHE_SIZE
173
- # define MRB_METHOD_CACHE
187
+ # undef MRB_NO_METHOD_CACHE
174
188
  #else
175
- /* default method cache size: 128 */
189
+ /* default method cache size: 256 */
176
190
  /* cache size needs to be power of 2 */
177
- # define MRB_METHOD_CACHE_SIZE (1<<7)
191
+ # define MRB_METHOD_CACHE_SIZE (1<<8)
178
192
  #endif
179
193
 
180
194
  /**
@@ -188,7 +202,7 @@ struct mrb_context {
188
202
  */
189
203
  typedef mrb_value (*mrb_func_t)(struct mrb_state *mrb, mrb_value self);
190
204
 
191
- #ifndef MRB_METHOD_T_STRUCT
205
+ #ifndef MRB_USE_METHOD_T_STRUCT
192
206
  typedef uintptr_t mrb_method_t;
193
207
  #else
194
208
  typedef struct {
@@ -200,7 +214,7 @@ typedef struct {
200
214
  } mrb_method_t;
201
215
  #endif
202
216
 
203
- #ifdef MRB_METHOD_CACHE
217
+ #ifndef MRB_NO_METHOD_CACHE
204
218
  struct mrb_cache_entry {
205
219
  struct RClass *c, *c0;
206
220
  mrb_sym mid;
@@ -234,10 +248,10 @@ typedef struct mrb_state {
234
248
  struct RClass *hash_class;
235
249
  struct RClass *range_class;
236
250
 
237
- #ifndef MRB_WITHOUT_FLOAT
251
+ #ifndef MRB_NO_FLOAT
238
252
  struct RClass *float_class;
239
253
  #endif
240
- struct RClass *fixnum_class;
254
+ struct RClass *integer_class;
241
255
  struct RClass *true_class;
242
256
  struct RClass *false_class;
243
257
  struct RClass *nil_class;
@@ -246,7 +260,7 @@ typedef struct mrb_state {
246
260
 
247
261
  mrb_gc gc;
248
262
 
249
- #ifdef MRB_METHOD_CACHE
263
+ #ifndef MRB_NO_METHOD_CACHE
250
264
  struct mrb_cache_entry cache[MRB_METHOD_CACHE_SIZE];
251
265
  #endif
252
266
 
@@ -254,13 +268,13 @@ typedef struct mrb_state {
254
268
  struct symbol_name *symtbl; /* symbol table */
255
269
  mrb_sym symhash[256];
256
270
  size_t symcapa;
257
- #ifndef MRB_ENABLE_SYMBOLL_ALL
271
+ #ifndef MRB_USE_ALL_SYMBOLS
258
272
  char symbuf[8]; /* buffer for small symbol names */
259
273
  #endif
260
274
 
261
- #ifdef MRB_ENABLE_DEBUG_HOOK
262
- void (*code_fetch_hook)(struct mrb_state* mrb, struct mrb_irep *irep, const mrb_code *pc, mrb_value *regs);
263
- void (*debug_op_hook)(struct mrb_state* mrb, struct mrb_irep *irep, const mrb_code *pc, mrb_value *regs);
275
+ #ifdef MRB_USE_DEBUG_HOOK
276
+ void (*code_fetch_hook)(struct mrb_state* mrb, const struct mrb_irep *irep, const mrb_code *pc, mrb_value *regs);
277
+ void (*debug_op_hook)(struct mrb_state* mrb, const struct mrb_irep *irep, const mrb_code *pc, mrb_value *regs);
264
278
  #endif
265
279
 
266
280
  #ifdef MRB_BYTECODE_DECODE_OPTION
@@ -272,7 +286,7 @@ typedef struct mrb_state {
272
286
  struct RObject *nomem_err; /* pre-allocated NoMemoryError */
273
287
  struct RObject *stack_err; /* pre-allocated SysStackError */
274
288
  #ifdef MRB_GC_FIXED_ARENA
275
- struct RObject *arena_err; /* pre-allocated arena overfow error */
289
+ struct RObject *arena_err; /* pre-allocated arena overflow error */
276
290
  #endif
277
291
 
278
292
  void *ud; /* auxiliary data */
@@ -283,7 +297,6 @@ typedef struct mrb_state {
283
297
  mrb_atexit_func *atexit_stack;
284
298
  #endif
285
299
  uint16_t atexit_stack_len;
286
- uint16_t ecall_nest; /* prevent infinite recursive ecall() */
287
300
  } mrb_state;
288
301
 
289
302
  /**
@@ -308,6 +321,7 @@ typedef struct mrb_state {
308
321
  * @see mrb_define_class_under
309
322
  */
310
323
  MRB_API struct RClass *mrb_define_class(mrb_state *mrb, const char *name, struct RClass *super);
324
+ MRB_API struct RClass *mrb_define_class_id(mrb_state *mrb, mrb_sym name, struct RClass *super);
311
325
 
312
326
  /**
313
327
  * Defines a new module.
@@ -317,7 +331,10 @@ MRB_API struct RClass *mrb_define_class(mrb_state *mrb, const char *name, struct
317
331
  * @return [struct RClass *] Reference to the newly defined module.
318
332
  */
319
333
  MRB_API struct RClass *mrb_define_module(mrb_state *mrb, const char *name);
334
+ MRB_API struct RClass *mrb_define_module_id(mrb_state *mrb, mrb_sym name);
335
+
320
336
  MRB_API mrb_value mrb_singleton_class(mrb_state *mrb, mrb_value val);
337
+ MRB_API struct RClass *mrb_singleton_class_ptr(mrb_state *mrb, mrb_value val);
321
338
 
322
339
  /**
323
340
  * Include a module in another class or module.
@@ -370,6 +387,7 @@ MRB_API void mrb_prepend_module(mrb_state *mrb, struct RClass *cla, struct RClas
370
387
  * @param aspec The method parameters declaration.
371
388
  */
372
389
  MRB_API void mrb_define_method(mrb_state *mrb, struct RClass *cla, const char *name, mrb_func_t func, mrb_aspec aspec);
390
+ MRB_API void mrb_define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t func, mrb_aspec aspec);
373
391
 
374
392
  /**
375
393
  * Defines a class method.
@@ -397,6 +415,7 @@ MRB_API void mrb_define_method(mrb_state *mrb, struct RClass *cla, const char *n
397
415
  * @param aspec The method parameters declaration.
398
416
  */
399
417
  MRB_API void mrb_define_class_method(mrb_state *mrb, struct RClass *cla, const char *name, mrb_func_t fun, mrb_aspec aspec);
418
+ MRB_API void mrb_define_class_method_id(mrb_state *mrb, struct RClass *cla, mrb_sym name, mrb_func_t fun, mrb_aspec aspec);
400
419
 
401
420
  /**
402
421
  * Defines a singleton method
@@ -404,6 +423,7 @@ MRB_API void mrb_define_class_method(mrb_state *mrb, struct RClass *cla, const c
404
423
  * @see mrb_define_class_method
405
424
  */
406
425
  MRB_API void mrb_define_singleton_method(mrb_state *mrb, struct RObject *cla, const char *name, mrb_func_t fun, mrb_aspec aspec);
426
+ MRB_API void mrb_define_singleton_method_id(mrb_state *mrb, struct RObject *cla, mrb_sym name, mrb_func_t fun, mrb_aspec aspec);
407
427
 
408
428
  /**
409
429
  * Defines a module function.
@@ -431,6 +451,7 @@ MRB_API void mrb_define_singleton_method(mrb_state *mrb, struct RObject *cla, co
431
451
  * @param aspec The method parameters declaration.
432
452
  */
433
453
  MRB_API void mrb_define_module_function(mrb_state *mrb, struct RClass *cla, const char *name, mrb_func_t fun, mrb_aspec aspec);
454
+ MRB_API void mrb_define_module_function_id(mrb_state *mrb, struct RClass *cla, mrb_sym name, mrb_func_t fun, mrb_aspec aspec);
434
455
 
435
456
  /**
436
457
  * Defines a constant.
@@ -459,6 +480,7 @@ MRB_API void mrb_define_module_function(mrb_state *mrb, struct RClass *cla, cons
459
480
  * @param val The value for the constant.
460
481
  */
461
482
  MRB_API void mrb_define_const(mrb_state* mrb, struct RClass* cla, const char *name, mrb_value val);
483
+ MRB_API void mrb_define_const_id(mrb_state* mrb, struct RClass* cla, mrb_sym name, mrb_value val);
462
484
 
463
485
  /**
464
486
  * Undefines a method.
@@ -549,6 +571,7 @@ MRB_API void mrb_undef_method_id(mrb_state*, struct RClass*, mrb_sym);
549
571
  * @param name The name of the class method to be undefined.
550
572
  */
551
573
  MRB_API void mrb_undef_class_method(mrb_state *mrb, struct RClass *cls, const char *name);
574
+ MRB_API void mrb_undef_class_method_id(mrb_state *mrb, struct RClass *cls, mrb_sym name);
552
575
 
553
576
  /**
554
577
  * Initialize a new object instance of c class.
@@ -650,6 +673,7 @@ MRB_API struct RClass * mrb_module_new(mrb_state *mrb);
650
673
  * @return [mrb_bool] A boolean value.
651
674
  */
652
675
  MRB_API mrb_bool mrb_class_defined(mrb_state *mrb, const char *name);
676
+ MRB_API mrb_bool mrb_class_defined_id(mrb_state *mrb, mrb_sym name);
653
677
 
654
678
  /**
655
679
  * Gets a class.
@@ -657,7 +681,8 @@ MRB_API mrb_bool mrb_class_defined(mrb_state *mrb, const char *name);
657
681
  * @param name The name of the class.
658
682
  * @return [struct RClass *] A reference to the class.
659
683
  */
660
- MRB_API struct RClass * mrb_class_get(mrb_state *mrb, const char *name);
684
+ MRB_API struct RClass* mrb_class_get(mrb_state *mrb, const char *name);
685
+ MRB_API struct RClass* mrb_class_get_id(mrb_state *mrb, mrb_sym name);
661
686
 
662
687
  /**
663
688
  * Gets a exception class.
@@ -665,7 +690,8 @@ MRB_API struct RClass * mrb_class_get(mrb_state *mrb, const char *name);
665
690
  * @param name The name of the class.
666
691
  * @return [struct RClass *] A reference to the class.
667
692
  */
668
- MRB_API struct RClass * mrb_exc_get(mrb_state *mrb, const char *name);
693
+ MRB_API struct RClass* mrb_exc_get_id(mrb_state *mrb, mrb_sym name);
694
+ #define mrb_exc_get(mrb, name) mrb_exc_get_id(mrb, mrb_intern_cstr(mrb, name))
669
695
 
670
696
  /**
671
697
  * Returns an mrb_bool. True if inner class was defined, and false if the inner class was not defined.
@@ -697,6 +723,7 @@ MRB_API struct RClass * mrb_exc_get(mrb_state *mrb, const char *name);
697
723
  * @return [mrb_bool] A boolean value.
698
724
  */
699
725
  MRB_API mrb_bool mrb_class_defined_under(mrb_state *mrb, struct RClass *outer, const char *name);
726
+ MRB_API mrb_bool mrb_class_defined_under_id(mrb_state *mrb, struct RClass *outer, mrb_sym name);
700
727
 
701
728
  /**
702
729
  * Gets a child class.
@@ -706,6 +733,7 @@ MRB_API mrb_bool mrb_class_defined_under(mrb_state *mrb, struct RClass *outer, c
706
733
  * @return [struct RClass *] A reference to the class.
707
734
  */
708
735
  MRB_API struct RClass * mrb_class_get_under(mrb_state *mrb, struct RClass *outer, const char *name);
736
+ MRB_API struct RClass * mrb_class_get_under_id(mrb_state *mrb, struct RClass *outer, mrb_sym name);
709
737
 
710
738
  /**
711
739
  * Gets a module.
@@ -714,6 +742,7 @@ MRB_API struct RClass * mrb_class_get_under(mrb_state *mrb, struct RClass *outer
714
742
  * @return [struct RClass *] A reference to the module.
715
743
  */
716
744
  MRB_API struct RClass * mrb_module_get(mrb_state *mrb, const char *name);
745
+ MRB_API struct RClass * mrb_module_get_id(mrb_state *mrb, mrb_sym name);
717
746
 
718
747
  /**
719
748
  * Gets a module defined under another module.
@@ -723,6 +752,8 @@ MRB_API struct RClass * mrb_module_get(mrb_state *mrb, const char *name);
723
752
  * @return [struct RClass *] A reference to the module.
724
753
  */
725
754
  MRB_API struct RClass * mrb_module_get_under(mrb_state *mrb, struct RClass *outer, const char *name);
755
+ MRB_API struct RClass * mrb_module_get_under_id(mrb_state *mrb, struct RClass *outer, mrb_sym name);
756
+
726
757
  /* a function to raise NotImplementedError with current method name */
727
758
  MRB_API void mrb_notimplement(mrb_state*);
728
759
  /* a function to be replacement of unimplemented method */
@@ -791,9 +822,11 @@ MRB_API mrb_bool mrb_obj_respond_to(mrb_state *mrb, struct RClass* c, mrb_sym mi
791
822
  * @return [struct RClass *] Reference to the newly defined class
792
823
  * @see mrb_define_class
793
824
  */
794
- MRB_API struct RClass * mrb_define_class_under(mrb_state *mrb, struct RClass *outer, const char *name, struct RClass *super);
825
+ MRB_API struct RClass* mrb_define_class_under(mrb_state *mrb, struct RClass *outer, const char *name, struct RClass *super);
826
+ MRB_API struct RClass* mrb_define_class_under_id(mrb_state *mrb, struct RClass *outer, mrb_sym name, struct RClass *super);
795
827
 
796
- MRB_API struct RClass * mrb_define_module_under(mrb_state *mrb, struct RClass *outer, const char *name);
828
+ MRB_API struct RClass* mrb_define_module_under(mrb_state *mrb, struct RClass *outer, const char *name);
829
+ MRB_API struct RClass* mrb_define_module_under_id(mrb_state *mrb, struct RClass *outer, mrb_sym name);
797
830
 
798
831
  /**
799
832
  * Function requires n arguments.
@@ -857,17 +890,17 @@ MRB_API struct RClass * mrb_define_module_under(mrb_state *mrb, struct RClass *o
857
890
  * | `S` | {String} | {mrb_value} | when `!` follows, the value may be `nil` |
858
891
  * | `A` | {Array} | {mrb_value} | when `!` follows, the value may be `nil` |
859
892
  * | `H` | {Hash} | {mrb_value} | when `!` follows, the value may be `nil` |
860
- * | `s` | {String} | char *, {mrb_int} | Receive two arguments; `s!` gives (`NULL`,`0`) for `nil` |
861
- * | `z` | {String} | char * | `NULL` terminated string; `z!` gives `NULL` for `nil` |
862
- * | `a` | {Array} | {mrb_value} *, {mrb_int} | Receive two arguments; `a!` gives (`NULL`,`0`) for `nil` |
863
- * | `f` | {Fixnum}/{Float} | {mrb_float} | |
864
- * | `i` | {Fixnum}/{Float} | {mrb_int} | |
893
+ * | `s` | {String} | const char *, {mrb_int} | Receive two arguments; `s!` gives (`NULL`,`0`) for `nil` |
894
+ * | `z` | {String} | const char * | `NULL` terminated string; `z!` gives `NULL` for `nil` |
895
+ * | `a` | {Array} | const {mrb_value} *, {mrb_int} | Receive two arguments; `a!` gives (`NULL`,`0`) for `nil` |
896
+ * | `f` | {Integer}/{Float} | {mrb_float} | |
897
+ * | `i` | {Integer}/{Float} | {mrb_int} | |
865
898
  * | `b` | boolean | {mrb_bool} | |
866
899
  * | `n` | {String}/{Symbol} | {mrb_sym} | |
867
900
  * | `d` | data | void *, {mrb_data_type} const | 2nd argument will be used to check data type so it won't be modified; when `!` follows, the value may be `nil` |
868
901
  * | `I` | inline struct | void * | |
869
902
  * | `&` | block | {mrb_value} | &! raises exception if no block given. |
870
- * | `*` | rest arguments | {mrb_value} *, {mrb_int} | Receive the rest of arguments as an array; `*!` avoid copy of the stack. |
903
+ * | `*` | rest arguments | const {mrb_value} *, {mrb_int} | Receive the rest of arguments as an array; `*!` avoid copy of the stack. |
871
904
  * | <code>\|</code> | optional | | After this spec following specs would be optional. |
872
905
  * | `?` | optional given | {mrb_bool} | `TRUE` if preceding argument is given. Used to check optional argument is given. |
873
906
  * | `:` | keyword args | {mrb_kwargs} const | Get keyword arguments. @see mrb_kwargs |
@@ -899,7 +932,7 @@ typedef const char *mrb_args_format;
899
932
  * const char *kw_names[kw_num] = { "a", "b" };
900
933
  * uint32_t kw_required = 0;
901
934
  * mrb_value kw_values[kw_num];
902
- * const mrb_kwargs kwargs = { kw_num, kw_values, kw_names, kw_required, NULL };
935
+ * const mrb_kwargs kwargs = { kw_num, kw_required, kw_names, kw_values, NULL };
903
936
  *
904
937
  * mrb_get_args(mrb, ":", &kwargs);
905
938
  * if (mrb_undef_p(kw_values[0])) { kw_values[0] = mrb_fixnum_value(1); }
@@ -910,10 +943,10 @@ typedef const char *mrb_args_format;
910
943
  *
911
944
  * mrb_value str, kw_rest;
912
945
  * uint32_t kw_num = 3;
913
- * const char *kw_names[kw_num] = { "x", "y", "z" };
946
+ * const mrb_sym kw_names[kw_num] = { MRB_SYM(x), MRB_SYM(y), MRB_SYM(z) };
914
947
  * uint32_t kw_required = 1;
915
948
  * mrb_value kw_values[kw_num];
916
- * const mrb_kwargs kwargs = { kw_num, kw_values, kw_names, kw_required, &kw_rest };
949
+ * const mrb_kwargs kwargs = { kw_num, kw_required, kw_names, kw_values, &kw_rest };
917
950
  *
918
951
  * mrb_get_args(mrb, "S:", &str, &kwargs);
919
952
  * // or: mrb_get_args(mrb, ":S", &kwargs, &str);
@@ -924,11 +957,11 @@ typedef struct mrb_kwargs mrb_kwargs;
924
957
 
925
958
  struct mrb_kwargs
926
959
  {
927
- uint32_t num;
928
- mrb_value *values;
929
- const char *const *table;
930
- uint32_t required;
931
- mrb_value *rest;
960
+ uint32_t num; /* number of keyword arguments */
961
+ uint32_t required; /* number of required keyword arguments */
962
+ const mrb_sym *table; /* C array of symbols for keyword names */
963
+ mrb_value *values; /* keyword argument values */
964
+ mrb_value *rest; /* keyword rest (dict) */
932
965
  };
933
966
 
934
967
  /**
@@ -956,7 +989,20 @@ mrb_get_mid(mrb_state *mrb) /* get method symbol */
956
989
  */
957
990
  MRB_API mrb_int mrb_get_argc(mrb_state *mrb);
958
991
 
959
- MRB_API mrb_value* mrb_get_argv(mrb_state *mrb);
992
+ /**
993
+ * Retrieve an array of arguments from mrb_state.
994
+ *
995
+ * Correctly handles *splat arguments.
996
+ */
997
+ MRB_API const mrb_value *mrb_get_argv(mrb_state *mrb);
998
+
999
+ /**
1000
+ * Retrieve the first and only argument from mrb_state.
1001
+ * Raises ArgumentError unless the number of arguments is exactly one.
1002
+ *
1003
+ * Correctly handles *splat arguments.
1004
+ */
1005
+ MRB_API mrb_value mrb_get_arg1(mrb_state *mrb);
960
1006
 
961
1007
  /* `strlen` for character string literals (use with caution or `strlen` instead)
962
1008
  Adjacent string literals are concatenated in C/C++ in translation phase 6.
@@ -985,6 +1031,7 @@ MRB_API mrb_value* mrb_get_argv(mrb_state *mrb);
985
1031
  * FILE *fp = fopen("test.rb","r");
986
1032
  * mrb_value obj = mrb_load_file(mrb,fp);
987
1033
  * mrb_funcall(mrb, obj, "method_name", 1, mrb_fixnum_value(i));
1034
+ * mrb_funcall_id(mrb, obj, MRB_SYM(method_name), 1, mrb_fixnum_value(i));
988
1035
  * fclose(fp);
989
1036
  * mrb_close(mrb);
990
1037
  * }
@@ -997,6 +1044,7 @@ MRB_API mrb_value* mrb_get_argv(mrb_state *mrb);
997
1044
  * @return [mrb_value] mruby function value.
998
1045
  */
999
1046
  MRB_API mrb_value mrb_funcall(mrb_state *mrb, mrb_value val, const char *name, mrb_int argc, ...);
1047
+ MRB_API mrb_value mrb_funcall_id(mrb_state *mrb, mrb_value val, mrb_sym mid, mrb_int argc, ...);
1000
1048
  /**
1001
1049
  * Call existing ruby functions. This is basically the type safe version of mrb_funcall.
1002
1050
  *
@@ -1006,15 +1054,14 @@ MRB_API mrb_value mrb_funcall(mrb_state *mrb, mrb_value val, const char *name, m
1006
1054
  * int
1007
1055
  * main()
1008
1056
  * {
1009
- * mrb_int i = 99;
1010
1057
  * mrb_state *mrb = mrb_open();
1058
+ * mrb_value obj = mrb_fixnum_value(1);
1011
1059
  *
1012
1060
  * if (!mrb) { }
1013
- * mrb_sym m_sym = mrb_intern_lit(mrb, "method_name"); // Symbol for method.
1014
1061
  *
1015
1062
  * FILE *fp = fopen("test.rb","r");
1016
1063
  * mrb_value obj = mrb_load_file(mrb,fp);
1017
- * mrb_funcall_argv(mrb, obj, m_sym, 1, &obj); // Calling ruby function from test.rb.
1064
+ * mrb_funcall_argv(mrb, obj, MRB_SYM(method_name), 1, &obj); // Calling ruby function from test.rb.
1018
1065
  * fclose(fp);
1019
1066
  * mrb_close(mrb);
1020
1067
  * }
@@ -1032,7 +1079,8 @@ MRB_API mrb_value mrb_funcall_argv(mrb_state *mrb, mrb_value val, mrb_sym name,
1032
1079
  */
1033
1080
  MRB_API mrb_value mrb_funcall_with_block(mrb_state *mrb, mrb_value val, mrb_sym name, mrb_int argc, const mrb_value *argv, mrb_value block);
1034
1081
  /**
1035
- * Create a symbol
1082
+ * Create a symbol from C string. But usually it's better to use MRB_SYM,
1083
+ * MRB_OPSYM, MRB_CVSYM, MRB_IVSYM, MRB_SYM_B, MRB_SYM_Q, MRB_SYM_E macros.
1036
1084
  *
1037
1085
  * Example:
1038
1086
  *
@@ -1040,7 +1088,9 @@ MRB_API mrb_value mrb_funcall_with_block(mrb_state *mrb, mrb_value val, mrb_sym
1040
1088
  * :pizza # => :pizza
1041
1089
  *
1042
1090
  * // C style:
1043
- * mrb_sym m_sym = mrb_intern_lit(mrb, "pizza"); // => :pizza
1091
+ * mrb_sym sym1 = mrb_intern_lit(mrb, "pizza"); // => :pizza
1092
+ * mrb_sym sym2 = MRB_SYM(pizza); // => :pizza
1093
+ * mrb_sym sym3 = MRB_SYM_Q(pizza); // => :pizza?
1044
1094
  *
1045
1095
  * @param mrb The current mruby state.
1046
1096
  * @param str The string to be symbolized
@@ -1049,8 +1099,14 @@ MRB_API mrb_value mrb_funcall_with_block(mrb_state *mrb, mrb_value val, mrb_sym
1049
1099
  MRB_API mrb_sym mrb_intern_cstr(mrb_state *mrb, const char* str);
1050
1100
  MRB_API mrb_sym mrb_intern(mrb_state*,const char*,size_t);
1051
1101
  MRB_API mrb_sym mrb_intern_static(mrb_state*,const char*,size_t);
1052
- #define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb, lit, mrb_strlen_lit(lit))
1102
+ #define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb, (lit ""), mrb_strlen_lit(lit))
1053
1103
  MRB_API mrb_sym mrb_intern_str(mrb_state*,mrb_value);
1104
+ /* mrb_intern_check series functions returns 0 if the symbol is not defined */
1105
+ MRB_API mrb_sym mrb_intern_check_cstr(mrb_state*,const char*);
1106
+ MRB_API mrb_sym mrb_intern_check(mrb_state*,const char*,size_t);
1107
+ MRB_API mrb_sym mrb_intern_check_str(mrb_state*,mrb_value);
1108
+ /* mrb_check_intern series functions returns nil if the symbol is not defined */
1109
+ /* otherwise returns mrb_value */
1054
1110
  MRB_API mrb_value mrb_check_intern_cstr(mrb_state*,const char*);
1055
1111
  MRB_API mrb_value mrb_check_intern(mrb_state*,const char*,size_t);
1056
1112
  MRB_API mrb_value mrb_check_intern_str(mrb_state*,mrb_value);
@@ -1148,10 +1204,9 @@ MRB_API void mrb_close(mrb_state *mrb);
1148
1204
  MRB_API void* mrb_default_allocf(mrb_state*, void*, size_t, void*);
1149
1205
 
1150
1206
  MRB_API mrb_value mrb_top_self(mrb_state *mrb);
1151
- MRB_API mrb_value mrb_run(mrb_state *mrb, struct RProc* proc, mrb_value self);
1152
- MRB_API mrb_value mrb_top_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int stack_keep);
1153
- MRB_API mrb_value mrb_vm_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int stack_keep);
1154
- MRB_API mrb_value mrb_vm_exec(mrb_state *mrb, struct RProc *proc, const mrb_code *iseq);
1207
+ MRB_API mrb_value mrb_top_run(mrb_state *mrb, const struct RProc *proc, mrb_value self, mrb_int stack_keep);
1208
+ MRB_API mrb_value mrb_vm_run(mrb_state *mrb, const struct RProc *proc, mrb_value self, mrb_int stack_keep);
1209
+ MRB_API mrb_value mrb_vm_exec(mrb_state *mrb, const struct RProc *proc, const mrb_code *iseq);
1155
1210
  /* compatibility macros */
1156
1211
  #define mrb_toplevel_run_keep(m,p,k) mrb_top_run((m),(p),mrb_top_self(m),(k))
1157
1212
  #define mrb_toplevel_run(m,p) mrb_toplevel_run_keep((m),(p),0)
@@ -1166,7 +1221,7 @@ MRB_API mrb_bool mrb_obj_equal(mrb_state *mrb, mrb_value a, mrb_value b);
1166
1221
  MRB_API mrb_bool mrb_equal(mrb_state *mrb, mrb_value obj1, mrb_value obj2);
1167
1222
  MRB_API mrb_value mrb_convert_to_integer(mrb_state *mrb, mrb_value val, mrb_int base);
1168
1223
  MRB_API mrb_value mrb_Integer(mrb_state *mrb, mrb_value val);
1169
- #ifndef MRB_WITHOUT_FLOAT
1224
+ #ifndef MRB_NO_FLOAT
1170
1225
  MRB_API mrb_value mrb_Float(mrb_state *mrb, mrb_value val);
1171
1226
  #endif
1172
1227
  MRB_API mrb_value mrb_inspect(mrb_state *mrb, mrb_value obj);
@@ -1199,12 +1254,15 @@ MRB_API void mrb_field_write_barrier(mrb_state *, struct RBasic*, struct RBasic*
1199
1254
  } while (0)
1200
1255
  MRB_API void mrb_write_barrier(mrb_state *, struct RBasic*);
1201
1256
 
1202
- MRB_API mrb_value mrb_check_convert_type(mrb_state *mrb, mrb_value val, enum mrb_vtype type, const char *tname, const char *method);
1257
+ MRB_API mrb_value mrb_type_convert(mrb_state *mrb, mrb_value val, enum mrb_vtype type, mrb_sym method);
1258
+ #define mrb_convert_type(mrb, val, type, tname, method) mrb_type_convert(mrb, val, type, mrb_intern_lit(mrb, method))
1259
+ MRB_API mrb_value mrb_type_convert_check(mrb_state *mrb, mrb_value val, enum mrb_vtype type, mrb_sym method);
1260
+ #define mrb_check_convert_type(mrb, val, type, tname, method) mrb_type_convert_check(mrb, val, type, mrb_intern_lit(mrb, method))
1261
+
1203
1262
  MRB_API mrb_value mrb_any_to_s(mrb_state *mrb, mrb_value obj);
1204
1263
  MRB_API const char * mrb_obj_classname(mrb_state *mrb, mrb_value obj);
1205
1264
  MRB_API struct RClass* mrb_obj_class(mrb_state *mrb, mrb_value obj);
1206
1265
  MRB_API mrb_value mrb_class_path(mrb_state *mrb, struct RClass *c);
1207
- MRB_API mrb_value mrb_convert_type(mrb_state *mrb, mrb_value val, enum mrb_vtype type, const char *tname, const char *method);
1208
1266
  MRB_API mrb_bool mrb_obj_is_kind_of(mrb_state *mrb, mrb_value obj, struct RClass *c);
1209
1267
  MRB_API mrb_value mrb_obj_inspect(mrb_state *mrb, mrb_value self);
1210
1268
  MRB_API mrb_value mrb_obj_clone(mrb_state *mrb, mrb_value self);
@@ -1245,26 +1303,26 @@ MRB_API mrb_value mrb_vformat(mrb_state *mrb, const char *format, va_list ap);
1245
1303
  + those E_* macros requires mrb_state* variable named mrb.
1246
1304
  + exception objects obtained from those macros are local to mrb
1247
1305
  */
1248
- #define E_RUNTIME_ERROR (mrb_exc_get(mrb, "RuntimeError"))
1249
- #define E_TYPE_ERROR (mrb_exc_get(mrb, "TypeError"))
1250
- #define E_ARGUMENT_ERROR (mrb_exc_get(mrb, "ArgumentError"))
1251
- #define E_INDEX_ERROR (mrb_exc_get(mrb, "IndexError"))
1252
- #define E_RANGE_ERROR (mrb_exc_get(mrb, "RangeError"))
1253
- #define E_NAME_ERROR (mrb_exc_get(mrb, "NameError"))
1254
- #define E_NOMETHOD_ERROR (mrb_exc_get(mrb, "NoMethodError"))
1255
- #define E_SCRIPT_ERROR (mrb_exc_get(mrb, "ScriptError"))
1256
- #define E_SYNTAX_ERROR (mrb_exc_get(mrb, "SyntaxError"))
1257
- #define E_LOCALJUMP_ERROR (mrb_exc_get(mrb, "LocalJumpError"))
1258
- #define E_REGEXP_ERROR (mrb_exc_get(mrb, "RegexpError"))
1259
- #define E_FROZEN_ERROR (mrb_exc_get(mrb, "FrozenError"))
1260
-
1261
- #define E_NOTIMP_ERROR (mrb_exc_get(mrb, "NotImplementedError"))
1262
- #ifndef MRB_WITHOUT_FLOAT
1263
- #define E_FLOATDOMAIN_ERROR (mrb_exc_get(mrb, "FloatDomainError"))
1306
+ #define MRB_ERROR_SYM(sym) mrb_intern_lit(mrb, #sym)
1307
+ #define E_RUNTIME_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(RuntimeError))
1308
+ #define E_TYPE_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
1309
+ #define E_ZERODIV_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(ZeroDivisionError))
1310
+ #define E_ARGUMENT_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
1311
+ #define E_INDEX_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(IndexError))
1312
+ #define E_RANGE_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(RangeError))
1313
+ #define E_NAME_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(NameError))
1314
+ #define E_NOMETHOD_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(NoMethodError))
1315
+ #define E_SCRIPT_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(ScriptError))
1316
+ #define E_SYNTAX_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(SyntaxError))
1317
+ #define E_LOCALJUMP_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(LocalJumpError))
1318
+ #define E_REGEXP_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(RegexpError))
1319
+ #define E_FROZEN_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(FrozenError))
1320
+ #define E_NOTIMP_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(NotImplementedError))
1321
+ #define E_KEY_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(KeyError))
1322
+ #ifndef MRB_NO_FLOAT
1323
+ # define E_FLOATDOMAIN_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(FloatDomainError))
1264
1324
  #endif
1265
1325
 
1266
- #define E_KEY_ERROR (mrb_exc_get(mrb, "KeyError"))
1267
-
1268
1326
  MRB_API mrb_value mrb_yield(mrb_state *mrb, mrb_value b, mrb_value arg);
1269
1327
  MRB_API mrb_value mrb_yield_argv(mrb_state *mrb, mrb_value b, mrb_int argc, const mrb_value *argv);
1270
1328
  MRB_API mrb_value mrb_yield_with_class(mrb_state *mrb, mrb_value b, mrb_int argc, const mrb_value *argv, mrb_value self, struct RClass *c);
@@ -1282,7 +1340,7 @@ MRB_API void mrb_gc_register(mrb_state *mrb, mrb_value obj);
1282
1340
  MRB_API void mrb_gc_unregister(mrb_state *mrb, mrb_value obj);
1283
1341
 
1284
1342
  MRB_API mrb_value mrb_to_int(mrb_state *mrb, mrb_value val);
1285
- #define mrb_int(mrb, val) mrb_fixnum(mrb_to_int(mrb, val))
1343
+ #define mrb_int(mrb, val) mrb_integer(mrb_to_int(mrb, val))
1286
1344
  /* string type checking (contrary to the name, it doesn't convert) */
1287
1345
  MRB_API mrb_value mrb_to_str(mrb_state *mrb, mrb_value val);
1288
1346
  MRB_API void mrb_check_type(mrb_state *mrb, mrb_value x, enum mrb_vtype t);
@@ -1292,14 +1350,8 @@ MRB_INLINE void mrb_check_frozen(mrb_state *mrb, void *o)
1292
1350
  if (mrb_frozen_p((struct RBasic*)o)) mrb_frozen_error(mrb, o);
1293
1351
  }
1294
1352
 
1295
- typedef enum call_type {
1296
- CALL_PUBLIC,
1297
- CALL_FCALL,
1298
- CALL_VCALL,
1299
- CALL_TYPE_MAX
1300
- } call_type;
1301
-
1302
1353
  MRB_API void mrb_define_alias(mrb_state *mrb, struct RClass *c, const char *a, const char *b);
1354
+ MRB_API void mrb_define_alias_id(mrb_state *mrb, struct RClass *c, mrb_sym a, mrb_sym b);
1303
1355
  MRB_API const char *mrb_class_name(mrb_state *mrb, struct RClass* klass);
1304
1356
  MRB_API void mrb_define_global_const(mrb_state *mrb, const char *name, mrb_value val);
1305
1357
 
@@ -1336,7 +1388,7 @@ MRB_API mrb_value mrb_fiber_alive_p(mrb_state *mrb, mrb_value fib);
1336
1388
  *
1337
1389
  * Implemented in mruby-fiber
1338
1390
  */
1339
- #define E_FIBER_ERROR (mrb_exc_get(mrb, "FiberError"))
1391
+ #define E_FIBER_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(FiberError))
1340
1392
  MRB_API void mrb_stack_extend(mrb_state*, mrb_int);
1341
1393
 
1342
1394
  /* memory pool implementation */
@@ -1356,6 +1408,10 @@ MRB_API void mrb_show_copyright(mrb_state *mrb);
1356
1408
 
1357
1409
  MRB_API mrb_value mrb_format(mrb_state *mrb, const char *format, ...);
1358
1410
 
1411
+ #ifdef MRB_PRESYM_SCANNING
1412
+ # include <mruby/presym/scanning.h>
1413
+ #endif
1414
+
1359
1415
  #if 0
1360
1416
  /* memcpy and memset does not work with gdb reverse-next on my box */
1361
1417
  /* use naive memcpy and memset instead */