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
@@ -106,6 +106,15 @@ def setup_compilers
106
106
  define_gem_init_builder if @generate_functions
107
107
  end
108
108
 
109
+ def for_windows?
110
+ if build.kind_of?(MRuby::CrossBuild)
111
+ return %w(x86_64-w64-mingw32 i686-w64-mingw32).include?(build.host_target)
112
+ elsif build.kind_of?(MRuby::Build)
113
+ return ('A'..'Z').to_a.any? { |vol| Dir.exist?("#{vol}:") }
114
+ end
115
+ return false
116
+ end
117
+
109
118
  def add_dependency(name, *requirements)
110
119
  default_gem = requirements.last.kind_of?(Hash) ? requirements.pop : nil
111
120
  requirements = ['>= 0.0.0'] if requirements.empty?
@@ -6,7 +6,9 @@ module Source
6
6
  ROOT = Pathname.new(File.expand_path('../../../',__FILE__))
7
7
 
8
8
  # Reads a constant defined at version.h
9
- MRUBY_READ_VERSION_CONSTANT = Proc.new { |name| ROOT.join('include','mruby','version.h').read.match(/^#define #{name} +"?([\w\. ]+)"?$/)[1] }
9
+ MRUBY_READ_VERSION_CONSTANT = Proc.new do |name|
10
+ ROOT.join('include','mruby','version.h').read.match(/^#define #{name} +"?([\w\. ]+)"?\r?$/)[1]
11
+ end
10
12
 
11
13
  MRUBY_RUBY_VERSION = MRUBY_READ_VERSION_CONSTANT['MRUBY_RUBY_VERSION']
12
14
  MRUBY_RUBY_ENGINE = MRUBY_READ_VERSION_CONSTANT['MRUBY_RUBY_ENGINE']
@@ -71,6 +71,10 @@ MRuby::GemBox.new do |conf|
71
71
  # Use toplevel object (main) methods extension
72
72
  conf.gem :core => "mruby-toplevel-ext"
73
73
 
74
+ # Use Rational/Complex numbers
75
+ conf.gem :core => "mruby-rational"
76
+ conf.gem :core => "mruby-complex"
77
+
74
78
  # Generate mirb command
75
79
  conf.gem :core => "mruby-bin-mirb"
76
80
 
@@ -89,6 +93,9 @@ MRuby::GemBox.new do |conf|
89
93
  # Use Method/UnboundMethod class
90
94
  conf.gem :core => "mruby-method"
91
95
 
96
+ # Use eval()
97
+ conf.gem :core => "mruby-eval"
98
+
92
99
  # Use mruby-compiler to build other mrbgems
93
100
  conf.gem :core => "mruby-compiler"
94
101
  end
@@ -686,37 +686,6 @@ def bsearch_index(&block)
686
686
  satisfied ? low : nil
687
687
  end
688
688
 
689
- ##
690
- # call-seq:
691
- # ary.delete_if { |item| block } -> ary
692
- # ary.delete_if -> Enumerator
693
- #
694
- # Deletes every element of +self+ for which block evaluates to +true+.
695
- #
696
- # The array is changed instantly every time the block is called, not after
697
- # the iteration is over.
698
- #
699
- # See also Array#reject!
700
- #
701
- # If no block is given, an Enumerator is returned instead.
702
- #
703
- # scores = [ 97, 42, 75 ]
704
- # scores.delete_if {|score| score < 80 } #=> [97]
705
-
706
- def delete_if(&block)
707
- return to_enum :delete_if unless block
708
-
709
- idx = 0
710
- while idx < self.size do
711
- if block.call(self[idx])
712
- self.delete_at(idx)
713
- else
714
- idx += 1
715
- end
716
- end
717
- self
718
- end
719
-
720
689
  ##
721
690
  # call-seq:
722
691
  # ary.keep_if { |item| block } -> ary
@@ -28,9 +28,8 @@ static mrb_value
28
28
  mrb_ary_assoc(mrb_state *mrb, mrb_value ary)
29
29
  {
30
30
  mrb_int i;
31
- mrb_value v, k;
32
-
33
- mrb_get_args(mrb, "o", &k);
31
+ mrb_value v;
32
+ mrb_value k = mrb_get_arg1(mrb);
34
33
 
35
34
  for (i = 0; i < RARRAY_LEN(ary); ++i) {
36
35
  v = mrb_check_array_type(mrb, RARRAY_PTR(ary)[i]);
@@ -59,9 +58,8 @@ static mrb_value
59
58
  mrb_ary_rassoc(mrb_state *mrb, mrb_value ary)
60
59
  {
61
60
  mrb_int i;
62
- mrb_value v, value;
63
-
64
- mrb_get_args(mrb, "o", &value);
61
+ mrb_value v;
62
+ mrb_value value = mrb_get_arg1(mrb);
65
63
 
66
64
  for (i = 0; i < RARRAY_LEN(ary); ++i) {
67
65
  v = RARRAY_PTR(ary)[i];
@@ -140,9 +138,8 @@ mrb_ary_slice_bang(mrb_state *mrb, mrb_value self)
140
138
  mrb_ary_modify(mrb, a);
141
139
 
142
140
  if (mrb_get_argc(mrb) == 1) {
143
- mrb_value index;
141
+ mrb_value index = mrb_get_arg1(mrb);
144
142
 
145
- mrb_get_args(mrb, "o|i", &index, &len);
146
143
  switch (mrb_type(index)) {
147
144
  case MRB_TT_RANGE:
148
145
  if (mrb_range_beg_len(mrb, index, &i, &len, ARY_LEN(a), TRUE) == MRB_RANGE_OK) {
@@ -299,19 +299,6 @@ def between(lo, x, hi)
299
299
  #assert("Array#bsearch_index") do
300
300
  #end
301
301
 
302
- assert("Array#delete_if") do
303
- a = [1, 2, 3, 4, 5]
304
- assert_equal [1, 2, 3, 4, 5], a.delete_if { false }
305
- assert_equal [1, 2, 3, 4, 5], a
306
-
307
- a = [1, 2, 3, 4, 5]
308
- assert_equal [], a.delete_if { true }
309
- assert_equal [], a
310
-
311
- a = [ 1, 2, 3, 4, 5 ]
312
- assert_equal [1, 2, 3], a.delete_if { |val| val > 3 }
313
- end
314
-
315
302
  assert("Array#keep_if") do
316
303
  a = [1, 2, 3, 4, 5]
317
304
  assert_equal [1, 2, 3, 4, 5], a.keep_if { true }
@@ -5,13 +5,16 @@
5
5
  spec.author = 'mruby developers'
6
6
  spec.summary = "#{name} command"
7
7
 
8
+ mruby_config_dir = "#{build.build_dir}/bin"
8
9
  mruby_config = name + (ENV['OS'] == 'Windows_NT' ? '.bat' : '')
9
- mruby_config_path = "#{build.build_dir}/bin/#{mruby_config}"
10
+ mruby_config_path = "#{mruby_config_dir}/#{mruby_config}"
10
11
  make_cfg = "#{build.build_dir}/lib/libmruby.flags.mak"
11
12
  tmplt_path = "#{__dir__}/#{mruby_config}"
12
13
  build.bins << mruby_config
13
14
 
14
- file mruby_config_path => [make_cfg, tmplt_path] do |t|
15
+ directory mruby_config_dir
16
+
17
+ file mruby_config_path => [mruby_config_dir, make_cfg, tmplt_path] do |t|
15
18
  config = Hash[File.readlines(make_cfg).map!(&:chomp).map! {|l|
16
19
  l.gsub('\\"', '"').split(' = ', 2).map! {|s| s.sub(/^(?=.)/, 'echo ')}
17
20
  }]
@@ -5,7 +5,6 @@
5
5
 
6
6
  #include <stdlib.h>
7
7
  #include <string.h>
8
- #include <stdio.h>
9
8
  #include <ctype.h>
10
9
 
11
10
  #include <mruby.h>
@@ -7,7 +7,11 @@
7
7
  #define MRDBCONF_H
8
8
 
9
9
  #ifndef MRB_ENABLE_DEBUG_HOOK
10
- # error Need 'MRB_ENABLE_DEBUG_HOOK' configuration in your 'build_config.rb'
10
+ # error mruby-bin-debugger need 'MRB_ENABLE_DEBUG_HOOK' configuration in your 'build_config.rb'
11
+ #endif
12
+
13
+ #ifdef MRB_DISABLE_STDIO
14
+ # error mruby-bin-debugger conflicts 'MRB_DISABLE_STDIO' configuration in your 'build_config.rb'
11
15
  #endif
12
16
 
13
17
  /* configuration options: */
@@ -7,6 +7,11 @@
7
7
  */
8
8
 
9
9
  #include <mruby.h>
10
+
11
+ #ifdef MRB_DISABLE_STDIO
12
+ # error mruby-bin-mirb conflicts 'MRB_DISABLE_STDIO' configuration in your 'build_config.rb'
13
+ #endif
14
+
10
15
  #include <mruby/array.h>
11
16
  #include <mruby/proc.h>
12
17
  #include <mruby/compile.h>
@@ -17,7 +22,6 @@
17
22
 
18
23
  #include <stdlib.h>
19
24
  #include <string.h>
20
- #include <stdio.h>
21
25
  #include <ctype.h>
22
26
 
23
27
  #include <signal.h>
@@ -645,8 +649,8 @@ main(int argc, char **argv)
645
649
  /* adjust stack length of toplevel environment */
646
650
  if (mrb->c->cibase->env) {
647
651
  struct REnv *e = mrb->c->cibase->env;
648
- if (e && MRB_ENV_STACK_LEN(e) < proc->body.irep->nlocals) {
649
- MRB_ENV_SET_STACK_LEN(e, proc->body.irep->nlocals);
652
+ if (e && MRB_ENV_LEN(e) < proc->body.irep->nlocals) {
653
+ MRB_ENV_SET_LEN(e, proc->body.irep->nlocals);
650
654
  }
651
655
  }
652
656
  /* pass a proc for evaluation */
@@ -1,7 +1,11 @@
1
- #include <stdio.h>
1
+ #include <mruby.h>
2
+
3
+ #ifdef MRB_DISABLE_STDIO
4
+ # error mruby-bin-mrbc conflicts 'MRB_DISABLE_STDIO' configuration in your 'build_config.rb'
5
+ #endif
6
+
2
7
  #include <stdlib.h>
3
8
  #include <string.h>
4
- #include <mruby.h>
5
9
  #include <mruby/compile.h>
6
10
  #include <mruby/dump.h>
7
11
  #include <mruby/proc.h>
@@ -32,8 +36,6 @@ usage(const char *name)
32
36
  "-v print version number, then turn on verbose mode",
33
37
  "-g produce debugging information",
34
38
  "-B<symbol> binary <symbol> output in C language format",
35
- "-e generate little endian iseq data",
36
- "-E generate big endian iseq data",
37
39
  "--remove-lv remove local variables",
38
40
  "--verbose run at verbose mode",
39
41
  "--version print the version",
@@ -50,19 +52,26 @@ usage(const char *name)
50
52
  static char *
51
53
  get_outfilename(mrb_state *mrb, char *infile, const char *ext)
52
54
  {
53
- size_t infilelen;
54
- size_t extlen;
55
+ size_t ilen, flen, elen;
55
56
  char *outfile;
56
- char *p;
57
+ char *p = NULL;
57
58
 
58
- infilelen = strlen(infile);
59
- extlen = strlen(ext);
60
- outfile = (char*)mrb_malloc(mrb, infilelen + extlen + 1);
61
- memcpy(outfile, infile, infilelen + 1);
59
+ ilen = strlen(infile);
60
+ flen = ilen;
62
61
  if (*ext) {
63
- if ((p = strrchr(outfile, '.')) == NULL)
64
- p = outfile + infilelen;
65
- memcpy(p, ext, extlen + 1);
62
+ elen = strlen(ext);
63
+ if ((p = strrchr(infile, '.'))) {
64
+ ilen = p - infile;
65
+ }
66
+ flen += elen;
67
+ }
68
+ else {
69
+ flen = ilen;
70
+ }
71
+ outfile = (char*)mrb_malloc(mrb, flen+1);
72
+ strncpy(outfile, infile, ilen+1);
73
+ if (p) {
74
+ strncpy(outfile+ilen, ext, elen+1);
66
75
  }
67
76
 
68
77
  return outfile;
@@ -120,10 +129,8 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct mrbc_args *args)
120
129
  args->flags |= DUMP_DEBUG_INFO;
121
130
  break;
122
131
  case 'E':
123
- args->flags = DUMP_ENDIAN_BIG | (args->flags & ~DUMP_ENDIAN_MASK);
124
- break;
125
132
  case 'e':
126
- args->flags = DUMP_ENDIAN_LIL | (args->flags & ~DUMP_ENDIAN_MASK);
133
+ fprintf(stderr, "%s: -e/-E option no longer needed.\n", args->prog);
127
134
  break;
128
135
  case 'h':
129
136
  return -1;
@@ -156,10 +163,6 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct mrbc_args *args)
156
163
  break;
157
164
  }
158
165
  }
159
- if (args->verbose && args->initname && (args->flags & DUMP_ENDIAN_MASK) == 0) {
160
- fprintf(stderr, "%s: generating %s endian C file. specify -e/-E for cross compiling.\n",
161
- args->prog, bigendian_p() ? "big" : "little");
162
- }
163
166
  return i;
164
167
  }
165
168
 
@@ -4,7 +4,6 @@
4
4
  spec.summary = 'mruby command'
5
5
  spec.bins = %w(mruby)
6
6
  spec.add_dependency('mruby-compiler', :core => 'mruby-compiler')
7
- spec.add_dependency('mruby-error', :core => 'mruby-error')
8
7
  spec.add_test_dependency('mruby-print', :core => 'mruby-print')
9
8
 
10
9
  if build.cxx_exception_enabled?
@@ -1,7 +1,11 @@
1
- #include <stdio.h>
1
+ #include <mruby.h>
2
+
3
+ #ifdef MRB_DISABLE_STDIO
4
+ # error mruby-bin-mruby conflicts 'MRB_DISABLE_STDIO' configuration in your 'build_config.rb'
5
+ #endif
6
+
2
7
  #include <stdlib.h>
3
8
  #include <string.h>
4
- #include <mruby.h>
5
9
  #include <mruby/array.h>
6
10
  #include <mruby/compile.h>
7
11
  #include <mruby/dump.h>
@@ -1,7 +1,11 @@
1
- #include <stdio.h>
1
+ #include <mruby.h>
2
+
3
+ #ifdef MRB_DISABLE_STDIO
4
+ # error mruby-bin-strip conflicts 'MRB_DISABLE_STDIO' configuration in your 'build_config.rb'
5
+ #endif
6
+
2
7
  #include <stdlib.h>
3
8
  #include <string.h>
4
- #include <mruby.h>
5
9
  #include <mruby/irep.h>
6
10
  #include <mruby/dump.h>
7
11
 
@@ -43,10 +43,15 @@ mrb_mod_module_exec(mrb_state *mrb, mrb_value self)
43
43
  const mrb_value *argv;
44
44
  mrb_int argc;
45
45
  mrb_value blk;
46
+ struct RClass *c;
46
47
 
47
48
  mrb_get_args(mrb, "*&!", &argv, &argc, &blk);
48
49
 
49
- mrb->c->ci->target_class = mrb_class_ptr(self);
50
+ c = mrb_class_ptr(self);
51
+ if (mrb->c->ci->acc < 0) {
52
+ return mrb_yield_with_class(mrb, blk, argc, argv, self, c);
53
+ }
54
+ mrb->c->ci->target_class = c;
50
55
  return mrb_yield_cont(mrb, blk, self, argc, argv);
51
56
  }
52
57
 
@@ -281,15 +281,6 @@ no_optimize(codegen_scope *s)
281
281
  return FALSE;
282
282
  }
283
283
 
284
- static
285
- mrb_bool
286
- on_eval(codegen_scope *s)
287
- {
288
- if (s && s->parser && s->parser->on_eval)
289
- return TRUE;
290
- return FALSE;
291
- }
292
-
293
284
  struct mrb_insn_data
294
285
  mrb_decode_insn(const mrb_code *pc)
295
286
  {
@@ -407,9 +398,6 @@ gen_move(codegen_scope *s, uint16_t dst, uint16_t src, int nopeep)
407
398
  if (no_peephole(s)) {
408
399
  normal:
409
400
  genop_2(s, OP_MOVE, dst, src);
410
- if (on_eval(s)) {
411
- genop_0(s, OP_NOP);
412
- }
413
401
  return;
414
402
  }
415
403
  else {
@@ -674,6 +662,43 @@ lv_idx(codegen_scope *s, mrb_sym id)
674
662
  return 0;
675
663
  }
676
664
 
665
+ static int
666
+ search_upvar(codegen_scope *s, mrb_sym id, int *idx)
667
+ {
668
+ struct RProc *u;
669
+ int lv = 0;
670
+ codegen_scope *up = s->prev;
671
+
672
+ while (up) {
673
+ *idx = lv_idx(up, id);
674
+ if (*idx > 0) {
675
+ return lv;
676
+ }
677
+ lv ++;
678
+ up = up->prev;
679
+ }
680
+
681
+ if (lv < 1) lv = 1;
682
+ u = s->parser->upper;
683
+ while (u && !MRB_PROC_CFUNC_P(u)) {
684
+ struct mrb_irep *ir = u->body.irep;
685
+ uint_fast16_t n = ir->nlocals;
686
+ const struct mrb_locals *v = ir->lv;
687
+ for (; n > 1; n --, v ++) {
688
+ if (v->name == id) {
689
+ *idx = v->r;
690
+ return lv - 1;
691
+ }
692
+ }
693
+ if (MRB_PROC_SCOPE_P(u)) break;
694
+ u = u->upper;
695
+ lv ++;
696
+ }
697
+
698
+ codegen_error(s, "Can't found local variables");
699
+ return -1; /* not reached */
700
+ }
701
+
677
702
  static void
678
703
  for_body(codegen_scope *s, node *tree)
679
704
  {
@@ -786,12 +811,19 @@ lambda_body(codegen_scope *s, node *tree, int blk)
786
811
  i = 0;
787
812
  while (opt) {
788
813
  int idx;
814
+ mrb_sym id = nsym(opt->car->car);
789
815
 
790
816
  dispatch(s, pos+i*3+1);
791
817
  codegen(s, opt->car->cdr, VAL);
792
818
  pop();
793
- idx = lv_idx(s, nsym(opt->car->car));
794
- gen_move(s, idx, cursp(), 0);
819
+ idx = lv_idx(s, id);
820
+ if (idx > 0) {
821
+ gen_move(s, idx, cursp(), 0);
822
+ }
823
+ else {
824
+ int lv = search_upvar(s, id, &idx);
825
+ genop_3(s, OP_GETUPVAR, cursp(), idx, lv);
826
+ }
795
827
  i++;
796
828
  opt = opt->cdr;
797
829
  }
@@ -818,11 +850,19 @@ lambda_body(codegen_scope *s, node *tree, int blk)
818
850
  mrb_assert(nint(kwd->car) == NODE_KW_ARG);
819
851
 
820
852
  if (def_arg) {
853
+ int idx;
821
854
  genop_2(s, OP_KEY_P, lv_idx(s, kwd_sym), new_sym(s, kwd_sym));
822
855
  jmpif_key_p = genjmp2(s, OP_JMPIF, lv_idx(s, kwd_sym), 0, 0);
823
856
  codegen(s, def_arg, VAL);
824
857
  pop();
825
- gen_move(s, lv_idx(s, kwd_sym), cursp(), 0);
858
+ idx = lv_idx(s, kwd_sym);
859
+ if (idx > 0) {
860
+ gen_move(s, idx, cursp(), 0);
861
+ }
862
+ else {
863
+ int lv = search_upvar(s, kwd_sym, &idx);
864
+ genop_3(s, OP_GETUPVAR, cursp(), idx, lv);
865
+ }
826
866
  jmp_def_set = genjmp(s, OP_JMP, 0);
827
867
  dispatch(s, jmpif_key_p);
828
868
  }
@@ -1103,23 +1143,12 @@ gen_assignment(codegen_scope *s, node *tree, int sp, int val)
1103
1143
  if (idx > 0) {
1104
1144
  if (idx != sp) {
1105
1145
  gen_move(s, idx, sp, val);
1106
- if (val && on_eval(s)) genop_0(s, OP_NOP);
1107
1146
  }
1108
1147
  break;
1109
1148
  }
1110
1149
  else { /* upvar */
1111
- int lv = 0;
1112
- codegen_scope *up = s->prev;
1113
-
1114
- while (up) {
1115
- idx = lv_idx(up, nsym(tree));
1116
- if (idx > 0) {
1117
- genop_3(s, OP_SETUPVAR, sp, idx, lv);
1118
- break;
1119
- }
1120
- lv++;
1121
- up = up->prev;
1122
- }
1150
+ int lv = search_upvar(s, nsym(tree), &idx);
1151
+ genop_3(s, OP_SETUPVAR, sp, idx, lv);
1123
1152
  }
1124
1153
  break;
1125
1154
  case NODE_NVAR:
@@ -1860,7 +1889,7 @@ codegen(codegen_scope *s, node *tree, int val)
1860
1889
  len++;
1861
1890
  }
1862
1891
  tree = tree->cdr;
1863
- if (val && len == 255) {
1892
+ if (val && cursp() > 127) {
1864
1893
  pop_n(len*2);
1865
1894
  if (!update) {
1866
1895
  genop_2(s, OP_HASH, cursp(), len);
@@ -2324,21 +2353,10 @@ codegen(codegen_scope *s, node *tree, int val)
2324
2353
 
2325
2354
  if (idx > 0) {
2326
2355
  gen_move(s, cursp(), idx, val);
2327
- if (val && on_eval(s)) genop_0(s, OP_NOP);
2328
2356
  }
2329
2357
  else {
2330
- int lv = 0;
2331
- codegen_scope *up = s->prev;
2332
-
2333
- while (up) {
2334
- idx = lv_idx(up, nsym(tree));
2335
- if (idx > 0) {
2336
- genop_3(s, OP_GETUPVAR, cursp(), idx, lv);
2337
- break;
2338
- }
2339
- lv++;
2340
- up = up->prev;
2341
- }
2358
+ int lv = search_upvar(s, nsym(tree), &idx);
2359
+ genop_3(s, OP_GETUPVAR, cursp(), idx, lv);
2342
2360
  }
2343
2361
  push();
2344
2362
  }
@@ -2349,7 +2367,6 @@ codegen(codegen_scope *s, node *tree, int val)
2349
2367
  int idx = nint(tree);
2350
2368
 
2351
2369
  gen_move(s, cursp(), idx, val);
2352
- if (val && on_eval(s)) genop_0(s, OP_NOP);
2353
2370
 
2354
2371
  push();
2355
2372
  }
@@ -2440,12 +2457,20 @@ codegen(codegen_scope *s, node *tree, int val)
2440
2457
  else
2441
2458
  #endif
2442
2459
  {
2443
- if (i == -1) genop_1(s, OP_LOADI__1, cursp());
2444
- else if (i < 0) genop_2(s, OP_LOADINEG, cursp(), (uint16_t)-i);
2460
+ if (i < 0) {
2461
+ if (i == -1) genop_1(s, OP_LOADI__1, cursp());
2462
+ else if (i >= -0xff) genop_2(s, OP_LOADINEG, cursp(), (uint16_t)-i);
2463
+ else if (i >= -0x8000) genop_2S(s, OP_LOADI16, cursp(), (uint16_t)i);
2464
+ else goto lit_int;
2465
+ }
2445
2466
  else if (i < 8) genop_1(s, OP_LOADI_0 + (uint8_t)i, cursp());
2446
- else if (i <= 0xffff) genop_2(s, OP_LOADI, cursp(), (uint16_t)i);
2467
+ else if (i <= 0xff) genop_2(s, OP_LOADI, cursp(), (uint16_t)i);
2468
+ else if (i <= 0x7fff) genop_2S(s, OP_LOADI16, cursp(), (uint16_t)i);
2447
2469
  else {
2448
- int off = new_lit(s, mrb_fixnum_value(i));
2470
+ int off;
2471
+
2472
+ lit_int:
2473
+ off = new_lit(s, mrb_fixnum_value(i));
2449
2474
  genop_2(s, OP_LOADL, cursp(), off);
2450
2475
  }
2451
2476
  }
@@ -2501,9 +2526,12 @@ codegen(codegen_scope *s, node *tree, int val)
2501
2526
  else {
2502
2527
  #endif
2503
2528
  if (i == -1) genop_1(s, OP_LOADI__1, cursp());
2504
- else if (i >= -0xffff) {
2529
+ else if (i >= -0xff) {
2505
2530
  genop_2(s, OP_LOADINEG, cursp(), (uint16_t)-i);
2506
2531
  }
2532
+ else if (i >= -0x8000) {
2533
+ genop_2S(s, OP_LOADI16, cursp(), (uint16_t)i);
2534
+ }
2507
2535
  else {
2508
2536
  int off = new_lit(s, mrb_fixnum_value(i));
2509
2537
  genop_2(s, OP_LOADL, cursp(), off);