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
@@ -42,7 +42,7 @@
42
42
  cc.flags = %w(-g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500
43
43
  -Dprintf=iprintf -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=156 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM
44
44
  -D__SAM3X8E__ -mthumb -DUSB_PID=0x003e -DUSB_VID=0x2341 -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due")
45
- cc.compile_options = "%{flags} -o %{outfile} -c %{infile}"
45
+ cc.compile_options = %Q[%{flags} -o "%{outfile}" -c "%{infile}"]
46
46
 
47
47
  #configuration for low memory environment
48
48
  cc.defines << %w(MRB_HEAP_PAGE_SIZE=64)
@@ -64,7 +64,7 @@
64
64
 
65
65
  conf.archiver do |archiver|
66
66
  archiver.command = "#{BIN_PATH}/arm-none-eabi-ar"
67
- archiver.archive_options = 'rcs %{outfile} %{objs}'
67
+ archiver.archive_options = 'rcs "%{outfile}" %{objs}'
68
68
  end
69
69
 
70
70
  #no executables
@@ -32,7 +32,7 @@
32
32
  cc.flags = %w(-m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -mstackrealign -fno-omit-frame-pointer)
33
33
  cc.flags << %w(-O2 -pipe -g -feliminate-unused-debug-types)
34
34
  cc.flags << "--sysroot=#{POKY_EDISON_SYSROOT}"
35
- cc.compile_options = "%{flags} -o %{outfile} -c %{infile}"
35
+ cc.compile_options = %Q[%{flags} -o "%{outfile}" -c "%{infile}"]
36
36
  cc.defines = %w(ENABLE_READLINE)
37
37
  end
38
38
 
@@ -47,7 +47,7 @@
47
47
 
48
48
  conf.archiver do |archiver|
49
49
  archiver.command = "#{POKY_EDISON_BIN_PATH}/i586-poky-linux-ar"
50
- archiver.archive_options = 'rcs %{outfile} %{objs}'
50
+ archiver.archive_options = 'rcs "%{outfile}" %{objs}'
51
51
  end
52
52
 
53
53
  conf.linker do |linker|
@@ -39,7 +39,7 @@
39
39
  cc.flags = %w(-m32 -march=i586 -c -g -Os -w
40
40
  -ffunction-sections -fdata-sections -MMD -DARDUINO=153)
41
41
  cc.flags << "--sysroot=#{GALILEO_SYSROOT}"
42
- cc.compile_options = "%{flags} -o %{outfile} -c %{infile}"
42
+ cc.compile_options = %Q[%{flags} -o "%{outfile}" -c "%{infile}"]
43
43
  end
44
44
 
45
45
  conf.cxx do |cxx|
@@ -54,7 +54,7 @@
54
54
 
55
55
  conf.archiver do |archiver|
56
56
  archiver.command = "#{GALILEO_BIN_PATH}/i586-poky-linux-uclibc-ar"
57
- archiver.archive_options = 'rcs %{outfile} %{objs}'
57
+ archiver.archive_options = 'rcs "%{outfile}" %{objs}'
58
58
  end
59
59
 
60
60
  conf.linker do |linker|
@@ -27,7 +27,7 @@
27
27
  conf.cc do |cc|
28
28
  cc.command = "#{BIN_PATH}/rx-elf-gcc"
29
29
  cc.flags = "-Wall -g -O2 -flto -mcpu=rx600 -m64bit-doubles"
30
- cc.compile_options = "%{flags} -o %{outfile} -c %{infile}"
30
+ cc.compile_options = %Q[%{flags} -o "%{outfile}" -c "%{infile}"]
31
31
 
32
32
  #configuration for low memory environment
33
33
  cc.defines << %w(MRB_USE_FLOAT)
@@ -53,7 +53,7 @@
53
53
 
54
54
  conf.archiver do |archiver|
55
55
  archiver.command = "#{BIN_PATH}/rx-elf-ar"
56
- archiver.archive_options = 'rcs %{outfile} %{objs}'
56
+ archiver.archive_options = 'rcs "%{outfile}" %{objs}'
57
57
  end
58
58
 
59
59
  #no executables
@@ -39,7 +39,7 @@
39
39
  cc.flags = %w(-O2 -mno-smart-io -w -ffunction-sections -fdata-sections -g -mdebugger -Wcast-align
40
40
  -fno-short-double -mprocessor=32MX795F512L -DF_CPU=80000000L -DARDUINO=23 -D_BOARD_MEGA_
41
41
  -DMPIDEVER=0x01000202 -DMPIDE=23)
42
- cc.compile_options = "%{flags} -o %{outfile} -c %{infile}"
42
+ cc.compile_options = %Q[%{flags} -o "%{outfile}" -c "%{infile}"]
43
43
 
44
44
  #configuration for low memory environment
45
45
  cc.defines << %w(MRB_HEAP_PAGE_SIZE=64)
@@ -60,7 +60,7 @@
60
60
 
61
61
  conf.archiver do |archiver|
62
62
  archiver.command = "#{PIC32_PATH}/compiler/pic32-tools/bin/pic32-ar"
63
- archiver.archive_options = 'rcs %{outfile} %{objs}'
63
+ archiver.archive_options = 'rcs "%{outfile}" %{objs}'
64
64
  end
65
65
 
66
66
  #no executables
@@ -0,0 +1,108 @@
1
+ MRuby::Build.new do |conf|
2
+ # Gets set by the VS command prompts
3
+ if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
4
+ toolchain :visualcpp
5
+ else
6
+ toolchain :gcc
7
+ end
8
+
9
+ enable_debug
10
+
11
+ # Include the default GEMs
12
+ conf.gembox 'default'
13
+ end
14
+
15
+ # Cross Compiling configuration for the Sega Dreamcast
16
+ # This configuration requires KallistiOS (KOS)
17
+ # https://dreamcast.wiki
18
+ #
19
+ # Tested on GNU/Linux, MinGW-w64/MSYS2, Cygwin, macOS and MinGW/MSYS (see below)
20
+ #
21
+ MRuby::CrossBuild.new("dreamcast") do |conf|
22
+ toolchain :gcc
23
+
24
+ # Support for DreamSDK (based on MinGW/MSYS)
25
+ # To compile mruby with DreamSDK, RubyInstaller for Windows should be installed
26
+ DREAMSDK_HOME = ENV["DREAMSDK_HOME"]
27
+ MSYS_ROOT = !(DREAMSDK_HOME.nil? || DREAMSDK_HOME.empty?) ? "#{DREAMSDK_HOME}/msys/1.0" : ""
28
+
29
+ # Setting paths
30
+ DREAMCAST_PATH = "#{MSYS_ROOT}/opt/toolchains/dc"
31
+ KOS_PATH = "#{DREAMCAST_PATH}/kos"
32
+ BIN_PATH = "#{DREAMCAST_PATH}/sh-elf/bin"
33
+
34
+ # C compiler
35
+ # Flags were extracted from KallistiOS environment files
36
+ conf.cc do |cc|
37
+ cc.command = "#{BIN_PATH}/sh-elf-gcc"
38
+ cc.include_paths << ["#{KOS_PATH}/include", "#{KOS_PATH}/kernel/arch/dreamcast/include", "#{KOS_PATH}/addons/include", "#{KOS_PATH}/../kos-ports/include"]
39
+ cc.flags << ["-O2", "-fomit-frame-pointer", "-ml", "-m4-single-only", "-ffunction-sections", "-fdata-sections", "-Wall", "-g", "-fno-builtin", "-ml", "-m4-single-only", "-Wl,-Ttext=0x8c010000", "-Wl,--gc-sections", "-T#{KOS_PATH}/utils/ldscripts/shlelf.xc", "-nodefaultlibs"]
40
+ cc.compile_options = %Q[%{flags} -o "%{outfile}" -c "%{infile}"]
41
+ cc.defines << %w(_arch_dreamcast)
42
+ cc.defines << %w(_arch_sub_pristine)
43
+ end
44
+
45
+ # C++ compiler
46
+ conf.cxx do |cxx|
47
+ cxx.command = conf.cc.command.dup
48
+ cxx.include_paths = conf.cc.include_paths.dup
49
+ cxx.flags = conf.cc.flags.dup
50
+ cxx.flags << %w(-fno-rtti -fno-exceptions)
51
+ cxx.defines = conf.cc.defines.dup
52
+ cxx.compile_options = conf.cc.compile_options.dup
53
+ end
54
+
55
+ # Linker
56
+ # There is an issue when making the mruby library with KallistiOS:
57
+ # 'newlib_kill.o' and 'newlib_getpid.o' aren't found so they are explicitly
58
+ # specified here at least for now.
59
+ conf.linker do |linker|
60
+ linker.command="#{BIN_PATH}/sh-elf-gcc"
61
+ linker.flags << ["#{MSYS_ROOT}/opt/toolchains/dc/kos/kernel/build/newlib_kill.o", "#{MSYS_ROOT}/opt/toolchains/dc/kos/kernel/build/newlib_getpid.o", "-Wl,--start-group -lkallisti -lc -lgcc -Wl,--end-group"]
62
+ linker.library_paths << ["#{KOS_PATH}/lib/dreamcast", "#{KOS_PATH}/addons/lib/dreamcast", "#{KOS_PATH}/../kos-ports/lib"]
63
+ end
64
+
65
+ # Archiver
66
+ conf.archiver do |archiver|
67
+ archiver.command = "#{BIN_PATH}/sh-elf-ar"
68
+ archiver.archive_options = 'rcs "%{outfile}" %{objs}'
69
+ end
70
+
71
+ # No executables
72
+ conf.bins = []
73
+
74
+ # Do not build executable test
75
+ conf.build_mrbtest_lib_only
76
+
77
+ # Disable C++ exception
78
+ conf.disable_cxx_exception
79
+
80
+ # Gems from core
81
+ # removing mruby-io
82
+ conf.gem :core => "mruby-metaprog"
83
+ conf.gem :core => "mruby-pack"
84
+ conf.gem :core => "mruby-sprintf"
85
+ conf.gem :core => "mruby-print"
86
+ conf.gem :core => "mruby-math"
87
+ conf.gem :core => "mruby-time"
88
+ conf.gem :core => "mruby-struct"
89
+ conf.gem :core => "mruby-compar-ext"
90
+ conf.gem :core => "mruby-enum-ext"
91
+ conf.gem :core => "mruby-string-ext"
92
+ conf.gem :core => "mruby-numeric-ext"
93
+ conf.gem :core => "mruby-array-ext"
94
+ conf.gem :core => "mruby-hash-ext"
95
+ conf.gem :core => "mruby-range-ext"
96
+ conf.gem :core => "mruby-proc-ext"
97
+ conf.gem :core => "mruby-symbol-ext"
98
+ conf.gem :core => "mruby-random"
99
+ conf.gem :core => "mruby-object-ext"
100
+ conf.gem :core => "mruby-objectspace"
101
+ conf.gem :core => "mruby-fiber"
102
+ conf.gem :core => "mruby-enumerator"
103
+ conf.gem :core => "mruby-enum-lazy"
104
+ conf.gem :core => "mruby-toplevel-ext"
105
+ conf.gem :core => "mruby-kernel-ext"
106
+ conf.gem :core => "mruby-class-ext"
107
+ conf.gem :core => "mruby-compiler"
108
+ end
@@ -38,21 +38,24 @@
38
38
 
39
39
  /* add -DMRB_METHOD_T_STRUCT on machines that use higher bits of pointers */
40
40
  /* no MRB_METHOD_T_STRUCT requires highest 2 bits of function pointers to be zero */
41
- //#define MRB_METHOD_T_STRUCT
42
-
43
- /* add -DMRB_INT16 to use 16bit integer for mrb_int; conflict with MRB_INT32 and MRB_INT64 */
44
- //#define MRB_INT16
41
+ #ifndef MRB_METHOD_T_STRUCT
42
+ // can't use highest 2 bits of function pointers at least on 32bit
43
+ // Windows and 32bit Linux.
44
+ # ifdef MRB_32BIT
45
+ # define MRB_METHOD_T_STRUCT
46
+ # endif
47
+ #endif
45
48
 
46
- /* add -DMRB_INT32 to use 32bit integer for mrb_int; conflict with MRB_INT16 and MRB_INT64;
49
+ /* add -DMRB_INT32 to use 32bit integer for mrb_int; conflict with MRB_INT64;
47
50
  Default for 32-bit CPU mode. */
48
51
  //#define MRB_INT32
49
52
 
50
- /* add -DMRB_INT64 to use 64bit integer for mrb_int; conflict with MRB_INT16 and MRB_INT32;
53
+ /* add -DMRB_INT64 to use 64bit integer for mrb_int; conflict with MRB_INT32;
51
54
  Default for 64-bit CPU mode. */
52
55
  //#define MRB_INT64
53
56
 
54
57
  /* if no specific integer type is chosen */
55
- #if !defined(MRB_INT16) && !defined(MRB_INT32) && !defined(MRB_INT64)
58
+ #if !defined(MRB_INT32) && !defined(MRB_INT64)
56
59
  # if defined(MRB_64BIT) && !defined(MRB_NAN_BOXING)
57
60
  /* Use 64bit integers on 64bit architecture (without MRB_NAN_BOXING) */
58
61
  # define MRB_INT64
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** mruby - An embeddable Ruby implementation
3
3
  **
4
- ** Copyright (c) mruby developers 2010-2019
4
+ ** Copyright (c) mruby developers 2010-2020
5
5
  **
6
6
  ** Permission is hereby granted, free of charge, to any person obtaining
7
7
  ** a copy of this software and associated documentation files (the
@@ -70,7 +70,13 @@
70
70
 
71
71
  #include "mrbconf.h"
72
72
 
73
+ #include <mruby/common.h>
74
+ #include <mruby/value.h>
75
+ #include <mruby/gc.h>
76
+ #include <mruby/version.h>
77
+
73
78
  #ifndef MRB_WITHOUT_FLOAT
79
+ #include <float.h>
74
80
  #ifndef FLT_EPSILON
75
81
  #define FLT_EPSILON (1.19209290e-07f)
76
82
  #endif
@@ -88,11 +94,6 @@
88
94
  #endif
89
95
  #endif
90
96
 
91
- #include <mruby/common.h>
92
- #include <mruby/value.h>
93
- #include <mruby/gc.h>
94
- #include <mruby/version.h>
95
-
96
97
  /**
97
98
  * MRuby C API entry point
98
99
  */
@@ -164,8 +165,8 @@ struct mrb_context {
164
165
  struct RProc **ensure; /* ensure handler stack */
165
166
  uint16_t esize, eidx;
166
167
 
167
- enum mrb_fiber_state status;
168
- mrb_bool vmexec;
168
+ enum mrb_fiber_state status : 4;
169
+ mrb_bool vmexec : 1;
169
170
  struct RFiber *fib;
170
171
  };
171
172
 
@@ -317,7 +318,9 @@ MRB_API struct RClass *mrb_define_class(mrb_state *mrb, const char *name, struct
317
318
  * @return [struct RClass *] Reference to the newly defined module.
318
319
  */
319
320
  MRB_API struct RClass *mrb_define_module(mrb_state *mrb, const char *name);
321
+
320
322
  MRB_API mrb_value mrb_singleton_class(mrb_state *mrb, mrb_value val);
323
+ MRB_API struct RClass *mrb_singleton_class_ptr(mrb_state *mrb, mrb_value val);
321
324
 
322
325
  /**
323
326
  * Include a module in another class or module.
@@ -956,8 +959,21 @@ mrb_get_mid(mrb_state *mrb) /* get method symbol */
956
959
  */
957
960
  MRB_API mrb_int mrb_get_argc(mrb_state *mrb);
958
961
 
962
+ /**
963
+ * Retrieve an array of arguments from mrb_state.
964
+ *
965
+ * Correctly handles *splat arguments.
966
+ */
959
967
  MRB_API mrb_value* mrb_get_argv(mrb_state *mrb);
960
968
 
969
+ /**
970
+ * Retrieve the first and only argument from mrb_state.
971
+ * Raises ArgumentError unless the number of arguments is exactly one.
972
+ *
973
+ * Correctly handles *splat arguments.
974
+ */
975
+ MRB_API mrb_value mrb_get_arg1(mrb_state *mrb);
976
+
961
977
  /* `strlen` for character string literals (use with caution or `strlen` instead)
962
978
  Adjacent string literals are concatenated in C/C++ in translation phase 6.
963
979
  If `lit` is not one, the compiler will report a syntax error:
@@ -1148,7 +1164,6 @@ MRB_API void mrb_close(mrb_state *mrb);
1148
1164
  MRB_API void* mrb_default_allocf(mrb_state*, void*, size_t, void*);
1149
1165
 
1150
1166
  MRB_API mrb_value mrb_top_self(mrb_state *mrb);
1151
- MRB_API mrb_value mrb_run(mrb_state *mrb, struct RProc* proc, mrb_value self);
1152
1167
  MRB_API mrb_value mrb_top_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int stack_keep);
1153
1168
  MRB_API mrb_value mrb_vm_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int stack_keep);
1154
1169
  MRB_API mrb_value mrb_vm_exec(mrb_state *mrb, struct RProc *proc, const mrb_code *iseq);
@@ -239,6 +239,7 @@ MRB_API mrb_value mrb_ary_entry(mrb_value ary, mrb_int offset);
239
239
  * @param head Beginning position of a replacement subsequence.
240
240
  * @param len Length of a replacement subsequence.
241
241
  * @param rpl The array of replacement elements.
242
+ * It is possible to pass `mrb_undef_value()` instead of an empty array.
242
243
  * @return The receiver array.
243
244
  */
244
245
  MRB_API mrb_value mrb_ary_splice(mrb_state *mrb, mrb_value self, mrb_int head, mrb_int len, mrb_value rpl);
@@ -291,6 +292,9 @@ MRB_API mrb_value mrb_ary_join(mrb_state *mrb, mrb_value ary, mrb_value sep);
291
292
  */
292
293
  MRB_API mrb_value mrb_ary_resize(mrb_state *mrb, mrb_value ary, mrb_int new_len);
293
294
 
295
+ /* helper functions */
296
+ mrb_value mrb_ary_subseq(mrb_state *mrb, mrb_value ary, mrb_int beg, mrb_int len);
297
+
294
298
  MRB_END_DECL
295
299
 
296
300
  #endif /* MRUBY_ARRAY_H */
@@ -44,6 +44,9 @@ typedef struct mrb_value {
44
44
  };
45
45
  )
46
46
  };
47
+ #ifdef MRB_64BIT
48
+ struct RCptr *vp;
49
+ #endif
47
50
  } value;
48
51
  };
49
52
  } mrb_value;
@@ -54,13 +57,15 @@ typedef struct mrb_value {
54
57
  #define mrb_type(o) (enum mrb_vtype)((uint32_t)0xfff00000 < (o).value.ttt ? mrb_tt(o) : MRB_TT_FLOAT)
55
58
  #define mrb_ptr(o) ((void*)((((uintptr_t)0x3fffffffffff)&((uintptr_t)((o).value.p)))<<2))
56
59
  #define mrb_float(o) (o).f
57
- #define mrb_cptr(o) mrb_ptr(o)
58
60
  #define mrb_fixnum(o) (o).value.i
59
61
  #define mrb_symbol(o) (o).value.sym
60
62
 
61
63
  #ifdef MRB_64BIT
64
+ MRB_API mrb_value mrb_nan_boxing_cptr_value(struct mrb_state*, void*);
65
+ #define mrb_cptr(o) (((struct RCptr*)mrb_ptr(o))->p)
62
66
  #define BOXNAN_SHIFT_LONG_POINTER(v) (((uintptr_t)(v)>>34)&0x3fff)
63
67
  #else
68
+ #define mrb_cptr(o) ((o).value.p)
64
69
  #define BOXNAN_SHIFT_LONG_POINTER(v) 0
65
70
  #endif
66
71
 
@@ -90,7 +95,11 @@ typedef struct mrb_value {
90
95
  #define SET_INT_VALUE(r,n) BOXNAN_SET_VALUE(r, MRB_TT_FIXNUM, value.i, (n))
91
96
  #define SET_SYM_VALUE(r,v) BOXNAN_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v))
92
97
  #define SET_OBJ_VALUE(r,v) BOXNAN_SET_OBJ_VALUE(r, (((struct RObject*)(v))->tt), (v))
93
- #define SET_CPTR_VALUE(mrb,r,v) BOXNAN_SET_OBJ_VALUE(r, MRB_TT_CPTR, v)
98
+ #ifdef MRB_64BIT
99
+ #define SET_CPTR_VALUE(mrb,r,v) ((r) = mrb_nan_boxing_cptr_value(mrb, v))
100
+ #else
101
+ #define SET_CPTR_VALUE(mrb,r,v) BOXNAN_SET_VALUE(r, MRB_TT_CPTR, value.p, v)
102
+ #endif
94
103
  #define SET_UNDEF_VALUE(r) BOXNAN_SET_VALUE(r, MRB_TT_UNDEF, value.i, 0)
95
104
 
96
105
  #endif /* MRUBY_BOXING_NAN_H */
@@ -7,10 +7,6 @@
7
7
  #ifndef MRUBY_BOXING_WORD_H
8
8
  #define MRUBY_BOXING_WORD_H
9
9
 
10
- #if defined(MRB_INT16)
11
- # error MRB_INT16 is too small for MRB_WORD_BOXING.
12
- #endif
13
-
14
10
  #if defined(MRB_INT64) && !defined(MRB_64BIT)
15
11
  #error MRB_INT64 cannot be used with MRB_WORD_BOXING in 32-bit mode.
16
12
  #endif
@@ -22,11 +18,6 @@ struct RFloat {
22
18
  };
23
19
  #endif
24
20
 
25
- struct RCptr {
26
- MRB_OBJECT_HEADER;
27
- void *p;
28
- };
29
-
30
21
  enum mrb_special_consts {
31
22
  MRB_Qnil = 0,
32
23
  MRB_Qfalse = 4,
@@ -146,7 +137,6 @@ MRB_API mrb_value mrb_word_boxing_float_pool(struct mrb_state*, mrb_float);
146
137
  #define mrb_sclass_p(o) BOXWORD_OBJ_TYPE_P(o, SCLASS)
147
138
  #define mrb_proc_p(o) BOXWORD_OBJ_TYPE_P(o, PROC)
148
139
  #define mrb_range_p(o) BOXWORD_OBJ_TYPE_P(o, RANGE)
149
- #define mrb_file_p(o) BOXWORD_OBJ_TYPE_P(o, FILE)
150
140
  #define mrb_env_p(o) BOXWORD_OBJ_TYPE_P(o, ENV)
151
141
  #define mrb_data_p(o) BOXWORD_OBJ_TYPE_P(o, DATA)
152
142
  #define mrb_fiber_p(o) BOXWORD_OBJ_TYPE_P(o, FIBER)
@@ -74,6 +74,16 @@ MRB_BEGIN_DECL
74
74
  #endif
75
75
  #endif
76
76
 
77
+ /** Declare mingw versions */
78
+ #if defined(__MINGW32__) || defined(__MINGW64__)
79
+ # include <_mingw.h>
80
+ # if defined(__MINGW64_VERSION_MAJOR)
81
+ # define MRB_MINGW64_VERSION (__MINGW64_VERSION_MAJOR * 1000 + __MINGW64_VERSION_MINOR)
82
+ # elif defined(__MINGW32_MAJOR_VERSION)
83
+ # define MRB_MINGW32_VERSION (__MINGW32_MAJOR_VERSION * 1000 + __MINGW32_MINOR_VERSION)
84
+ # endif
85
+ #endif
86
+
77
87
  MRB_END_DECL
78
88
 
79
89
  #endif /* MRUBY_COMMON_H */
@@ -33,7 +33,7 @@ typedef struct mrbc_context {
33
33
  mrb_bool no_exec:1;
34
34
  mrb_bool keep_lv:1;
35
35
  mrb_bool no_optimize:1;
36
- mrb_bool on_eval:1;
36
+ struct RProc *upper;
37
37
 
38
38
  size_t parser_nerr;
39
39
  } mrbc_context;
@@ -151,8 +151,8 @@ struct mrb_parser_state {
151
151
  mrb_ast_node *tree;
152
152
 
153
153
  mrb_bool no_optimize:1;
154
- mrb_bool on_eval:1;
155
154
  mrb_bool capture_errors:1;
155
+ struct RProc *upper;
156
156
  struct mrb_parser_message error_buffer[10];
157
157
  struct mrb_parser_message warn_buffer[10];
158
158
 
@@ -180,7 +180,15 @@ MRB_API struct mrb_parser_state* mrb_parse_nstring(mrb_state*,const char*,size_t
180
180
  MRB_API struct RProc* mrb_generate_code(mrb_state*, struct mrb_parser_state*);
181
181
  MRB_API mrb_value mrb_load_exec(mrb_state *mrb, struct mrb_parser_state *p, mrbc_context *c);
182
182
 
183
- /* program load functions */
183
+ /** program load functions
184
+ * Please note! Currently due to interactions with the GC calling these functions will
185
+ * leak one RProc object per function call.
186
+ * To prevent this save the current memory arena before calling and restore the arena
187
+ * right after, like so
188
+ * int ai = mrb_gc_arena_save(mrb);
189
+ * mrb_value status = mrb_load_string(mrb, buffer);
190
+ * mrb_gc_arena_restore(mrb, ai);
191
+ */
184
192
  #ifndef MRB_DISABLE_STDIO
185
193
  MRB_API mrb_value mrb_load_file(mrb_state*,FILE*);
186
194
  MRB_API mrb_value mrb_load_file_cxt(mrb_state*,FILE*, mrbc_context *cxt);