script_core 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (529) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +35 -57
  3. data/.ruby-version +1 -1
  4. data/Gemfile +2 -2
  5. data/README.md +7 -1
  6. data/ext/enterprise_script_service/Rakefile +1 -1
  7. data/ext/enterprise_script_service/libseccomp/.travis.yml +24 -12
  8. data/ext/enterprise_script_service/libseccomp/CHANGELOG +32 -0
  9. data/ext/enterprise_script_service/libseccomp/CONTRIBUTING.md +37 -26
  10. data/ext/enterprise_script_service/libseccomp/CREDITS +11 -0
  11. data/ext/enterprise_script_service/libseccomp/README.md +21 -1
  12. data/ext/enterprise_script_service/libseccomp/configure.ac +13 -8
  13. data/ext/enterprise_script_service/libseccomp/doc/Makefile.am +6 -0
  14. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_api_get.3 +12 -2
  15. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_arch_add.3 +38 -6
  16. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_attr_set.3 +53 -2
  17. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_export_bpf.3 +20 -2
  18. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_init.3 +9 -2
  19. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_load.3 +32 -2
  20. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_merge.3 +16 -2
  21. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_alloc.3 +113 -0
  22. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_fd.3 +1 -0
  23. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_free.3 +1 -0
  24. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_id_valid.3 +1 -0
  25. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_receive.3 +1 -0
  26. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_respond.3 +1 -0
  27. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_rule_add.3 +64 -3
  28. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_syscall_priority.3 +18 -3
  29. data/ext/enterprise_script_service/libseccomp/include/seccomp-syscalls.h +19 -0
  30. data/ext/enterprise_script_service/libseccomp/include/seccomp.h.in +116 -0
  31. data/ext/enterprise_script_service/libseccomp/src/.gitignore +2 -0
  32. data/ext/enterprise_script_service/libseccomp/src/Makefile.am +31 -17
  33. data/ext/enterprise_script_service/libseccomp/src/api.c +254 -58
  34. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64.h +1 -9
  35. data/ext/enterprise_script_service/libseccomp/src/arch-arm.c +47 -2
  36. data/ext/enterprise_script_service/libseccomp/src/arch-arm.h +1 -9
  37. data/ext/enterprise_script_service/libseccomp/src/arch-gperf-generate +40 -0
  38. data/ext/enterprise_script_service/libseccomp/src/arch-mips.c +41 -4
  39. data/ext/enterprise_script_service/libseccomp/src/arch-mips.h +2 -10
  40. data/ext/enterprise_script_service/libseccomp/src/arch-mips64.c +41 -4
  41. data/ext/enterprise_script_service/libseccomp/src/arch-mips64.h +3 -11
  42. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.c +41 -4
  43. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.h +2 -10
  44. data/ext/enterprise_script_service/libseccomp/src/arch-parisc.h +1 -10
  45. data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.c +3 -3
  46. data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.h +29 -0
  47. data/ext/enterprise_script_service/libseccomp/src/arch-ppc.h +1 -9
  48. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.c +606 -8
  49. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.h +2 -10
  50. data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.c +31 -0
  51. data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.h +22 -0
  52. data/ext/enterprise_script_service/libseccomp/src/arch-s390.c +171 -12
  53. data/ext/enterprise_script_service/libseccomp/src/arch-s390.h +1 -17
  54. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.c +166 -10
  55. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.h +1 -20
  56. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-dump.c +8 -1
  57. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-validate +359 -143
  58. data/ext/enterprise_script_service/libseccomp/src/arch-x32.c +36 -2
  59. data/ext/enterprise_script_service/libseccomp/src/arch-x32.h +2 -10
  60. data/ext/enterprise_script_service/libseccomp/src/arch-x86.c +172 -10
  61. data/ext/enterprise_script_service/libseccomp/src/arch-x86.h +1 -14
  62. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64.h +1 -9
  63. data/ext/enterprise_script_service/libseccomp/src/arch.c +11 -3
  64. data/ext/enterprise_script_service/libseccomp/src/arch.h +7 -0
  65. data/ext/enterprise_script_service/libseccomp/src/db.c +268 -57
  66. data/ext/enterprise_script_service/libseccomp/src/db.h +16 -2
  67. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.c +503 -148
  68. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.h +2 -1
  69. data/ext/enterprise_script_service/libseccomp/src/gen_pfc.c +165 -37
  70. data/ext/enterprise_script_service/libseccomp/src/python/libseccomp.pxd +37 -1
  71. data/ext/enterprise_script_service/libseccomp/src/python/seccomp.pyx +295 -5
  72. data/ext/enterprise_script_service/libseccomp/src/syscalls.c +56 -0
  73. data/ext/enterprise_script_service/libseccomp/src/syscalls.csv +470 -0
  74. data/ext/enterprise_script_service/libseccomp/src/syscalls.h +62 -0
  75. data/ext/enterprise_script_service/libseccomp/src/syscalls.perf.template +82 -0
  76. data/ext/enterprise_script_service/libseccomp/src/system.c +196 -16
  77. data/ext/enterprise_script_service/libseccomp/src/system.h +68 -13
  78. data/ext/enterprise_script_service/libseccomp/tests/.gitignore +10 -2
  79. data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.tests +1 -1
  80. data/ext/enterprise_script_service/libseccomp/tests/11-basic-basic_errors.c +5 -5
  81. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.c +35 -1
  82. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.py +10 -1
  83. data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.c +4 -3
  84. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.c +12 -0
  85. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.py +1 -0
  86. data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.c → 18-sim-basic_allowlist.c} +0 -0
  87. data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.py → 18-sim-basic_allowlist.py} +0 -0
  88. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_allowlist.tests +32 -0
  89. data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.c +3 -0
  90. data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.py +1 -0
  91. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.c +3 -0
  92. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.py +1 -0
  93. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.tests +33 -17
  94. data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.c → 34-sim-basic_denylist.c} +0 -0
  95. data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.py → 34-sim-basic_denylist.py} +0 -0
  96. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_denylist.tests +32 -0
  97. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.c +3 -0
  98. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.py +1 -0
  99. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.tests +25 -25
  100. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.c +24 -3
  101. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.py +16 -1
  102. data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.c +3 -3
  103. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.c +112 -0
  104. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.py +60 -0
  105. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.tests +11 -0
  106. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.c +48 -0
  107. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.py +38 -0
  108. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.tests +11 -0
  109. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.c +156 -0
  110. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.py +95 -0
  111. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.tests +65 -0
  112. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.c +128 -0
  113. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.py +95 -0
  114. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.tests +11 -0
  115. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.c +134 -0
  116. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.sh +46 -0
  117. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.tests +11 -0
  118. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.c +90 -0
  119. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.py +65 -0
  120. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.tests +11 -0
  121. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.c +64 -0
  122. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.py +46 -0
  123. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.tests +11 -0
  124. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.c +116 -0
  125. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.py +61 -0
  126. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.tests +11 -0
  127. data/ext/enterprise_script_service/libseccomp/tests/Makefile.am +34 -10
  128. data/ext/enterprise_script_service/libseccomp/tests/regression +10 -3
  129. data/ext/enterprise_script_service/libseccomp/tests/util.c +3 -3
  130. data/ext/enterprise_script_service/libseccomp/tools/Makefile.am +0 -3
  131. data/ext/enterprise_script_service/libseccomp/tools/check-syntax +1 -1
  132. data/ext/enterprise_script_service/libseccomp/tools/scmp_arch_detect.c +3 -0
  133. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_disasm.c +4 -2
  134. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_sim.c +4 -0
  135. data/ext/enterprise_script_service/libseccomp/tools/util.c +14 -12
  136. data/ext/enterprise_script_service/libseccomp/tools/util.h +7 -0
  137. data/ext/enterprise_script_service/mruby/.github/workflows/build.yml +149 -0
  138. data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +55 -0
  139. data/ext/enterprise_script_service/mruby/.github/workflows/lint.yml +23 -0
  140. data/ext/enterprise_script_service/mruby/.github/workflows/oss-fuzz.yml +27 -0
  141. data/ext/enterprise_script_service/mruby/.github/workflows/spell-checker.yml +17 -0
  142. data/ext/enterprise_script_service/mruby/.gitignore +3 -0
  143. data/ext/enterprise_script_service/mruby/.gitlab-ci.yml +3 -3
  144. data/ext/enterprise_script_service/mruby/.markdownlint.yml +16 -0
  145. data/ext/enterprise_script_service/mruby/.travis.yml +7 -10
  146. data/ext/enterprise_script_service/mruby/.yamllint +8 -0
  147. data/ext/enterprise_script_service/mruby/AUTHORS +4 -0
  148. data/ext/enterprise_script_service/mruby/CODEOWNERS +1 -0
  149. data/ext/enterprise_script_service/mruby/CONTRIBUTING.md +6 -13
  150. data/ext/enterprise_script_service/mruby/Doxyfile +4 -4
  151. data/ext/enterprise_script_service/mruby/LICENSE +1 -1
  152. data/ext/enterprise_script_service/mruby/Makefile +1 -1
  153. data/ext/enterprise_script_service/mruby/README.md +5 -11
  154. data/ext/enterprise_script_service/mruby/Rakefile +18 -108
  155. data/ext/enterprise_script_service/mruby/TODO.md +17 -0
  156. data/ext/enterprise_script_service/mruby/appveyor.yml +29 -26
  157. data/ext/enterprise_script_service/mruby/benchmark/bm_ao_render.rb +1 -1
  158. data/ext/enterprise_script_service/mruby/build_config.rb +9 -152
  159. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_ArduinoDue.rb → build_config/ArduinoDue.rb} +4 -21
  160. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelEdison.rb → build_config/IntelEdison.rb} +4 -4
  161. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelGalileo.rb → build_config/IntelGalileo.rb} +3 -20
  162. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_RX630.rb → build_config/RX630.rb} +4 -21
  163. data/ext/enterprise_script_service/mruby/build_config/android_arm64-v8a.rb +11 -0
  164. data/ext/enterprise_script_service/mruby/build_config/android_armeabi.rb +11 -0
  165. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_android_armeabi_v7a_neon_hard.rb → build_config/android_armeabi_v7a_neon_hard.rb} +0 -15
  166. data/ext/enterprise_script_service/mruby/build_config/bench.rb +11 -0
  167. data/ext/enterprise_script_service/mruby/build_config/boxing.rb +21 -0
  168. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_chipKITMax32.rb → build_config/chipKITMax32.rb} +4 -21
  169. data/ext/enterprise_script_service/mruby/{appveyor_config.rb → build_config/ci/gcc-clang.rb} +11 -8
  170. data/ext/enterprise_script_service/mruby/build_config/ci/msvc.rb +20 -0
  171. data/ext/enterprise_script_service/mruby/build_config/clang-asan.rb +11 -0
  172. data/ext/enterprise_script_service/mruby/build_config/cross-32bit.rb +14 -0
  173. data/ext/enterprise_script_service/mruby/build_config/default.rb +80 -0
  174. data/ext/enterprise_script_service/mruby/build_config/dreamcast_shelf.rb +94 -0
  175. data/ext/enterprise_script_service/mruby/build_config/gameboyadvance.rb +73 -0
  176. data/ext/enterprise_script_service/mruby/build_config/host-cxx.rb +12 -0
  177. data/ext/enterprise_script_service/mruby/build_config/host-debug.rb +20 -0
  178. data/ext/enterprise_script_service/mruby/build_config/host-gprof.rb +14 -0
  179. data/ext/enterprise_script_service/mruby/build_config/host-m32.rb +15 -0
  180. data/ext/enterprise_script_service/mruby/build_config/host-shared.rb +36 -0
  181. data/ext/enterprise_script_service/mruby/build_config/mrbc.rb +11 -0
  182. data/ext/enterprise_script_service/mruby/build_config/no-float.rb +17 -0
  183. data/ext/enterprise_script_service/mruby/doc/guides/compile.md +142 -49
  184. data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +5 -4
  185. data/ext/enterprise_script_service/mruby/doc/guides/gc-arena-howto.md +1 -1
  186. data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +53 -30
  187. data/ext/enterprise_script_service/mruby/doc/guides/mrbgems.md +31 -14
  188. data/ext/enterprise_script_service/mruby/doc/guides/symbol.md +83 -0
  189. data/ext/enterprise_script_service/mruby/doc/limitations.md +35 -36
  190. data/ext/enterprise_script_service/mruby/doc/mruby3.md +163 -0
  191. data/ext/enterprise_script_service/mruby/doc/opcode.md +102 -103
  192. data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb +1 -1
  193. data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +5 -1
  194. data/ext/enterprise_script_service/mruby/examples/mrbgems/c_extension_example/src/example.c +5 -1
  195. data/ext/enterprise_script_service/mruby/examples/mrbgems/ruby_extension_example/mrblib/example.rb +1 -1
  196. data/ext/enterprise_script_service/mruby/include/mrbconf.h +88 -66
  197. data/ext/enterprise_script_service/mruby/include/mruby.h +160 -104
  198. data/ext/enterprise_script_service/mruby/include/mruby/array.h +27 -6
  199. data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +80 -46
  200. data/ext/enterprise_script_service/mruby/include/mruby/boxing_no.h +8 -8
  201. data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +76 -55
  202. data/ext/enterprise_script_service/mruby/include/mruby/class.h +10 -8
  203. data/ext/enterprise_script_service/mruby/include/mruby/common.h +14 -1
  204. data/ext/enterprise_script_service/mruby/include/mruby/compile.h +20 -6
  205. data/ext/enterprise_script_service/mruby/include/mruby/debug.h +2 -2
  206. data/ext/enterprise_script_service/mruby/include/mruby/dump.h +18 -52
  207. data/ext/enterprise_script_service/mruby/include/mruby/endian.h +44 -0
  208. data/ext/enterprise_script_service/mruby/include/mruby/error.h +39 -5
  209. data/ext/enterprise_script_service/mruby/include/mruby/gc.h +1 -0
  210. data/ext/enterprise_script_service/mruby/include/mruby/hash.h +33 -13
  211. data/ext/enterprise_script_service/mruby/include/mruby/irep.h +74 -14
  212. data/ext/enterprise_script_service/mruby/include/mruby/istruct.h +4 -1
  213. data/ext/enterprise_script_service/mruby/include/mruby/khash.h +19 -9
  214. data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +37 -63
  215. data/ext/enterprise_script_service/mruby/include/mruby/opcode.h +1 -27
  216. data/ext/enterprise_script_service/mruby/include/mruby/ops.h +29 -24
  217. data/ext/enterprise_script_service/mruby/include/mruby/presym.h +40 -0
  218. data/ext/enterprise_script_service/mruby/include/mruby/presym/disable.h +70 -0
  219. data/ext/enterprise_script_service/mruby/include/mruby/presym/enable.h +37 -0
  220. data/ext/enterprise_script_service/mruby/include/mruby/presym/scanning.h +73 -0
  221. data/ext/enterprise_script_service/mruby/include/mruby/proc.h +93 -21
  222. data/ext/enterprise_script_service/mruby/include/mruby/string.h +12 -16
  223. data/ext/enterprise_script_service/mruby/include/mruby/throw.h +14 -3
  224. data/ext/enterprise_script_service/mruby/include/mruby/value.h +60 -59
  225. data/ext/enterprise_script_service/mruby/include/mruby/variable.h +1 -0
  226. data/ext/enterprise_script_service/mruby/include/mruby/version.h +25 -6
  227. data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +198 -72
  228. data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +71 -78
  229. data/ext/enterprise_script_service/mruby/lib/mruby/build/load_gems.rb +12 -10
  230. data/ext/enterprise_script_service/mruby/lib/{mruby-core-ext.rb → mruby/core_ext.rb} +10 -3
  231. data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +84 -32
  232. data/ext/enterprise_script_service/mruby/lib/mruby/lockfile.rb +1 -1
  233. data/ext/enterprise_script_service/mruby/lib/mruby/presym.rb +132 -0
  234. data/ext/enterprise_script_service/mruby/lib/mruby/source.rb +3 -1
  235. data/ext/enterprise_script_service/mruby/mrbgems/default-no-fpu.gembox +3 -0
  236. data/ext/enterprise_script_service/mruby/mrbgems/default-no-stdio.gembox +4 -0
  237. data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +9 -81
  238. data/ext/enterprise_script_service/mruby/mrbgems/full-core.gembox +1 -4
  239. data/ext/enterprise_script_service/mruby/mrbgems/math.gembox +10 -0
  240. data/ext/enterprise_script_service/mruby/mrbgems/metaprog.gembox +15 -0
  241. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +1 -32
  242. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +10 -12
  243. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +0 -13
  244. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +30 -18
  245. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mruby-config +18 -8
  246. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/mrdb.rb +3 -6
  247. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +10 -10
  248. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +14 -9
  249. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +3 -2
  250. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +4 -4
  251. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +2 -6
  252. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +6 -2
  253. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +23 -5
  254. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +11 -2
  255. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +46 -35
  256. data/ext/enterprise_script_service/mruby/mrbgems/{mruby-compiler → mruby-bin-mrbc}/bintest/mrbc.rb +0 -0
  257. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +3 -4
  258. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +41 -28
  259. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +25 -4
  260. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -2
  261. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +26 -6
  262. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +1 -1
  263. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +6 -2
  264. data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrbgem.rake +5 -0
  265. data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrblib/catch.rb +27 -0
  266. data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +7 -1
  267. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +495 -436
  268. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/keywords +5 -0
  269. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/lex.def +49 -44
  270. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +637 -220
  271. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +13734 -0
  272. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +20 -23
  273. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +2 -2
  274. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +9 -9
  275. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/test/complex.rb +4 -4
  276. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +1 -0
  277. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +2 -2
  278. data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/mrbgem.rake +2 -2
  279. data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/src/exception.c +3 -3
  280. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +19 -238
  281. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +21 -0
  282. data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +19 -15
  283. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +31 -5
  284. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/test/hash.rb +7 -0
  285. data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +5 -6
  286. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/README.md +18 -16
  287. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +39 -7
  288. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +2 -8
  289. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file.rb +9 -4
  290. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +0 -16
  291. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +9 -14
  292. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +107 -59
  293. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +22 -38
  294. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +417 -203
  295. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +20 -12
  296. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +33 -2
  297. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +58 -50
  298. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +13 -14
  299. data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/src/math.c +13 -12
  300. data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/test/math.rb +5 -4
  301. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +56 -73
  302. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +13 -4
  303. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/README.md +4 -3
  304. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +80 -78
  305. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/test/method.rb +4 -4
  306. data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +14 -13
  307. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +8 -16
  308. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +18 -13
  309. data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/mrbgem.rake +10 -0
  310. data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/src/memsize.c +231 -0
  311. data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/test/memsize.rb +63 -0
  312. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/README.md +15 -18
  313. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +120 -67
  314. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -30
  315. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +65 -26
  316. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +34 -21
  317. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/test/proc.c +1 -1
  318. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/random.c +98 -43
  319. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/test/random.rb +2 -2
  320. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +39 -6
  321. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +21 -43
  322. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/test/range.rb +27 -3
  323. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +12 -20
  324. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +216 -38
  325. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/test/rational.rb +6 -6
  326. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/README.md +6 -4
  327. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +5 -5
  328. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/README.md +3 -2
  329. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrbgem.rake +1 -1
  330. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/socket.c +47 -45
  331. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/sockettest.c +3 -2
  332. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +161 -93
  333. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +9 -25
  334. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +23 -1
  335. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +17 -14
  336. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/mrblib/struct.rb +1 -1
  337. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +23 -36
  338. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +7 -6
  339. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +1 -1
  340. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/README.md +0 -1
  341. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/driver.c +5 -5
  342. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +17 -44
  343. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/vformat.c +4 -4
  344. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +37 -41
  345. data/ext/enterprise_script_service/mruby/mrbgems/stdlib-ext.gembox +18 -0
  346. data/ext/enterprise_script_service/mruby/mrbgems/stdlib-io.gembox +12 -0
  347. data/ext/enterprise_script_service/mruby/mrbgems/stdlib.gembox +54 -0
  348. data/ext/enterprise_script_service/mruby/mrblib/00class.rb +10 -0
  349. data/ext/enterprise_script_service/mruby/mrblib/10error.rb +4 -0
  350. data/ext/enterprise_script_service/mruby/mrblib/array.rb +17 -9
  351. data/ext/enterprise_script_service/mruby/mrblib/enum.rb +1 -1
  352. data/ext/enterprise_script_service/mruby/mrblib/hash.rb +3 -23
  353. data/ext/enterprise_script_service/mruby/mrblib/init_mrblib.c +0 -11
  354. data/ext/enterprise_script_service/mruby/mrblib/numeric.rb +36 -11
  355. data/ext/enterprise_script_service/mruby/mrblib/range.rb +25 -3
  356. data/ext/enterprise_script_service/mruby/oss-fuzz/mruby_proto_fuzzer.cpp +2 -2
  357. data/ext/enterprise_script_service/mruby/oss-fuzz/proto_to_ruby.h +1 -1
  358. data/ext/enterprise_script_service/mruby/src/array.c +67 -90
  359. data/ext/enterprise_script_service/mruby/src/backtrace.c +18 -19
  360. data/ext/enterprise_script_service/mruby/src/class.c +819 -211
  361. data/ext/enterprise_script_service/mruby/src/codedump.c +226 -197
  362. data/ext/enterprise_script_service/mruby/src/debug.c +14 -11
  363. data/ext/enterprise_script_service/mruby/src/dump.c +470 -207
  364. data/ext/enterprise_script_service/mruby/src/enum.c +1 -1
  365. data/ext/enterprise_script_service/mruby/src/error.c +94 -20
  366. data/ext/enterprise_script_service/mruby/src/etc.c +56 -39
  367. data/ext/enterprise_script_service/mruby/src/fmt_fp.c +103 -27
  368. data/ext/enterprise_script_service/mruby/src/gc.c +86 -349
  369. data/ext/enterprise_script_service/mruby/src/hash.c +1058 -723
  370. data/ext/enterprise_script_service/mruby/src/kernel.c +78 -226
  371. data/ext/enterprise_script_service/mruby/src/load.c +215 -159
  372. data/ext/enterprise_script_service/mruby/src/numeric.c +400 -382
  373. data/ext/enterprise_script_service/mruby/src/object.c +115 -90
  374. data/ext/enterprise_script_service/mruby/src/print.c +31 -6
  375. data/ext/enterprise_script_service/mruby/src/proc.c +56 -45
  376. data/ext/enterprise_script_service/mruby/src/range.c +49 -33
  377. data/ext/enterprise_script_service/mruby/src/state.c +58 -42
  378. data/ext/enterprise_script_service/mruby/src/string.c +151 -156
  379. data/ext/enterprise_script_service/mruby/src/symbol.c +132 -66
  380. data/ext/enterprise_script_service/mruby/src/value_array.h +1 -0
  381. data/ext/enterprise_script_service/mruby/src/variable.c +158 -158
  382. data/ext/enterprise_script_service/mruby/src/vm.c +655 -645
  383. data/ext/enterprise_script_service/mruby/tasks/benchmark.rake +6 -6
  384. data/ext/enterprise_script_service/mruby/tasks/bin.rake +23 -0
  385. data/ext/enterprise_script_service/mruby/tasks/core.rake +12 -0
  386. data/ext/enterprise_script_service/mruby/tasks/doc.rake +50 -38
  387. data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +64 -61
  388. data/ext/enterprise_script_service/mruby/tasks/libmruby.rake +10 -1
  389. data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +13 -1
  390. data/ext/enterprise_script_service/mruby/tasks/mrblib.rake +40 -0
  391. data/ext/enterprise_script_service/mruby/tasks/presym.rake +44 -0
  392. data/ext/enterprise_script_service/mruby/tasks/test.rake +68 -0
  393. data/ext/enterprise_script_service/mruby/tasks/toolchains/android.rake +46 -1
  394. data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +8 -7
  395. data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +13 -17
  396. data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +21 -25
  397. data/ext/enterprise_script_service/mruby/test/assert.rb +5 -4
  398. data/ext/enterprise_script_service/mruby/test/bintest.rb +5 -5
  399. data/ext/enterprise_script_service/mruby/test/t/argumenterror.rb +16 -0
  400. data/ext/enterprise_script_service/mruby/test/t/array.rb +7 -3
  401. data/ext/enterprise_script_service/mruby/test/t/bs_literal.rb +1 -1
  402. data/ext/enterprise_script_service/mruby/test/t/ensure.rb +8 -26
  403. data/ext/enterprise_script_service/mruby/test/t/exception.rb +2 -2
  404. data/ext/enterprise_script_service/mruby/test/t/float.rb +18 -8
  405. data/ext/enterprise_script_service/mruby/test/t/hash.rb +903 -281
  406. data/ext/enterprise_script_service/mruby/test/t/integer.rb +10 -38
  407. data/ext/enterprise_script_service/mruby/test/t/kernel.rb +16 -25
  408. data/ext/enterprise_script_service/mruby/test/t/literals.rb +50 -0
  409. data/ext/enterprise_script_service/mruby/test/t/module.rb +2 -2
  410. data/ext/enterprise_script_service/mruby/test/t/numeric.rb +1 -1
  411. data/ext/enterprise_script_service/mruby/test/t/range.rb +83 -1
  412. data/ext/enterprise_script_service/mruby/test/t/string.rb +4 -0
  413. data/ext/enterprise_script_service/mruby/test/t/superclass.rb +10 -10
  414. data/ext/enterprise_script_service/mruby/test/t/syntax.rb +24 -0
  415. data/ext/enterprise_script_service/mruby/test/t/vformat.rb +3 -3
  416. data/ext/enterprise_script_service/mruby_config.rb +2 -5
  417. data/ext/enterprise_script_service/mruby_engine.cpp +1 -1
  418. data/ext/enterprise_script_service/msgpack/.github/depends/boost.sh +56 -0
  419. data/ext/enterprise_script_service/msgpack/.github/workflows/coverage.yml +62 -0
  420. data/ext/enterprise_script_service/msgpack/.github/workflows/gha.yml +304 -0
  421. data/ext/enterprise_script_service/msgpack/CHANGELOG.md +11 -0
  422. data/ext/enterprise_script_service/msgpack/CMakeLists.txt +82 -39
  423. data/ext/enterprise_script_service/msgpack/Files.cmake +22 -12
  424. data/ext/enterprise_script_service/msgpack/QUICKSTART-C.md +26 -29
  425. data/ext/enterprise_script_service/msgpack/README.md +3 -2
  426. data/ext/enterprise_script_service/msgpack/appveyor.yml +6 -2
  427. data/ext/enterprise_script_service/msgpack/ci/build_cmake.sh +3 -1
  428. data/ext/enterprise_script_service/msgpack/cmake/CodeCoverage.cmake +55 -0
  429. data/ext/enterprise_script_service/msgpack/codecov.yml +36 -0
  430. data/ext/enterprise_script_service/msgpack/example/CMakeLists.txt +9 -5
  431. data/ext/enterprise_script_service/msgpack/example/boost/CMakeLists.txt +1 -1
  432. data/ext/enterprise_script_service/msgpack/example/c/CMakeLists.txt +17 -6
  433. data/ext/enterprise_script_service/msgpack/example/c/boundary.c +296 -0
  434. data/ext/enterprise_script_service/msgpack/example/c/jsonconv.c +419 -0
  435. data/ext/enterprise_script_service/msgpack/example/c/simple_c.c +1 -1
  436. data/ext/enterprise_script_service/msgpack/example/cpp03/CMakeLists.txt +3 -3
  437. data/ext/enterprise_script_service/msgpack/example/cpp11/CMakeLists.txt +2 -2
  438. data/ext/enterprise_script_service/msgpack/example/x3/CMakeLists.txt +2 -2
  439. data/ext/enterprise_script_service/msgpack/include/msgpack/pack.h +24 -1
  440. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +5 -4
  441. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp +4 -4
  442. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp +8 -8
  443. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/map.hpp +4 -4
  444. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector.hpp +4 -4
  445. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_char.hpp +8 -8
  446. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +8 -8
  447. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/wstring.hpp +4 -4
  448. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack.hpp +6 -6
  449. data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +2 -2
  450. data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer.h +4 -4
  451. data/ext/enterprise_script_service/msgpack/make_file_list.sh +38 -11
  452. data/ext/enterprise_script_service/msgpack/src/vrefbuffer.c +6 -0
  453. data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +86 -64
  454. data/ext/enterprise_script_service/msgpack/test/array_ref.cpp +4 -0
  455. data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +4 -0
  456. data/ext/enterprise_script_service/msgpack/test/boost_optional.cpp +4 -0
  457. data/ext/enterprise_script_service/msgpack/test/boost_string_ref.cpp +4 -1
  458. data/ext/enterprise_script_service/msgpack/test/boost_string_view.cpp +4 -0
  459. data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +4 -0
  460. data/ext/enterprise_script_service/msgpack/test/buffer.cpp +4 -47
  461. data/ext/enterprise_script_service/msgpack/test/buffer_c.cpp +148 -0
  462. data/ext/enterprise_script_service/msgpack/test/carray.cpp +4 -0
  463. data/ext/enterprise_script_service/msgpack/test/cases.cpp +8 -4
  464. data/ext/enterprise_script_service/msgpack/test/convert.cpp +8 -4
  465. data/ext/enterprise_script_service/msgpack/test/fixint.cpp +4 -0
  466. data/ext/enterprise_script_service/msgpack/test/fixint_c.cpp +4 -0
  467. data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +4 -0
  468. data/ext/enterprise_script_service/msgpack/test/iterator_cpp11.cpp +4 -0
  469. data/ext/enterprise_script_service/msgpack/test/json.cpp +4 -0
  470. data/ext/enterprise_script_service/msgpack/test/limit.cpp +8 -4
  471. data/ext/enterprise_script_service/msgpack/test/msgpack_basic.cpp +4 -0
  472. data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +159 -0
  473. data/ext/enterprise_script_service/msgpack/test/msgpack_container.cpp +4 -0
  474. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +32 -27
  475. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +4 -0
  476. data/ext/enterprise_script_service/msgpack/test/msgpack_stream.cpp +4 -0
  477. data/ext/enterprise_script_service/msgpack/test/msgpack_tuple.cpp +4 -1
  478. data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +4 -0
  479. data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +4 -0
  480. data/ext/enterprise_script_service/msgpack/test/object.cpp +4 -1
  481. data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +12 -8
  482. data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +30 -26
  483. data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +4 -0
  484. data/ext/enterprise_script_service/msgpack/test/raw.cpp +4 -0
  485. data/ext/enterprise_script_service/msgpack/test/reference.cpp +4 -0
  486. data/ext/enterprise_script_service/msgpack/test/reference_cpp11.cpp +4 -0
  487. data/ext/enterprise_script_service/msgpack/test/reference_wrapper_cpp11.cpp +4 -0
  488. data/ext/enterprise_script_service/msgpack/test/shared_ptr_cpp11.cpp +4 -0
  489. data/ext/enterprise_script_service/msgpack/test/size_equal_only.cpp +4 -0
  490. data/ext/enterprise_script_service/msgpack/test/streaming.cpp +8 -4
  491. data/ext/enterprise_script_service/msgpack/test/streaming_c.cpp +4 -0
  492. data/ext/enterprise_script_service/msgpack/test/unique_ptr_cpp11.cpp +4 -0
  493. data/ext/enterprise_script_service/msgpack/test/user_class.cpp +16 -12
  494. data/ext/enterprise_script_service/msgpack/test/version.cpp +4 -0
  495. data/ext/enterprise_script_service/msgpack/test/visitor.cpp +4 -0
  496. data/ext/enterprise_script_service/msgpack/test/zone.cpp +4 -0
  497. data/lib/script_core/engine.rb +24 -5
  498. data/lib/script_core/executable.rb +4 -3
  499. data/lib/script_core/version.rb +1 -1
  500. data/lib/tasks/script_core.rake +3 -1
  501. data/script_core.gemspec +1 -2
  502. data/spec/dummy/app/lib/script_engine.rb +64 -5
  503. data/spec/script_core_spec.rb +13 -0
  504. metadata +123 -61
  505. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64-syscalls.c +0 -559
  506. data/ext/enterprise_script_service/libseccomp/src/arch-arm-syscalls.c +0 -570
  507. data/ext/enterprise_script_service/libseccomp/src/arch-mips-syscalls.c +0 -562
  508. data/ext/enterprise_script_service/libseccomp/src/arch-mips64-syscalls.c +0 -562
  509. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32-syscalls.c +0 -562
  510. data/ext/enterprise_script_service/libseccomp/src/arch-parisc-syscalls.c +0 -542
  511. data/ext/enterprise_script_service/libseccomp/src/arch-ppc-syscalls.c +0 -559
  512. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64-syscalls.c +0 -559
  513. data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +0 -626
  514. data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +0 -626
  515. data/ext/enterprise_script_service/libseccomp/src/arch-x32-syscalls.c +0 -558
  516. data/ext/enterprise_script_service/libseccomp/src/arch-x86-syscalls.c +0 -692
  517. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64-syscalls.c +0 -559
  518. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.tests +0 -32
  519. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.tests +0 -32
  520. data/ext/enterprise_script_service/mruby/TODO +0 -8
  521. data/ext/enterprise_script_service/mruby/benchmark/build_config_boxing.rb +0 -28
  522. data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_arm64-v8a.rb +0 -26
  523. data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_armeabi.rb +0 -26
  524. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/kernel.c +0 -30
  525. data/ext/enterprise_script_service/mruby/mrblib/mrblib.rake +0 -18
  526. data/ext/enterprise_script_service/mruby/src/crc.c +0 -39
  527. data/ext/enterprise_script_service/mruby/src/mruby_core.rake +0 -19
  528. data/ext/enterprise_script_service/mruby/travis_config.rb +0 -54
  529. data/ext/enterprise_script_service/msgpack/.travis.yml +0 -258
@@ -32,8 +32,8 @@
32
32
  end
33
33
 
34
34
  assert("return class of Kernel.rand") do
35
- assert_kind_of(Fixnum, rand(3))
36
- assert_kind_of(Fixnum, rand(1.5))
35
+ assert_kind_of(Integer, rand(3))
36
+ assert_kind_of(Integer, rand(1.5))
37
37
  assert_kind_of(Float, rand)
38
38
  assert_kind_of(Float, rand(0.5))
39
39
  end
@@ -11,6 +11,7 @@ class Range
11
11
  # (10..20).first(3) #=> [10, 11, 12]
12
12
  #
13
13
  def first(*args)
14
+ raise RangeError, "cannot get the first element of beginless range" if self.begin.nil?
14
15
  return self.begin if args.empty?
15
16
 
16
17
  raise ArgumentError, "wrong number of arguments (given #{args.length}, expected 1)" unless args.length == 1
@@ -26,14 +27,42 @@ def first(*args)
26
27
  ary
27
28
  end
28
29
 
30
+ ##
31
+ # call-seq:
32
+ # rng.last -> obj
33
+ # rng.last(n) -> an_array
34
+ #
35
+ # Returns the last object in the range,
36
+ # or an array of the last +n+ elements.
37
+ #
38
+ # Note that with no arguments +last+ will return the object that defines
39
+ # the end of the range even if #exclude_end? is +true+.
40
+ #
41
+ # (10..20).last #=> 20
42
+ # (10...20).last #=> 20
43
+ # (10..20).last(3) #=> [18, 19, 20]
44
+ # (10...20).last(3) #=> [17, 18, 19]
45
+ def last(*args)
46
+ raise RangeError, "cannot get the last element of endless range" if self.end.nil?
47
+ return self.end if args.empty?
48
+
49
+ raise ArgumentError, "wrong number of arguments (given #{args.length}, expected 1)" unless args.length == 1
50
+ nv = args[0]
51
+ n = nv.__to_int
52
+ raise ArgumentError, "negative array size (or size too big)" unless 0 <= n
53
+ return self.to_a.last(nv)
54
+ end
55
+
29
56
  def max(&block)
30
- val = self.first
31
- last = self.last
57
+ val = self.begin
58
+ last = self.end
32
59
  return super if block
33
60
 
61
+ raise RangeError, "cannot get the maximum of endless range" if last.nil?
62
+
34
63
  # fast path for numerics
35
64
  if val.kind_of?(Numeric) && last.kind_of?(Numeric)
36
- raise TypeError if exclude_end? && !last.kind_of?(Fixnum)
65
+ raise TypeError if exclude_end? && !last.kind_of?(Integer)
37
66
  return nil if val > last
38
67
  return nil if val == last && exclude_end?
39
68
 
@@ -47,9 +76,13 @@ def max(&block)
47
76
  end
48
77
 
49
78
  def min(&block)
50
- val = self.first
51
- last = self.last
52
- return super if block
79
+ val = self.begin
80
+ last = self.end
81
+ if block
82
+ raise RangeError, "cannot get the minimum of endless range with custom comparison method" if last.nil?
83
+ return super
84
+ end
85
+ return val if last.nil?
53
86
 
54
87
  # fast path for numerics
55
88
  if val.kind_of?(Numeric) && last.kind_of?(Numeric)
@@ -34,16 +34,17 @@ r_lt(mrb_state *mrb, mrb_value a, mrb_value b)
34
34
  static mrb_value
35
35
  range_cover(mrb_state *mrb, mrb_value range)
36
36
  {
37
- mrb_value val;
38
37
  struct RRange *r = mrb_range_ptr(mrb, range);
38
+ mrb_value val = mrb_get_arg1(mrb);
39
39
  mrb_value beg, end;
40
40
 
41
- mrb_get_args(mrb, "o", &val);
42
-
43
41
  beg = RANGE_BEG(r);
44
42
  end = RANGE_END(r);
45
43
 
46
44
  if (r_le(mrb, beg, val)) {
45
+ if (mrb_nil_p(end)) {
46
+ return mrb_true_value();
47
+ }
47
48
  if (RANGE_EXCL(r)) {
48
49
  if (r_lt(mrb, val, end))
49
50
  return mrb_true_value();
@@ -57,36 +58,6 @@ range_cover(mrb_state *mrb, mrb_value range)
57
58
  return mrb_false_value();
58
59
  }
59
60
 
60
- /*
61
- * call-seq:
62
- * rng.last -> obj
63
- * rng.last(n) -> an_array
64
- *
65
- * Returns the last object in the range,
66
- * or an array of the last +n+ elements.
67
- *
68
- * Note that with no arguments +last+ will return the object that defines
69
- * the end of the range even if #exclude_end? is +true+.
70
- *
71
- * (10..20).last #=> 20
72
- * (10...20).last #=> 20
73
- * (10..20).last(3) #=> [18, 19, 20]
74
- * (10...20).last(3) #=> [17, 18, 19]
75
- */
76
- static mrb_value
77
- range_last(mrb_state *mrb, mrb_value range)
78
- {
79
- mrb_value num;
80
- mrb_value array;
81
-
82
- if (mrb_get_args(mrb, "|o", &num) == 0) {
83
- return mrb_range_end(mrb, range);
84
- }
85
-
86
- array = mrb_funcall(mrb, range, "to_a", 0);
87
- return mrb_funcall(mrb, array, "last", 1, mrb_to_int(mrb, num));
88
- }
89
-
90
61
  /*
91
62
  * call-seq:
92
63
  * rng.size -> num
@@ -98,7 +69,7 @@ range_last(mrb_state *mrb, mrb_value range)
98
69
  * ('a'..'z').size #=> nil
99
70
  */
100
71
 
101
- #ifndef MRB_WITHOUT_FLOAT
72
+ #ifndef MRB_NO_FLOAT
102
73
  static mrb_value
103
74
  range_size(mrb_state *mrb, mrb_value range)
104
75
  {
@@ -110,9 +81,13 @@ range_size(mrb_state *mrb, mrb_value range)
110
81
 
111
82
  beg = RANGE_BEG(r);
112
83
  end = RANGE_END(r);
84
+ if ((mrb_fixnum_p(beg) || mrb_float_p(beg)) && mrb_nil_p(end)) {
85
+ return mrb_float_value(mrb, INFINITY);
86
+ }
87
+
113
88
  excl = RANGE_EXCL(r);
114
- if (mrb_fixnum_p(beg)) {
115
- beg_f = (mrb_float)mrb_fixnum(beg);
89
+ if (mrb_integer_p(beg)) {
90
+ beg_f = (mrb_float)mrb_integer(beg);
116
91
  }
117
92
  else if (mrb_float_p(beg)) {
118
93
  beg_f = mrb_float(beg);
@@ -120,8 +95,8 @@ range_size(mrb_state *mrb, mrb_value range)
120
95
  else {
121
96
  num_p = FALSE;
122
97
  }
123
- if (mrb_fixnum_p(end)) {
124
- end_f = (mrb_float)mrb_fixnum(end);
98
+ if (mrb_integer_p(end)) {
99
+ end_f = (mrb_float)mrb_integer(end);
125
100
  }
126
101
  else if (mrb_float_p(end)) {
127
102
  end_f = mrb_float(end);
@@ -161,18 +136,22 @@ range_size(mrb_state *mrb, mrb_value range)
161
136
 
162
137
  beg = RANGE_BEG(r);
163
138
  end = RANGE_END(r);
139
+ if (mrb_fixnum_p(beg) && mrb_nil_p(end)) {
140
+ return mrb_nil_value();
141
+ }
142
+
164
143
  excl = RANGE_EXCL(r) ? 0 : 1;
165
144
 
166
- if (mrb_fixnum_p(beg) && mrb_fixnum_p(end)) {
167
- mrb_int a = mrb_fixnum(beg);
168
- mrb_int b = mrb_fixnum(end);
145
+ if (mrb_integer_p(beg) && mrb_integer_p(end)) {
146
+ mrb_int a = mrb_integer(beg);
147
+ mrb_int b = mrb_integer(end);
169
148
  mrb_int c = b - a + excl;
170
149
 
171
150
  return mrb_fixnum_value(c);
172
151
  }
173
152
  return mrb_nil_value();
174
153
  }
175
- #endif /* MRB_WITHOUT_FLOAT */
154
+ #endif /* MRB_NO_FLOAT */
176
155
 
177
156
  void
178
157
  mrb_mruby_range_ext_gem_init(mrb_state* mrb)
@@ -180,7 +159,6 @@ mrb_mruby_range_ext_gem_init(mrb_state* mrb)
180
159
  struct RClass * s = mrb_class_get(mrb, "Range");
181
160
 
182
161
  mrb_define_method(mrb, s, "cover?", range_cover, MRB_ARGS_REQ(1));
183
- mrb_define_method(mrb, s, "last", range_last, MRB_ARGS_OPT(1));
184
162
  mrb_define_method(mrb, s, "size", range_size, MRB_ARGS_NONE());
185
163
  }
186
164
 
@@ -5,11 +5,17 @@
5
5
  assert_true ("a".."z").cover?("c")
6
6
  assert_true !("a".."z").cover?("5")
7
7
  assert_true ("a".."z").cover?("cc")
8
+ assert_true ("a"..).cover?("c")
9
+ assert_false ("a"..).cover?("5")
10
+ assert_true ("a"..).cover?("cc")
8
11
  end
9
12
 
10
13
  assert('Range#first') do
11
14
  assert_equal 10, (10..20).first
12
15
  assert_equal [10, 11, 12], (10..20).first(3)
16
+ assert_equal 10, (10..).first
17
+ assert_equal [10, 11, 12], (10..).first(3)
18
+ assert_raise(RangeError) { (..1).first }
13
19
 
14
20
  skip unless Object.const_defined?(:Float)
15
21
  assert_equal [0, 1, 2], (0..Float::INFINITY).first(3)
@@ -18,6 +24,8 @@
18
24
  assert('Range#last') do
19
25
  assert_equal 20, (10..20).last
20
26
  assert_equal 20, (10...20).last
27
+ assert_raise(RangeError) { (10..).last }
28
+ assert_raise(RangeError) { (10...).last }
21
29
  assert_equal [18, 19, 20], (10..20).last(3)
22
30
  assert_equal [17, 18, 19], (10...20).last(3)
23
31
  end
@@ -26,6 +34,9 @@
26
34
  assert_equal 42, (1..42).size
27
35
  assert_equal 41, (1...42).size
28
36
  assert_nil ('a'..'z').size
37
+ assert_nil ('a'..).size
38
+
39
+ assert_nil (1..).size unless Object.const_defined?(:Float)
29
40
 
30
41
  skip unless Object.const_defined?(:Float)
31
42
  assert_equal 6, (1...6.3).size
@@ -33,6 +44,10 @@
33
44
  assert_equal 5, (1.1...6).size
34
45
  assert_equal 15, (1.0..15.9).size
35
46
  assert_equal Float::INFINITY, (0..Float::INFINITY).size
47
+
48
+ assert_equal Float::INFINITY, (1..).size
49
+ assert_equal Float::INFINITY, (1...).size
50
+ assert_equal Float::INFINITY, (1.0..).size
36
51
  end
37
52
 
38
53
  assert('Range#max') do
@@ -50,6 +65,10 @@
50
65
  # returns the endpoint when the endpoint equals the start point and the range is inclusive
51
66
  assert_equal 5, (5..5).max
52
67
 
68
+ # raises RangeError when called on an endless range
69
+ assert_raise(RangeError) { (10..).max }
70
+ assert_raise(RangeError) { (10...).max }
71
+
53
72
  skip unless Object.const_defined?(:Float)
54
73
 
55
74
  # returns the maximum value in the Float range when called with no arguments
@@ -94,26 +113,31 @@
94
113
  # returns the minimum value in the range when called with no arguments
95
114
  assert_equal 1, (1..10).min
96
115
  assert_equal 1, (1...10).min
116
+ assert_equal 1, (1..).min
97
117
 
98
118
  # returns nil when the start point is greater than the endpoint
99
119
  assert_equal nil, (100..10).min
100
120
 
101
121
  # returns nil when the endpoint equals the start point and the range is exclusive
102
- assert_equal nil, (5...5).max
122
+ assert_equal nil, (5...5).min
103
123
 
104
124
  # returns the endpoint when the endpoint equals the start point and the range is inclusive
105
- assert_equal 5, (5..5).max
125
+ assert_equal 5, (5..5).min
106
126
 
107
127
  skip unless Object.const_defined?(:Float)
108
128
 
109
129
  # returns the minimum value in the Float range when called with no arguments
110
130
  assert_equal 303.20, (303.20..908.1111).min
131
+ assert_equal 1, (1.0..).min
111
132
 
112
133
  # returns nil when the start point is greater than the endpoint in a Float range
113
- assert_equal nil, (3003.20..908.1111).max
134
+ assert_equal nil, (3003.20..908.1111).min
114
135
  end
115
136
 
116
137
  assert('Range#min given a block') do
138
+ # raise when called with a block in endless range
139
+ assert_raise(RangeError) { (1..).min{} }
140
+
117
141
  # passes each pair of values in the range to the block
118
142
  acc = []
119
143
  (1..10).min do |a, b|
@@ -47,12 +47,14 @@ def /(rhs)
47
47
  end
48
48
  end
49
49
 
50
+ alias quo /
51
+
50
52
  def <=>(rhs)
51
- if rhs.is_a?(Integral)
53
+ case rhs
54
+ when Integer, Float
52
55
  return numerator <=> rhs if denominator == 1
53
56
  rhs = Rational(rhs)
54
57
  end
55
-
56
58
  case rhs
57
59
  when Rational
58
60
  (numerator * rhs.denominator - denominator * rhs.numerator) <=> 0
@@ -65,14 +67,13 @@ def <=>(rhs)
65
67
 
66
68
  def ==(rhs)
67
69
  return true if self.equal?(rhs)
68
- if rhs.is_a?(Integral) && denominator == 1
69
- return numerator == rhs
70
- end
71
- if rhs.is_a?(Rational)
72
- numerator * rhs.denominator == denominator * rhs.numerator
73
- else
74
- rhs == self
70
+ case rhs
71
+ when Integer, Float
72
+ return numerator == rhs if denominator == 1
73
+ when Rational
74
+ return numerator * rhs.denominator == denominator * rhs.numerator
75
75
  end
76
+ rhs == self
76
77
  end
77
78
  end
78
79
 
@@ -83,16 +84,9 @@ def to_r
83
84
  end
84
85
 
85
86
  module Kernel
86
- def Rational(numerator, denominator = 1)
87
- a = numerator
88
- b = denominator
89
- a, b = b, a % b until b == 0
90
- Rational._new(numerator.div(a), denominator.div(a))
91
- end
92
-
93
87
  [:+, :-, :*, :/, :<=>, :==, :<, :<=, :>, :>=].each do |op|
94
- Fixnum.instance_eval do
95
- original_operator_name = "__original_operator_#{op}_rational"
88
+ original_operator_name = :"__original_operator_#{op}_rational"
89
+ Integer.instance_eval do
96
90
  alias_method original_operator_name, op
97
91
  define_method op do |rhs|
98
92
  if rhs.is_a? Rational
@@ -103,7 +97,6 @@ def Rational(numerator, denominator = 1)
103
97
  end
104
98
  end
105
99
  Float.instance_eval do
106
- original_operator_name = "__original_operator_#{op}_rational"
107
100
  alias_method original_operator_name, op
108
101
  define_method op do |rhs|
109
102
  if rhs.is_a? Rational
@@ -114,4 +107,3 @@ def Rational(numerator, denominator = 1)
114
107
  end if Object.const_defined?(:Float)
115
108
  end
116
109
  end
117
-
@@ -2,6 +2,7 @@
2
2
  #include <mruby/class.h>
3
3
  #include <mruby/string.h>
4
4
  #include <mruby/numeric.h>
5
+ #include <mruby/presym.h>
5
6
 
6
7
  struct mrb_rational {
7
8
  mrb_int numerator;
@@ -60,88 +61,243 @@ static mrb_value
60
61
  rational_numerator(mrb_state *mrb, mrb_value self)
61
62
  {
62
63
  struct mrb_rational *p = rational_ptr(mrb, self);
63
- return mrb_fixnum_value(p->numerator);
64
+ return mrb_int_value(mrb, p->numerator);
64
65
  }
65
66
 
66
67
  static mrb_value
67
68
  rational_denominator(mrb_state *mrb, mrb_value self)
68
69
  {
69
70
  struct mrb_rational *p = rational_ptr(mrb, self);
70
- return mrb_fixnum_value(p->denominator);
71
+ return mrb_int_value(mrb, p->denominator);
72
+ }
73
+
74
+ static void
75
+ rat_overflow(mrb_state *mrb)
76
+ {
77
+ mrb_raise(mrb, E_RANGE_ERROR, "integer overflow in rational");
78
+ }
79
+
80
+ static void
81
+ rat_zerodiv(mrb_state *mrb)
82
+ {
83
+ mrb_raise(mrb, E_ZERODIV_ERROR, "divided by 0 in rational");
71
84
  }
72
85
 
73
86
  static mrb_value
74
87
  rational_new(mrb_state *mrb, mrb_int numerator, mrb_int denominator)
75
88
  {
76
- struct RClass *c = mrb_class_get(mrb, "Rational");
89
+ struct RClass *c = mrb_class_get_id(mrb, MRB_SYM(Rational));
77
90
  struct mrb_rational *p;
78
- struct RBasic *rat = rational_alloc(mrb, c, &p);
91
+ struct RBasic *rat;
92
+
93
+ if (denominator == 0) {
94
+ rat_zerodiv(mrb);
95
+ }
96
+ if (denominator < 0) {
97
+ if (numerator == MRB_INT_MIN || denominator == MRB_INT_MIN) {
98
+ rat_overflow(mrb);
99
+ }
100
+ numerator *= -1;
101
+ denominator *= -1;
102
+ }
103
+ rat = rational_alloc(mrb, c, &p);
79
104
  p->numerator = numerator;
80
105
  p->denominator = denominator;
81
106
  MRB_SET_FROZEN_FLAG(rat);
82
107
  return mrb_obj_value(rat);
83
108
  }
84
109
 
110
+ inline static mrb_int
111
+ i_gcd(mrb_int x, mrb_int y)
112
+ {
113
+ mrb_uint u, v, t;
114
+ int shift;
115
+
116
+ if (x < 0)
117
+ x = -x;
118
+ if (y < 0)
119
+ y = -y;
120
+
121
+ if (x == 0)
122
+ return y;
123
+ if (y == 0)
124
+ return x;
125
+
126
+ u = (mrb_uint)x;
127
+ v = (mrb_uint)y;
128
+ for (shift = 0; ((u | v) & 1) == 0; ++shift) {
129
+ u >>= 1;
130
+ v >>= 1;
131
+ }
132
+
133
+ while ((u & 1) == 0)
134
+ u >>= 1;
135
+
136
+ do {
137
+ while ((v & 1) == 0)
138
+ v >>= 1;
139
+
140
+ if (u > v) {
141
+ t = v;
142
+ v = u;
143
+ u = t;
144
+ }
145
+ v = v - u;
146
+ } while (v != 0);
147
+
148
+ return (mrb_int)(u << shift);
149
+ }
150
+
151
+ static mrb_value
152
+ rational_new_i(mrb_state *mrb, mrb_int n, mrb_int d)
153
+ {
154
+ mrb_int a;
155
+
156
+ if (d == 0) {
157
+ rat_zerodiv(mrb);
158
+ }
159
+ a = i_gcd(n, d);
160
+ if ((n == MRB_INT_MIN || d == MRB_INT_MIN) && a == -1) {
161
+ rat_overflow(mrb);
162
+ }
163
+ return rational_new(mrb, n/a, d/a);
164
+ }
165
+
166
+ #ifndef MRB_NO_FLOAT
167
+ #include <math.h>
168
+
169
+ #if defined(MRB_INT32) || defined(MRB_USE_FLOAT32)
170
+ #define frexp_rat(x,exp) frexpf((float)x, exp)
171
+ #define ldexp_rat(x,exp) ldexpf((float)x, exp)
172
+ #define RAT_MANT_DIG FLT_MANT_DIG
173
+ #define RAT_INT_LIMIT 30
174
+ #define RAT_HUGE_VAL HUGE_VALF
175
+ #else
176
+ #define frexp_rat frexp
177
+ #define ldexp_rat ldexp
178
+ #define RAT_MANT_DIG DBL_MANT_DIG
179
+ #define RAT_INT_LIMIT 62
180
+ #define RAT_HUGE_VAL HUGE_VAL
181
+ #endif
182
+
183
+ static void
184
+ float_decode_internal(mrb_state *mrb, mrb_float f, mrb_float *rf, int *n)
185
+ {
186
+ f = (mrb_float)frexp_rat(f, n);
187
+ if (isinf(f)) rat_overflow(mrb);
188
+ f = (mrb_float)ldexp_rat(f, RAT_MANT_DIG);
189
+ *n -= RAT_MANT_DIG;
190
+ *rf = f;
191
+ }
192
+
193
+ void mrb_check_num_exact(mrb_state *mrb, mrb_float num);
194
+
195
+ static mrb_value
196
+ rational_new_f(mrb_state *mrb, mrb_float f0)
197
+ {
198
+ mrb_float f;
199
+ int n;
200
+
201
+ mrb_check_num_exact(mrb, f0);
202
+ float_decode_internal(mrb, f0, &f, &n);
203
+ #if FLT_RADIX == 2
204
+ if (n == 0)
205
+ return rational_new(mrb, (mrb_int)f, 1);
206
+ if (n > 0) {
207
+ f = ldexp_rat(f, n);
208
+ if (f == RAT_HUGE_VAL || f > (mrb_float)MRB_INT_MAX) {
209
+ rat_overflow(mrb);
210
+ }
211
+ return rational_new(mrb, (mrb_uint)f, 1);
212
+ }
213
+ if (n < -RAT_INT_LIMIT) {
214
+ f = ldexp_rat(f, n+RAT_INT_LIMIT);
215
+ n = RAT_INT_LIMIT;
216
+ }
217
+ else {
218
+ n = -n;
219
+ }
220
+ return rational_new_i(mrb, (mrb_int)f, ((mrb_int)1)<<n);
221
+ #else
222
+ mrb_int pow = 1;
223
+ if (n < 0) {
224
+ n = -n;
225
+ while (n > RAT_INT_LIMIT) {
226
+ f /= 2;
227
+ n--;
228
+ }
229
+ while (n--) {
230
+ pow *= FLT_RADIX;
231
+ }
232
+ return rational_new_i(mrb, f, pow);
233
+ }
234
+ else {
235
+ while (n--) {
236
+ if (MRB_INT_MAX/FLT_RADIX < pow) {
237
+ rat_overflow(mrb);
238
+ }
239
+ pow *= FLT_RADIX;
240
+ }
241
+ return rational_new(mrb, (mrb_int)f*pow, 1);
242
+ }
243
+ #endif
244
+ }
245
+ #endif
246
+
85
247
  static mrb_value
86
248
  rational_s_new(mrb_state *mrb, mrb_value self)
87
249
  {
88
250
  mrb_int numerator, denominator;
89
251
 
90
- #ifdef MRB_WITHOUT_FLOAT
252
+ #ifdef MRB_NO_FLOAT
91
253
  mrb_get_args(mrb, "ii", &numerator, &denominator);
92
254
  #else
93
255
 
94
- #define DROP_PRECISION(cond, num, denom) \
95
- do { \
96
- while (cond) { \
97
- num /= 2; \
98
- denom /= 2; \
99
- } \
100
- } while (0)
101
-
102
- mrb_value numv, denomv;
256
+ mrb_value numv, denomv;
103
257
 
104
258
  mrb_get_args(mrb, "oo", &numv, &denomv);
105
- if (mrb_fixnum_p(numv)) {
106
- numerator = mrb_fixnum(numv);
259
+ if (mrb_integer_p(numv)) {
260
+ numerator = mrb_integer(numv);
107
261
 
108
- if (mrb_fixnum_p(denomv)) {
109
- denominator = mrb_fixnum(denomv);
262
+ if (mrb_integer_p(denomv)) {
263
+ denominator = mrb_integer(denomv);
110
264
  }
111
265
  else {
266
+ mrb_float numf = (mrb_float)numerator;
112
267
  mrb_float denomf = mrb_to_flo(mrb, denomv);
113
268
 
114
- DROP_PRECISION(denomf < MRB_INT_MIN || denomf > MRB_INT_MAX, numerator, denomf);
115
- denominator = denomf;
269
+ return rational_new_f(mrb, numf/denomf);
116
270
  }
117
271
  }
118
272
  else {
119
273
  mrb_float numf = mrb_to_flo(mrb, numv);
274
+ mrb_float denomf;
120
275
 
121
- if (mrb_fixnum_p(denomv)) {
122
- denominator = mrb_fixnum(denomv);
276
+ if (mrb_integer_p(denomv)) {
277
+ denomf = (mrb_float)mrb_integer(denomv);
123
278
  }
124
279
  else {
125
- mrb_float denomf = mrb_to_flo(mrb, denomv);
126
-
127
- DROP_PRECISION(denomf < MRB_INT_MIN || denomf > MRB_INT_MAX, numf, denomf);
128
- denominator = denomf;
280
+ denomf = mrb_to_flo(mrb, denomv);
129
281
  }
130
-
131
- DROP_PRECISION(numf < MRB_INT_MIN || numf > MRB_INT_MAX, numf, denominator);
132
- numerator = numf;
282
+ return rational_new_f(mrb, numf/denomf);
133
283
  }
134
284
  #endif
135
-
136
285
  return rational_new(mrb, numerator, denominator);
137
286
  }
138
287
 
139
- #ifndef MRB_WITHOUT_FLOAT
288
+ #ifndef MRB_NO_FLOAT
140
289
  static mrb_value
141
290
  rational_to_f(mrb_state *mrb, mrb_value self)
142
291
  {
143
292
  struct mrb_rational *p = rational_ptr(mrb, self);
144
- mrb_float f = (mrb_float)p->numerator / (mrb_float)p->denominator;
293
+ mrb_float f;
294
+
295
+ if (p->denominator == 0.0) {
296
+ f = INFINITY;
297
+ }
298
+ else {
299
+ f = (mrb_float)p->numerator / (mrb_float)p->denominator;
300
+ }
145
301
 
146
302
  return mrb_float_value(mrb, f);
147
303
  }
@@ -152,9 +308,9 @@ rational_to_i(mrb_state *mrb, mrb_value self)
152
308
  {
153
309
  struct mrb_rational *p = rational_ptr(mrb, self);
154
310
  if (p->denominator == 0) {
155
- mrb_raise(mrb, mrb_exc_get(mrb, "StandardError"), "divided by 0");
311
+ rat_zerodiv(mrb);
156
312
  }
157
- return mrb_fixnum_value(p->numerator / p->denominator);
313
+ return mrb_int_value(mrb, p->numerator / p->denominator);
158
314
  }
159
315
 
160
316
  static mrb_value
@@ -176,14 +332,35 @@ rational_negative_p(mrb_state *mrb, mrb_value self)
176
332
  static mrb_value
177
333
  fix_to_r(mrb_state *mrb, mrb_value self)
178
334
  {
179
- return rational_new(mrb, mrb_fixnum(self), 1);
335
+ return rational_new(mrb, mrb_integer(self), 1);
336
+ }
337
+
338
+ static mrb_value
339
+ rational_m(mrb_state *mrb, mrb_value self)
340
+ {
341
+ #ifdef MRB_NO_FLOAT
342
+ mrb_int n, d = 1;
343
+ mrb_get_args(mrb, "i|i", &n, &d);
344
+ return rational_new_i(mrb, n, d);
345
+ #else
346
+ mrb_value a, b = mrb_fixnum_value(1);
347
+ mrb_get_args(mrb, "o|o", &a, &b);
348
+ if (mrb_integer_p(a) && mrb_integer_p(b)) {
349
+ return rational_new_i(mrb, mrb_integer(a), mrb_integer(b));
350
+ }
351
+ else {
352
+ mrb_float x = mrb_to_flo(mrb, a);
353
+ mrb_float y = mrb_to_flo(mrb, b);
354
+ return rational_new_f(mrb, x/y);
355
+ }
356
+ #endif
180
357
  }
181
358
 
182
359
  void mrb_mruby_rational_gem_init(mrb_state *mrb)
183
360
  {
184
361
  struct RClass *rat;
185
362
 
186
- rat = mrb_define_class(mrb, "Rational", mrb_class_get(mrb, "Numeric"));
363
+ rat = mrb_define_class_id(mrb, MRB_SYM(Rational), mrb_class_get_id(mrb, MRB_SYM(Numeric)));
187
364
  #ifdef RATIONAL_USE_ISTRUCT
188
365
  MRB_SET_INSTANCE_TT(rat, MRB_TT_ISTRUCT);
189
366
  mrb_assert(sizeof(struct mrb_rational) < ISTRUCT_DATA_SIZE);
@@ -194,13 +371,14 @@ void mrb_mruby_rational_gem_init(mrb_state *mrb)
194
371
  mrb_define_class_method(mrb, rat, "_new", rational_s_new, MRB_ARGS_REQ(2));
195
372
  mrb_define_method(mrb, rat, "numerator", rational_numerator, MRB_ARGS_NONE());
196
373
  mrb_define_method(mrb, rat, "denominator", rational_denominator, MRB_ARGS_NONE());
197
- #ifndef MRB_WITHOUT_FLOAT
374
+ #ifndef MRB_NO_FLOAT
198
375
  mrb_define_method(mrb, rat, "to_f", rational_to_f, MRB_ARGS_NONE());
199
376
  #endif
200
377
  mrb_define_method(mrb, rat, "to_i", rational_to_i, MRB_ARGS_NONE());
201
378
  mrb_define_method(mrb, rat, "to_r", rational_to_r, MRB_ARGS_NONE());
202
379
  mrb_define_method(mrb, rat, "negative?", rational_negative_p, MRB_ARGS_NONE());
203
- mrb_define_method(mrb, mrb->fixnum_class, "to_r", fix_to_r, MRB_ARGS_NONE());
380
+ mrb_define_method(mrb, mrb->integer_class, "to_r", fix_to_r, MRB_ARGS_NONE());
381
+ mrb_define_method(mrb, mrb->kernel_module, "Rational", rational_m, MRB_ARGS_ARG(1,1));
204
382
  }
205
383
 
206
384
  void