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
@@ -4,7 +4,7 @@ module MRuby
4
4
  class Command
5
5
  include Rake::DSL
6
6
  extend Forwardable
7
- def_delegators :@build, :filename, :objfile, :libfile, :exefile, :cygwin_filename
7
+ def_delegators :@build, :filename, :objfile, :libfile, :exefile
8
8
  attr_accessor :build, :command
9
9
 
10
10
  def initialize(build)
@@ -32,39 +32,39 @@ def shellquote(s)
32
32
  end
33
33
  end
34
34
 
35
- NotFoundCommands = {}
36
-
37
35
  private
38
36
  def _run(options, params={})
39
- return sh command + ' ' + ( options % params ) if NotFoundCommands.key? @command
40
- begin
41
- sh build.filename(command) + ' ' + ( options % params )
42
- rescue RuntimeError
43
- NotFoundCommands[@command] = true
44
- _run options, params
45
- end
37
+ sh "#{build.filename(command)} #{options % params}"
46
38
  end
47
39
  end
48
40
 
49
41
  class Command::Compiler < Command
50
- attr_accessor :flags, :include_paths, :defines, :source_exts
42
+ attr_accessor :label, :flags, :include_paths, :defines, :source_exts
51
43
  attr_accessor :compile_options, :option_define, :option_include_path, :out_ext
52
44
  attr_accessor :cxx_compile_flag, :cxx_exception_flag, :cxx_invalid_flags
45
+ attr_writer :preprocess_options
53
46
 
54
- def initialize(build, source_exts=[])
47
+ def initialize(build, source_exts=[], label: "CC")
55
48
  super(build)
56
49
  @command = ENV['CC'] || 'cc'
50
+ @label = label
57
51
  @flags = [ENV['CFLAGS'] || []]
58
52
  @source_exts = source_exts
59
53
  @include_paths = ["#{MRUBY_ROOT}/include"]
60
54
  @defines = %w()
61
- @option_include_path = '-I%s'
62
- @option_define = '-D%s'
63
- @compile_options = '%{flags} -o %{outfile} -c %{infile}'
55
+ @option_include_path = %q[-I"%s"]
56
+ @option_define = %q[-D"%s"]
57
+ @compile_options = %q[%{flags} -o "%{outfile}" -c "%{infile}"]
64
58
  @cxx_invalid_flags = []
59
+ @out_ext = build.exts.object
65
60
  end
66
61
 
67
62
  alias header_search_paths include_paths
63
+
64
+ def preprocess_options
65
+ @preprocess_options ||= @compile_options.sub(/(?:\A|\s)\K-c(?=\s)/, "-E -P")
66
+ end
67
+
68
68
  def search_header_path(name)
69
69
  header_search_paths.find do |v|
70
70
  File.exist? build.filename("#{v}/#{name}").sub(/^"(.*)"$/, '\1')
@@ -79,29 +79,27 @@ def search_header(name)
79
79
  def all_flags(_defines=[], _include_paths=[], _flags=[])
80
80
  define_flags = [defines, _defines].flatten.map{ |d| option_define % d }
81
81
  include_path_flags = [include_paths, _include_paths].flatten.map do |f|
82
- if MRUBY_BUILD_HOST_IS_CYGWIN
83
- option_include_path % cygwin_filename(f)
84
- else
85
- option_include_path % filename(f)
86
- end
82
+ option_include_path % filename(f)
87
83
  end
88
84
  [flags, define_flags, include_path_flags, _flags].flatten.join(' ')
89
85
  end
90
86
 
91
87
  def run(outfile, infile, _defines=[], _include_paths=[], _flags=[])
92
88
  mkdir_p File.dirname(outfile)
93
- _pp "CC", infile.relative_path, outfile.relative_path
94
- if MRUBY_BUILD_HOST_IS_CYGWIN
95
- _run compile_options, { :flags => all_flags(_defines, _include_paths, _flags),
96
- :infile => cygwin_filename(infile), :outfile => cygwin_filename(outfile) }
89
+ flags = all_flags(_defines, _include_paths, _flags)
90
+ if object_ext?(outfile)
91
+ label = @label
92
+ opts = compile_options
97
93
  else
98
- _run compile_options, { :flags => all_flags(_defines, _include_paths, _flags),
99
- :infile => filename(infile), :outfile => filename(outfile) }
94
+ label = "CPP"
95
+ opts = preprocess_options
96
+ flags << " -DMRB_PRESYM_SCANNING"
100
97
  end
98
+ _pp label, infile.relative_path, outfile.relative_path
99
+ _run opts, flags: flags, infile: filename(infile), outfile: filename(outfile)
101
100
  end
102
101
 
103
- def define_rules(build_dir, source_dir='')
104
- @out_ext = build.exts.object
102
+ def define_rules(build_dir, source_dir='', out_ext=build.exts.object)
105
103
  gemrake = File.join(source_dir, "mrbgem.rake")
106
104
  rakedep = File.exist?(gemrake) ? [ gemrake ] : []
107
105
 
@@ -142,18 +140,14 @@ def define_rules(build_dir, source_dir='')
142
140
  #
143
141
  # ==== Without <tt>-MP</tt> compiler flag
144
142
  #
145
- # /build/host/src/array.o: \
146
- # /src/array.c \
147
- # /include/mruby/common.h \
148
- # /include/mruby/value.h \
143
+ # /build/host/src/array.o: /src/array.c \
144
+ # /include/mruby/common.h /include/mruby/value.h \
149
145
  # /src/value_array.h
150
146
  #
151
147
  # ==== With <tt>-MP</tt> compiler flag
152
148
  #
153
- # /build/host/src/array.o: \
154
- # /src/array.c \
155
- # /include/mruby/common.h \
156
- # /include/mruby/value.h \
149
+ # /build/host/src/array.o: /src/array.c \
150
+ # /include/mruby/common.h /include/mruby/value.h \
157
151
  # /src/value_array.h
158
152
  #
159
153
  # /include/mruby/common.h:
@@ -163,14 +157,25 @@ def define_rules(build_dir, source_dir='')
163
157
  # /src/value_array.h:
164
158
  #
165
159
  def get_dependencies(file)
166
- file = file.ext('d') unless File.extname(file) == '.d'
167
- deps = []
168
- if File.exist?(file)
169
- File.foreach(file){|line| deps << $1 if /^ +(.*?)(?: *\\)?$/ =~ line}
170
- deps.uniq!
171
- end
160
+ dep_file = file.ext(".d")
161
+ return [MRUBY_CONFIG] unless object_ext?(file) && File.exist?(dep_file)
162
+
163
+ deps = File.read(dep_file).gsub("\\\n ", "").split("\n").map do |dep_line|
164
+ # dep_line:
165
+ # - "/build/host/src/array.o: /src/array.c /include/mruby/common.h ..."
166
+ # - ""
167
+ # - "/include/mruby/common.h:"
168
+ dep_line.scan(/^\S+:\s+(.+)$/).flatten.map { |s| s.split(' ') }.flatten
169
+ # => ["/src/array.c", "/include/mruby/common.h" , ...]
170
+ # []
171
+ # []
172
+ end.flatten.uniq
172
173
  deps << MRUBY_CONFIG
173
174
  end
175
+
176
+ def object_ext?(path)
177
+ File.extname(path) == build.exts.object
178
+ end
174
179
  end
175
180
 
176
181
  class Command::Linker < Command
@@ -184,18 +189,14 @@ def initialize(build)
184
189
  @flags_before_libraries, @flags_after_libraries = [], []
185
190
  @libraries = []
186
191
  @library_paths = []
187
- @option_library = '-l%s'
188
- @option_library_path = '-L%s'
189
- @link_options = "%{flags} -o %{outfile} %{objs} %{flags_before_libraries} %{libs} %{flags_after_libraries}"
192
+ @option_library = %q[-l"%s"]
193
+ @option_library_path = %q[-L"%s"]
194
+ @link_options = %Q[%{flags} -o "%{outfile}" %{objs} %{flags_before_libraries} %{libs} %{flags_after_libraries}]
190
195
  end
191
196
 
192
197
  def all_flags(_library_paths=[], _flags=[])
193
198
  library_path_flags = [library_paths, _library_paths].flatten.map do |f|
194
- if MRUBY_BUILD_HOST_IS_CYGWIN
195
- option_library_path % cygwin_filename(f)
196
- else
197
- option_library_path % filename(f)
198
- end
199
+ option_library_path % filename(f)
199
200
  end
200
201
  [flags, library_path_flags, _flags].flatten.join(' ')
201
202
  end
@@ -204,24 +205,20 @@ def library_flags(_libraries)
204
205
  [libraries, _libraries].flatten.map{ |d| option_library % d }.join(' ')
205
206
  end
206
207
 
208
+ def run_attrs
209
+ [@libraries, @library_paths, @flags, @flags_before_libraries, @flags_after_libraries]
210
+ end
211
+
207
212
  def run(outfile, objfiles, _libraries=[], _library_paths=[], _flags=[], _flags_before_libraries=[], _flags_after_libraries=[])
208
213
  mkdir_p File.dirname(outfile)
209
214
  library_flags = [libraries, _libraries].flatten.map { |d| option_library % d }
210
215
 
211
216
  _pp "LD", outfile.relative_path
212
- if MRUBY_BUILD_HOST_IS_CYGWIN
213
- _run link_options, { :flags => all_flags(_library_paths, _flags),
214
- :outfile => cygwin_filename(outfile) , :objs => cygwin_filename(objfiles).join(' '),
215
- :flags_before_libraries => [flags_before_libraries, _flags_before_libraries].flatten.join(' '),
216
- :flags_after_libraries => [flags_after_libraries, _flags_after_libraries].flatten.join(' '),
217
- :libs => library_flags.join(' ') }
218
- else
219
- _run link_options, { :flags => all_flags(_library_paths, _flags),
220
- :outfile => filename(outfile) , :objs => filename(objfiles).join(' '),
221
- :flags_before_libraries => [flags_before_libraries, _flags_before_libraries].flatten.join(' '),
222
- :flags_after_libraries => [flags_after_libraries, _flags_after_libraries].flatten.join(' '),
223
- :libs => library_flags.join(' ') }
224
- end
217
+ _run link_options, { :flags => all_flags(_library_paths, _flags),
218
+ :outfile => filename(outfile) , :objs => filename(objfiles).map{|f| %Q["#{f}"]}.join(' '),
219
+ :flags_before_libraries => [flags_before_libraries, _flags_before_libraries].flatten.join(' '),
220
+ :flags_after_libraries => [flags_after_libraries, _flags_after_libraries].flatten.join(' '),
221
+ :libs => library_flags.join(' ') }
225
222
  end
226
223
  end
227
224
 
@@ -231,17 +228,13 @@ class Command::Archiver < Command
231
228
  def initialize(build)
232
229
  super
233
230
  @command = ENV['AR'] || 'ar'
234
- @archive_options = 'rs %{outfile} %{objs}'
231
+ @archive_options = 'rs "%{outfile}" %{objs}'
235
232
  end
236
233
 
237
234
  def run(outfile, objfiles)
238
235
  mkdir_p File.dirname(outfile)
239
236
  _pp "AR", outfile.relative_path
240
- if MRUBY_BUILD_HOST_IS_CYGWIN
241
- _run archive_options, { :outfile => cygwin_filename(outfile), :objs => cygwin_filename(objfiles).join(' ') }
242
- else
243
- _run archive_options, { :outfile => filename(outfile), :objs => filename(objfiles).join(' ') }
244
- end
237
+ _run archive_options, { :outfile => filename(outfile), :objs => filename(objfiles).map{|f| %Q["#{f}"]}.join(' ') }
245
238
  end
246
239
  end
247
240
 
@@ -251,7 +244,7 @@ class Command::Yacc < Command
251
244
  def initialize(build)
252
245
  super
253
246
  @command = 'bison'
254
- @compile_options = '-o %{outfile} %{infile}'
247
+ @compile_options = %q[-o "%{outfile}" "%{infile}"]
255
248
  end
256
249
 
257
250
  def run(outfile, infile)
@@ -267,7 +260,7 @@ class Command::Gperf < Command
267
260
  def initialize(build)
268
261
  super
269
262
  @command = 'gperf'
270
- @compile_options = '-L ANSI-C -C -p -j1 -i 1 -g -o -t -N mrb_reserved_word -k"1,3,$" %{infile} > %{outfile}'
263
+ @compile_options = %q[-L ANSI-C -C -p -j1 -i 1 -g -o -t -N mrb_reserved_word -k"1,3,$" "%{infile}" > "%{outfile}"]
271
264
  end
272
265
 
273
266
  def run(outfile, infile)
@@ -335,21 +328,21 @@ def initialize(build)
335
328
  @compile_options = "-B%{funcname} -o-"
336
329
  end
337
330
 
338
- def run(out, infiles, funcname)
331
+ def run(out, infiles, funcname, cdump = true)
339
332
  @command ||= @build.mrbcfile
340
333
  infiles = [infiles].flatten
341
- infiles.each do |f|
342
- _pp "MRBC", f.relative_path, nil, :indent => 2
334
+ infiles.each_with_index do |f, i|
335
+ _pp i == 0 ? "MRBC" : "", f.relative_path, indent: 2
343
336
  end
344
- cmd = "#{filename @command} #{@compile_options % {:funcname => funcname}} #{filename(infiles).join(' ')}"
337
+ cmd = %Q["#{filename @command}" #{cdump ? "-S" : ""} #{@compile_options % {:funcname => funcname}} #{filename(infiles).map{|f| %Q["#{f}"]}.join(' ')}]
345
338
  puts cmd if Rake.verbose
346
339
  IO.popen(cmd, 'r+') do |io|
347
340
  out.puts io.read
348
341
  end
349
342
  # if mrbc execution fail, drop the file
350
- if $?.exitstatus != 0
351
- File.delete(out.path)
352
- exit(-1)
343
+ unless $?.success?
344
+ rm_f out.path
345
+ fail "Command failed with status (#{$?.exitstatus}): [#{cmd[0,42]}...]"
353
346
  end
354
347
  end
355
348
  end
@@ -15,10 +15,13 @@ def gembox(gemboxfile)
15
15
  def gem(gemdir, &block)
16
16
  if gemdir.is_a?(Hash)
17
17
  gemdir = load_special_path_gem(gemdir)
18
- elsif GemBox.path && gemdir.is_a?(String)
18
+ elsif GemBox.path
19
19
  gemdir = File.expand_path(gemdir, File.dirname(GemBox.path))
20
20
  else
21
21
  caller_dir = File.expand_path(File.dirname(caller(1,1)[0][/^(.*?):\d/,1]))
22
+ if caller_dir == "#{MRUBY_ROOT}/build_config"
23
+ caller_dir = MRUBY_ROOT
24
+ end
22
25
  gemdir = File.expand_path(gemdir, caller_dir)
23
26
  end
24
27
 
@@ -28,18 +31,17 @@ def gem(gemdir, &block)
28
31
  Gem.current = nil
29
32
  load gemrake
30
33
  return nil unless Gem.current
34
+ current = Gem.current
31
35
 
32
- Gem.current.dir = gemdir
33
- Gem.current.build = self.is_a?(MRuby::Build) ? self : MRuby::Build.current
34
- Gem.current.build_config_initializer = block
35
- gems << Gem.current
36
+ current.dir = gemdir
37
+ current.build = self.is_a?(MRuby::Build) ? self : MRuby::Build.current
38
+ current.build_config_initializer = block
39
+ gems << current
36
40
 
37
- cxx_srcs = ['src', 'test', 'tools'].map do |subdir|
38
- Dir.glob("#{Gem.current.dir}/#{subdir}/*.{cpp,cxx,cc}")
39
- end.flatten
41
+ cxx_srcs = Dir.glob("#{current.dir}/{src,test,tools}/*.{cpp,cxx,cc}")
40
42
  enable_cxx_exception unless cxx_srcs.empty?
41
43
 
42
- Gem.current
44
+ current
43
45
  end
44
46
 
45
47
  def load_special_path_gem(params)
@@ -98,7 +100,7 @@ def load_special_path_gem(params)
98
100
  options = [params[:options]] || []
99
101
  options << "--recursive"
100
102
  options << "--branch \"#{branch}\""
101
- options << "--depth 1" unless params[:checksum_hash]
103
+ options << "--depth 1" unless params[:checksum_hash] || lock
102
104
  mkdir_p "#{gem_clone_dir}"
103
105
  git.run_clone gemdir, url, options
104
106
 
@@ -20,10 +20,17 @@ def relative_path
20
20
  end
21
21
  end
22
22
 
23
- def _pp(cmd, src, tgt=nil, options={})
24
- return if Rake.verbose
23
+ def install_D(src, dst)
24
+ _pp "INSTALL", src.relative_path, dst.relative_path
25
+ rm_f dst
26
+ mkdir_p File.dirname(dst)
27
+ cp src, dst
28
+ end
29
+
30
+ def _pp(cmd, src, tgt=nil, indent: nil)
31
+ return if Rake.application.options.silent
25
32
 
26
33
  width = 5
27
- template = options[:indent] ? "%#{width*options[:indent]}s %s %s" : "%-#{width}s %s %s"
34
+ template = indent ? "%#{width * indent}s %s %s" : "%-#{width}s %s %s"
28
35
  puts template % [cmd, src, tgt ? "-> #{tgt}" : nil]
29
36
  end
@@ -7,7 +7,6 @@ module Gem
7
7
  class << self
8
8
  attr_accessor :current
9
9
  end
10
- LinkerConfig = Struct.new(:libraries, :library_paths, :flags, :flags_before_libraries, :flags_after_libraries)
11
10
 
12
11
  class Specification
13
12
  include Rake::DSL
@@ -17,7 +16,6 @@ class Specification
17
16
  attr_accessor :name, :dir, :build
18
17
  alias mruby build
19
18
  attr_accessor :build_config_initializer
20
- attr_accessor :mrblib_dir, :objs_dir
21
19
 
22
20
  attr_accessor :version
23
21
  attr_accessor :description, :summary
@@ -27,8 +25,8 @@ class Specification
27
25
  alias :author= :authors=
28
26
 
29
27
  attr_accessor :rbfiles, :objs
30
- attr_accessor :test_objs, :test_rbfiles, :test_args
31
- attr_accessor :test_preload
28
+ attr_writer :test_objs, :test_rbfiles
29
+ attr_accessor :test_args, :test_preload
32
30
 
33
31
  attr_accessor :bins
34
32
 
@@ -45,37 +43,30 @@ def initialize(name, &block)
45
43
  @name = name
46
44
  @initializer = block
47
45
  @version = "0.0.0"
48
- @mrblib_dir = "mrblib"
49
- @objs_dir = "src"
46
+ @dependencies = []
47
+ @conflicts = []
50
48
  MRuby::Gem.current = self
51
49
  end
52
50
 
53
51
  def setup
54
- return if defined?(@linker) # return if already set up
52
+ return if defined?(@bins) # return if already set up
55
53
 
56
54
  MRuby::Gem.current = self
57
55
  MRuby::Build::COMMANDS.each do |command|
58
56
  instance_variable_set("@#{command}", @build.send(command).clone)
59
57
  end
60
- @linker = LinkerConfig.new([], [], [], [], [])
58
+ @linker.run_attrs.each(&:clear)
61
59
 
62
- @rbfiles = Dir.glob("#{@dir}/#{@mrblib_dir}/**/*.rb").sort
63
- @objs = Dir.glob("#{@dir}/#{@objs_dir}/*.{c,cpp,cxx,cc,m,asm,s,S}").map do |f|
64
- objfile(f.relative_path_from(@dir).to_s.pathmap("#{build_dir}/%X"))
65
- end
60
+ @rbfiles = Dir.glob("#{@dir}/mrblib/**/*.rb").sort
61
+ @objs = srcs_to_objs("src")
66
62
 
67
- @test_rbfiles = Dir.glob("#{dir}/test/**/*.rb").sort
68
- @test_objs = Dir.glob("#{dir}/test/*.{c,cpp,cxx,cc,m,asm,s,S}").map do |f|
69
- objfile(f.relative_path_from(dir).to_s.pathmap("#{build_dir}/%X"))
70
- end
71
- @custom_test_init = !@test_objs.empty?
72
63
  @test_preload = nil # 'test/assert.rb'
73
64
  @test_args = {}
74
65
 
75
66
  @bins = []
67
+ @cdump = true
76
68
 
77
69
  @requirements = []
78
- @dependencies, @conflicts = [], []
79
70
  @export_include_paths = []
80
71
  @export_include_paths << "#{dir}/include" if File.directory? "#{dir}/include"
81
72
 
@@ -97,15 +88,37 @@ def setup
97
88
  end
98
89
 
99
90
  def setup_compilers
100
- compilers.each do |compiler|
101
- compiler.define_rules build_dir, "#{dir}"
91
+ (core? ? [@cc, *(@cxx if build.cxx_exception_enabled?)] : compilers).each do |compiler|
92
+ compiler.define_rules build_dir, @dir, @build.exts.presym_preprocessed if build.presym_enabled?
93
+ compiler.define_rules build_dir, @dir, @build.exts.object
102
94
  compiler.defines << %Q[MRBGEM_#{funcname.upcase}_VERSION=#{version}]
103
- compiler.include_paths << "#{dir}/include" if File.directory? "#{dir}/include"
95
+ compiler.include_paths << "#{@dir}/include" if File.directory? "#{@dir}/include"
104
96
  end
105
97
 
106
98
  define_gem_init_builder if @generate_functions
107
99
  end
108
100
 
101
+ def for_windows?
102
+ if build.kind_of?(MRuby::CrossBuild)
103
+ return %w(x86_64-w64-mingw32 i686-w64-mingw32).include?(build.host_target)
104
+ elsif build.kind_of?(MRuby::Build)
105
+ return ('A'..'Z').to_a.any? { |vol| Dir.exist?("#{vol}:") }
106
+ end
107
+ return false
108
+ end
109
+
110
+ def disable_cdump
111
+ @cdump = false
112
+ end
113
+
114
+ def cdump?
115
+ build.presym_enabled? && @cdump
116
+ end
117
+
118
+ def core?
119
+ @dir.start_with?("#{MRUBY_ROOT}/mrbgems/")
120
+ end
121
+
109
122
  def add_dependency(name, *requirements)
110
123
  default_gem = requirements.last.kind_of?(Hash) ? requirements.pop : nil
111
124
  requirements = ['>= 0.0.0'] if requirements.empty?
@@ -129,6 +142,14 @@ def test_rbireps
129
142
  "#{build_dir}/gem_test.c"
130
143
  end
131
144
 
145
+ def test_objs
146
+ @test_objs ||= srcs_to_objs("test")
147
+ end
148
+
149
+ def test_rbfiles
150
+ @test_rbfiles ||= Dir["#{@dir}/test/**/*.rb"].sort!
151
+ end
152
+
132
153
  def search_package(name, version_query=nil)
133
154
  package_query = name
134
155
  package_query += " #{version_query}" if version_query
@@ -154,8 +175,14 @@ def compilers
154
175
  end
155
176
  end
156
177
 
178
+ def srcs_to_objs(src_dir_from_gem_dir)
179
+ exts = compilers.flat_map{|c| c.source_exts} * ","
180
+ Dir["#{@dir}/#{src_dir_from_gem_dir}/*{#{exts}}"].map do |f|
181
+ objfile(f.relative_path_from(@dir).to_s.pathmap("#{build_dir}/%X"))
182
+ end
183
+ end
184
+
157
185
  def define_gem_init_builder
158
- file objfile("#{build_dir}/gem_init") => [ "#{build_dir}/gem_init.c", File.join(dir, "mrbgem.rake") ]
159
186
  file "#{build_dir}/gem_init.c" => [build.mrbcfile, __FILE__] + [rbfiles].flatten do |t|
160
187
  mkdir_p build_dir
161
188
  generate_gem_init("#{build_dir}/gem_init.c")
@@ -163,22 +190,37 @@ def define_gem_init_builder
163
190
  end
164
191
 
165
192
  def generate_gem_init(fname)
193
+ _pp "GEN", fname.relative_path
166
194
  open(fname, 'w') do |f|
167
195
  print_gem_init_header f
168
- build.mrbc.run f, rbfiles, "gem_mrblib_irep_#{funcname}" unless rbfiles.empty?
196
+ unless rbfiles.empty?
197
+ if cdump?
198
+ build.mrbc.run f, rbfiles, "gem_mrblib_#{funcname}_proc"
199
+ else
200
+ build.mrbc.run f, rbfiles, "gem_mrblib_irep_#{funcname}", false
201
+ end
202
+ end
169
203
  f.puts %Q[void mrb_#{funcname}_gem_init(mrb_state *mrb);]
170
204
  f.puts %Q[void mrb_#{funcname}_gem_final(mrb_state *mrb);]
171
205
  f.puts %Q[]
172
206
  f.puts %Q[void GENERATED_TMP_mrb_#{funcname}_gem_init(mrb_state *mrb) {]
173
207
  f.puts %Q[ int ai = mrb_gc_arena_save(mrb);]
208
+ f.puts %Q[ gem_mrblib_#{funcname}_proc_init_syms(mrb);] if !rbfiles.empty? && cdump?
174
209
  f.puts %Q[ mrb_#{funcname}_gem_init(mrb);] if objs != [objfile("#{build_dir}/gem_init")]
175
210
  unless rbfiles.empty?
176
- f.puts %Q[ mrb_load_irep(mrb, gem_mrblib_irep_#{funcname});]
211
+ if cdump?
212
+ f.puts %Q[ mrb_load_proc(mrb, gem_mrblib_#{funcname}_proc);]
213
+ else
214
+ f.puts %Q[ mrb_load_irep(mrb, gem_mrblib_irep_#{funcname});]
215
+ end
177
216
  f.puts %Q[ if (mrb->exc) {]
178
217
  f.puts %Q[ mrb_print_error(mrb);]
179
218
  f.puts %Q[ mrb_close(mrb);]
180
219
  f.puts %Q[ exit(EXIT_FAILURE);]
181
220
  f.puts %Q[ }]
221
+ f.puts %Q[ struct REnv *e = mrb_vm_ci_env(mrb->c->cibase);]
222
+ f.puts %Q[ mrb_vm_ci_env_set(mrb->c->cibase, NULL);]
223
+ f.puts %Q[ mrb_env_unshare(mrb, e);]
182
224
  end
183
225
  f.puts %Q[ mrb_gc_arena_restore(mrb, ai);]
184
226
  f.puts %Q[}]
@@ -202,9 +244,15 @@ def print_gem_comment(f)
202
244
 
203
245
  def print_gem_init_header(f)
204
246
  print_gem_comment(f)
205
- f.puts %Q[#include <stdlib.h>] unless rbfiles.empty?
206
- f.puts %Q[#include <mruby.h>]
207
- f.puts %Q[#include <mruby/irep.h>] unless rbfiles.empty?
247
+ if rbfiles.empty?
248
+ f.puts %Q[#include <mruby.h>]
249
+ else
250
+ f.puts %Q[#include <stdlib.h>]
251
+ unless build.presym_enabled?
252
+ f.puts %Q[#include <mruby.h>]
253
+ f.puts %Q[#include <mruby/proc.h>]
254
+ end
255
+ end
208
256
  end
209
257
 
210
258
  def print_gem_test_header(f)
@@ -217,12 +265,8 @@ def print_gem_test_header(f)
217
265
  f.puts %Q[#include <mruby/hash.h>] unless test_args.empty?
218
266
  end
219
267
 
220
- def test_dependencies
221
- [@name]
222
- end
223
-
224
268
  def custom_test_init?
225
- @custom_test_init
269
+ !test_objs.empty?
226
270
  end
227
271
 
228
272
  def version_ok?(req_versions)
@@ -314,6 +358,10 @@ def each(&b)
314
358
  @ary.each(&b)
315
359
  end
316
360
 
361
+ def [](name)
362
+ @ary.detect {|g| g.name == name}
363
+ end
364
+
317
365
  def <<(gem)
318
366
  unless @ary.detect {|g| g.dir == gem.dir }
319
367
  @ary << gem
@@ -447,6 +495,10 @@ def import_include_paths(g)
447
495
  end
448
496
  end
449
497
  end
498
+
499
+ def linker_attrs
500
+ map{|g| g.linker.run_attrs}.transpose
501
+ end
450
502
  end # List
451
503
  end # Gem
452
504