script_core 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 */