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
@@ -3,39 +3,10 @@
3
3
  #
4
4
  # ISO 15.3.1
5
5
  module Kernel
6
- ##
7
- # Invoke method +print+ on STDOUT and passing +*args+
8
- #
9
- # ISO 15.3.1.2.10
10
- def print(*args)
11
- i = 0
12
- len = args.size
13
- while i < len
14
- __printstr__ args[i].to_s
15
- i += 1
16
- end
17
- end
18
-
19
- ##
20
- # Invoke method +puts+ on STDOUT and passing +*args*+
21
- #
22
- # ISO 15.3.1.2.11
23
- def puts(*args)
24
- i = 0
25
- len = args.size
26
- while i < len
27
- s = args[i].to_s
28
- __printstr__ s
29
- __printstr__ "\n" if (s[-1] != "\n")
30
- i += 1
31
- end
32
- __printstr__ "\n" if len == 0
33
- nil
34
- end
35
-
36
6
  ##
37
7
  # Print human readable object description
38
8
  #
9
+ # ISO 15.3.1.2.9
39
10
  # ISO 15.3.1.3.34
40
11
  def p(*args)
41
12
  i = 0
@@ -1,6 +1,10 @@
1
1
  #include <mruby.h>
2
+
3
+ #ifdef MRB_NO_STDIO
4
+ # error print conflicts 'MRB_NO_STDIO' in your build configuration
5
+ #endif
6
+
2
7
  #include <mruby/string.h>
3
- #include <stdio.h>
4
8
  #include <string.h>
5
9
  #include <stdlib.h>
6
10
  #if defined(_WIN32)
@@ -13,40 +17,73 @@
13
17
  #endif
14
18
 
15
19
  static void
16
- printstr(mrb_state *mrb, mrb_value obj)
20
+ printstr(mrb_state *mrb, const char *p, mrb_int len)
17
21
  {
18
- if (mrb_string_p(obj)) {
19
22
  #if defined(_WIN32)
20
- if (isatty(fileno(stdout))) {
21
- DWORD written;
22
- int mlen = (int)RSTRING_LEN(obj);
23
- char* utf8 = RSTRING_PTR(obj);
24
- int wlen = MultiByteToWideChar(CP_UTF8, 0, utf8, mlen, NULL, 0);
25
- wchar_t* utf16 = (wchar_t*)mrb_malloc(mrb, (wlen+1) * sizeof(wchar_t));
26
- if (MultiByteToWideChar(CP_UTF8, 0, utf8, mlen, utf16, wlen) > 0) {
27
- utf16[wlen] = 0;
28
- WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE),
29
- utf16, wlen, &written, NULL);
30
- }
31
- mrb_free(mrb, utf16);
32
- } else
23
+ if (isatty(fileno(stdout))) {
24
+ DWORD written;
25
+ int wlen = MultiByteToWideChar(CP_UTF8, 0, p, (int)len, NULL, 0);
26
+ wchar_t* utf16 = (wchar_t*)mrb_malloc(mrb, (wlen+1) * sizeof(wchar_t));
27
+ if (MultiByteToWideChar(CP_UTF8, 0, p, (int)len, utf16, wlen) > 0) {
28
+ utf16[wlen] = 0;
29
+ WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE),
30
+ utf16, (DWORD)wlen, &written, NULL);
31
+ }
32
+ mrb_free(mrb, utf16);
33
+ } else
33
34
  #endif
34
- fwrite(RSTRING_PTR(obj), RSTRING_LEN(obj), 1, stdout);
35
- fflush(stdout);
36
- }
35
+ fwrite(p, (size_t)len, 1, stdout);
36
+ fflush(stdout);
37
37
  }
38
38
 
39
- /* 15.3.1.2.9 */
40
- /* 15.3.1.3.34 */
41
- mrb_value
39
+ static mrb_value
42
40
  mrb_printstr(mrb_state *mrb, mrb_value self)
43
41
  {
44
- mrb_value argv;
42
+ mrb_value s = mrb_get_arg1(mrb);
45
43
 
46
- mrb_get_args(mrb, "o", &argv);
47
- printstr(mrb, argv);
44
+ if (mrb_string_p(s)) {
45
+ printstr(mrb, RSTRING_PTR(s), RSTRING_LEN(s));
46
+ }
47
+ return s;
48
+ }
49
+
50
+ /* 15.3.1.2.10 */
51
+ /* 15.3.1.3.35 */
52
+ static mrb_value
53
+ mrb_print(mrb_state *mrb, mrb_value self)
54
+ {
55
+ mrb_int argc, i;
56
+ const mrb_value *argv;
48
57
 
49
- return argv;
58
+ mrb_get_args(mrb, "*", &argv, &argc);
59
+ for (i=0; i<argc; i++) {
60
+ mrb_value s = mrb_obj_as_string(mrb, argv[i]);
61
+ printstr(mrb, RSTRING_PTR(s), RSTRING_LEN(s));
62
+ }
63
+ return mrb_nil_value();
64
+ }
65
+
66
+ /* 15.3.1.2.11 */
67
+ /* 15.3.1.3.39 */
68
+ static mrb_value
69
+ mrb_puts(mrb_state *mrb, mrb_value self)
70
+ {
71
+ mrb_int argc, i;
72
+ const mrb_value *argv;
73
+
74
+ mrb_get_args(mrb, "*", &argv, &argc);
75
+ for (i=0; i<argc; i++) {
76
+ mrb_value s = mrb_obj_as_string(mrb, argv[i]);
77
+ mrb_int len = RSTRING_LEN(s);
78
+ printstr(mrb, RSTRING_PTR(s), len);
79
+ if (len == 0 || RSTRING_PTR(s)[len-1] != '\n') {
80
+ printstr(mrb, "\n", 1);
81
+ }
82
+ }
83
+ if (argc == 0) {
84
+ printstr(mrb, "\n", 1);
85
+ }
86
+ return mrb_nil_value();
50
87
  }
51
88
 
52
89
  void
@@ -55,6 +92,8 @@ mrb_mruby_print_gem_init(mrb_state* mrb)
55
92
  struct RClass *krn;
56
93
  krn = mrb->kernel_module;
57
94
  mrb_define_method(mrb, krn, "__printstr__", mrb_printstr, MRB_ARGS_REQ(1));
95
+ mrb_define_method(mrb, krn, "print", mrb_print, MRB_ARGS_ANY());
96
+ mrb_define_method(mrb, krn, "puts", mrb_puts, MRB_ARGS_ANY());
58
97
  }
59
98
 
60
99
  void
@@ -4,9 +4,10 @@
4
4
  #include <mruby/array.h>
5
5
  #include <mruby/string.h>
6
6
  #include <mruby/debug.h>
7
+ #include <mruby/presym.h>
7
8
 
8
9
  static mrb_value
9
- mrb_proc_lambda(mrb_state *mrb, mrb_value self)
10
+ mrb_proc_lambda_p(mrb_state *mrb, mrb_value self)
10
11
  {
11
12
  struct RProc *p = mrb_proc_ptr(self);
12
13
  return mrb_bool_value(MRB_PROC_STRICT_P(p));
@@ -21,7 +22,7 @@ mrb_proc_source_location(mrb_state *mrb, mrb_value self)
21
22
  return mrb_nil_value();
22
23
  }
23
24
  else {
24
- mrb_irep *irep = p->body.irep;
25
+ const mrb_irep *irep = p->body.irep;
25
26
  int32_t line;
26
27
  const char *filename;
27
28
 
@@ -41,7 +42,7 @@ mrb_proc_inspect(mrb_state *mrb, mrb_value self)
41
42
  mrb_str_cat_str(mrb, str, mrb_ptr_to_str(mrb, mrb_cptr(self)));
42
43
 
43
44
  if (!MRB_PROC_CFUNC_P(p)) {
44
- mrb_irep *irep = p->body.irep;
45
+ const mrb_irep *irep = p->body.irep;
45
46
  const char *filename;
46
47
  int32_t line;
47
48
  mrb_str_cat_lit(mrb, str, "@");
@@ -91,21 +92,24 @@ static mrb_value
91
92
  mrb_proc_parameters(mrb_state *mrb, mrb_value self)
92
93
  {
93
94
  struct parameters_type {
94
- size_t len;
95
- const char *name;
95
+ mrb_sym name;
96
96
  int size;
97
97
  } *p, parameters_list [] = {
98
- {sizeof("req") - 1, "req", 0},
99
- {sizeof("opt") - 1, "opt", 0},
100
- {sizeof("rest") - 1, "rest", 0},
101
- {sizeof("req") - 1, "req", 0},
102
- {sizeof("block") - 1, "block", 0},
103
- {0, NULL, 0}
98
+ {MRB_SYM(req), 0},
99
+ {MRB_SYM(opt), 0},
100
+ {MRB_SYM(rest), 0},
101
+ {MRB_SYM(req), 0},
102
+ {MRB_SYM(keyrest), 0},
103
+ {MRB_SYM(block), 0},
104
+ {MRB_SYM(key), 0},
105
+ {0, 0}
104
106
  };
105
107
  const struct RProc *proc = mrb_proc_ptr(self);
106
- const struct mrb_irep *irep = proc->body.irep;
108
+ const struct mrb_irep *irep;
107
109
  mrb_aspec aspec;
108
110
  mrb_value parameters;
111
+ mrb_value krest = mrb_nil_value();
112
+ mrb_value block = mrb_nil_value();
109
113
  int i, j;
110
114
  int max = -1;
111
115
 
@@ -113,6 +117,7 @@ mrb_proc_parameters(mrb_state *mrb, mrb_value self)
113
117
  // TODO cfunc aspec is not implemented yet
114
118
  return mrb_ary_new(mrb);
115
119
  }
120
+ irep = proc->body.irep;
116
121
  if (!irep) {
117
122
  return mrb_ary_new(mrb);
118
123
  }
@@ -124,10 +129,8 @@ mrb_proc_parameters(mrb_state *mrb, mrb_value self)
124
129
  }
125
130
 
126
131
  if (!MRB_PROC_STRICT_P(proc)) {
127
- parameters_list[0].len = sizeof("opt") - 1;
128
- parameters_list[0].name = "opt";
129
- parameters_list[3].len = sizeof("opt") - 1;
130
- parameters_list[3].name = "opt";
132
+ parameters_list[0].name = MRB_SYM(opt);
133
+ parameters_list[3].name = MRB_SYM(opt);
131
134
  }
132
135
 
133
136
  aspec = PEEK_W(irep->iseq+1);
@@ -135,21 +138,23 @@ mrb_proc_parameters(mrb_state *mrb, mrb_value self)
135
138
  parameters_list[1].size = MRB_ASPEC_OPT(aspec);
136
139
  parameters_list[2].size = MRB_ASPEC_REST(aspec);
137
140
  parameters_list[3].size = MRB_ASPEC_POST(aspec);
138
- parameters_list[4].size = MRB_ASPEC_BLOCK(aspec);
141
+ parameters_list[4].size = MRB_ASPEC_KDICT(aspec);
142
+ parameters_list[5].size = MRB_ASPEC_BLOCK(aspec);
143
+ parameters_list[6].size = MRB_ASPEC_KEY(aspec);
139
144
 
140
145
  parameters = mrb_ary_new_capa(mrb, irep->nlocals-1);
141
146
 
142
147
  max = irep->nlocals-1;
143
148
  for (i = 0, p = parameters_list; p->name; p++) {
144
- mrb_value sname = mrb_symbol_value(mrb_intern_static(mrb, p->name, p->len));
149
+ mrb_value sname = mrb_symbol_value(p->name);
145
150
 
146
151
  for (j = 0; j < p->size; i++, j++) {
147
152
  mrb_value a;
148
153
 
149
154
  a = mrb_ary_new(mrb);
150
155
  mrb_ary_push(mrb, a, sname);
151
- if (i < max && irep->lv[i].name) {
152
- mrb_sym sym = irep->lv[i].name;
156
+ if (i < max && irep->lv[i]) {
157
+ mrb_sym sym = irep->lv[i];
153
158
  const char *name = mrb_sym_name(mrb, sym);
154
159
  switch (name[0]) {
155
160
  case '*': case '&':
@@ -159,9 +164,17 @@ mrb_proc_parameters(mrb_state *mrb, mrb_value self)
159
164
  break;
160
165
  }
161
166
  }
167
+ if (p->name == MRB_SYM(block)) {
168
+ block = a; continue;
169
+ }
170
+ if (p->name == MRB_SYM(keyrest)) {
171
+ krest = a; continue;
172
+ }
162
173
  mrb_ary_push(mrb, parameters, a);
163
174
  }
164
175
  }
176
+ if (!mrb_nil_p(krest)) mrb_ary_push(mrb, parameters, krest);
177
+ if (!mrb_nil_p(block)) mrb_ary_push(mrb, parameters, block);
165
178
  return parameters;
166
179
  }
167
180
 
@@ -169,7 +182,7 @@ void
169
182
  mrb_mruby_proc_ext_gem_init(mrb_state* mrb)
170
183
  {
171
184
  struct RClass *p = mrb->proc_class;
172
- mrb_define_method(mrb, p, "lambda?", mrb_proc_lambda, MRB_ARGS_NONE());
185
+ mrb_define_method(mrb, p, "lambda?", mrb_proc_lambda_p, MRB_ARGS_NONE());
173
186
  mrb_define_method(mrb, p, "source_location", mrb_proc_source_location, MRB_ARGS_NONE());
174
187
  mrb_define_method(mrb, p, "to_s", mrb_proc_inspect, MRB_ARGS_NONE());
175
188
  mrb_define_method(mrb, p, "inspect", mrb_proc_inspect, MRB_ARGS_NONE());
@@ -35,7 +35,7 @@ static mrb_value
35
35
  cfunc_env_get(mrb_state *mrb, mrb_value self)
36
36
  {
37
37
  mrb_sym n;
38
- mrb_value *argv; mrb_int argc;
38
+ const mrb_value *argv; mrb_int argc;
39
39
  mrb_method_t m;
40
40
  struct RProc *p;
41
41
  mrb_get_args(mrb, "na", &n, &argv, &argc);
@@ -10,16 +10,41 @@
10
10
  #include <mruby/data.h>
11
11
  #include <mruby/array.h>
12
12
  #include <mruby/istruct.h>
13
- #if INT32_MAX <= INTPTR_MAX
13
+ #include <mruby/presym.h>
14
+
15
+ #include <time.h>
16
+
17
+ /* Written in 2019 by David Blackman and Sebastiano Vigna (vigna@acm.org)
18
+
19
+ To the extent possible under law, the author has dedicated all copyright
20
+ and related and neighboring rights to this software to the public domain
21
+ worldwide. This software is distributed without any warranty.
22
+
23
+ See <https://creativecommons.org/publicdomain/zero/1.0/>. */
24
+
25
+ #include <stdint.h>
26
+
27
+ /* This is xoshiro128++ 1.0, one of our 32-bit all-purpose, rock-solid
28
+ generators. It has excellent speed, a state size (128 bits) that is
29
+ large enough for mild parallelism, and it passes all tests we are aware
30
+ of.
31
+
32
+ For generating just single-precision (i.e., 32-bit) floating-point
33
+ numbers, xoshiro128+ is even faster.
34
+
35
+ The state must be seeded so that it is not everywhere zero. */
36
+
37
+
38
+ #ifdef MRB_32BIT
14
39
  # define XORSHIFT96
15
40
  # define NSEEDS 3
41
+ # define SEEDPOS 2
16
42
  #else
17
43
  # define NSEEDS 4
44
+ # define SEEDPOS 0
18
45
  #endif
19
46
  #define LASTSEED (NSEEDS-1)
20
47
 
21
- #include <time.h>
22
-
23
48
  typedef struct rand_state {
24
49
  uint32_t seed[NSEEDS];
25
50
  } rand_state;
@@ -38,16 +63,23 @@ rand_init(rand_state *t)
38
63
  static uint32_t
39
64
  rand_seed(rand_state *t, uint32_t seed)
40
65
  {
41
- uint32_t old_seed = t->seed[LASTSEED];
66
+ uint32_t old_seed = t->seed[SEEDPOS];
42
67
  rand_init(t);
43
- t->seed[LASTSEED] = seed;
68
+ t->seed[SEEDPOS] = seed;
44
69
  return old_seed;
45
70
  }
46
71
 
47
- #ifdef XORSHIFT96
72
+ #ifndef XORSHIFT96
73
+ static inline uint32_t
74
+ rotl(const uint32_t x, int k) {
75
+ return (x << k) | (x >> (32 - k));
76
+ }
77
+ #endif
78
+
48
79
  static uint32_t
49
80
  rand_uint32(rand_state *state)
50
81
  {
82
+ #ifdef XORSHIFT96
51
83
  uint32_t *seed = state->seed;
52
84
  uint32_t x = seed[0];
53
85
  uint32_t y = seed[1];
@@ -61,36 +93,29 @@ rand_uint32(rand_state *state)
61
93
  seed[2] = z;
62
94
 
63
95
  return z;
64
- }
65
- #else /* XORSHIFT96 */
66
- static uint32_t
67
- rand_uint32(rand_state *state)
68
- {
69
- uint32_t *seed = state->seed;
70
- uint32_t x = seed[0];
71
- uint32_t y = seed[1];
72
- uint32_t z = seed[2];
73
- uint32_t w = seed[3];
74
- uint32_t t;
96
+ #else
97
+ uint32_t *s = state->seed;
98
+ const uint32_t result = rotl(s[0] + s[3], 7) + s[0];
99
+ const uint32_t t = s[1] << 9;
75
100
 
76
- t = x ^ (x << 11);
77
- x = y; y = z; z = w;
78
- w = (w ^ (w >> 19)) ^ (t ^ (t >> 8));
79
- seed[0] = x;
80
- seed[1] = y;
81
- seed[2] = z;
82
- seed[3] = w;
101
+ s[2] ^= s[0];
102
+ s[3] ^= s[1];
103
+ s[1] ^= s[2];
104
+ s[0] ^= s[3];
83
105
 
84
- return w;
85
- }
106
+ s[2] ^= t;
107
+ s[3] = rotl(s[3], 11);
108
+
109
+ return result;
86
110
  #endif /* XORSHIFT96 */
111
+ }
87
112
 
88
- #ifndef MRB_WITHOUT_FLOAT
113
+ #ifndef MRB_NO_FLOAT
89
114
  static double
90
115
  rand_real(rand_state *t)
91
116
  {
92
117
  uint32_t x = rand_uint32(t);
93
- return x*(1.0/4294967295.0);
118
+ return x*(1.0/4294967296.0);
94
119
  }
95
120
  #endif
96
121
 
@@ -99,15 +124,15 @@ random_rand(mrb_state *mrb, rand_state *t, mrb_value max)
99
124
  {
100
125
  mrb_value value;
101
126
 
102
- if (mrb_fixnum(max) == 0) {
103
- #ifndef MRB_WITHOUT_FLOAT
127
+ if (mrb_integer(max) == 0) {
128
+ #ifndef MRB_NO_FLOAT
104
129
  value = mrb_float_value(mrb, rand_real(t));
105
130
  #else
106
131
  mrb_raise(mrb, E_ARGUMENT_ERROR, "Float not supported");
107
132
  #endif
108
133
  }
109
134
  else {
110
- value = mrb_fixnum_value(rand_uint32(t) % mrb_fixnum(max));
135
+ value = mrb_int_value(mrb, rand_uint32(t) % mrb_integer(max));
111
136
  }
112
137
 
113
138
  return value;
@@ -125,7 +150,7 @@ get_opt(mrb_state* mrb)
125
150
  mrb_int i;
126
151
 
127
152
  arg = mrb_to_int(mrb, arg);
128
- i = mrb_fixnum(arg);
153
+ i = mrb_integer(arg);
129
154
  if (i < 0) {
130
155
  arg = mrb_fixnum_value(0 - i);
131
156
  }
@@ -135,7 +160,7 @@ get_opt(mrb_state* mrb)
135
160
 
136
161
  static void
137
162
  random_check(mrb_state *mrb, mrb_value random) {
138
- struct RClass *c = mrb_class_get(mrb, "Random");
163
+ struct RClass *c = mrb_class_get_id(mrb, MRB_SYM(Random));
139
164
  if (!mrb_obj_is_kind_of(mrb, random, c) || !mrb_istruct_p(random)) {
140
165
  mrb_raise(mrb, E_TYPE_ERROR, "Random instance required");
141
166
  }
@@ -144,7 +169,7 @@ random_check(mrb_state *mrb, mrb_value random) {
144
169
  static mrb_value
145
170
  random_default(mrb_state *mrb) {
146
171
  struct RClass *c = mrb_class_get(mrb, "Random");
147
- mrb_value d = mrb_const_get(mrb, mrb_obj_value(c), mrb_intern_lit(mrb, "DEFAULT"));
172
+ mrb_value d = mrb_const_get(mrb, mrb_obj_value(c), MRB_SYM(DEFAULT));
148
173
  if (!mrb_obj_is_kind_of(mrb, d, c)) {
149
174
  mrb_raise(mrb, E_TYPE_ERROR, "Random::DEFAULT replaced");
150
175
  }
@@ -167,7 +192,7 @@ random_m_init(mrb_state *mrb, mrb_value self)
167
192
  rand_init(t);
168
193
  }
169
194
  else {
170
- rand_seed(t, (uint32_t)mrb_fixnum(seed));
195
+ rand_seed(t, (uint32_t)mrb_integer(seed));
171
196
  }
172
197
 
173
198
  return self;
@@ -196,11 +221,11 @@ random_m_srand(mrb_state *mrb, mrb_value self)
196
221
  seed = (uint32_t)time(NULL) + rand_uint32(t);
197
222
  }
198
223
  else {
199
- seed = (uint32_t)mrb_fixnum(sv);
224
+ seed = (uint32_t)mrb_integer(sv);
200
225
  }
201
226
  old_seed = rand_seed(t, seed);
202
227
 
203
- return mrb_fixnum_value((mrb_int)old_seed);
228
+ return mrb_int_value(mrb, (mrb_int)old_seed);
204
229
  }
205
230
 
206
231
  /*
@@ -218,6 +243,34 @@ mrb_ary_shuffle_bang(mrb_state *mrb, mrb_value ary)
218
243
  mrb_value r = mrb_nil_value();
219
244
  rand_state *random;
220
245
 
246
+ /*
247
+ * MSC compiler bug generating invalid instructions with optimization
248
+ * enabled. MSC errantly uses a hardcoded value with optimizations on
249
+ * when using a fixed value from a union.
250
+ * Creating a temp volatile variable and reassigning back to the original
251
+ * value tricks the compiler to not perform this optimization;
252
+ */
253
+ #if defined _MSC_VER && _MSC_VER >= 1923
254
+ /* C++ will not cast away volatile easily, so we cannot do something like
255
+ * volatile mrb_value rr = r; r = (mrb_value)rr; with C++.
256
+ * That cast does work with C.
257
+ * We also have to trick the compiler to not optimize away the const_cast entirely
258
+ * by creating and manipulating an intermediate volatile pointer.
259
+ */
260
+ volatile mrb_value *v_r;
261
+ volatile mrb_int ii;
262
+ mrb_value *p_r;
263
+ v_r = &r;
264
+ ii = 2;
265
+ v_r = v_r + 2;
266
+ #if defined __cplusplus
267
+ p_r = const_cast<mrb_value*>(v_r - ii);
268
+ #else
269
+ p_r = (mrb_value*)v_r - ii;
270
+ #endif
271
+ r = *p_r;
272
+ #endif
273
+
221
274
  if (RARRAY_LEN(ary) > 1) {
222
275
  mrb_get_args(mrb, "|o", &r);
223
276
 
@@ -235,7 +288,7 @@ mrb_ary_shuffle_bang(mrb_state *mrb, mrb_value ary)
235
288
  mrb_value *ptr = RARRAY_PTR(ary);
236
289
  mrb_value tmp;
237
290
 
238
- j = mrb_fixnum(random_rand(mrb, random, max));
291
+ j = mrb_integer(random_rand(mrb, random, max));
239
292
 
240
293
  tmp = ptr[i];
241
294
  ptr[i] = ptr[j];
@@ -320,16 +373,18 @@ mrb_ary_sample(mrb_state *mrb, mrb_value ary)
320
373
  r = (mrb_int)(rand_uint32(random) % len);
321
374
 
322
375
  for (j=0; j<i; j++) {
323
- if (mrb_fixnum(RARRAY_PTR(result)[j]) == r) {
376
+ if (mrb_integer(RARRAY_PTR(result)[j]) == r) {
324
377
  goto retry; /* retry if duplicate */
325
378
  }
326
379
  }
327
380
  break;
328
381
  }
329
- mrb_ary_push(mrb, result, mrb_fixnum_value(r));
382
+ mrb_ary_push(mrb, result, mrb_int_value(mrb, r));
330
383
  }
331
384
  for (i=0; i<n; i++) {
332
- mrb_ary_set(mrb, result, i, RARRAY_PTR(ary)[mrb_fixnum(RARRAY_PTR(result)[i])]);
385
+ mrb_int idx = mrb_integer(RARRAY_PTR(result)[i]);
386
+ mrb_value elem = RARRAY_PTR(ary)[idx];
387
+ mrb_ary_set(mrb, result, i, elem);
333
388
  }
334
389
  return result;
335
390
  }
@@ -355,7 +410,7 @@ void mrb_mruby_random_gem_init(mrb_state *mrb)
355
410
  struct RClass *random;
356
411
  struct RClass *array = mrb->array_class;
357
412
 
358
- mrb_assert(sizeof(rand_state) <= ISTRUCT_DATA_SIZE);
413
+ mrb_static_assert1(sizeof(rand_state) <= ISTRUCT_DATA_SIZE);
359
414
 
360
415
  mrb_define_method(mrb, mrb->kernel_module, "rand", random_f_rand, MRB_ARGS_OPT(1));
361
416
  mrb_define_method(mrb, mrb->kernel_module, "srand", random_f_srand, MRB_ARGS_OPT(1));
@@ -373,7 +428,7 @@ void mrb_mruby_random_gem_init(mrb_state *mrb)
373
428
  mrb_define_method(mrb, array, "shuffle!", mrb_ary_shuffle_bang, MRB_ARGS_OPT(1));
374
429
  mrb_define_method(mrb, array, "sample", mrb_ary_sample, MRB_ARGS_OPT(2));
375
430
 
376
- mrb_const_set(mrb, mrb_obj_value(random), mrb_intern_lit(mrb, "DEFAULT"),
431
+ mrb_const_set(mrb, mrb_obj_value(random), MRB_SYM(DEFAULT),
377
432
  mrb_obj_new(mrb, random, 0, NULL));
378
433
  }
379
434