debase-ruby_core_source 4.0.1 → 4.1.0.preview1

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 (200) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/addr2line.h +22 -0
  4. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/builtin.h +127 -0
  5. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/build_assert/build_assert.h +40 -0
  6. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/check_type/check_type.h +63 -0
  7. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/container_of/container_of.h +142 -0
  8. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/list/list.h +791 -0
  9. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/str/str.h +17 -0
  10. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/constant.h +53 -0
  11. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/darray.h +295 -0
  12. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/debug_counter.h +428 -0
  13. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/dln.h +33 -0
  14. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/encindex.h +70 -0
  15. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/eval_intern.h +356 -0
  16. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/hrtime.h +237 -0
  17. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/id.h +365 -0
  18. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/id_table.h +74 -0
  19. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/insns.inc +315 -0
  20. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/insns_info.inc +11637 -0
  21. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/array.h +158 -0
  22. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/basic_operators.h +67 -0
  23. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/bignum.h +249 -0
  24. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/bits.h +647 -0
  25. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/box.h +103 -0
  26. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/class.h +797 -0
  27. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/cmdlineopt.h +64 -0
  28. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/compar.h +30 -0
  29. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/compile.h +34 -0
  30. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/compilers.h +104 -0
  31. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/complex.h +29 -0
  32. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/concurrent_set.h +21 -0
  33. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/cont.h +33 -0
  34. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/coverage.h +51 -0
  35. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/dir.h +16 -0
  36. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/enc.h +19 -0
  37. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/encoding.h +40 -0
  38. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/enum.h +18 -0
  39. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/enumerator.h +21 -0
  40. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/error.h +287 -0
  41. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/eval.h +43 -0
  42. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/file.h +40 -0
  43. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/fixnum.h +185 -0
  44. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/gc.h +411 -0
  45. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/hash.h +220 -0
  46. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/imemo.h +302 -0
  47. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/inits.h +54 -0
  48. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/io.h +167 -0
  49. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/io_buffer.h +36 -0
  50. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/jit.h +23 -0
  51. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/load.h +20 -0
  52. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/loadpath.h +16 -0
  53. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/marshal.h +17 -0
  54. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/math.h +23 -0
  55. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/missing.h +19 -0
  56. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/numeric.h +326 -0
  57. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/object.h +88 -0
  58. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/objspace.h +24 -0
  59. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/parse.h +131 -0
  60. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/proc.h +34 -0
  61. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/process.h +124 -0
  62. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/ractor.h +9 -0
  63. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/random.h +17 -0
  64. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/range.h +46 -0
  65. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/rational.h +92 -0
  66. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/re.h +87 -0
  67. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/ruby_parser.h +109 -0
  68. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/sanitizers.h +346 -0
  69. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/scheduler.h +7 -0
  70. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/serial.h +23 -0
  71. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/set.h +20 -0
  72. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/set_table.h +77 -0
  73. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/signal.h +25 -0
  74. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/simd.h +18 -0
  75. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/st.h +32 -0
  76. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/static_assert.h +16 -0
  77. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/string.h +240 -0
  78. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/struct.h +120 -0
  79. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/symbol.h +46 -0
  80. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/thread.h +108 -0
  81. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/time.h +34 -0
  82. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/transcode.h +23 -0
  83. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/util.h +27 -0
  84. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/variable.h +81 -0
  85. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/vm.h +144 -0
  86. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/vm_map.h +95 -0
  87. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/warnings.h +16 -0
  88. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal.h +106 -0
  89. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/iseq.h +439 -0
  90. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/known_errors.inc +1419 -0
  91. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/method.h +279 -0
  92. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/node.h +122 -0
  93. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/node_name.inc +224 -0
  94. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/optinsn.inc +128 -0
  95. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/optunifs.inc +41 -0
  96. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parse.h +246 -0
  97. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parser_bits.h +647 -0
  98. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parser_node.h +32 -0
  99. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parser_st.h +161 -0
  100. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parser_value.h +116 -0
  101. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/arena.h +37 -0
  102. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/ast.h +10371 -0
  103. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/buffer.h +52 -0
  104. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/comments.h +43 -0
  105. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/accel.h +19 -0
  106. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/align.h +36 -0
  107. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/assume.h +25 -0
  108. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/exported.h +24 -0
  109. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/fallthrough.h +22 -0
  110. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/filesystem.h +32 -0
  111. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/flex_array.h +19 -0
  112. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/force_inline.h +21 -0
  113. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/format.h +25 -0
  114. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/inline.h +17 -0
  115. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/nodiscard.h +22 -0
  116. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/nonnull.h +18 -0
  117. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/unused.h +18 -0
  118. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/constant_pool.h +81 -0
  119. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/diagnostic.h +93 -0
  120. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/errors_format.h +53 -0
  121. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/excludes.h +29 -0
  122. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/extension.h +19 -0
  123. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/integer.h +41 -0
  124. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/allocator.h +68 -0
  125. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/allocator_debug.h +88 -0
  126. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/arena.h +108 -0
  127. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/bit.h +42 -0
  128. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/buffer.h +91 -0
  129. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/char.h +139 -0
  130. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/comments.h +20 -0
  131. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/constant_pool.h +152 -0
  132. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/diagnostic.h +389 -0
  133. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/encoding.h +242 -0
  134. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/integer.h +68 -0
  135. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/isinf.h +16 -0
  136. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/line_offset_list.h +34 -0
  137. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/list.h +62 -0
  138. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/magic_comments.h +23 -0
  139. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/memchr.h +15 -0
  140. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/node.h +32 -0
  141. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/options.h +224 -0
  142. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/parser.h +971 -0
  143. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/regexp.h +42 -0
  144. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/serialize.h +39 -0
  145. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/source.h +72 -0
  146. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/static_literals.h +100 -0
  147. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/stringy.h +35 -0
  148. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/strncasecmp.h +18 -0
  149. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/strpbrk.h +33 -0
  150. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/tokens.h +11 -0
  151. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/json.h +32 -0
  152. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/line_offset_list.h +61 -0
  153. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/magic_comments.h +35 -0
  154. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/node.h +94 -0
  155. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/options.h +335 -0
  156. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/parser.h +348 -0
  157. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/prettyprint.h +31 -0
  158. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/prism.h +131 -0
  159. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/serialize.h +115 -0
  160. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/source.h +155 -0
  161. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/stream.h +28 -0
  162. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/string_query.h +63 -0
  163. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/stringy.h +72 -0
  164. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/version.h +38 -0
  165. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism_compile.h +204 -0
  166. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism_xallocator.h +6 -0
  167. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/probes_helper.h +42 -0
  168. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ractor_core.h +421 -0
  169. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/regenc.h +261 -0
  170. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/regint.h +983 -0
  171. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/regparse.h +371 -0
  172. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/revision.h +5 -0
  173. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ruby_assert.h +14 -0
  174. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ruby_atomic.h +115 -0
  175. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/rubyparser.h +1389 -0
  176. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/shape.h +733 -0
  177. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/siphash.h +48 -0
  178. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/symbol.h +116 -0
  179. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/thread_none.h +25 -0
  180. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/thread_pthread.h +63 -0
  181. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/thread_sched.h +271 -0
  182. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/thread_win32.h +48 -0
  183. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/timev.h +58 -0
  184. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/transcode_data.h +138 -0
  185. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/variable.h +26 -0
  186. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/version.h +69 -0
  187. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm.inc +6457 -0
  188. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_call_iseq_optimized.inc +244 -0
  189. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_callinfo.h +688 -0
  190. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_core.h +2509 -0
  191. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_debug.h +124 -0
  192. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_exec.h +202 -0
  193. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_insnhelper.h +280 -0
  194. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_opts.h +65 -0
  195. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_sync.h +160 -0
  196. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vmtc.inc +302 -0
  197. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/yjit.h +87 -0
  198. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/zjit.h +221 -0
  199. data/lib/debase/ruby_core_source/version.rb +1 -1
  200. metadata +2930 -2724
@@ -0,0 +1,124 @@
1
+ #ifndef INTERNAL_PROCESS_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_PROCESS_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for Process.
10
+ */
11
+ #include "ruby/internal/config.h" /* for rb_pid_t */
12
+ #include <stddef.h> /* for size_t */
13
+
14
+ #ifdef HAVE_SYS_TYPES_H
15
+ # include <sys/types.h> /* for mode_t */
16
+ #endif
17
+
18
+ #ifdef _WIN32
19
+ # include "ruby/win32.h" /* for mode_t */
20
+ #endif
21
+
22
+ #include "ruby/ruby.h" /* for VALUE */
23
+ #include "internal/compilers.h" /* for __has_warning */
24
+ #include "internal/imemo.h" /* for RB_IMEMO_TMPBUF_PTR */
25
+
26
+ #define RB_MAX_GROUPS (65536)
27
+
28
+ struct waitpid_state;
29
+ struct rb_process_status;
30
+ struct rb_execarg {
31
+ union {
32
+ struct {
33
+ VALUE shell_script;
34
+ } sh;
35
+ struct {
36
+ VALUE command_name;
37
+ VALUE command_abspath; /* full path string or nil */
38
+ VALUE argv_str;
39
+ VALUE argv_buf;
40
+ } cmd;
41
+ } invoke;
42
+ VALUE redirect_fds;
43
+ VALUE envp_str;
44
+ VALUE envp_buf;
45
+ VALUE dup2_tmpbuf;
46
+ unsigned use_shell : 1;
47
+ unsigned pgroup_given : 1;
48
+ unsigned umask_given : 1;
49
+ unsigned unsetenv_others_given : 1;
50
+ unsigned unsetenv_others_do : 1;
51
+ unsigned close_others_given : 1;
52
+ unsigned close_others_do : 1;
53
+ unsigned chdir_given : 1;
54
+ unsigned new_pgroup_given : 1;
55
+ unsigned new_pgroup_flag : 1;
56
+ unsigned uid_given : 1;
57
+ unsigned gid_given : 1;
58
+ unsigned exception : 1;
59
+ unsigned exception_given : 1;
60
+ struct rb_process_status *status;
61
+ struct waitpid_state *waitpid_state; /* for async process management */
62
+ rb_pid_t pgroup_pgid; /* asis(-1), new pgroup(0), specified pgroup (0<V). */
63
+ VALUE rlimit_limits; /* Qfalse or [[rtype, softlim, hardlim], ...] */
64
+ mode_t umask_mask;
65
+ rb_uid_t uid;
66
+ rb_gid_t gid;
67
+ int close_others_maxhint;
68
+ VALUE fd_dup2;
69
+ VALUE fd_close;
70
+ VALUE fd_open;
71
+ VALUE fd_dup2_child;
72
+ VALUE env_modification; /* Qfalse or [[k1,v1], ...] */
73
+ VALUE path_env;
74
+ VALUE chdir_dir;
75
+ };
76
+
77
+ /* process.c */
78
+ rb_pid_t rb_call_proc__fork(void);
79
+ void rb_last_status_clear(void);
80
+ static inline char **ARGVSTR2ARGV(VALUE argv_str);
81
+ static inline size_t ARGVSTR2ARGC(VALUE argv_str);
82
+
83
+ #ifdef HAVE_PWD_H
84
+ VALUE rb_getlogin(void);
85
+ VALUE rb_getpwdirnam_for_login(VALUE login); /* read as: "get pwd db home dir by username for login" */
86
+ VALUE rb_getpwdiruid(void); /* read as: "get pwd db home dir for getuid()" */
87
+ #endif
88
+
89
+ RUBY_SYMBOL_EXPORT_BEGIN
90
+ /* process.c (export) */
91
+ int rb_exec_async_signal_safe(const struct rb_execarg *e, char *errmsg, size_t errmsg_buflen);
92
+ rb_pid_t rb_fork_async_signal_safe(int *status, int (*chfunc)(void*, char *, size_t), void *charg, VALUE fds, char *errmsg, size_t errmsg_buflen);
93
+ VALUE rb_execarg_new(int argc, const VALUE *argv, int accept_shell, int allow_exc_opt);
94
+ struct rb_execarg *rb_execarg_get(VALUE execarg_obj); /* dangerous. needs GC guard. */
95
+ int rb_execarg_addopt(VALUE execarg_obj, VALUE key, VALUE val);
96
+ void rb_execarg_parent_start(VALUE execarg_obj);
97
+ void rb_execarg_parent_end(VALUE execarg_obj);
98
+ int rb_execarg_run_options(const struct rb_execarg *e, struct rb_execarg *s, char* errmsg, size_t errmsg_buflen);
99
+ VALUE rb_execarg_extract_options(VALUE execarg_obj, VALUE opthash);
100
+ void rb_execarg_setenv(VALUE execarg_obj, VALUE env);
101
+ RUBY_SYMBOL_EXPORT_END
102
+
103
+ /* argv_str contains extra two elements.
104
+ * The beginning one is for /bin/sh used by exec_with_sh.
105
+ * The last one for terminating NULL used by execve.
106
+ * See rb_exec_fillarg() in process.c. */
107
+ static inline char **
108
+ ARGVSTR2ARGV(VALUE argv_str)
109
+ {
110
+ char **buf = RB_IMEMO_TMPBUF_PTR(argv_str);
111
+ return &buf[1];
112
+ }
113
+
114
+ static inline size_t
115
+ ARGVSTR2ARGC(VALUE argv_str)
116
+ {
117
+ size_t i = 0;
118
+ char *const *p = ARGVSTR2ARGV(argv_str);
119
+ while (p[i++])
120
+ ;
121
+ return i - 1;
122
+ }
123
+
124
+ #endif /* INTERNAL_PROCESS_H */
@@ -0,0 +1,9 @@
1
+ #ifndef INTERNAL_RACTOR_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_RACTOR_H
3
+
4
+ void rb_ractor_ensure_main_ractor(const char *msg);
5
+
6
+ RUBY_SYMBOL_EXPORT_BEGIN
7
+ RUBY_SYMBOL_EXPORT_END
8
+
9
+ #endif /* INTERNAL_RACTOR_H */
@@ -0,0 +1,17 @@
1
+ #ifndef INTERNAL_RANDOM_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_RANDOM_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for Random.
10
+ */
11
+ #include <stddef.h> /* for size_t */
12
+
13
+ /* random.c */
14
+ int ruby_fill_random_bytes(void *, size_t, int);
15
+ void rb_free_default_rand_key(void);
16
+
17
+ #endif /* INTERNAL_RANDOM_H */
@@ -0,0 +1,46 @@
1
+ #ifndef INTERNAL_RANGE_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_RANGE_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for Range.
10
+ */
11
+ #include "internal/struct.h" /* for RSTRUCT */
12
+
13
+ #define RANGE_FL_INIT FL_USER18
14
+ #define RANGE_FL_EXCL FL_USER19
15
+
16
+ /* range.c */
17
+ static inline VALUE RANGE_BEG(VALUE r);
18
+ static inline VALUE RANGE_END(VALUE r);
19
+ static inline VALUE RANGE_EXCL(VALUE r);
20
+
21
+ static inline VALUE
22
+ RANGE_BEG(VALUE r)
23
+ {
24
+ return RSTRUCT_GET_RAW(r, 0);
25
+ }
26
+
27
+ static inline VALUE
28
+ RANGE_END(VALUE r)
29
+ {
30
+ return RSTRUCT_GET_RAW(r, 1);
31
+ }
32
+
33
+ static inline VALUE
34
+ RANGE_EXCL(VALUE r)
35
+ {
36
+ if (FL_TEST_RAW(r, RANGE_FL_INIT)) {
37
+ return RBOOL(FL_TEST_RAW(r, RANGE_FL_EXCL));
38
+ }
39
+ return Qnil;
40
+ }
41
+
42
+ VALUE
43
+ rb_range_component_beg_len(VALUE b, VALUE e, int excl,
44
+ rb_len_t *begp, rb_len_t *lenp, rb_len_t len, int err);
45
+
46
+ #endif /* INTERNAL_RANGE_H */
@@ -0,0 +1,92 @@
1
+ #ifndef INTERNAL_RATIONAL_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_RATIONAL_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for Rational.
10
+ */
11
+ #include "ruby/internal/config.h" /* for HAVE_LIBGMP */
12
+ #include "ruby/ruby.h" /* for struct RBasic */
13
+ #include "internal/numeric.h" /* for INT_POSITIVE_P */
14
+ #include "ruby_assert.h" /* for assert */
15
+
16
+ struct RRational {
17
+ struct RBasic basic;
18
+ VALUE num;
19
+ VALUE den;
20
+ };
21
+
22
+ #define RRATIONAL(obj) ((struct RRational *)(obj))
23
+
24
+ /* rational.c */
25
+ VALUE rb_rational_canonicalize(VALUE x);
26
+ VALUE rb_rational_uminus(VALUE self);
27
+ VALUE rb_rational_plus(VALUE self, VALUE other);
28
+ VALUE rb_rational_minus(VALUE self, VALUE other);
29
+ VALUE rb_rational_mul(VALUE self, VALUE other);
30
+ VALUE rb_rational_div(VALUE self, VALUE other);
31
+ VALUE rb_rational_fdiv(VALUE self, VALUE other);
32
+ VALUE rb_lcm(VALUE x, VALUE y);
33
+ VALUE rb_rational_reciprocal(VALUE x);
34
+ VALUE rb_cstr_to_rat(const char *, int);
35
+ VALUE rb_rational_hash(VALUE self);
36
+ VALUE rb_rational_abs(VALUE self);
37
+ VALUE rb_rational_cmp(VALUE self, VALUE other);
38
+ VALUE rb_rational_pow(VALUE self, VALUE other);
39
+ VALUE rb_rational_floor(VALUE self, int ndigits);
40
+ VALUE rb_numeric_quo(VALUE x, VALUE y);
41
+ VALUE rb_flo_round_by_rational(VALUE num, int ndigits, enum ruby_num_rounding_mode mode);
42
+ VALUE rb_flo_ceil_by_rational(VALUE num, int ndigits);
43
+ VALUE rb_flo_floor_by_rational(VALUE num, int ndigits);
44
+ VALUE rb_float_numerator(VALUE x);
45
+ VALUE rb_float_denominator(VALUE x);
46
+
47
+ static inline void RATIONAL_SET_NUM(VALUE r, VALUE n);
48
+ static inline void RATIONAL_SET_DEN(VALUE r, VALUE d);
49
+
50
+ RUBY_SYMBOL_EXPORT_BEGIN
51
+ /* rational.c (export) */
52
+ VALUE rb_gcd(VALUE x, VALUE y);
53
+ VALUE rb_gcd_normal(VALUE self, VALUE other);
54
+ #if defined(HAVE_LIBGMP) && defined(HAVE_GMP_H)
55
+ VALUE rb_gcd_gmp(VALUE x, VALUE y);
56
+ #endif
57
+ RUBY_SYMBOL_EXPORT_END
58
+
59
+ static inline void
60
+ RATIONAL_SET_NUM(VALUE r, VALUE n)
61
+ {
62
+ assert(RB_INTEGER_TYPE_P(n));
63
+ RB_OBJ_WRITE(r, &RRATIONAL(r)->num, n);
64
+ }
65
+
66
+ static inline void
67
+ RATIONAL_SET_DEN(VALUE r, VALUE d)
68
+ {
69
+ assert(RB_INTEGER_TYPE_P(d));
70
+ assert(INT_POSITIVE_P(d));
71
+ RB_OBJ_WRITE(r, &RRATIONAL(r)->den, d);
72
+ }
73
+
74
+ inline static bool
75
+ f_zero_p(VALUE x)
76
+ {
77
+ if (RB_INTEGER_TYPE_P(x)) {
78
+ return FIXNUM_ZERO_P(x);
79
+ }
80
+ else if (RB_FLOAT_TYPE_P(x)) {
81
+ return FLOAT_ZERO_P(x);
82
+ }
83
+ else if (RB_TYPE_P(x, T_RATIONAL)) {
84
+ const VALUE num = RRATIONAL(x)->num;
85
+ return FIXNUM_ZERO_P(num);
86
+ }
87
+ return rb_equal(x, INT2FIX(0)) != 0;
88
+ }
89
+
90
+ #define f_nonzero_p(x) (!f_zero_p(x))
91
+
92
+ #endif /* INTERNAL_RATIONAL_H */
@@ -0,0 +1,87 @@
1
+ #ifndef INTERNAL_RE_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_RE_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for Regexp.
10
+ */
11
+ #include "ruby/internal/stdbool.h" /* for bool */
12
+ #include "ruby/ruby.h" /* for VALUE */
13
+ #include "ruby/re.h" /* for struct RMatch and struct re_registers */
14
+
15
+ #define RREGEXP_INITIALIZED FL_USER5
16
+
17
+ #define RMATCH_ONIG FL_USER1
18
+ #define RMATCH_OFFSETS_EXTERNAL FL_USER2
19
+
20
+ static inline OnigPosition *
21
+ RMATCH_BEG_PTR(VALUE match)
22
+ {
23
+ if (FL_TEST_RAW(match, RMATCH_ONIG)) {
24
+ return RMATCH(match)->as.onig.beg;
25
+ }
26
+ else {
27
+ return &RMATCH(match)->as.embed[0];
28
+ }
29
+ }
30
+
31
+ static inline OnigPosition *
32
+ RMATCH_END_PTR(VALUE match)
33
+ {
34
+ if (FL_TEST_RAW(match, RMATCH_ONIG)) {
35
+ return RMATCH(match)->as.onig.end;
36
+ }
37
+ else {
38
+ return &RMATCH(match)->as.embed[RMATCH(match)->num_regs];
39
+ }
40
+ }
41
+
42
+ static inline rb_len_t
43
+ RMATCH_BEG(VALUE match, int i)
44
+ {
45
+ return RMATCH_BEG_PTR(match)[i];
46
+ }
47
+
48
+ static inline rb_len_t
49
+ RMATCH_END(VALUE match, int i)
50
+ {
51
+ return RMATCH_END_PTR(match)[i];
52
+ }
53
+
54
+ static inline int
55
+ RMATCH_NREGS(VALUE match)
56
+ {
57
+ return RMATCH(match)->num_regs;
58
+ }
59
+
60
+ /* re.c */
61
+ VALUE rb_reg_s_alloc(VALUE klass);
62
+ VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
63
+ VALUE rb_reg_check_preprocess(VALUE);
64
+ rb_len_t rb_reg_search0(VALUE, VALUE, rb_len_t, int, int, VALUE *);
65
+ VALUE rb_reg_match_p(VALUE re, VALUE str, rb_len_t pos);
66
+ VALUE rb_reg_regsub_match(VALUE str, VALUE src, VALUE match);
67
+ VALUE rb_match_init_copy(VALUE copy, VALUE orig);
68
+ /* MatchData transfer for the Ractor courier (ractor.c). */
69
+ void *rb_match_blob_dump(VALUE match, VALUE *regexp_out, VALUE *str_out, int *num_regs_out, bool release_source);
70
+ VALUE rb_match_blob_alloc(VALUE klass, int num_regs);
71
+ void rb_match_blob_load(VALUE match, VALUE regexp, VALUE str, int num_regs, const void *blob);
72
+ void rb_match_blob_free(void *blob);
73
+ bool rb_reg_start_with_p(VALUE re, VALUE str);
74
+ VALUE rb_reg_hash(VALUE re);
75
+ VALUE rb_reg_equal(VALUE re1, VALUE re2);
76
+ VALUE rb_backref_set_string(VALUE string, rb_len_t pos, rb_len_t len);
77
+ void rb_match_unbusy(VALUE);
78
+ int rb_match_count(VALUE match);
79
+ VALUE rb_reg_new_from_values(rb_len_t cnt, const VALUE *elements, int opt);
80
+ VALUE rb_reg_last_defined(VALUE match);
81
+
82
+ #define ARG_REG_OPTION_MASK \
83
+ (ONIG_OPTION_IGNORECASE|ONIG_OPTION_MULTILINE|ONIG_OPTION_EXTEND)
84
+ #define ARG_ENCODING_FIXED 16
85
+ #define ARG_ENCODING_NONE 32
86
+
87
+ #endif /* INTERNAL_RE_H */
@@ -0,0 +1,109 @@
1
+ #ifndef INTERNAL_RUBY_PARSE_H
2
+ #define INTERNAL_RUBY_PARSE_H
3
+
4
+ #include "internal.h"
5
+ #include "internal/bignum.h"
6
+ #include "internal/compilers.h"
7
+ #include "internal/complex.h"
8
+ #include "internal/parse.h"
9
+ #include "internal/rational.h"
10
+ #include "rubyparser.h"
11
+ #include "vm.h"
12
+
13
+ struct lex_pointer_string {
14
+ VALUE str;
15
+ rb_len_t ptr;
16
+ };
17
+
18
+ RUBY_SYMBOL_EXPORT_BEGIN
19
+ #ifdef UNIVERSAL_PARSER
20
+ const rb_parser_config_t *rb_ruby_parser_config(void);
21
+ rb_parser_t *rb_parser_params_new(void);
22
+ #endif
23
+ VALUE rb_parser_set_context(VALUE, const struct rb_iseq_struct *, int);
24
+ VALUE rb_parser_new(void);
25
+ VALUE rb_parser_compile_string_path(VALUE vparser, VALUE fname, VALUE src, int line);
26
+ VALUE rb_str_new_parser_string(rb_parser_string_t *str);
27
+ VALUE rb_str_new_mutable_parser_string(rb_parser_string_t *str);
28
+ rb_parser_string_t *rb_parser_lex_get_str(struct parser_params *p, struct lex_pointer_string *ptr_str);
29
+
30
+ VALUE rb_node_str_string_val(const NODE *);
31
+ VALUE rb_node_sym_string_val(const NODE *);
32
+ VALUE rb_node_dstr_string_val(const NODE *);
33
+ VALUE rb_node_regx_string_val(const NODE *);
34
+ VALUE rb_node_dregx_string_val(const NODE *);
35
+ VALUE rb_node_line_lineno_val(const NODE *);
36
+ VALUE rb_node_file_path_val(const NODE *);
37
+ VALUE rb_node_encoding_val(const NODE *);
38
+
39
+ VALUE rb_node_integer_literal_val(const NODE *);
40
+ VALUE rb_node_float_literal_val(const NODE *);
41
+ VALUE rb_node_rational_literal_val(const NODE *);
42
+ VALUE rb_node_imaginary_literal_val(const NODE *);
43
+
44
+ void rb_source_hash_init(rb_source_hash_state_t *state);
45
+ void rb_source_hash_update(rb_source_hash_state_t *state, const uint8_t *ptr, size_t len);
46
+ uint64_t rb_source_hash_finalize(const rb_source_hash_state_t *state);
47
+ RUBY_SYMBOL_EXPORT_END
48
+
49
+ VALUE rb_parser_end_seen_p(VALUE);
50
+ VALUE rb_parser_encoding(VALUE);
51
+ VALUE rb_parser_set_yydebug(VALUE, VALUE);
52
+ VALUE rb_parser_build_script_lines_from(rb_parser_ary_t *script_lines);
53
+ void rb_parser_set_options(VALUE, int, int, int, int);
54
+ VALUE rb_parser_load_file(VALUE parser, VALUE name);
55
+ void rb_parser_set_script_lines(VALUE vparser);
56
+ void rb_parser_error_tolerant(VALUE vparser);
57
+ void rb_parser_keep_tokens(VALUE vparser);
58
+
59
+ VALUE rb_parser_compile_string(VALUE, const char*, VALUE, int);
60
+ VALUE rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE input, int line);
61
+ VALUE rb_parser_compile_generic(VALUE vparser, rb_parser_lex_gets_func *lex_gets, VALUE fname, VALUE input, int line);
62
+ VALUE rb_parser_compile_array(VALUE vparser, VALUE fname, VALUE array, int start);
63
+ bool rb_ast_node_source_location(VALUE source, VALUE path, int first_lineno,
64
+ int node_id, bool block_iseq, int iseq_node_id,
65
+ rb_code_location_t *location);
66
+
67
+ enum lex_state_bits {
68
+ EXPR_BEG_bit, /* ignore newline, +/- is a sign. */
69
+ EXPR_END_bit, /* newline significant, +/- is an operator. */
70
+ EXPR_ENDARG_bit, /* ditto, and unbound braces. */
71
+ EXPR_ENDFN_bit, /* ditto, and unbound braces. */
72
+ EXPR_ARG_bit, /* newline significant, +/- is an operator. */
73
+ EXPR_CMDARG_bit, /* newline significant, +/- is an operator. */
74
+ EXPR_MID_bit, /* newline significant, +/- is an operator. */
75
+ EXPR_FNAME_bit, /* ignore newline, no reserved words. */
76
+ EXPR_DOT_bit, /* right after `.', `&.' or `::', no reserved words. */
77
+ EXPR_CLASS_bit, /* immediate after `class', no here document. */
78
+ EXPR_LABEL_bit, /* flag bit, label is allowed. */
79
+ EXPR_LABELED_bit, /* flag bit, just after a label. */
80
+ EXPR_FITEM_bit, /* symbol literal as FNAME. */
81
+ EXPR_MAX_STATE
82
+ };
83
+ /* examine combinations */
84
+ enum lex_state_e {
85
+ #define DEF_EXPR(n) EXPR_##n = (1 << EXPR_##n##_bit)
86
+ DEF_EXPR(BEG),
87
+ DEF_EXPR(END),
88
+ DEF_EXPR(ENDARG),
89
+ DEF_EXPR(ENDFN),
90
+ DEF_EXPR(ARG),
91
+ DEF_EXPR(CMDARG),
92
+ DEF_EXPR(MID),
93
+ DEF_EXPR(FNAME),
94
+ DEF_EXPR(DOT),
95
+ DEF_EXPR(CLASS),
96
+ DEF_EXPR(LABEL),
97
+ DEF_EXPR(LABELED),
98
+ DEF_EXPR(FITEM),
99
+ EXPR_VALUE = EXPR_BEG,
100
+ EXPR_BEG_ANY = (EXPR_BEG | EXPR_MID | EXPR_CLASS),
101
+ EXPR_ARG_ANY = (EXPR_ARG | EXPR_CMDARG),
102
+ EXPR_END_ANY = (EXPR_END | EXPR_ENDARG | EXPR_ENDFN),
103
+ EXPR_NONE = 0
104
+ };
105
+
106
+ VALUE rb_ruby_ast_new(const NODE *const root);
107
+ rb_ast_t *rb_ruby_ast_data_get(VALUE ast_value);
108
+
109
+ #endif /* INTERNAL_RUBY_PARSE_H */