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
@@ -18,7 +18,7 @@ enum_update_hash(mrb_state *mrb, mrb_value self)
18
18
  mrb_get_args(mrb, "iii", &hash, &index, &hv);
19
19
  hash ^= ((uint32_t)hv << (index % 16));
20
20
 
21
- return mrb_fixnum_value(hash);
21
+ return mrb_int_value(mrb, hash);
22
22
  }
23
23
 
24
24
  void
@@ -16,6 +16,7 @@
16
16
  #include <mruby/error.h>
17
17
  #include <mruby/class.h>
18
18
  #include <mruby/throw.h>
19
+ #include <mruby/presym.h>
19
20
 
20
21
  MRB_API mrb_value
21
22
  mrb_exc_new(mrb_state *mrb, struct RClass *c, const char *ptr, size_t len)
@@ -45,7 +46,7 @@ exc_initialize(mrb_state *mrb, mrb_value exc)
45
46
  mrb_value mesg;
46
47
 
47
48
  if (mrb_get_args(mrb, "|o", &mesg) == 1) {
48
- mrb_iv_set(mrb, exc, mrb_intern_lit(mrb, "mesg"), mesg);
49
+ mrb_iv_set(mrb, exc, MRB_SYM(mesg), mesg);
49
50
  }
50
51
  return exc;
51
52
  }
@@ -74,7 +75,7 @@ exc_exception(mrb_state *mrb, mrb_value self)
74
75
  if (argc == 0) return self;
75
76
  if (mrb_obj_equal(mrb, self, a)) return self;
76
77
  exc = mrb_obj_clone(mrb, self);
77
- mrb_iv_set(mrb, exc, mrb_intern_lit(mrb, "mesg"), a);
78
+ mrb_iv_set(mrb, exc, MRB_SYM(mesg), a);
78
79
 
79
80
  return exc;
80
81
  }
@@ -90,7 +91,7 @@ exc_exception(mrb_state *mrb, mrb_value self)
90
91
  mrb_value
91
92
  exc_to_s(mrb_state *mrb, mrb_value exc)
92
93
  {
93
- mrb_value mesg = mrb_attr_get(mrb, exc, mrb_intern_lit(mrb, "mesg"));
94
+ mrb_value mesg = mrb_attr_get(mrb, exc, MRB_SYM(mesg));
94
95
  struct RObject *p;
95
96
 
96
97
  if (!mrb_string_p(mesg)) {
@@ -114,7 +115,7 @@ exc_to_s(mrb_state *mrb, mrb_value exc)
114
115
  static mrb_value
115
116
  exc_message(mrb_state *mrb, mrb_value exc)
116
117
  {
117
- return mrb_funcall(mrb, exc, "to_s", 0);
118
+ return mrb_funcall_id(mrb, exc, MRB_SYM(to_s), 0);
118
119
  }
119
120
 
120
121
  /*
@@ -130,7 +131,7 @@ exc_message(mrb_state *mrb, mrb_value exc)
130
131
  mrb_value
131
132
  mrb_exc_inspect(mrb_state *mrb, mrb_value exc)
132
133
  {
133
- mrb_value mesg = mrb_attr_get(mrb, exc, mrb_intern_lit(mrb, "mesg"));
134
+ mrb_value mesg = mrb_attr_get(mrb, exc, MRB_SYM(mesg));
134
135
  mrb_value cname = mrb_mod_to_s(mrb, mrb_obj_value(mrb_obj_class(mrb, exc)));
135
136
  mesg = mrb_obj_as_string(mrb, mesg);
136
137
  return RSTRING_LEN(mesg) == 0 ? cname : mrb_format(mrb, "%v (%v)", mesg, cname);
@@ -154,15 +155,14 @@ set_backtrace(mrb_state *mrb, mrb_value exc, mrb_value backtrace)
154
155
  p++;
155
156
  }
156
157
  }
157
- mrb_iv_set(mrb, exc, mrb_intern_lit(mrb, "backtrace"), backtrace);
158
+ mrb_iv_set(mrb, exc, MRB_SYM(backtrace), backtrace);
158
159
  }
159
160
 
160
161
  static mrb_value
161
162
  exc_set_backtrace(mrb_state *mrb, mrb_value exc)
162
163
  {
163
- mrb_value backtrace;
164
+ mrb_value backtrace = mrb_get_arg1(mrb);
164
165
 
165
- mrb_get_args(mrb, "o", &backtrace);
166
166
  set_backtrace(mrb, exc, backtrace);
167
167
  return backtrace;
168
168
  }
@@ -185,6 +185,16 @@ mrb_exc_set(mrb_state *mrb, mrb_value exc)
185
185
  }
186
186
  }
187
187
 
188
+ static mrb_noreturn void
189
+ exc_throw(mrb_state *mrb, mrb_value exc)
190
+ {
191
+ if (!mrb->jmp) {
192
+ mrb_p(mrb, exc);
193
+ abort();
194
+ }
195
+ MRB_THROW(mrb->jmp);
196
+ }
197
+
188
198
  MRB_API mrb_noreturn void
189
199
  mrb_exc_raise(mrb_state *mrb, mrb_value exc)
190
200
  {
@@ -197,11 +207,7 @@ mrb_exc_raise(mrb_state *mrb, mrb_value exc)
197
207
  }
198
208
  mrb_exc_set(mrb, exc);
199
209
  }
200
- if (!mrb->jmp) {
201
- mrb_p(mrb, exc);
202
- abort();
203
- }
204
- MRB_THROW(mrb->jmp);
210
+ exc_throw(mrb, exc);
205
211
  }
206
212
 
207
213
  MRB_API mrb_noreturn void
@@ -283,7 +289,7 @@ mrb_vformat(mrb_state *mrb, const char *format, va_list ap)
283
289
  #endif
284
290
  obj = mrb_fixnum_value(i);
285
291
  goto L_cat_obj;
286
- #ifndef MRB_WITHOUT_FLOAT
292
+ #ifndef MRB_NO_FLOAT
287
293
  case 'f':
288
294
  obj = mrb_float_value(mrb, (mrb_float)va_arg(ap, double));
289
295
  goto L_cat_obj;
@@ -415,7 +421,7 @@ mrb_name_error(mrb_state *mrb, mrb_sym id, const char *fmt, ...)
415
421
  MRB_API void
416
422
  mrb_warn(mrb_state *mrb, const char *fmt, ...)
417
423
  {
418
- #ifndef MRB_DISABLE_STDIO
424
+ #ifndef MRB_NO_STDIO
419
425
  va_list ap;
420
426
  mrb_value str;
421
427
 
@@ -431,7 +437,7 @@ mrb_warn(mrb_state *mrb, const char *fmt, ...)
431
437
  MRB_API mrb_noreturn void
432
438
  mrb_bug(mrb_state *mrb, const char *fmt, ...)
433
439
  {
434
- #ifndef MRB_DISABLE_STDIO
440
+ #ifndef MRB_NO_STDIO
435
441
  va_list ap;
436
442
  mrb_value str;
437
443
 
@@ -469,7 +475,7 @@ mrb_make_exception(mrb_state *mrb, mrb_int argc, const mrb_value *argv)
469
475
  n = 1;
470
476
  exception_call:
471
477
  {
472
- mrb_sym exc = mrb_intern_lit(mrb, "exception");
478
+ mrb_sym exc = MRB_SYM(exception);
473
479
  if (mrb_respond_to(mrb, argv[0], exc)) {
474
480
  mesg = mrb_funcall_argv(mrb, argv[0], exc, n, argv+1);
475
481
  }
@@ -550,6 +556,74 @@ mrb_argnum_error(mrb_state *mrb, mrb_int argc, int min, int max)
550
556
  #undef FMT
551
557
  }
552
558
 
559
+ void mrb_core_init_printabort(void);
560
+
561
+ int
562
+ mrb_core_init_protect(mrb_state *mrb, void (*body)(mrb_state *, void *), void *opaque)
563
+ {
564
+ struct mrb_jmpbuf *prev_jmp = mrb->jmp;
565
+ struct mrb_jmpbuf c_jmp;
566
+ int err = 1;
567
+
568
+ MRB_TRY(&c_jmp) {
569
+ mrb->jmp = &c_jmp;
570
+ body(mrb, opaque);
571
+ err = 0;
572
+ } MRB_CATCH(&c_jmp) {
573
+ if (mrb->exc) {
574
+ mrb_p(mrb, mrb_obj_value(mrb->exc));
575
+ mrb->exc = NULL;
576
+ }
577
+ else {
578
+ mrb_core_init_printabort();
579
+ }
580
+ } MRB_END_EXC(&c_jmp);
581
+
582
+ mrb->jmp = prev_jmp;
583
+
584
+ return err;
585
+ }
586
+
587
+ mrb_noreturn void
588
+ mrb_core_init_abort(mrb_state *mrb)
589
+ {
590
+ mrb->exc = NULL;
591
+ exc_throw(mrb, mrb_nil_value());
592
+ }
593
+
594
+ void
595
+ mrb_protect_atexit(mrb_state *mrb)
596
+ {
597
+ if (mrb->atexit_stack_len > 0) {
598
+ struct mrb_jmpbuf *prev_jmp = mrb->jmp;
599
+ struct mrb_jmpbuf c_jmp;
600
+ for (int i = mrb->atexit_stack_len; i > 0; --i) {
601
+ MRB_TRY(&c_jmp) {
602
+ mrb->jmp = &c_jmp;
603
+ mrb->atexit_stack[i - 1](mrb);
604
+ mrb->jmp = prev_jmp;
605
+ } MRB_CATCH(&c_jmp) {
606
+ /* ignore atexit errors */
607
+ } MRB_END_EXC(&c_jmp);
608
+ }
609
+ #ifndef MRB_FIXED_STATE_ATEXIT_STACK
610
+ mrb_free(mrb, mrb->atexit_stack);
611
+ #endif
612
+ mrb->jmp = prev_jmp;
613
+ }
614
+ }
615
+
616
+ mrb_noreturn void
617
+ mrb_raise_nomemory(mrb_state *mrb)
618
+ {
619
+ if (mrb->nomem_err) {
620
+ mrb_exc_raise(mrb, mrb_obj_value(mrb->nomem_err));
621
+ }
622
+ else {
623
+ mrb_core_init_abort(mrb);
624
+ }
625
+ }
626
+
553
627
  void
554
628
  mrb_init_exception(mrb_state *mrb)
555
629
  {
@@ -571,11 +645,11 @@ mrb_init_exception(mrb_state *mrb)
571
645
  script_error = mrb_define_class(mrb, "ScriptError", mrb->eException_class); /* 15.2.37 */
572
646
  mrb_define_class(mrb, "SyntaxError", script_error); /* 15.2.38 */
573
647
  stack_error = mrb_define_class(mrb, "SystemStackError", exception);
574
- mrb->stack_err = mrb_obj_ptr(mrb_exc_new_str_lit(mrb, stack_error, "stack level too deep"));
648
+ mrb->stack_err = mrb_obj_ptr(mrb_exc_new_lit(mrb, stack_error, "stack level too deep"));
575
649
 
576
650
  nomem_error = mrb_define_class(mrb, "NoMemoryError", exception);
577
- mrb->nomem_err = mrb_obj_ptr(mrb_exc_new_str_lit(mrb, nomem_error, "Out of memory"));
651
+ mrb->nomem_err = mrb_obj_ptr(mrb_exc_new_lit(mrb, nomem_error, "Out of memory"));
578
652
  #ifdef MRB_GC_FIXED_ARENA
579
- mrb->arena_err = mrb_obj_ptr(mrb_exc_new_str_lit(mrb, nomem_error, "arena overflow error"));
653
+ mrb->arena_err = mrb_obj_ptr(mrb_exc_new_lit(mrb, nomem_error, "arena overflow error"));
580
654
  #endif
581
655
  }
@@ -8,6 +8,7 @@
8
8
  #include <mruby/string.h>
9
9
  #include <mruby/data.h>
10
10
  #include <mruby/class.h>
11
+ #include <mruby/numeric.h>
11
12
 
12
13
  MRB_API struct RData*
13
14
  mrb_data_object_alloc(mrb_state *mrb, struct RClass *klass, void *ptr, const mrb_data_type *type)
@@ -69,21 +70,11 @@ mrb_obj_to_sym(mrb_state *mrb, mrb_value name)
69
70
  return 0; /* not reached */
70
71
  }
71
72
 
72
- MRB_API mrb_int
73
- #ifdef MRB_WITHOUT_FLOAT
74
- mrb_fixnum_id(mrb_int f)
75
- #else
76
- mrb_float_id(mrb_float f)
77
- #endif
73
+ static mrb_int
74
+ make_num_id(const char *p, size_t len)
78
75
  {
79
- const char *p = (const char*)&f;
80
- int len = sizeof(f);
81
76
  uint32_t id = 0;
82
77
 
83
- #ifndef MRB_WITHOUT_FLOAT
84
- /* normalize -0.0 to 0.0 */
85
- if (f == 0) f = 0.0;
86
- #endif
87
78
  while (len--) {
88
79
  id = id*65599 + *p;
89
80
  p++;
@@ -93,6 +84,22 @@ mrb_float_id(mrb_float f)
93
84
  return (mrb_int)id;
94
85
  }
95
86
 
87
+ MRB_API mrb_int
88
+ mrb_int_id(mrb_int n)
89
+ {
90
+ return make_num_id((const char*)&n, sizeof(n));
91
+ }
92
+
93
+ #ifndef MRB_NO_FLOAT
94
+ MRB_API mrb_int
95
+ mrb_float_id(mrb_float f)
96
+ {
97
+ /* normalize -0.0 to 0.0 */
98
+ if (f == 0) f = 0.0;
99
+ return make_num_id((const char*)&f, sizeof(f));
100
+ }
101
+ #endif
102
+
96
103
  MRB_API mrb_int
97
104
  mrb_obj_id(mrb_value obj)
98
105
  {
@@ -107,17 +114,16 @@ mrb_obj_id(mrb_value obj)
107
114
  return MakeID(0); /* not define */
108
115
  case MRB_TT_FALSE:
109
116
  if (mrb_nil_p(obj))
110
- return MakeID(1);
111
- return MakeID(0);
117
+ return MakeID(4);
118
+ else
119
+ return MakeID(0);
112
120
  case MRB_TT_TRUE:
113
- return MakeID(1);
121
+ return MakeID(2);
114
122
  case MRB_TT_SYMBOL:
115
123
  return MakeID(mrb_symbol(obj));
116
- case MRB_TT_FIXNUM:
117
- #ifdef MRB_WITHOUT_FLOAT
118
- return MakeID(mrb_fixnum_id(mrb_fixnum(obj)));
119
- #else
120
- return MakeID2(mrb_float_id((mrb_float)mrb_fixnum(obj)), MRB_TT_FLOAT);
124
+ case MRB_TT_INTEGER:
125
+ return MakeID(mrb_int_id(mrb_integer(obj)));
126
+ #ifndef MRB_NO_FLOAT
121
127
  case MRB_TT_FLOAT:
122
128
  return MakeID(mrb_float_id(mrb_float(obj)));
123
129
  #endif
@@ -132,7 +138,6 @@ mrb_obj_id(mrb_value obj)
132
138
  case MRB_TT_HASH:
133
139
  case MRB_TT_RANGE:
134
140
  case MRB_TT_EXCEPTION:
135
- case MRB_TT_FILE:
136
141
  case MRB_TT_DATA:
137
142
  case MRB_TT_ISTRUCT:
138
143
  default:
@@ -140,41 +145,53 @@ mrb_obj_id(mrb_value obj)
140
145
  }
141
146
  }
142
147
 
148
+ #if defined(MRB_NAN_BOXING) && defined(MRB_64BIT)
149
+ #define mrb_xxx_boxing_cptr_value mrb_nan_boxing_cptr_value
150
+ #endif
151
+
143
152
  #ifdef MRB_WORD_BOXING
144
- #ifndef MRB_WITHOUT_FLOAT
153
+ #define mrb_xxx_boxing_cptr_value mrb_word_boxing_cptr_value
154
+
155
+ #ifndef MRB_NO_FLOAT
145
156
  MRB_API mrb_value
146
157
  mrb_word_boxing_float_value(mrb_state *mrb, mrb_float f)
147
158
  {
148
- mrb_value v;
159
+ union mrb_value_ v;
149
160
 
150
- v.value.p = mrb_obj_alloc(mrb, MRB_TT_FLOAT, mrb->float_class);
151
- v.value.fp->f = f;
152
- MRB_SET_FROZEN_FLAG(v.value.bp);
153
- return v;
161
+ v.p = mrb_obj_alloc(mrb, MRB_TT_FLOAT, mrb->float_class);
162
+ v.fp->f = f;
163
+ MRB_SET_FROZEN_FLAG(v.bp);
164
+ return v.value;
154
165
  }
166
+ #endif /* MRB_NO_FLOAT */
155
167
 
156
168
  MRB_API mrb_value
157
- mrb_word_boxing_float_pool(mrb_state *mrb, mrb_float f)
169
+ mrb_word_boxing_int_value(mrb_state *mrb, mrb_int n)
158
170
  {
159
- struct RFloat *nf = (struct RFloat *)mrb_malloc(mrb, sizeof(struct RFloat));
160
- nf->tt = MRB_TT_FLOAT;
161
- nf->c = mrb->float_class;
162
- nf->f = f;
163
- MRB_SET_FROZEN_FLAG(nf);
164
- return mrb_obj_value(nf);
171
+ if (FIXABLE(n)) return mrb_fixnum_value(n);
172
+ else {
173
+ union mrb_value_ v;
174
+
175
+ v.p = mrb_obj_alloc(mrb, MRB_TT_INTEGER, mrb->integer_class);
176
+ v.ip->i = n;
177
+ MRB_SET_FROZEN_FLAG(v.ip);
178
+ return v.value;
179
+ }
165
180
  }
166
- #endif /* MRB_WITHOUT_FLOAT */
181
+ #endif /* MRB_WORD_BOXING */
167
182
 
183
+ #if defined(MRB_WORD_BOXING) || (defined(MRB_NAN_BOXING) && defined(MRB_64BIT))
168
184
  MRB_API mrb_value
169
- mrb_word_boxing_cptr_value(mrb_state *mrb, void *p)
185
+ mrb_xxx_boxing_cptr_value(mrb_state *mrb, void *p)
170
186
  {
171
187
  mrb_value v;
188
+ struct RCptr *cptr = (struct RCptr*)mrb_obj_alloc(mrb, MRB_TT_CPTR, mrb->object_class);
172
189
 
173
- v.value.p = mrb_obj_alloc(mrb, MRB_TT_CPTR, mrb->object_class);
174
- v.value.vp->p = p;
190
+ SET_OBJ_VALUE(v, cptr);
191
+ cptr->p = p;
175
192
  return v;
176
193
  }
177
- #endif /* MRB_WORD_BOXING */
194
+ #endif
178
195
 
179
196
  #if defined _MSC_VER && _MSC_VER < 1900
180
197
 
@@ -1,5 +1,6 @@
1
- #ifndef MRB_WITHOUT_FLOAT
2
- #if defined(MRB_DISABLE_STDIO) || defined(_WIN32) || defined(_WIN64)
1
+ #include <mruby.h>
2
+ #if !defined(MRB_NO_FLOAT)
3
+ #if defined(MRB_NO_STDIO) || defined(_WIN32) || defined(_WIN64)
3
4
  /*
4
5
 
5
6
  Most code in this file originates from musl (src/stdio/vfprintf.c)
@@ -34,12 +35,21 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34
35
  #include <float.h>
35
36
  #include <ctype.h>
36
37
 
37
- #include <mruby.h>
38
38
  #include <mruby/string.h>
39
39
 
40
+ struct fmt_args;
41
+
42
+ typedef void output_func(struct fmt_args *f, const char *s, size_t l);
43
+
40
44
  struct fmt_args {
41
45
  mrb_state *mrb;
42
- mrb_value str;
46
+ output_func *output;
47
+ void *opaque;
48
+ };
49
+
50
+ struct mrb_cstr {
51
+ char *buf;
52
+ size_t len;
43
53
  };
44
54
 
45
55
  #define MAX(a,b) ((a)>(b) ? (a) : (b))
@@ -54,15 +64,44 @@ struct fmt_args {
54
64
  #define PAD_POS (1U<<(' '-' '))
55
65
  #define MARK_POS (1U<<('+'-' '))
56
66
 
67
+ #define FLAGMASK (ALT_FORM|ZERO_PAD|LEFT_ADJ|PAD_POS|MARK_POS)
68
+
69
+ static output_func strcat_value;
70
+ static output_func strcat_cstr;
71
+
72
+ static void
73
+ strcat_value(struct fmt_args *f, const char *s, size_t l)
74
+ {
75
+ mrb_value str = *(mrb_value*)f->opaque;
76
+ mrb_str_cat(f->mrb, str, s, l);
77
+ }
78
+
79
+ static void
80
+ strcat_cstr(struct fmt_args *f, const char *s, size_t l)
81
+ {
82
+ struct mrb_cstr *cstr = (struct mrb_cstr*)f->opaque;
83
+
84
+ if (l > cstr->len) {
85
+ mrb_state *mrb = f->mrb;
86
+
87
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "string buffer too small");
88
+ }
89
+
90
+ memcpy(cstr->buf, s, l);
91
+
92
+ cstr->buf += l;
93
+ cstr->len -= l;
94
+ }
95
+
57
96
  static void
58
97
  out(struct fmt_args *f, const char *s, size_t l)
59
98
  {
60
- mrb_str_cat(f->mrb, f->str, s, l);
99
+ f->output(f, s, l);
61
100
  }
62
101
 
63
102
  #define PAD_SIZE 256
64
103
  static void
65
- pad(struct fmt_args *f, char c, ptrdiff_t w, ptrdiff_t l, uint8_t fl)
104
+ pad(struct fmt_args *f, char c, ptrdiff_t w, ptrdiff_t l, uint32_t fl)
66
105
  {
67
106
  char pad[PAD_SIZE];
68
107
  if (fl & (LEFT_ADJ | ZERO_PAD) || l >= w) return;
@@ -92,7 +131,7 @@ typedef char compiler_defines_long_double_incorrectly[9-(int)sizeof(long double)
92
131
  #endif
93
132
 
94
133
  static int
95
- fmt_fp(struct fmt_args *f, long double y, ptrdiff_t p, uint8_t fl, int t)
134
+ fmt_fp(struct fmt_args *f, long double y, ptrdiff_t w, ptrdiff_t p, uint32_t fl, int t)
96
135
  {
97
136
  uint32_t big[(LDBL_MANT_DIG+28)/29 + 1 // mantissa expansion
98
137
  + (LDBL_MAX_EXP+LDBL_MANT_DIG+28+8)/9]; // exponent expansion
@@ -117,11 +156,11 @@ fmt_fp(struct fmt_args *f, long double y, ptrdiff_t p, uint8_t fl, int t)
117
156
  if (!isfinite(y)) {
118
157
  const char *ss = (t&32)?"inf":"INF";
119
158
  if (y!=y) ss=(t&32)?"nan":"NAN";
120
- pad(f, ' ', 0, 3+pl, fl&~ZERO_PAD);
159
+ pad(f, ' ', w, 3+pl, fl&~ZERO_PAD);
121
160
  out(f, prefix, pl);
122
161
  out(f, ss, 3);
123
- pad(f, ' ', 0, 3+pl, fl^LEFT_ADJ);
124
- return 3+(int)pl;
162
+ pad(f, ' ', w, 3+pl, fl^LEFT_ADJ);
163
+ return (int)MAX(w, 3+pl);
125
164
  }
126
165
 
127
166
  y = frexp((double)y, &e2) * 2;
@@ -169,14 +208,14 @@ fmt_fp(struct fmt_args *f, long double y, ptrdiff_t p, uint8_t fl, int t)
169
208
  else
170
209
  l = (s-buf) + (ebuf-estr);
171
210
 
172
- pad(f, ' ', 0, pl+l, fl);
211
+ pad(f, ' ', w, pl+l, fl);
173
212
  out(f, prefix, pl);
174
- pad(f, '0', 0, pl+l, fl^ZERO_PAD);
213
+ pad(f, '0', w, pl+l, fl^ZERO_PAD);
175
214
  out(f, buf, s-buf);
176
215
  pad(f, '0', l-(ebuf-estr)-(s-buf), 0, 0);
177
216
  out(f, estr, ebuf-estr);
178
- pad(f, ' ', 0, pl+l, fl^LEFT_ADJ);
179
- return (int)pl+(int)l;
217
+ pad(f, ' ', w, pl+l, fl^LEFT_ADJ);
218
+ return (int)MAX(w, pl+l);
180
219
  }
181
220
  if (p<0) p=6;
182
221
 
@@ -288,9 +327,9 @@ fmt_fp(struct fmt_args *f, long double y, ptrdiff_t p, uint8_t fl, int t)
288
327
  l += ebuf-estr;
289
328
  }
290
329
 
291
- pad(f, ' ', 0, pl+l, fl);
330
+ pad(f, ' ', w, pl+l, fl);
292
331
  out(f, prefix, pl);
293
- pad(f, '0', 0, pl+l, fl^ZERO_PAD);
332
+ pad(f, '0', w, pl+l, fl^ZERO_PAD);
294
333
 
295
334
  if ((t|32)=='f') {
296
335
  if (a>r) a=r;
@@ -325,21 +364,33 @@ fmt_fp(struct fmt_args *f, long double y, ptrdiff_t p, uint8_t fl, int t)
325
364
  out(f, estr, ebuf-estr);
326
365
  }
327
366
 
328
- pad(f, ' ', 0, pl+l, fl^LEFT_ADJ);
367
+ pad(f, ' ', w, pl+l, fl^LEFT_ADJ);
329
368
 
330
- return (int)pl+(int)l;
369
+ return (int)MAX(w, pl+l);
331
370
  }
332
371
 
333
372
  static int
334
373
  fmt_core(struct fmt_args *f, const char *fmt, mrb_float flo)
335
374
  {
336
- ptrdiff_t p;
375
+ ptrdiff_t w, p;
376
+ uint32_t fl;
337
377
 
338
378
  if (*fmt != '%') {
339
379
  return -1;
340
380
  }
341
381
  ++fmt;
342
382
 
383
+ /* Read modifier flags */
384
+ for (fl=0; (unsigned)*fmt-' '<32 && (FLAGMASK&(1U<<(*fmt-' '))); fmt++)
385
+ fl |= 1U<<(*fmt-' ');
386
+
387
+ /* - and 0 flags are mutually exclusive */
388
+ if (fl & LEFT_ADJ) fl &= ~ZERO_PAD;
389
+
390
+ for (w = 0; ISDIGIT(*fmt); ++fmt) {
391
+ w = 10 * w + (*fmt - '0');
392
+ }
393
+
343
394
  if (*fmt == '.') {
344
395
  ++fmt;
345
396
  for (p = 0; ISDIGIT(*fmt); ++fmt) {
@@ -353,29 +404,48 @@ fmt_core(struct fmt_args *f, const char *fmt, mrb_float flo)
353
404
  switch (*fmt) {
354
405
  case 'e': case 'f': case 'g': case 'a':
355
406
  case 'E': case 'F': case 'G': case 'A':
356
- return fmt_fp(f, flo, p, 0, *fmt);
407
+ return fmt_fp(f, flo, w, p, fl, *fmt);
357
408
  default:
358
409
  return -1;
359
410
  }
360
411
  }
361
412
 
362
- mrb_value
413
+ MRB_API mrb_value
363
414
  mrb_float_to_str(mrb_state *mrb, mrb_value flo, const char *fmt)
364
415
  {
365
416
  struct fmt_args f;
417
+ mrb_value str = mrb_str_new_capa(mrb, 24);
366
418
 
367
419
  f.mrb = mrb;
368
- f.str = mrb_str_new_capa(mrb, 24);
420
+ f.output = strcat_value;
421
+ f.opaque = (void*)&str;
369
422
  if (fmt_core(&f, fmt, mrb_float(flo)) < 0) {
370
423
  mrb_raise(mrb, E_ARGUMENT_ERROR, "invalid format string");
371
424
  }
372
- return f.str;
425
+ return str;
373
426
  }
374
- #else /* MRB_DISABLE_STDIO || _WIN32 || _WIN64 */
375
- #include <mruby.h>
427
+
428
+ MRB_API int
429
+ mrb_float_to_cstr(mrb_state *mrb, char *buf, size_t len, const char *fmt, mrb_float fval)
430
+ {
431
+ struct fmt_args f;
432
+ struct mrb_cstr cstr;
433
+
434
+ cstr.buf = buf;
435
+ cstr.len = len - 1; /* reserve NUL terminator */
436
+ f.mrb = mrb;
437
+ f.output = strcat_cstr;
438
+ f.opaque = (void*)&cstr;
439
+ if (fmt_core(&f, fmt, fval) < 0) {
440
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "invalid format string");
441
+ }
442
+ *cstr.buf = '\0';
443
+ return (int)(cstr.buf - buf);
444
+ }
445
+ #else /* MRB_NO_STDIO || _WIN32 || _WIN64 */
376
446
  #include <stdio.h>
377
447
 
378
- mrb_value
448
+ MRB_API mrb_value
379
449
  mrb_float_to_str(mrb_state *mrb, mrb_value flo, const char *fmt)
380
450
  {
381
451
  char buf[25];
@@ -383,5 +453,11 @@ mrb_float_to_str(mrb_state *mrb, mrb_value flo, const char *fmt)
383
453
  snprintf(buf, sizeof(buf), fmt, mrb_float(flo));
384
454
  return mrb_str_new_cstr(mrb, buf);
385
455
  }
386
- #endif /* MRB_DISABLE_STDIO || _WIN32 || _WIN64 */
456
+
457
+ MRB_API int
458
+ mrb_float_to_cstr(mrb_state *mrb, char *buf, size_t len, const char *fmt, mrb_float fval)
459
+ {
460
+ return snprintf(buf, len, fmt, fval);
461
+ }
462
+ #endif /* MRB_NO_STDIO || _WIN32 || _WIN64 */
387
463
  #endif