script_core 0.2.6 → 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 (191) hide show
  1. checksums.yaml +4 -4
  2. data/ext/enterprise_script_service/libseccomp/.travis.yml +21 -7
  3. data/ext/enterprise_script_service/libseccomp/CHANGELOG +22 -0
  4. data/ext/enterprise_script_service/libseccomp/CONTRIBUTING.md +37 -26
  5. data/ext/enterprise_script_service/libseccomp/CREDITS +8 -0
  6. data/ext/enterprise_script_service/libseccomp/README.md +3 -1
  7. data/ext/enterprise_script_service/libseccomp/configure.ac +13 -8
  8. data/ext/enterprise_script_service/libseccomp/doc/Makefile.am +6 -0
  9. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_api_get.3 +12 -2
  10. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_arch_add.3 +38 -6
  11. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_attr_set.3 +53 -2
  12. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_export_bpf.3 +20 -2
  13. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_init.3 +9 -2
  14. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_load.3 +32 -2
  15. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_merge.3 +16 -2
  16. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_alloc.3 +113 -0
  17. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_fd.3 +1 -0
  18. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_free.3 +1 -0
  19. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_id_valid.3 +1 -0
  20. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_receive.3 +1 -0
  21. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_respond.3 +1 -0
  22. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_rule_add.3 +64 -3
  23. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_syscall_priority.3 +18 -3
  24. data/ext/enterprise_script_service/libseccomp/include/seccomp-syscalls.h +12 -0
  25. data/ext/enterprise_script_service/libseccomp/include/seccomp.h.in +116 -0
  26. data/ext/enterprise_script_service/libseccomp/src/.gitignore +2 -0
  27. data/ext/enterprise_script_service/libseccomp/src/Makefile.am +31 -17
  28. data/ext/enterprise_script_service/libseccomp/src/api.c +254 -58
  29. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64.h +1 -9
  30. data/ext/enterprise_script_service/libseccomp/src/arch-arm.c +47 -2
  31. data/ext/enterprise_script_service/libseccomp/src/arch-arm.h +1 -9
  32. data/ext/enterprise_script_service/libseccomp/src/arch-gperf-generate +40 -0
  33. data/ext/enterprise_script_service/libseccomp/src/arch-mips.c +41 -4
  34. data/ext/enterprise_script_service/libseccomp/src/arch-mips.h +2 -10
  35. data/ext/enterprise_script_service/libseccomp/src/arch-mips64.c +41 -4
  36. data/ext/enterprise_script_service/libseccomp/src/arch-mips64.h +3 -11
  37. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.c +41 -4
  38. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.h +2 -10
  39. data/ext/enterprise_script_service/libseccomp/src/arch-parisc.h +1 -10
  40. data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.c +3 -3
  41. data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.h +29 -0
  42. data/ext/enterprise_script_service/libseccomp/src/arch-ppc.h +1 -9
  43. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.c +606 -8
  44. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.h +2 -10
  45. data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.c +31 -0
  46. data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.h +22 -0
  47. data/ext/enterprise_script_service/libseccomp/src/arch-s390.c +171 -12
  48. data/ext/enterprise_script_service/libseccomp/src/arch-s390.h +1 -17
  49. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.c +166 -10
  50. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.h +1 -20
  51. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-dump.c +8 -1
  52. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-validate +359 -143
  53. data/ext/enterprise_script_service/libseccomp/src/arch-x32.c +36 -2
  54. data/ext/enterprise_script_service/libseccomp/src/arch-x32.h +2 -10
  55. data/ext/enterprise_script_service/libseccomp/src/arch-x86.c +172 -10
  56. data/ext/enterprise_script_service/libseccomp/src/arch-x86.h +1 -14
  57. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64.h +1 -9
  58. data/ext/enterprise_script_service/libseccomp/src/arch.c +11 -3
  59. data/ext/enterprise_script_service/libseccomp/src/arch.h +7 -0
  60. data/ext/enterprise_script_service/libseccomp/src/db.c +268 -57
  61. data/ext/enterprise_script_service/libseccomp/src/db.h +16 -2
  62. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.c +503 -148
  63. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.h +2 -1
  64. data/ext/enterprise_script_service/libseccomp/src/gen_pfc.c +165 -37
  65. data/ext/enterprise_script_service/libseccomp/src/python/libseccomp.pxd +37 -1
  66. data/ext/enterprise_script_service/libseccomp/src/python/seccomp.pyx +295 -5
  67. data/ext/enterprise_script_service/libseccomp/src/syscalls.c +56 -0
  68. data/ext/enterprise_script_service/libseccomp/src/syscalls.csv +470 -0
  69. data/ext/enterprise_script_service/libseccomp/src/syscalls.h +62 -0
  70. data/ext/enterprise_script_service/libseccomp/src/syscalls.perf.template +82 -0
  71. data/ext/enterprise_script_service/libseccomp/src/system.c +196 -16
  72. data/ext/enterprise_script_service/libseccomp/src/system.h +68 -13
  73. data/ext/enterprise_script_service/libseccomp/tests/.gitignore +9 -2
  74. data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.tests +1 -1
  75. data/ext/enterprise_script_service/libseccomp/tests/11-basic-basic_errors.c +5 -5
  76. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.c +35 -1
  77. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.py +10 -1
  78. data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.c +1 -0
  79. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.c +12 -0
  80. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.py +1 -0
  81. data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.c → 18-sim-basic_allowlist.c} +0 -0
  82. data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.py → 18-sim-basic_allowlist.py} +0 -0
  83. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_allowlist.tests +32 -0
  84. data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.c +3 -0
  85. data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.py +1 -0
  86. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.c +3 -0
  87. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.py +1 -0
  88. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.tests +33 -17
  89. data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.c → 34-sim-basic_denylist.c} +0 -0
  90. data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.py → 34-sim-basic_denylist.py} +0 -0
  91. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_denylist.tests +32 -0
  92. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.c +3 -0
  93. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.py +1 -0
  94. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.tests +25 -25
  95. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.c +24 -3
  96. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.py +16 -1
  97. data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.c +3 -3
  98. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.c +112 -0
  99. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.py +60 -0
  100. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.tests +11 -0
  101. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.c +156 -0
  102. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.py +95 -0
  103. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.tests +65 -0
  104. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.c +128 -0
  105. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.py +95 -0
  106. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.tests +11 -0
  107. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.c +134 -0
  108. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.sh +46 -0
  109. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.tests +11 -0
  110. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.c +90 -0
  111. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.py +65 -0
  112. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.tests +11 -0
  113. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.c +64 -0
  114. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.py +46 -0
  115. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.tests +11 -0
  116. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.c +116 -0
  117. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.py +61 -0
  118. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.tests +11 -0
  119. data/ext/enterprise_script_service/libseccomp/tests/Makefile.am +31 -10
  120. data/ext/enterprise_script_service/libseccomp/tests/regression +6 -3
  121. data/ext/enterprise_script_service/libseccomp/tests/util.c +3 -3
  122. data/ext/enterprise_script_service/libseccomp/tools/check-syntax +1 -1
  123. data/ext/enterprise_script_service/libseccomp/tools/scmp_arch_detect.c +3 -0
  124. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_disasm.c +4 -2
  125. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_sim.c +2 -0
  126. data/ext/enterprise_script_service/libseccomp/tools/util.c +14 -12
  127. data/ext/enterprise_script_service/libseccomp/tools/util.h +7 -0
  128. data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +51 -0
  129. data/ext/enterprise_script_service/mruby/Doxyfile +1 -1
  130. data/ext/enterprise_script_service/mruby/README.md +1 -1
  131. data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +1 -1
  132. data/ext/enterprise_script_service/mruby/doc/limitations.md +10 -10
  133. data/ext/enterprise_script_service/mruby/include/mruby.h +13 -0
  134. data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +0 -1
  135. data/ext/enterprise_script_service/mruby/include/mruby/proc.h +13 -8
  136. data/ext/enterprise_script_service/mruby/include/mruby/value.h +25 -29
  137. data/ext/enterprise_script_service/mruby/include/mruby/version.h +3 -3
  138. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +5 -8
  139. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +2 -2
  140. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +17 -10
  141. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +1 -1
  142. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +1 -2
  143. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +1 -1
  144. data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +1 -2
  145. data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +3 -4
  146. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +1 -2
  147. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +9 -26
  148. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +1 -2
  149. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +6 -8
  150. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +3 -4
  151. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +0 -1
  152. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +1 -2
  153. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +1 -3
  154. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +1 -3
  155. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +3 -3
  156. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +1 -2
  157. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +5 -11
  158. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +5 -10
  159. data/ext/enterprise_script_service/mruby/mrblib/00class.rb +10 -0
  160. data/ext/enterprise_script_service/mruby/src/array.c +14 -11
  161. data/ext/enterprise_script_service/mruby/src/class.c +22 -21
  162. data/ext/enterprise_script_service/mruby/src/error.c +1 -2
  163. data/ext/enterprise_script_service/mruby/src/etc.c +0 -1
  164. data/ext/enterprise_script_service/mruby/src/gc.c +5 -5
  165. data/ext/enterprise_script_service/mruby/src/hash.c +8 -15
  166. data/ext/enterprise_script_service/mruby/src/kernel.c +4 -7
  167. data/ext/enterprise_script_service/mruby/src/numeric.c +28 -60
  168. data/ext/enterprise_script_service/mruby/src/object.c +11 -1
  169. data/ext/enterprise_script_service/mruby/src/proc.c +7 -8
  170. data/ext/enterprise_script_service/mruby/src/range.c +4 -12
  171. data/ext/enterprise_script_service/mruby/src/string.c +24 -21
  172. data/ext/enterprise_script_service/mruby/src/symbol.c +1 -2
  173. data/ext/enterprise_script_service/mruby/src/vm.c +28 -24
  174. data/ext/enterprise_script_service/mruby/test/t/kernel.rb +7 -0
  175. data/lib/script_core/version.rb +1 -1
  176. metadata +45 -21
  177. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64-syscalls.c +0 -559
  178. data/ext/enterprise_script_service/libseccomp/src/arch-arm-syscalls.c +0 -570
  179. data/ext/enterprise_script_service/libseccomp/src/arch-mips-syscalls.c +0 -562
  180. data/ext/enterprise_script_service/libseccomp/src/arch-mips64-syscalls.c +0 -562
  181. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32-syscalls.c +0 -562
  182. data/ext/enterprise_script_service/libseccomp/src/arch-parisc-syscalls.c +0 -542
  183. data/ext/enterprise_script_service/libseccomp/src/arch-ppc-syscalls.c +0 -559
  184. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64-syscalls.c +0 -559
  185. data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +0 -642
  186. data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +0 -642
  187. data/ext/enterprise_script_service/libseccomp/src/arch-x32-syscalls.c +0 -558
  188. data/ext/enterprise_script_service/libseccomp/src/arch-x86-syscalls.c +0 -692
  189. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64-syscalls.c +0 -559
  190. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.tests +0 -32
  191. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.tests +0 -32
@@ -17,7 +17,7 @@ of the Ministry of Economy, Trade and Industry of Japan.
17
17
 
18
18
  ## How to get mruby
19
19
 
20
- The stable version 2.1.1 of mruby can be downloaded via the following URL: [https://github.com/mruby/mruby/archive/2.1.1.zip](https://github.com/mruby/mruby/archive/2.1.1.zip)
20
+ The stable version 2.1.2 of mruby can be downloaded via the following URL: [https://github.com/mruby/mruby/archive/2.1.2.zip](https://github.com/mruby/mruby/archive/2.1.2.zip)
21
21
 
22
22
  The latest development version of mruby can be downloaded via the following URL: [https://github.com/mruby/mruby/zipball/master](https://github.com/mruby/mruby/zipball/master)
23
23
 
@@ -38,7 +38,7 @@ To confirm mrdb was installed properly, run mrdb with the `--version` option:
38
38
 
39
39
  ```bash
40
40
  $ mrdb --version
41
- mruby 2.1.1 (2020-06-04)
41
+ mruby 2.1.2 (2020-08-06)
42
42
  ```
43
43
 
44
44
  ## 2.2 Basic Operation
@@ -38,7 +38,7 @@ puts [1,2,3]
38
38
  3
39
39
  ```
40
40
 
41
- #### mruby [2.1.1 (2020-06-04)]
41
+ #### mruby [2.1.2 (2020-08-06)]
42
42
 
43
43
  ```
44
44
  [1, 2, 3]
@@ -61,7 +61,7 @@ end
61
61
 
62
62
  `ZeroDivisionError` is raised.
63
63
 
64
- #### mruby [2.1.1 (2020-06-04)]
64
+ #### mruby [2.1.2 (2020-08-06)]
65
65
 
66
66
  No exception is raised.
67
67
 
@@ -89,7 +89,7 @@ p Liste.new "foobar"
89
89
 
90
90
  ` [] `
91
91
 
92
- #### mruby [2.1.1 (2020-06-04)]
92
+ #### mruby [2.1.2 (2020-08-06)]
93
93
 
94
94
  `ArgumentError` is raised.
95
95
 
@@ -119,7 +119,7 @@ false
119
119
  true
120
120
  ```
121
121
 
122
- #### mruby [2.1.1 (2020-06-04)]
122
+ #### mruby [2.1.2 (2020-08-06)]
123
123
 
124
124
  ```
125
125
  true
@@ -156,7 +156,7 @@ p 'ok'
156
156
  ok
157
157
  ```
158
158
 
159
- #### mruby [2.1.1 (2020-06-04)]
159
+ #### mruby [2.1.2 (2020-08-06)]
160
160
 
161
161
  ```
162
162
  test.rb:8: undefined method 'test_func' (NoMethodError)
@@ -178,7 +178,7 @@ defined?(Foo)
178
178
  nil
179
179
  ```
180
180
 
181
- #### mruby [2.1.1 (2020-06-04)]
181
+ #### mruby [2.1.2 (2020-08-06)]
182
182
 
183
183
  `NameError` is raised.
184
184
 
@@ -195,7 +195,7 @@ alias $a $__a__
195
195
 
196
196
  ` nil `
197
197
 
198
- #### mruby [2.1.1 (2020-06-04)]
198
+ #### mruby [2.1.2 (2020-08-06)]
199
199
 
200
200
  Syntax error
201
201
 
@@ -217,7 +217,7 @@ end
217
217
  `ArgumentError` is raised.
218
218
  The re-defined `+` operator does not accept any arguments.
219
219
 
220
- #### mruby [2.1.1 (2020-06-04)]
220
+ #### mruby [2.1.2 (2020-08-06)]
221
221
 
222
222
  ` 'ab' `
223
223
  Behavior of the operator wasn't changed.
@@ -233,7 +233,7 @@ $ ruby -e 'puts Proc.new {}.binding'
233
233
  #<Binding:0x00000e9deabb9950>
234
234
  ```
235
235
 
236
- #### mruby [2.1.1 (2020-06-04)]
236
+ #### mruby [2.1.2 (2020-08-06)]
237
237
 
238
238
  ```
239
239
  $ ./bin/mruby -e 'puts Proc.new {}.binding'
@@ -255,7 +255,7 @@ $ ruby -e 'def m(*r,**k) p [r,k] end; m("a"=>1,:b=>2)'
255
255
  [[{"a"=>1}], {:b=>2}]
256
256
  ```
257
257
 
258
- #### mruby [mruby 2.1.1]
258
+ #### mruby [mruby 2.1.2]
259
259
 
260
260
  ```
261
261
  $ ./bin/mruby -e 'def m(*r,**k) p [r,k] end; m("a"=>1,:b=>2)'
@@ -959,8 +959,21 @@ mrb_get_mid(mrb_state *mrb) /* get method symbol */
959
959
  */
960
960
  MRB_API mrb_int mrb_get_argc(mrb_state *mrb);
961
961
 
962
+ /**
963
+ * Retrieve an array of arguments from mrb_state.
964
+ *
965
+ * Correctly handles *splat arguments.
966
+ */
962
967
  MRB_API mrb_value* mrb_get_argv(mrb_state *mrb);
963
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
+
964
977
  /* `strlen` for character string literals (use with caution or `strlen` instead)
965
978
  Adjacent string literals are concatenated in C/C++ in translation phase 6.
966
979
  If `lit` is not one, the compiler will report a syntax error:
@@ -137,7 +137,6 @@ MRB_API mrb_value mrb_word_boxing_float_pool(struct mrb_state*, mrb_float);
137
137
  #define mrb_sclass_p(o) BOXWORD_OBJ_TYPE_P(o, SCLASS)
138
138
  #define mrb_proc_p(o) BOXWORD_OBJ_TYPE_P(o, PROC)
139
139
  #define mrb_range_p(o) BOXWORD_OBJ_TYPE_P(o, RANGE)
140
- #define mrb_file_p(o) BOXWORD_OBJ_TYPE_P(o, FILE)
141
140
  #define mrb_env_p(o) BOXWORD_OBJ_TYPE_P(o, ENV)
142
141
  #define mrb_data_p(o) BOXWORD_OBJ_TYPE_P(o, DATA)
143
142
  #define mrb_fiber_p(o) BOXWORD_OBJ_TYPE_P(o, FIBER)
@@ -22,14 +22,19 @@ struct REnv {
22
22
  mrb_sym mid;
23
23
  };
24
24
 
25
- /* flags (21bits): 1(shared flag):10(cioff/bidx):10(stack_len) */
26
- #define MRB_ENV_SET_STACK_LEN(e,len) ((e)->flags = (((e)->flags & ~0x3ff)|((unsigned int)(len) & 0x3ff)))
27
- #define MRB_ENV_STACK_LEN(e) ((mrb_int)((e)->flags & 0x3ff))
28
- #define MRB_ENV_STACK_UNSHARED (1<<20)
29
- #define MRB_ENV_UNSHARE_STACK(e) ((e)->flags |= MRB_ENV_STACK_UNSHARED)
30
- #define MRB_ENV_STACK_SHARED_P(e) (((e)->flags & MRB_ENV_STACK_UNSHARED) == 0)
31
- #define MRB_ENV_BIDX(e) (((e)->flags >> 10) & 0x3ff)
32
- #define MRB_ENV_SET_BIDX(e,idx) ((e)->flags = (((e)->flags & ~(0x3ff<<10))|((unsigned int)(idx) & 0x3ff)<<10))
25
+ /* flags (21bits): 1(close):1(touched):1(heap):8(cioff/bidx):8(stack_len) */
26
+ #define MRB_ENV_SET_LEN(e,len) ((e)->flags = (((e)->flags & ~0xff)|((unsigned int)(len) & 0xff)))
27
+ #define MRB_ENV_LEN(e) ((mrb_int)((e)->flags & 0xff))
28
+ #define MRB_ENV_CLOSED (1<<20)
29
+ #define MRB_ENV_TOUCHED (1<<19)
30
+ #define MRB_ENV_HEAPED (1<<18)
31
+ #define MRB_ENV_CLOSE(e) ((e)->flags |= MRB_ENV_CLOSED)
32
+ #define MRB_ENV_TOUCH(e) ((e)->flags |= MRB_ENV_TOUCHED)
33
+ #define MRB_ENV_HEAP(e) ((e)->flags |= MRB_ENV_HEAPED)
34
+ #define MRB_ENV_HEAP_P(e) ((e)->flags & MRB_ENV_HEAPED)
35
+ #define MRB_ENV_ONSTACK_P(e) (((e)->flags & MRB_ENV_CLOSED) == 0)
36
+ #define MRB_ENV_BIDX(e) (((e)->flags >> 8) & 0xff)
37
+ #define MRB_ENV_SET_BIDX(e,idx) ((e)->flags = (((e)->flags & ~(0xff<<8))|((unsigned int)(idx) & 0xff)<<8))
33
38
 
34
39
  void mrb_env_unshare(mrb_state*, struct REnv*);
35
40
 
@@ -103,32 +103,31 @@ static const unsigned int IEEE754_INFINITY_BITS_SINGLE = 0x7F800000;
103
103
  #endif
104
104
 
105
105
  enum mrb_vtype {
106
- MRB_TT_FALSE = 0, /* 0 */
107
- MRB_TT_TRUE, /* 1 */
108
- MRB_TT_FLOAT, /* 2 */
109
- MRB_TT_FIXNUM, /* 3 */
110
- MRB_TT_SYMBOL, /* 4 */
111
- MRB_TT_UNDEF, /* 5 */
112
- MRB_TT_CPTR, /* 6 */
113
- MRB_TT_FREE, /* 7 */
114
- MRB_TT_OBJECT, /* 8 */
115
- MRB_TT_CLASS, /* 9 */
116
- MRB_TT_MODULE, /* 10 */
117
- MRB_TT_ICLASS, /* 11 */
118
- MRB_TT_SCLASS, /* 12 */
119
- MRB_TT_PROC, /* 13 */
120
- MRB_TT_ARRAY, /* 14 */
121
- MRB_TT_HASH, /* 15 */
122
- MRB_TT_STRING, /* 16 */
123
- MRB_TT_RANGE, /* 17 */
124
- MRB_TT_EXCEPTION, /* 18 */
125
- MRB_TT_FILE, /* 19 */
126
- MRB_TT_ENV, /* 20 */
127
- MRB_TT_DATA, /* 21 */
128
- MRB_TT_FIBER, /* 22 */
129
- MRB_TT_ISTRUCT, /* 23 */
130
- MRB_TT_BREAK, /* 24 */
131
- MRB_TT_MAXDEFINE /* 25 */
106
+ MRB_TT_FALSE = 0,
107
+ MRB_TT_TRUE,
108
+ MRB_TT_FLOAT,
109
+ MRB_TT_FIXNUM,
110
+ MRB_TT_SYMBOL,
111
+ MRB_TT_UNDEF,
112
+ MRB_TT_CPTR,
113
+ MRB_TT_FREE,
114
+ MRB_TT_OBJECT,
115
+ MRB_TT_CLASS,
116
+ MRB_TT_MODULE,
117
+ MRB_TT_ICLASS,
118
+ MRB_TT_SCLASS,
119
+ MRB_TT_PROC,
120
+ MRB_TT_ARRAY,
121
+ MRB_TT_HASH,
122
+ MRB_TT_STRING,
123
+ MRB_TT_RANGE,
124
+ MRB_TT_EXCEPTION,
125
+ MRB_TT_ENV,
126
+ MRB_TT_DATA,
127
+ MRB_TT_FIBER,
128
+ MRB_TT_ISTRUCT,
129
+ MRB_TT_BREAK,
130
+ MRB_TT_MAXDEFINE
132
131
  };
133
132
 
134
133
  #include <mruby/object.h>
@@ -240,9 +239,6 @@ struct RCptr {
240
239
  #ifndef mrb_range_p
241
240
  #define mrb_range_p(o) (mrb_type(o) == MRB_TT_RANGE)
242
241
  #endif
243
- #ifndef mrb_file_p
244
- #define mrb_file_p(o) (mrb_type(o) == MRB_TT_FILE)
245
- #endif
246
242
  #ifndef mrb_env_p
247
243
  #define mrb_env_p(o) (mrb_type(o) == MRB_TT_ENV)
248
244
  #endif
@@ -47,7 +47,7 @@ MRB_BEGIN_DECL
47
47
  /*
48
48
  * Tiny release version number.
49
49
  */
50
- #define MRUBY_RELEASE_TEENY 1
50
+ #define MRUBY_RELEASE_TEENY 2
51
51
 
52
52
  /*
53
53
  * The mruby version.
@@ -67,12 +67,12 @@ MRB_BEGIN_DECL
67
67
  /*
68
68
  * Release month.
69
69
  */
70
- #define MRUBY_RELEASE_MONTH 6
70
+ #define MRUBY_RELEASE_MONTH 8
71
71
 
72
72
  /*
73
73
  * Release day.
74
74
  */
75
- #define MRUBY_RELEASE_DAY 4
75
+ #define MRUBY_RELEASE_DAY 6
76
76
 
77
77
  /*
78
78
  * Release date as a string.
@@ -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) {
@@ -649,8 +649,8 @@ main(int argc, char **argv)
649
649
  /* adjust stack length of toplevel environment */
650
650
  if (mrb->c->cibase->env) {
651
651
  struct REnv *e = mrb->c->cibase->env;
652
- if (e && MRB_ENV_STACK_LEN(e) < proc->body.irep->nlocals) {
653
- 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);
654
654
  }
655
655
  }
656
656
  /* pass a proc for evaluation */
@@ -52,19 +52,26 @@ usage(const char *name)
52
52
  static char *
53
53
  get_outfilename(mrb_state *mrb, char *infile, const char *ext)
54
54
  {
55
- size_t infilelen;
56
- size_t extlen;
55
+ size_t ilen, flen, elen;
57
56
  char *outfile;
58
- char *p;
57
+ char *p = NULL;
59
58
 
60
- infilelen = strlen(infile);
61
- extlen = strlen(ext);
62
- outfile = (char*)mrb_malloc(mrb, infilelen + extlen + 1);
63
- memcpy(outfile, infile, infilelen + 1);
59
+ ilen = strlen(infile);
60
+ flen = ilen;
64
61
  if (*ext) {
65
- if ((p = strrchr(outfile, '.')) == NULL)
66
- p = outfile + infilelen;
67
- 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);
68
75
  }
69
76
 
70
77
  return outfile;
@@ -107,7 +107,7 @@ def to_r
107
107
  [Fixnum, Float].each do |cls|
108
108
  [:+, :-, :*, :/, :==].each do |op|
109
109
  cls.instance_eval do
110
- original_operator_name = "__original_operator_#{op}_complex"
110
+ original_operator_name = :"__original_operator_#{op}_complex"
111
111
  alias_method original_operator_name, op
112
112
  define_method op do |rhs|
113
113
  if rhs.is_a? Complex
@@ -174,7 +174,7 @@ div_pair(struct float_pair *q, struct float_pair const *a,
174
174
  static mrb_value
175
175
  complex_div(mrb_state *mrb, mrb_value self)
176
176
  {
177
- mrb_value rhs;
177
+ mrb_value rhs = mrb_get_arg1(mrb);
178
178
  struct mrb_complex *a, *b;
179
179
  struct float_pair ar, ai, br, bi;
180
180
  struct float_pair br2, bi2;
@@ -183,7 +183,6 @@ complex_div(mrb_state *mrb, mrb_value self)
183
183
  struct float_pair ai_br, ar_bi;
184
184
  struct float_pair zr, zi;
185
185
 
186
- mrb_get_args(mrb, "o", &rhs);
187
186
  a = complex_ptr(mrb, self);
188
187
  b = complex_ptr(mrb, rhs);
189
188
 
@@ -88,7 +88,7 @@ create_proc_from_string(mrb_state *mrb, char *s, mrb_int len, mrb_value binding,
88
88
  e->mid = ci->mid;
89
89
  e->stack = ci[1].stackent;
90
90
  e->cxt = mrb->c;
91
- MRB_ENV_SET_STACK_LEN(e, ci->proc->body.irep->nlocals);
91
+ MRB_ENV_SET_LEN(e, ci->proc->body.irep->nlocals);
92
92
  bidx = ci->argc;
93
93
  if (ci->argc < 0) bidx = 2;
94
94
  else bidx += 1;
@@ -291,8 +291,7 @@ mrb_fiber_alive_p(mrb_state *mrb, mrb_value self)
291
291
  static mrb_value
292
292
  fiber_eq(mrb_state *mrb, mrb_value self)
293
293
  {
294
- mrb_value other;
295
- mrb_get_args(mrb, "o", &other);
294
+ mrb_value other = mrb_get_arg1(mrb);
296
295
 
297
296
  if (!mrb_fiber_p(other)) {
298
297
  return mrb_false_value();
@@ -8,8 +8,7 @@ istruct_test_initialize(mrb_state *mrb, mrb_value self)
8
8
  {
9
9
  char *string = (char*)mrb_istruct_ptr(self);
10
10
  mrb_int size = mrb_istruct_size();
11
- mrb_value object;
12
- mrb_get_args(mrb, "o", &object);
11
+ mrb_value object = mrb_get_arg1(mrb);
13
12
 
14
13
  if (mrb_fixnum_p(object)) {
15
14
  strncpy(string, "fixnum", size-1);
@@ -45,8 +44,8 @@ istruct_test_length(mrb_state *mrb, mrb_value self)
45
44
  static mrb_value
46
45
  istruct_test_test_receive(mrb_state *mrb, mrb_value self)
47
46
  {
48
- mrb_value object;
49
- mrb_get_args(mrb, "o", &object);
47
+ mrb_value object = mrb_get_arg1(mrb);
48
+
50
49
  if (mrb_obj_class(mrb, object) != mrb_class_get(mrb, "InlineStructTest"))
51
50
  {
52
51
  mrb_raise(mrb, E_TYPE_ERROR, "Expected InlineStructTest");
@@ -492,10 +492,9 @@ mrb_file_truncate(mrb_state *mrb, mrb_value self)
492
492
  {
493
493
  int fd;
494
494
  mrb_int length;
495
- mrb_value lenv;
495
+ mrb_value lenv = mrb_get_arg1(mrb);
496
496
 
497
497
  fd = mrb_io_fileno(mrb, self);
498
- mrb_get_args(mrb, "o", &lenv);
499
498
  length = mrb_int(mrb, lenv);
500
499
  if (mrb_ftruncate(fd, length) != 0) {
501
500
  mrb_raise(mrb, E_IO_ERROR, "ftruncate failed");
@@ -93,9 +93,7 @@ mrb_filetest_s_directory_p(mrb_state *mrb, mrb_value klass)
93
93
  #endif
94
94
 
95
95
  struct stat st;
96
- mrb_value obj;
97
-
98
- mrb_get_args(mrb, "o", &obj);
96
+ mrb_value obj = mrb_get_arg1(mrb);
99
97
 
100
98
  if (mrb_stat(mrb, obj, &st) < 0)
101
99
  return mrb_false_value();
@@ -124,9 +122,7 @@ mrb_filetest_s_pipe_p(mrb_state *mrb, mrb_value klass)
124
122
  # endif
125
123
 
126
124
  struct stat st;
127
- mrb_value obj;
128
-
129
- mrb_get_args(mrb, "o", &obj);
125
+ mrb_value obj = mrb_get_arg1(mrb);
130
126
 
131
127
  if (mrb_stat(mrb, obj, &st) < 0)
132
128
  return mrb_false_value();
@@ -167,9 +163,7 @@ mrb_filetest_s_symlink_p(mrb_state *mrb, mrb_value klass)
167
163
 
168
164
  #ifdef S_ISLNK
169
165
  struct stat st;
170
- mrb_value obj;
171
-
172
- mrb_get_args(mrb, "o", &obj);
166
+ mrb_value obj = mrb_get_arg1(mrb);
173
167
 
174
168
  if (mrb_lstat(mrb, obj, &st) == -1)
175
169
  return mrb_false_value();
@@ -210,9 +204,7 @@ mrb_filetest_s_socket_p(mrb_state *mrb, mrb_value klass)
210
204
 
211
205
  #ifdef S_ISSOCK
212
206
  struct stat st;
213
- mrb_value obj;
214
-
215
- mrb_get_args(mrb, "o", &obj);
207
+ mrb_value obj = mrb_get_arg1(mrb);
216
208
 
217
209
  if (mrb_stat(mrb, obj, &st) < 0)
218
210
  return mrb_false_value();
@@ -236,9 +228,8 @@ static mrb_value
236
228
  mrb_filetest_s_exist_p(mrb_state *mrb, mrb_value klass)
237
229
  {
238
230
  struct stat st;
239
- mrb_value obj;
231
+ mrb_value obj = mrb_get_arg1(mrb);
240
232
 
241
- mrb_get_args(mrb, "o", &obj);
242
233
  if (mrb_stat(mrb, obj, &st) < 0)
243
234
  return mrb_false_value();
244
235
 
@@ -261,9 +252,7 @@ mrb_filetest_s_file_p(mrb_state *mrb, mrb_value klass)
261
252
  #endif
262
253
 
263
254
  struct stat st;
264
- mrb_value obj;
265
-
266
- mrb_get_args(mrb, "o", &obj);
255
+ mrb_value obj = mrb_get_arg1(mrb);
267
256
 
268
257
  if (mrb_stat(mrb, obj, &st) < 0)
269
258
  return mrb_false_value();
@@ -285,9 +274,7 @@ static mrb_value
285
274
  mrb_filetest_s_zero_p(mrb_state *mrb, mrb_value klass)
286
275
  {
287
276
  struct stat st;
288
- mrb_value obj;
289
-
290
- mrb_get_args(mrb, "o", &obj);
277
+ mrb_value obj = mrb_get_arg1(mrb);
291
278
 
292
279
  if (mrb_stat(mrb, obj, &st) < 0)
293
280
  return mrb_false_value();
@@ -310,9 +297,7 @@ static mrb_value
310
297
  mrb_filetest_s_size(mrb_state *mrb, mrb_value klass)
311
298
  {
312
299
  struct stat st;
313
- mrb_value obj;
314
-
315
- mrb_get_args(mrb, "o", &obj);
300
+ mrb_value obj = mrb_get_arg1(mrb);
316
301
 
317
302
  if (mrb_stat(mrb, obj, &st) < 0)
318
303
  mrb_sys_fail(mrb, "mrb_stat");
@@ -332,9 +317,7 @@ static mrb_value
332
317
  mrb_filetest_s_size_p(mrb_state *mrb, mrb_value klass)
333
318
  {
334
319
  struct stat st;
335
- mrb_value obj;
336
-
337
- mrb_get_args(mrb, "o", &obj);
320
+ mrb_value obj = mrb_get_arg1(mrb);
338
321
 
339
322
  if (mrb_stat(mrb, obj, &st) < 0)
340
323
  return mrb_nil_value();