script_core 0.2.2 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +41 -45
  3. data/.travis.yml +2 -1
  4. data/Gemfile +3 -3
  5. data/README.md +7 -1
  6. data/bootstrap.sh +2 -2
  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 +106 -0
  138. data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +51 -0
  139. data/ext/enterprise_script_service/mruby/.github/workflows/main.yml +24 -0
  140. data/ext/enterprise_script_service/mruby/.gitignore +3 -0
  141. data/ext/enterprise_script_service/mruby/.travis.yml +6 -9
  142. data/ext/enterprise_script_service/mruby/AUTHORS +1 -0
  143. data/ext/enterprise_script_service/mruby/Doxyfile +1 -1
  144. data/ext/enterprise_script_service/mruby/LICENSE +1 -1
  145. data/ext/enterprise_script_service/mruby/README.md +6 -2
  146. data/ext/enterprise_script_service/mruby/appveyor.yml +9 -12
  147. data/ext/enterprise_script_service/mruby/appveyor_config.rb +9 -0
  148. data/ext/enterprise_script_service/mruby/build_config.rb +6 -6
  149. data/ext/enterprise_script_service/mruby/doc/guides/compile.md +6 -2
  150. data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +1 -1
  151. data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +4 -8
  152. data/ext/enterprise_script_service/mruby/doc/limitations.md +10 -10
  153. data/ext/enterprise_script_service/mruby/doc/opcode.md +108 -95
  154. data/ext/enterprise_script_service/mruby/examples/targets/build_config_ArduinoDue.rb +2 -2
  155. data/ext/enterprise_script_service/mruby/examples/targets/build_config_IntelEdison.rb +2 -2
  156. data/ext/enterprise_script_service/mruby/examples/targets/build_config_IntelGalileo.rb +2 -2
  157. data/ext/enterprise_script_service/mruby/examples/targets/build_config_RX630.rb +2 -2
  158. data/ext/enterprise_script_service/mruby/examples/targets/build_config_chipKITMax32.rb +2 -2
  159. data/ext/enterprise_script_service/mruby/examples/targets/build_config_dreamcast_shelf.rb +108 -0
  160. data/ext/enterprise_script_service/mruby/include/mrbconf.h +10 -7
  161. data/ext/enterprise_script_service/mruby/include/mruby.h +24 -9
  162. data/ext/enterprise_script_service/mruby/include/mruby/array.h +4 -0
  163. data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +11 -2
  164. data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +0 -10
  165. data/ext/enterprise_script_service/mruby/include/mruby/common.h +10 -0
  166. data/ext/enterprise_script_service/mruby/include/mruby/compile.h +11 -3
  167. data/ext/enterprise_script_service/mruby/include/mruby/dump.h +1 -17
  168. data/ext/enterprise_script_service/mruby/include/mruby/irep.h +10 -0
  169. data/ext/enterprise_script_service/mruby/include/mruby/istruct.h +4 -1
  170. data/ext/enterprise_script_service/mruby/include/mruby/khash.h +23 -5
  171. data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +1 -0
  172. data/ext/enterprise_script_service/mruby/include/mruby/ops.h +3 -2
  173. data/ext/enterprise_script_service/mruby/include/mruby/proc.h +13 -8
  174. data/ext/enterprise_script_service/mruby/include/mruby/string.h +2 -1
  175. data/ext/enterprise_script_service/mruby/include/mruby/value.h +32 -41
  176. data/ext/enterprise_script_service/mruby/include/mruby/version.h +4 -4
  177. data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +2 -30
  178. data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +21 -46
  179. data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +9 -0
  180. data/ext/enterprise_script_service/mruby/lib/mruby/source.rb +3 -1
  181. data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +7 -0
  182. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +0 -31
  183. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +5 -8
  184. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +0 -13
  185. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +5 -2
  186. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +0 -1
  187. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +5 -1
  188. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +7 -3
  189. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +24 -21
  190. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +0 -1
  191. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +6 -2
  192. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +6 -2
  193. data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +6 -1
  194. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +76 -48
  195. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +107 -32
  196. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +13153 -0
  197. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +13 -15
  198. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +1 -1
  199. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +1 -2
  200. data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/src/exception.c +3 -3
  201. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +3 -214
  202. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +21 -0
  203. data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +1 -2
  204. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +1 -3
  205. data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +3 -4
  206. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +39 -7
  207. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +2 -8
  208. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +0 -16
  209. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +7 -12
  210. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +77 -32
  211. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +18 -36
  212. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +324 -122
  213. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +18 -12
  214. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +32 -0
  215. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +57 -49
  216. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +6 -8
  217. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +15 -17
  218. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +9 -0
  219. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +4 -5
  220. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +3 -12
  221. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +0 -1
  222. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +113 -10
  223. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +6 -3
  224. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +2 -2
  225. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +1 -3
  226. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +1 -3
  227. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +9 -9
  228. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +1 -1
  229. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrbgem.rake +1 -1
  230. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/sockettest.c +3 -2
  231. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +62 -25
  232. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +5 -23
  233. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +4 -5
  234. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +5 -11
  235. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +1 -1
  236. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +1 -0
  237. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +11 -15
  238. data/ext/enterprise_script_service/mruby/mrblib/00class.rb +10 -0
  239. data/ext/enterprise_script_service/mruby/mrblib/hash.rb +3 -3
  240. data/ext/enterprise_script_service/mruby/src/array.c +25 -11
  241. data/ext/enterprise_script_service/mruby/src/backtrace.c +2 -2
  242. data/ext/enterprise_script_service/mruby/src/class.c +48 -32
  243. data/ext/enterprise_script_service/mruby/src/codedump.c +4 -0
  244. data/ext/enterprise_script_service/mruby/src/debug.c +8 -5
  245. data/ext/enterprise_script_service/mruby/src/dump.c +3 -65
  246. data/ext/enterprise_script_service/mruby/src/error.c +58 -7
  247. data/ext/enterprise_script_service/mruby/src/etc.c +13 -5
  248. data/ext/enterprise_script_service/mruby/src/fmt_fp.c +98 -21
  249. data/ext/enterprise_script_service/mruby/src/gc.c +15 -280
  250. data/ext/enterprise_script_service/mruby/src/hash.c +13 -21
  251. data/ext/enterprise_script_service/mruby/src/kernel.c +6 -9
  252. data/ext/enterprise_script_service/mruby/src/load.c +56 -30
  253. data/ext/enterprise_script_service/mruby/src/numeric.c +50 -70
  254. data/ext/enterprise_script_service/mruby/src/object.c +23 -5
  255. data/ext/enterprise_script_service/mruby/src/print.c +27 -3
  256. data/ext/enterprise_script_service/mruby/src/proc.c +26 -7
  257. data/ext/enterprise_script_service/mruby/src/range.c +4 -12
  258. data/ext/enterprise_script_service/mruby/src/state.c +34 -11
  259. data/ext/enterprise_script_service/mruby/src/string.c +93 -56
  260. data/ext/enterprise_script_service/mruby/src/symbol.c +13 -12
  261. data/ext/enterprise_script_service/mruby/src/vm.c +48 -53
  262. data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +19 -22
  263. data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +1 -1
  264. data/ext/enterprise_script_service/mruby/tasks/toolchains/android.rake +46 -1
  265. data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +3 -3
  266. data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +6 -6
  267. data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +8 -8
  268. data/ext/enterprise_script_service/mruby/test/assert.rb +5 -4
  269. data/ext/enterprise_script_service/mruby/test/t/ensure.rb +8 -26
  270. data/ext/enterprise_script_service/mruby/test/t/exception.rb +2 -2
  271. data/ext/enterprise_script_service/mruby/test/t/kernel.rb +15 -24
  272. data/ext/enterprise_script_service/mruby/travis_config.rb +0 -14
  273. data/ext/enterprise_script_service/msgpack/.github/depends/boost.sh +56 -0
  274. data/ext/enterprise_script_service/msgpack/.github/workflows/coverage.yml +62 -0
  275. data/ext/enterprise_script_service/msgpack/.github/workflows/gha.yml +304 -0
  276. data/ext/enterprise_script_service/msgpack/CHANGELOG.md +11 -0
  277. data/ext/enterprise_script_service/msgpack/CMakeLists.txt +82 -39
  278. data/ext/enterprise_script_service/msgpack/Files.cmake +22 -12
  279. data/ext/enterprise_script_service/msgpack/QUICKSTART-C.md +26 -29
  280. data/ext/enterprise_script_service/msgpack/README.md +3 -2
  281. data/ext/enterprise_script_service/msgpack/appveyor.yml +6 -2
  282. data/ext/enterprise_script_service/msgpack/ci/build_cmake.sh +3 -1
  283. data/ext/enterprise_script_service/msgpack/cmake/CodeCoverage.cmake +55 -0
  284. data/ext/enterprise_script_service/msgpack/codecov.yml +36 -0
  285. data/ext/enterprise_script_service/msgpack/example/CMakeLists.txt +9 -5
  286. data/ext/enterprise_script_service/msgpack/example/boost/CMakeLists.txt +1 -1
  287. data/ext/enterprise_script_service/msgpack/example/c/CMakeLists.txt +17 -6
  288. data/ext/enterprise_script_service/msgpack/example/c/boundary.c +296 -0
  289. data/ext/enterprise_script_service/msgpack/example/c/jsonconv.c +419 -0
  290. data/ext/enterprise_script_service/msgpack/example/c/simple_c.c +1 -1
  291. data/ext/enterprise_script_service/msgpack/example/cpp03/CMakeLists.txt +3 -3
  292. data/ext/enterprise_script_service/msgpack/example/cpp11/CMakeLists.txt +2 -2
  293. data/ext/enterprise_script_service/msgpack/example/x3/CMakeLists.txt +2 -2
  294. data/ext/enterprise_script_service/msgpack/include/msgpack/pack.h +24 -1
  295. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +5 -4
  296. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp +4 -4
  297. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp +8 -8
  298. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/map.hpp +4 -4
  299. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector.hpp +4 -4
  300. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_char.hpp +8 -8
  301. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +8 -8
  302. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/wstring.hpp +4 -4
  303. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack.hpp +6 -6
  304. data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +2 -2
  305. data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer.h +4 -4
  306. data/ext/enterprise_script_service/msgpack/make_file_list.sh +38 -11
  307. data/ext/enterprise_script_service/msgpack/src/vrefbuffer.c +6 -0
  308. data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +86 -64
  309. data/ext/enterprise_script_service/msgpack/test/array_ref.cpp +4 -0
  310. data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +4 -0
  311. data/ext/enterprise_script_service/msgpack/test/boost_optional.cpp +4 -0
  312. data/ext/enterprise_script_service/msgpack/test/boost_string_ref.cpp +4 -1
  313. data/ext/enterprise_script_service/msgpack/test/boost_string_view.cpp +4 -0
  314. data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +4 -0
  315. data/ext/enterprise_script_service/msgpack/test/buffer.cpp +4 -47
  316. data/ext/enterprise_script_service/msgpack/test/buffer_c.cpp +148 -0
  317. data/ext/enterprise_script_service/msgpack/test/carray.cpp +4 -0
  318. data/ext/enterprise_script_service/msgpack/test/cases.cpp +8 -4
  319. data/ext/enterprise_script_service/msgpack/test/convert.cpp +8 -4
  320. data/ext/enterprise_script_service/msgpack/test/fixint.cpp +4 -0
  321. data/ext/enterprise_script_service/msgpack/test/fixint_c.cpp +4 -0
  322. data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +4 -0
  323. data/ext/enterprise_script_service/msgpack/test/iterator_cpp11.cpp +4 -0
  324. data/ext/enterprise_script_service/msgpack/test/json.cpp +4 -0
  325. data/ext/enterprise_script_service/msgpack/test/limit.cpp +8 -4
  326. data/ext/enterprise_script_service/msgpack/test/msgpack_basic.cpp +4 -0
  327. data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +159 -0
  328. data/ext/enterprise_script_service/msgpack/test/msgpack_container.cpp +4 -0
  329. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +32 -27
  330. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +4 -0
  331. data/ext/enterprise_script_service/msgpack/test/msgpack_stream.cpp +4 -0
  332. data/ext/enterprise_script_service/msgpack/test/msgpack_tuple.cpp +4 -1
  333. data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +4 -0
  334. data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +4 -0
  335. data/ext/enterprise_script_service/msgpack/test/object.cpp +4 -1
  336. data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +12 -8
  337. data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +30 -26
  338. data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +4 -0
  339. data/ext/enterprise_script_service/msgpack/test/raw.cpp +4 -0
  340. data/ext/enterprise_script_service/msgpack/test/reference.cpp +4 -0
  341. data/ext/enterprise_script_service/msgpack/test/reference_cpp11.cpp +4 -0
  342. data/ext/enterprise_script_service/msgpack/test/reference_wrapper_cpp11.cpp +4 -0
  343. data/ext/enterprise_script_service/msgpack/test/shared_ptr_cpp11.cpp +4 -0
  344. data/ext/enterprise_script_service/msgpack/test/size_equal_only.cpp +4 -0
  345. data/ext/enterprise_script_service/msgpack/test/streaming.cpp +8 -4
  346. data/ext/enterprise_script_service/msgpack/test/streaming_c.cpp +4 -0
  347. data/ext/enterprise_script_service/msgpack/test/unique_ptr_cpp11.cpp +4 -0
  348. data/ext/enterprise_script_service/msgpack/test/user_class.cpp +16 -12
  349. data/ext/enterprise_script_service/msgpack/test/version.cpp +4 -0
  350. data/ext/enterprise_script_service/msgpack/test/visitor.cpp +4 -0
  351. data/ext/enterprise_script_service/msgpack/test/zone.cpp +4 -0
  352. data/lib/script_core/engine.rb +24 -5
  353. data/lib/script_core/executable.rb +4 -3
  354. data/lib/script_core/result.rb +1 -5
  355. data/lib/script_core/service_channel.rb +1 -0
  356. data/lib/script_core/version.rb +1 -1
  357. data/lib/tasks/script_core.rake +3 -1
  358. data/script_core.gemspec +2 -2
  359. data/spec/dummy/app/lib/script_engine.rb +64 -5
  360. metadata +68 -30
  361. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64-syscalls.c +0 -559
  362. data/ext/enterprise_script_service/libseccomp/src/arch-arm-syscalls.c +0 -570
  363. data/ext/enterprise_script_service/libseccomp/src/arch-mips-syscalls.c +0 -562
  364. data/ext/enterprise_script_service/libseccomp/src/arch-mips64-syscalls.c +0 -562
  365. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32-syscalls.c +0 -562
  366. data/ext/enterprise_script_service/libseccomp/src/arch-parisc-syscalls.c +0 -542
  367. data/ext/enterprise_script_service/libseccomp/src/arch-ppc-syscalls.c +0 -559
  368. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64-syscalls.c +0 -559
  369. data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +0 -626
  370. data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +0 -626
  371. data/ext/enterprise_script_service/libseccomp/src/arch-x32-syscalls.c +0 -558
  372. data/ext/enterprise_script_service/libseccomp/src/arch-x86-syscalls.c +0 -692
  373. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64-syscalls.c +0 -559
  374. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.tests +0 -32
  375. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.tests +0 -32
  376. data/ext/enterprise_script_service/msgpack/.travis.yml +0 -258
@@ -17,10 +17,6 @@
17
17
  MRB_BEGIN_DECL
18
18
 
19
19
  #define DUMP_DEBUG_INFO 1
20
- #define DUMP_ENDIAN_BIG 2
21
- #define DUMP_ENDIAN_LIL 4
22
- #define DUMP_ENDIAN_NAT 6
23
- #define DUMP_ENDIAN_MASK 6
24
20
 
25
21
  int mrb_dump_irep(mrb_state *mrb, mrb_irep *irep, uint8_t flags, uint8_t **bin, size_t *bin_size);
26
22
  #ifndef MRB_DISABLE_STDIO
@@ -52,8 +48,7 @@ MRB_API mrb_irep *mrb_read_irep_buf(mrb_state*, const void*, size_t);
52
48
 
53
49
  /* Rite Binary File header */
54
50
  #define RITE_BINARY_IDENT "RITE"
55
- #define RITE_BINARY_IDENT_LIL "ETIR"
56
- #define RITE_BINARY_FORMAT_VER "0006"
51
+ #define RITE_BINARY_FORMAT_VER "0007"
57
52
  #define RITE_COMPILER_NAME "MATZ"
58
53
  #define RITE_COMPILER_VERSION "0000"
59
54
 
@@ -106,17 +101,6 @@ struct rite_binary_footer {
106
101
  RITE_SECTION_HEADER;
107
102
  };
108
103
 
109
- static inline int
110
- bigendian_p()
111
- {
112
- int i;
113
- char *p;
114
-
115
- i = 1;
116
- p = (char*)&i;
117
- return p[0]?0:1;
118
- }
119
-
120
104
  static inline size_t
121
105
  uint8_to_bin(uint8_t s, uint8_t *bin)
122
106
  {
@@ -49,6 +49,16 @@ typedef struct mrb_irep {
49
49
 
50
50
  MRB_API mrb_irep *mrb_add_irep(mrb_state *mrb);
51
51
 
52
+ /** load mruby bytecode functions
53
+ * Please note! Currently due to interactions with the GC calling these functions will
54
+ * leak one RProc object per function call.
55
+ * To prevent this save the current memory arena before calling and restore the arena
56
+ * right after, like so
57
+ * int ai = mrb_gc_arena_save(mrb);
58
+ * mrb_value status = mrb_load_irep(mrb, buffer);
59
+ * mrb_gc_arena_restore(mrb, ai);
60
+ */
61
+
52
62
  /* @param [const uint8_t*] irep code, expected as a literal */
53
63
  MRB_API mrb_value mrb_load_irep(mrb_state*, const uint8_t*);
54
64
 
@@ -21,7 +21,10 @@ MRB_BEGIN_DECL
21
21
 
22
22
  struct RIStruct {
23
23
  MRB_OBJECT_HEADER;
24
- char inline_data[ISTRUCT_DATA_SIZE];
24
+ union {
25
+ intptr_t inline_alignment[3];
26
+ char inline_data[ISTRUCT_DATA_SIZE];
27
+ };
25
28
  };
26
29
 
27
30
  #define RISTRUCT(obj) ((struct RIStruct*)(mrb_ptr(obj)))
@@ -73,6 +73,7 @@ static const uint8_t __m_either[] = {0x03, 0x0c, 0x30, 0xc0};
73
73
  void kh_clear_##name(mrb_state *mrb, kh_##name##_t *h); \
74
74
  khint_t kh_get_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key); \
75
75
  khint_t kh_put_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key, int *ret); \
76
+ void kh_put_prepare_##name(mrb_state *mrb, kh_##name##_t *h); \
76
77
  void kh_resize_##name(mrb_state *mrb, kh_##name##_t *h, khint_t new_n_buckets); \
77
78
  void kh_del_##name(mrb_state *mrb, kh_##name##_t *h, khint_t x); \
78
79
  kh_##name##_t *kh_copy_##name(mrb_state *mrb, kh_##name##_t *h);
@@ -95,16 +96,25 @@ kh_fill_flags(uint8_t *p, uint8_t c, size_t len)
95
96
  __hash_equal: hash comparation function
96
97
  */
97
98
  #define KHASH_DEFINE(name, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal) \
98
- void kh_alloc_##name(mrb_state *mrb, kh_##name##_t *h) \
99
+ mrb_noreturn void mrb_raise_nomemory(mrb_state *mrb); \
100
+ int kh_alloc_simple_##name(mrb_state *mrb, kh_##name##_t *h) \
99
101
  { \
100
102
  khint_t sz = h->n_buckets; \
101
103
  size_t len = sizeof(khkey_t) + (kh_is_map ? sizeof(khval_t) : 0); \
102
- uint8_t *p = (uint8_t*)mrb_malloc(mrb, sizeof(uint8_t)*sz/4+len*sz); \
104
+ uint8_t *p = (uint8_t*)mrb_malloc_simple(mrb, sizeof(uint8_t)*sz/4+len*sz); \
105
+ if (!p) { return 1; } \
103
106
  h->size = h->n_occupied = 0; \
104
107
  h->keys = (khkey_t *)p; \
105
108
  h->vals = kh_is_map ? (khval_t *)(p+sizeof(khkey_t)*sz) : NULL; \
106
109
  h->ed_flags = p+len*sz; \
107
110
  kh_fill_flags(h->ed_flags, 0xaa, sz/4); \
111
+ return 0; \
112
+ } \
113
+ void kh_alloc_##name(mrb_state *mrb, kh_##name##_t *h) \
114
+ { \
115
+ if (kh_alloc_simple_##name(mrb, h)) { \
116
+ mrb_raise_nomemory(mrb); \
117
+ } \
108
118
  } \
109
119
  kh_##name##_t *kh_init_##name##_size(mrb_state *mrb, khint_t size) { \
110
120
  kh_##name##_t *h = (kh_##name##_t*)mrb_calloc(mrb, 1, sizeof(kh_##name##_t)); \
@@ -112,7 +122,10 @@ kh_fill_flags(uint8_t *p, uint8_t c, size_t len)
112
122
  size = KHASH_MIN_SIZE; \
113
123
  khash_power2(size); \
114
124
  h->n_buckets = size; \
115
- kh_alloc_##name(mrb, h); \
125
+ if (kh_alloc_simple_##name(mrb, h)) { \
126
+ mrb_free(mrb, h); \
127
+ mrb_raise_nomemory(mrb); \
128
+ } \
116
129
  return h; \
117
130
  } \
118
131
  kh_##name##_t *kh_init_##name(mrb_state *mrb) { \
@@ -171,12 +184,16 @@ kh_fill_flags(uint8_t *p, uint8_t c, size_t len)
171
184
  mrb_free(mrb, old_keys); \
172
185
  } \
173
186
  } \
174
- khint_t kh_put_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key, int *ret) \
187
+ void kh_put_prepare_##name(mrb_state *mrb, kh_##name##_t *h) \
175
188
  { \
176
- khint_t k, del_k, step = 0; \
177
189
  if (h->n_occupied >= khash_upper_bound(h)) { \
178
190
  kh_resize_##name(mrb, h, h->n_buckets*2); \
179
191
  } \
192
+ } \
193
+ khint_t kh_put_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key, int *ret) \
194
+ { \
195
+ khint_t k, del_k, step = 0; \
196
+ kh_put_prepare_##name(mrb, h); \
180
197
  k = __hash_func(mrb,key) & khash_mask(h); \
181
198
  del_k = kh_end(h); \
182
199
  while (!__ac_isempty(h->ed_flags, k)) { \
@@ -239,6 +256,7 @@ kh_fill_flags(uint8_t *p, uint8_t c, size_t len)
239
256
  #define kh_destroy(name, mrb, h) kh_destroy_##name(mrb, h)
240
257
  #define kh_clear(name, mrb, h) kh_clear_##name(mrb, h)
241
258
  #define kh_resize(name, mrb, h, s) kh_resize_##name(mrb, h, s)
259
+ #define kh_put_prepare(name, mrb, h) kh_put_prepare_##name(mrb, h)
242
260
  #define kh_put(name, mrb, h, k) kh_put_##name(mrb, h, k, NULL)
243
261
  #define kh_put2(name, mrb, h, k, r) kh_put_##name(mrb, h, k, r)
244
262
  #define kh_get(name, mrb, h, k) kh_get_##name(mrb, h, k)
@@ -37,6 +37,7 @@ MRB_API mrb_value mrb_fixnum_to_str(mrb_state *mrb, mrb_value x, mrb_int base);
37
37
  /* ArgumentError if format string doesn't match /%(\.[0-9]+)?[aAeEfFgG]/ */
38
38
  #ifndef MRB_WITHOUT_FLOAT
39
39
  MRB_API mrb_value mrb_float_to_str(mrb_state *mrb, mrb_value x, const char *fmt);
40
+ MRB_API int mrb_float_to_cstr(mrb_state *mrb, char *buf, size_t len, const char *fmt, mrb_float f);
40
41
  MRB_API mrb_float mrb_to_flo(mrb_state *mrb, mrb_value x);
41
42
  MRB_API mrb_value mrb_int_value(mrb_state *mrb, mrb_float f);
42
43
  #endif
@@ -92,8 +92,8 @@ OPCODE(APOST, BBB) /* *R(a),R(a+1)..R(a+c) = R(a)[b..] */
92
92
  OPCODE(INTERN, B) /* R(a) = intern(R(a)) */
93
93
  OPCODE(STRING, BB) /* R(a) = str_dup(Lit(b)) */
94
94
  OPCODE(STRCAT, B) /* str_cat(R(a),R(a+1)) */
95
- OPCODE(HASH, BB) /* R(a) = hash_new(R(a),R(a+1)..R(a+b)) */
96
- OPCODE(HASHADD, BB) /* R(a) = hash_push(R(a),R(a+1)..R(a+b)) */
95
+ OPCODE(HASH, BB) /* R(a) = hash_new(R(a),R(a+1)..R(a+b*2-1)) */
96
+ OPCODE(HASHADD, BB) /* R(a) = hash_push(R(a),R(a+1)..R(a+b*2)) */
97
97
  OPCODE(HASHCAT, B) /* R(a) = hash_cat(R(a),R(a+1)) */
98
98
  OPCODE(LAMBDA, BB) /* R(a) = lambda(SEQ[b],L_LAMBDA) */
99
99
  OPCODE(BLOCK, BB) /* R(a) = lambda(SEQ[b],L_BLOCK) */
@@ -115,3 +115,4 @@ OPCODE(EXT1, Z) /* make 1st operand 16bit */
115
115
  OPCODE(EXT2, Z) /* make 2nd operand 16bit */
116
116
  OPCODE(EXT3, Z) /* make 1st and 2nd operands 16bit */
117
117
  OPCODE(STOP, Z) /* stop VM */
118
+ OPCODE(LOADI16, BS) /* R(a) = mrb_int(b) */
@@ -22,14 +22,19 @@ struct REnv {
22
22
  mrb_sym mid;
23
23
  };
24
24
 
25
- /* flags (21bits): 1(shared flag):10(cioff/bidx):10(stack_len) */
26
- #define MRB_ENV_SET_STACK_LEN(e,len) ((e)->flags = (((e)->flags & ~0x3ff)|((unsigned int)(len) & 0x3ff)))
27
- #define MRB_ENV_STACK_LEN(e) ((mrb_int)((e)->flags & 0x3ff))
28
- #define MRB_ENV_STACK_UNSHARED (1<<20)
29
- #define MRB_ENV_UNSHARE_STACK(e) ((e)->flags |= MRB_ENV_STACK_UNSHARED)
30
- #define MRB_ENV_STACK_SHARED_P(e) (((e)->flags & MRB_ENV_STACK_UNSHARED) == 0)
31
- #define MRB_ENV_BIDX(e) (((e)->flags >> 10) & 0x3ff)
32
- #define MRB_ENV_SET_BIDX(e,idx) ((e)->flags = (((e)->flags & ~(0x3ff<<10))|((unsigned int)(idx) & 0x3ff)<<10))
25
+ /* flags (21bits): 1(close):1(touched):1(heap):8(cioff/bidx):8(stack_len) */
26
+ #define MRB_ENV_SET_LEN(e,len) ((e)->flags = (((e)->flags & ~0xff)|((unsigned int)(len) & 0xff)))
27
+ #define MRB_ENV_LEN(e) ((mrb_int)((e)->flags & 0xff))
28
+ #define MRB_ENV_CLOSED (1<<20)
29
+ #define MRB_ENV_TOUCHED (1<<19)
30
+ #define MRB_ENV_HEAPED (1<<18)
31
+ #define MRB_ENV_CLOSE(e) ((e)->flags |= MRB_ENV_CLOSED)
32
+ #define MRB_ENV_TOUCH(e) ((e)->flags |= MRB_ENV_TOUCHED)
33
+ #define MRB_ENV_HEAP(e) ((e)->flags |= MRB_ENV_HEAPED)
34
+ #define MRB_ENV_HEAP_P(e) ((e)->flags & MRB_ENV_HEAPED)
35
+ #define MRB_ENV_ONSTACK_P(e) (((e)->flags & MRB_ENV_CLOSED) == 0)
36
+ #define MRB_ENV_BIDX(e) (((e)->flags >> 8) & 0xff)
37
+ #define MRB_ENV_SET_BIDX(e,idx) ((e)->flags = (((e)->flags & ~(0xff<<8))|((unsigned int)(idx) & 0xff)<<8))
33
38
 
34
39
  void mrb_env_unshare(mrb_state*, struct REnv*);
35
40
 
@@ -465,7 +465,8 @@ mrb_bool mrb_str_beg_len(mrb_int str_len, mrb_int *begp, mrb_int *lenp);
465
465
  mrb_value mrb_str_byte_subseq(mrb_state *mrb, mrb_value str, mrb_int beg, mrb_int len);
466
466
 
467
467
  #ifdef MRB_UTF8_STRING
468
- mrb_int mrb_utf8_len(const char *str, mrb_int byte_len);
468
+ mrb_int mrb_utf8len(const char *str, const char *end);
469
+ mrb_int mrb_utf8_strlen(const char *str, mrb_int byte_len);
469
470
  #endif
470
471
 
471
472
  MRB_END_DECL
@@ -34,10 +34,6 @@ typedef uint32_t mrb_sym;
34
34
  typedef uint8_t mrb_bool;
35
35
  struct mrb_state;
36
36
 
37
- #if defined(MRB_INT16) && defined(MRB_INT64)
38
- # error "You can't define MRB_INT16 and MRB_INT64 at the same time."
39
- #endif
40
-
41
37
  #if defined _MSC_VER && _MSC_VER < 1800
42
38
  # define PRIo64 "llo"
43
39
  # define PRId64 "lld"
@@ -63,14 +59,6 @@ struct mrb_state;
63
59
  # define MRB_PRIo PRIo64
64
60
  # define MRB_PRId PRId64
65
61
  # define MRB_PRIx PRIx64
66
- #elif defined(MRB_INT16)
67
- typedef int16_t mrb_int;
68
- # define MRB_INT_BIT 16
69
- # define MRB_INT_MIN (INT16_MIN>>MRB_FIXNUM_SHIFT)
70
- # define MRB_INT_MAX (INT16_MAX>>MRB_FIXNUM_SHIFT)
71
- # define MRB_PRIo PRIo16
72
- # define MRB_PRId PRId16
73
- # define MRB_PRIx PRIx16
74
62
  #else
75
63
  typedef int32_t mrb_int;
76
64
  # define MRB_INT_BIT 32
@@ -115,32 +103,31 @@ static const unsigned int IEEE754_INFINITY_BITS_SINGLE = 0x7F800000;
115
103
  #endif
116
104
 
117
105
  enum mrb_vtype {
118
- MRB_TT_FALSE = 0, /* 0 */
119
- MRB_TT_TRUE, /* 1 */
120
- MRB_TT_FLOAT, /* 2 */
121
- MRB_TT_FIXNUM, /* 3 */
122
- MRB_TT_SYMBOL, /* 4 */
123
- MRB_TT_UNDEF, /* 5 */
124
- MRB_TT_CPTR, /* 6 */
125
- MRB_TT_FREE, /* 7 */
126
- MRB_TT_OBJECT, /* 8 */
127
- MRB_TT_CLASS, /* 9 */
128
- MRB_TT_MODULE, /* 10 */
129
- MRB_TT_ICLASS, /* 11 */
130
- MRB_TT_SCLASS, /* 12 */
131
- MRB_TT_PROC, /* 13 */
132
- MRB_TT_ARRAY, /* 14 */
133
- MRB_TT_HASH, /* 15 */
134
- MRB_TT_STRING, /* 16 */
135
- MRB_TT_RANGE, /* 17 */
136
- MRB_TT_EXCEPTION, /* 18 */
137
- MRB_TT_FILE, /* 19 */
138
- MRB_TT_ENV, /* 20 */
139
- MRB_TT_DATA, /* 21 */
140
- MRB_TT_FIBER, /* 22 */
141
- MRB_TT_ISTRUCT, /* 23 */
142
- MRB_TT_BREAK, /* 24 */
143
- MRB_TT_MAXDEFINE /* 25 */
106
+ MRB_TT_FALSE = 0,
107
+ MRB_TT_TRUE,
108
+ MRB_TT_FLOAT,
109
+ MRB_TT_FIXNUM,
110
+ MRB_TT_SYMBOL,
111
+ MRB_TT_UNDEF,
112
+ MRB_TT_CPTR,
113
+ MRB_TT_FREE,
114
+ MRB_TT_OBJECT,
115
+ MRB_TT_CLASS,
116
+ MRB_TT_MODULE,
117
+ MRB_TT_ICLASS,
118
+ MRB_TT_SCLASS,
119
+ MRB_TT_PROC,
120
+ MRB_TT_ARRAY,
121
+ MRB_TT_HASH,
122
+ MRB_TT_STRING,
123
+ MRB_TT_RANGE,
124
+ MRB_TT_EXCEPTION,
125
+ MRB_TT_ENV,
126
+ MRB_TT_DATA,
127
+ MRB_TT_FIBER,
128
+ MRB_TT_ISTRUCT,
129
+ MRB_TT_BREAK,
130
+ MRB_TT_MAXDEFINE
144
131
  };
145
132
 
146
133
  #include <mruby/object.h>
@@ -161,6 +148,13 @@ typedef void mrb_value;
161
148
 
162
149
  #endif
163
150
 
151
+ #if defined(MRB_WORD_BOXING) || (defined(MRB_NAN_BOXING) && defined(MRB_64BIT))
152
+ struct RCptr {
153
+ MRB_OBJECT_HEADER;
154
+ void *p;
155
+ };
156
+ #endif
157
+
164
158
  #if defined(MRB_NAN_BOXING)
165
159
  #include "boxing_nan.h"
166
160
  #elif defined(MRB_WORD_BOXING)
@@ -245,9 +239,6 @@ typedef void mrb_value;
245
239
  #ifndef mrb_range_p
246
240
  #define mrb_range_p(o) (mrb_type(o) == MRB_TT_RANGE)
247
241
  #endif
248
- #ifndef mrb_file_p
249
- #define mrb_file_p(o) (mrb_type(o) == MRB_TT_FILE)
250
- #endif
251
242
  #ifndef mrb_env_p
252
243
  #define mrb_env_p(o) (mrb_type(o) == MRB_TT_ENV)
253
244
  #endif
@@ -47,7 +47,7 @@ MRB_BEGIN_DECL
47
47
  /*
48
48
  * Tiny release version number.
49
49
  */
50
- #define MRUBY_RELEASE_TEENY 0
50
+ #define MRUBY_RELEASE_TEENY 2
51
51
 
52
52
  /*
53
53
  * The mruby version.
@@ -62,17 +62,17 @@ MRB_BEGIN_DECL
62
62
  /*
63
63
  * Release year.
64
64
  */
65
- #define MRUBY_RELEASE_YEAR 2019
65
+ #define MRUBY_RELEASE_YEAR 2020
66
66
 
67
67
  /*
68
68
  * Release month.
69
69
  */
70
- #define MRUBY_RELEASE_MONTH 11
70
+ #define MRUBY_RELEASE_MONTH 8
71
71
 
72
72
  /*
73
73
  * Release day.
74
74
  */
75
- #define MRUBY_RELEASE_DAY 19
75
+ #define MRUBY_RELEASE_DAY 6
76
76
 
77
77
  /*
78
78
  * Release date as a string.
@@ -276,14 +276,6 @@ def filename(name)
276
276
  end
277
277
  end
278
278
 
279
- def cygwin_filename(name)
280
- if name.is_a?(Array)
281
- name.flatten.map { |n| cygwin_filename(n) }
282
- else
283
- '"%s"' % `cygpath -w "#{filename(name)}"`.strip
284
- end
285
- end
286
-
287
279
  def exefile(name)
288
280
  if name.is_a?(Array)
289
281
  name.flatten.map { |n| exefile(n) }
@@ -344,7 +336,8 @@ def print_build_summary
344
336
  puts " Binaries: #{@bins.join(', ')}" unless @bins.empty?
345
337
  unless @gems.empty?
346
338
  puts " Included Gems:"
347
- @gems.map do |gem|
339
+ gems = @gems.sort_by { |gem| gem.name }
340
+ gems.each do |gem|
348
341
  gem_version = " - #{gem.version}" if gem.version != '0.0.0'
349
342
  gem_summary = " - #{gem.summary}" if gem.summary
350
343
  puts " #{gem.name}#{gem_version}#{gem_summary}"
@@ -395,26 +388,5 @@ def run_test
395
388
  @test_runner.run(mrbtest)
396
389
  end
397
390
  end
398
-
399
- def big_endian
400
- if @endian
401
- puts "Endian has already specified as #{@endian}."
402
- return
403
- end
404
- @endian = :big
405
- @mrbc.compile_options += ' -E'
406
- compilers.each do |c|
407
- c.defines += %w(MRB_ENDIAN_BIG)
408
- end
409
- end
410
-
411
- def little_endian
412
- if @endian
413
- puts "Endian has already specified as #{@endian}."
414
- return
415
- end
416
- @endian = :little
417
- @mrbc.compile_options += ' -e'
418
- end
419
391
  end # CrossBuild
420
392
  end # MRuby
@@ -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)
@@ -58,9 +58,9 @@ def initialize(build, source_exts=[])
58
58
  @source_exts = source_exts
59
59
  @include_paths = ["#{MRUBY_ROOT}/include"]
60
60
  @defines = %w()
61
- @option_include_path = '-I%s'
62
- @option_define = '-D%s'
63
- @compile_options = '%{flags} -o %{outfile} -c %{infile}'
61
+ @option_include_path = %q[-I"%s"]
62
+ @option_define = %q[-D"%s"]
63
+ @compile_options = %q[%{flags} -o "%{outfile}" -c "%{infile}"]
64
64
  @cxx_invalid_flags = []
65
65
  end
66
66
 
@@ -79,11 +79,7 @@ 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
@@ -91,13 +87,8 @@ def all_flags(_defines=[], _include_paths=[], _flags=[])
91
87
  def run(outfile, infile, _defines=[], _include_paths=[], _flags=[])
92
88
  mkdir_p File.dirname(outfile)
93
89
  _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) }
97
- else
98
- _run compile_options, { :flags => all_flags(_defines, _include_paths, _flags),
99
- :infile => filename(infile), :outfile => filename(outfile) }
100
- end
90
+ _run compile_options, { :flags => all_flags(_defines, _include_paths, _flags),
91
+ :infile => filename(infile), :outfile => filename(outfile) }
101
92
  end
102
93
 
103
94
  def define_rules(build_dir, source_dir='')
@@ -184,18 +175,14 @@ def initialize(build)
184
175
  @flags_before_libraries, @flags_after_libraries = [], []
185
176
  @libraries = []
186
177
  @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}"
178
+ @option_library = %q[-l"%s"]
179
+ @option_library_path = %q[-L"%s"]
180
+ @link_options = %Q[%{flags} -o "%{outfile}" %{objs} %{flags_before_libraries} %{libs} %{flags_after_libraries}]
190
181
  end
191
182
 
192
183
  def all_flags(_library_paths=[], _flags=[])
193
184
  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
185
+ option_library_path % filename(f)
199
186
  end
200
187
  [flags, library_path_flags, _flags].flatten.join(' ')
201
188
  end
@@ -209,19 +196,11 @@ def run(outfile, objfiles, _libraries=[], _library_paths=[], _flags=[], _flags_b
209
196
  library_flags = [libraries, _libraries].flatten.map { |d| option_library % d }
210
197
 
211
198
  _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
199
+ _run link_options, { :flags => all_flags(_library_paths, _flags),
200
+ :outfile => filename(outfile) , :objs => filename(objfiles).map{|f| %Q["#{f}"]}.join(' '),
201
+ :flags_before_libraries => [flags_before_libraries, _flags_before_libraries].flatten.join(' '),
202
+ :flags_after_libraries => [flags_after_libraries, _flags_after_libraries].flatten.join(' '),
203
+ :libs => library_flags.join(' ') }
225
204
  end
226
205
  end
227
206
 
@@ -231,17 +210,13 @@ class Command::Archiver < Command
231
210
  def initialize(build)
232
211
  super
233
212
  @command = ENV['AR'] || 'ar'
234
- @archive_options = 'rs %{outfile} %{objs}'
213
+ @archive_options = 'rs "%{outfile}" %{objs}'
235
214
  end
236
215
 
237
216
  def run(outfile, objfiles)
238
217
  mkdir_p File.dirname(outfile)
239
218
  _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
219
+ _run archive_options, { :outfile => filename(outfile), :objs => filename(objfiles).map{|f| %Q["#{f}"]}.join(' ') }
245
220
  end
246
221
  end
247
222
 
@@ -251,7 +226,7 @@ class Command::Yacc < Command
251
226
  def initialize(build)
252
227
  super
253
228
  @command = 'bison'
254
- @compile_options = '-o %{outfile} %{infile}'
229
+ @compile_options = %q[-o "%{outfile}" "%{infile}"]
255
230
  end
256
231
 
257
232
  def run(outfile, infile)
@@ -267,7 +242,7 @@ class Command::Gperf < Command
267
242
  def initialize(build)
268
243
  super
269
244
  @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}'
245
+ @compile_options = %q[-L ANSI-C -C -p -j1 -i 1 -g -o -t -N mrb_reserved_word -k"1,3,$" "%{infile}" > "%{outfile}"]
271
246
  end
272
247
 
273
248
  def run(outfile, infile)
@@ -341,7 +316,7 @@ def run(out, infiles, funcname)
341
316
  infiles.each do |f|
342
317
  _pp "MRBC", f.relative_path, nil, :indent => 2
343
318
  end
344
- cmd = "#{filename @command} #{@compile_options % {:funcname => funcname}} #{filename(infiles).join(' ')}"
319
+ cmd = %Q["#{filename @command}" #{@compile_options % {:funcname => funcname}} #{filename(infiles).map{|f| %Q["#{f}"]}.join(' ')}]
345
320
  puts cmd if Rake.verbose
346
321
  IO.popen(cmd, 'r+') do |io|
347
322
  out.puts io.read