datadog-ruby_core_source 3.3.7 → 3.4.1

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 (212) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.datadog.md +9 -0
  3. data/README.md +8 -5
  4. data/datadog-ruby_core_source.gemspec +1 -1
  5. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/id.h +2 -0
  6. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/error.h +26 -0
  7. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/internal/gc.h +1 -0
  8. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/parse.h +2 -1
  9. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/proc.h +1 -0
  10. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/internal/sanitizers.h +24 -36
  11. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/prism/ast.h +10 -0
  12. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/extension.h +1 -1
  13. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/prism/version.h +2 -2
  14. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/ractor_core.h +1 -0
  15. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/rubyparser.h +3 -1
  16. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/id.h +5 -0
  17. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/internal/basic_operators.h +1 -0
  18. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/internal/bits.h +82 -0
  19. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/cmdlineopt.h +0 -4
  20. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/internal/encoding.h +2 -0
  21. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/error.h +26 -0
  22. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/internal/fixnum.h +1 -0
  23. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/internal/gc.h +20 -9
  24. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/hash.h +1 -0
  25. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/internal/imemo.h +9 -13
  26. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/internal/io.h +2 -2
  27. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/parse.h +4 -2
  28. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/proc.h +1 -1
  29. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/internal/ractor.h +4 -0
  30. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/re.h +2 -2
  31. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/internal/sanitizers.h +43 -39
  32. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/internal/string.h +23 -10
  33. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/struct.h +0 -8
  34. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/symbol.h +2 -0
  35. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/internal/thread.h +23 -0
  36. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/time.h +4 -1
  37. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/variable.h +0 -2
  38. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/internal/vm.h +1 -1
  39. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/iseq.h +12 -1
  40. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/method.h +4 -1
  41. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/node.h +14 -3
  42. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/prism/ast.h +443 -3
  43. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/prism/defines.h +26 -8
  44. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/prism/diagnostic.h +1 -0
  45. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/extension.h +4 -4
  46. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/options.h +47 -1
  47. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/prism/prism.h +51 -4
  48. data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/util/pm_buffer.h +10 -0
  49. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/prism/version.h +2 -2
  50. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/prism_compile.h +11 -5
  51. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/ractor_core.h +6 -6
  52. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/rubyparser.h +39 -9
  53. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/thread_pthread.h +2 -3
  54. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.5.0-preview1}/vm_core.h +43 -30
  55. data/lib/datadog/ruby_core_source/version.rb +1 -1
  56. metadata +209 -209
  57. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/ccan/build_assert/build_assert.h +0 -0
  58. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/ccan/check_type/check_type.h +0 -0
  59. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/ccan/container_of/container_of.h +0 -0
  60. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/ccan/list/list.h +0 -0
  61. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/ccan/str/str.h +0 -0
  62. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/id_table.h +0 -0
  63. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/array.h +0 -0
  64. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/internal/basic_operators.h +0 -0
  65. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/bignum.h +0 -0
  66. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/internal/bits.h +0 -0
  67. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/class.h +0 -0
  68. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/cmdlineopt.h +0 -0
  69. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/compar.h +0 -0
  70. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/compile.h +0 -0
  71. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/compilers.h +0 -0
  72. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/complex.h +0 -0
  73. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/cont.h +0 -0
  74. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/dir.h +0 -0
  75. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/enc.h +0 -0
  76. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/internal/encoding.h +0 -0
  77. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/enum.h +0 -0
  78. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/enumerator.h +0 -0
  79. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/eval.h +0 -0
  80. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/file.h +0 -0
  81. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/internal/fixnum.h +0 -0
  82. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/hash.h +0 -0
  83. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/internal/imemo.h +0 -0
  84. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/inits.h +0 -0
  85. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/internal/io.h +0 -0
  86. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/load.h +0 -0
  87. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/loadpath.h +0 -0
  88. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/math.h +0 -0
  89. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/missing.h +0 -0
  90. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/numeric.h +0 -0
  91. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/object.h +0 -0
  92. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/process.h +0 -0
  93. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/internal/ractor.h +0 -0
  94. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/random.h +0 -0
  95. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/range.h +0 -0
  96. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/rational.h +0 -0
  97. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/re.h +0 -0
  98. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/ruby_parser.h +0 -0
  99. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/serial.h +0 -0
  100. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/signal.h +0 -0
  101. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/st.h +0 -0
  102. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/static_assert.h +0 -0
  103. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/internal/string.h +0 -0
  104. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/struct.h +0 -0
  105. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/symbol.h +0 -0
  106. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/internal/thread.h +0 -0
  107. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/time.h +0 -0
  108. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/transcode.h +0 -0
  109. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/util.h +0 -0
  110. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/variable.h +0 -0
  111. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/internal/vm.h +0 -0
  112. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal/warnings.h +0 -0
  113. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/internal.h +0 -0
  114. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/iseq.h +0 -0
  115. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/method.h +0 -0
  116. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/node.h +0 -0
  117. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/parser_st.h +0 -0
  118. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/parser_value.h +0 -0
  119. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/prism/defines.h +0 -0
  120. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/prism/diagnostic.h +0 -0
  121. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/encoding.h +0 -0
  122. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/node.h +0 -0
  123. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/options.h +0 -0
  124. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/pack.h +0 -0
  125. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/parser.h +0 -0
  126. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/prettyprint.h +0 -0
  127. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/prism/prism.h +0 -0
  128. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/regexp.h +0 -0
  129. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/static_literals.h +0 -0
  130. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/util/pm_buffer.h +0 -0
  131. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/util/pm_char.h +0 -0
  132. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/util/pm_constant_pool.h +0 -0
  133. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/util/pm_integer.h +0 -0
  134. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/util/pm_list.h +0 -0
  135. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/util/pm_memchr.h +0 -0
  136. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/util/pm_newline_list.h +0 -0
  137. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/util/pm_string.h +0 -0
  138. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/util/pm_strncasecmp.h +0 -0
  139. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/prism/util/pm_strpbrk.h +0 -0
  140. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/prism_compile.h +0 -0
  141. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/ruby_assert.h +0 -0
  142. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/ruby_atomic.h +0 -0
  143. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/shape.h +0 -0
  144. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/thread_none.h +0 -0
  145. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/thread_pthread.h +0 -0
  146. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.4.0-p0}/vm_core.h +0 -0
  147. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/vm_debug.h +0 -0
  148. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p0}/vm_opts.h +0 -0
  149. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/ccan/build_assert/build_assert.h +0 -0
  150. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/ccan/check_type/check_type.h +0 -0
  151. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/ccan/container_of/container_of.h +0 -0
  152. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/ccan/list/list.h +0 -0
  153. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/ccan/str/str.h +0 -0
  154. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/id_table.h +0 -0
  155. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/array.h +0 -0
  156. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/bignum.h +0 -0
  157. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/class.h +0 -0
  158. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/compar.h +0 -0
  159. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/compile.h +0 -0
  160. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/compilers.h +0 -0
  161. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/complex.h +0 -0
  162. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/cont.h +0 -0
  163. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/dir.h +0 -0
  164. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/enc.h +0 -0
  165. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/enum.h +0 -0
  166. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/enumerator.h +0 -0
  167. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/eval.h +0 -0
  168. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/file.h +0 -0
  169. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/inits.h +0 -0
  170. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/load.h +0 -0
  171. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/loadpath.h +0 -0
  172. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/math.h +0 -0
  173. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/missing.h +0 -0
  174. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/numeric.h +0 -0
  175. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/object.h +0 -0
  176. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/process.h +0 -0
  177. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/random.h +0 -0
  178. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/range.h +0 -0
  179. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/rational.h +0 -0
  180. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/ruby_parser.h +0 -0
  181. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/serial.h +0 -0
  182. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/signal.h +0 -0
  183. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/st.h +0 -0
  184. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/static_assert.h +0 -0
  185. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/transcode.h +0 -0
  186. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/util.h +0 -0
  187. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal/warnings.h +0 -0
  188. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/internal.h +0 -0
  189. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/parser_st.h +0 -0
  190. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/parser_value.h +0 -0
  191. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/encoding.h +0 -0
  192. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/node.h +0 -0
  193. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/pack.h +0 -0
  194. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/parser.h +0 -0
  195. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/prettyprint.h +0 -0
  196. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/regexp.h +0 -0
  197. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/static_literals.h +0 -0
  198. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/util/pm_char.h +0 -0
  199. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/util/pm_constant_pool.h +0 -0
  200. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/util/pm_integer.h +0 -0
  201. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/util/pm_list.h +0 -0
  202. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/util/pm_memchr.h +0 -0
  203. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/util/pm_newline_list.h +0 -0
  204. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/util/pm_string.h +0 -0
  205. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/util/pm_strncasecmp.h +0 -0
  206. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/prism/util/pm_strpbrk.h +0 -0
  207. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/ruby_assert.h +0 -0
  208. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/ruby_atomic.h +0 -0
  209. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/shape.h +0 -0
  210. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/thread_none.h +0 -0
  211. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/vm_debug.h +0 -0
  212. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-rc1 → ruby-3.5.0-preview1}/vm_opts.h +0 -0
@@ -16,8 +16,8 @@
16
16
  #include "ruby/ruby.h" /* for rb_event_flag_t */
17
17
  #include "vm_core.h" /* for GET_EC() */
18
18
 
19
- #ifndef USE_SHARED_GC
20
- # define USE_SHARED_GC 0
19
+ #ifndef USE_MODULAR_GC
20
+ # define USE_MODULAR_GC 0
21
21
  #endif
22
22
 
23
23
  #if defined(__x86_64__) && !defined(_ILP32) && defined(__GNUC__)
@@ -127,7 +127,13 @@ struct rb_objspace; /* in vm_core.h */
127
127
  rb_wb_protected_newobj_of((ec ? ec : GET_EC()), (c), (f) & ~FL_WB_PROTECTED, s) : \
128
128
  rb_wb_unprotected_newobj_of((c), (f), s))
129
129
 
130
- #define RB_OBJ_GC_FLAGS_MAX 6 /* used in ext/objspace */
130
+ #ifndef RB_GC_OBJECT_METADATA_ENTRY_DEFINED
131
+ # define RB_GC_OBJECT_METADATA_ENTRY_DEFINED
132
+ struct rb_gc_object_metadata_entry {
133
+ ID name;
134
+ VALUE val;
135
+ };
136
+ #endif
131
137
 
132
138
  #ifndef USE_UNALIGNED_MEMBER_ACCESS
133
139
  # define UNALIGNED_MEMBER_ACCESS(expr) (expr)
@@ -175,7 +181,6 @@ struct rb_objspace; /* in vm_core.h */
175
181
  if (_already_disabled == Qfalse) rb_gc_enable()
176
182
 
177
183
  /* gc.c */
178
- extern int ruby_disable_gc;
179
184
  RUBY_ATTR_MALLOC void *ruby_mimmalloc(size_t size);
180
185
  RUBY_ATTR_MALLOC void *ruby_mimcalloc(size_t num, size_t size);
181
186
  void ruby_mimfree(void *ptr);
@@ -197,7 +202,7 @@ static inline void *ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size
197
202
  static inline void *ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count) RUBY_ATTR_RETURNS_NONNULL RUBY_ATTR_ALLOC_SIZE((2, 3));
198
203
  static inline void ruby_sized_xfree_inlined(void *ptr, size_t size);
199
204
 
200
- void *rb_gc_ractor_cache_alloc(void);
205
+ void *rb_gc_ractor_cache_alloc(rb_ractor_t *ractor);
201
206
  void rb_gc_ractor_cache_free(void *cache);
202
207
 
203
208
  bool rb_gc_size_allocatable_p(size_t size);
@@ -213,6 +218,9 @@ void rb_gc_ref_update_table_values_only(st_table *tbl);
213
218
 
214
219
  void rb_gc_initial_stress_set(VALUE flag);
215
220
 
221
+ void rb_gc_before_fork(void);
222
+ void rb_gc_after_fork(rb_pid_t pid);
223
+
216
224
  #define rb_gc_mark_and_move_ptr(ptr) do { \
217
225
  VALUE _obj = (VALUE)*(ptr); \
218
226
  rb_gc_mark_and_move(&_obj); \
@@ -225,6 +233,7 @@ void rb_objspace_reachable_objects_from(VALUE obj, void (func)(VALUE, void *), v
225
233
  void rb_objspace_reachable_objects_from_root(void (func)(const char *category, VALUE, void *), void *data);
226
234
  int rb_objspace_internal_object_p(VALUE obj);
227
235
  int rb_objspace_garbage_object_p(VALUE obj);
236
+ bool rb_gc_pointer_to_heap_p(VALUE obj);
228
237
 
229
238
  void rb_objspace_each_objects(
230
239
  int (*callback)(void *start, void *end, size_t stride, void *data),
@@ -234,13 +243,14 @@ size_t rb_gc_obj_slot_size(VALUE obj);
234
243
 
235
244
  VALUE rb_gc_disable_no_rest(void);
236
245
 
246
+ #define RB_GC_MAX_NAME_LEN 20
237
247
 
238
248
  /* gc.c (export) */
239
249
  const char *rb_objspace_data_type_name(VALUE obj);
240
250
  VALUE rb_wb_protected_newobj_of(struct rb_execution_context_struct *, VALUE, VALUE, size_t);
241
251
  VALUE rb_wb_unprotected_newobj_of(VALUE, VALUE, size_t);
242
252
  size_t rb_obj_memsize_of(VALUE);
243
- size_t rb_obj_gc_flags(VALUE, ID[], size_t);
253
+ struct rb_gc_object_metadata_entry *rb_gc_object_metadata(VALUE obj);
244
254
  void rb_gc_mark_values(long n, const VALUE *values);
245
255
  void rb_gc_mark_vm_stack_values(long n, const VALUE *values);
246
256
  void rb_gc_update_values(long n, VALUE *values);
@@ -248,14 +258,15 @@ void *ruby_sized_xrealloc(void *ptr, size_t new_size, size_t old_size) RUBY_ATTR
248
258
  void *ruby_sized_xrealloc2(void *ptr, size_t new_count, size_t element_size, size_t old_count) RUBY_ATTR_RETURNS_NONNULL RUBY_ATTR_ALLOC_SIZE((2, 3));
249
259
  void ruby_sized_xfree(void *x, size_t size);
250
260
 
251
- #if USE_SHARED_GC
252
- void ruby_load_external_gc_from_argv(int argc, char **argv);
253
- #endif
261
+ const char *rb_gc_active_gc_name(void);
262
+ int rb_gc_modular_gc_loaded_p(void);
263
+
254
264
  RUBY_SYMBOL_EXPORT_END
255
265
 
256
266
  int rb_ec_stack_check(struct rb_execution_context_struct *ec);
257
267
  void rb_gc_writebarrier_remember(VALUE obj);
258
268
  const char *rb_obj_info(VALUE obj);
269
+ void ruby_annotate_mmap(const void *addr, unsigned long size, const char *name);
259
270
 
260
271
  #if defined(HAVE_MALLOC_USABLE_SIZE) || defined(HAVE_MALLOC_SIZE) || defined(_WIN32)
261
272
 
@@ -86,6 +86,7 @@ VALUE rb_hash_set_pair(VALUE hash, VALUE pair);
86
86
  int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval);
87
87
  int rb_hash_stlike_foreach_with_replace(VALUE hash, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg);
88
88
  int rb_hash_stlike_update(VALUE hash, st_data_t key, st_update_callback_func *func, st_data_t arg);
89
+ bool rb_hash_default_unredefined(VALUE hash);
89
90
  VALUE rb_ident_hash_new_with_size(st_index_t size);
90
91
  void rb_hash_free(VALUE hash);
91
92
  RUBY_EXTERN VALUE rb_cHash_empty_frozen;
@@ -14,10 +14,6 @@
14
14
  #include "ruby/internal/stdbool.h" /* for bool */
15
15
  #include "ruby/ruby.h" /* for rb_block_call_func_t */
16
16
 
17
- #ifndef IMEMO_DEBUG
18
- # define IMEMO_DEBUG 0
19
- #endif
20
-
21
17
  #define IMEMO_MASK 0x0f
22
18
 
23
19
  /* FL_USER0 to FL_USER3 is for type */
@@ -79,7 +75,12 @@ struct vm_ifunc_argc {
79
75
  #endif
80
76
  };
81
77
 
82
- /*! IFUNC (Internal FUNCtion) */
78
+ /*! IFUNC (Internal FUNCtion)
79
+ *
80
+ * Bookkeeping for converting a C function and some closed-over data into a
81
+ * block passable to methods. Like Ruby Proc, but not directly accessible at
82
+ * Ruby level since this is an imemo. See rb_block_call() and friends.
83
+ */
83
84
  struct vm_ifunc {
84
85
  VALUE flags;
85
86
  VALUE *svar_lep;
@@ -114,7 +115,7 @@ struct MEMO {
114
115
  } u3;
115
116
  };
116
117
 
117
- #define IMEMO_NEW(T, type, v0) ((T *)rb_imemo_new((type), (v0)))
118
+ #define IMEMO_NEW(T, type, v0) ((T *)rb_imemo_new((type), (v0), sizeof(T)))
118
119
 
119
120
  /* ment is in method.h */
120
121
 
@@ -151,12 +152,7 @@ void rb_cc_table_free(VALUE klass);
151
152
  void rb_imemo_free(VALUE obj);
152
153
 
153
154
  RUBY_SYMBOL_EXPORT_BEGIN
154
- #if IMEMO_DEBUG
155
- VALUE rb_imemo_new_debug(enum imemo_type type, VALUE v0, const char *file, int line);
156
- #define rb_imemo_new(type, v1, v2, v3, v0) rb_imemo_new_debug(type, v1, v2, v3, v0, __FILE__, __LINE__)
157
- #else
158
- VALUE rb_imemo_new(enum imemo_type type, VALUE v0);
159
- #endif
155
+ VALUE rb_imemo_new(enum imemo_type type, VALUE v0, size_t size);
160
156
  const char *rb_imemo_name(enum imemo_type type);
161
157
  RUBY_SYMBOL_EXPORT_END
162
158
 
@@ -209,7 +205,7 @@ rb_vm_ifunc_proc_new(rb_block_call_func_t func, const void *data)
209
205
  static inline VALUE
210
206
  rb_imemo_tmpbuf_auto_free_pointer(void)
211
207
  {
212
- return rb_imemo_new(imemo_tmpbuf, 0);
208
+ return rb_imemo_new(imemo_tmpbuf, 0, sizeof(rb_imemo_tmpbuf_t));
213
209
  }
214
210
 
215
211
  static inline void *
@@ -15,7 +15,7 @@ struct rb_io;
15
15
 
16
16
  #include "ruby/io.h" /* for rb_io_t */
17
17
 
18
- #define IO_WITHOUT_GVL(func, arg) rb_thread_call_without_gvl(func, arg, RUBY_UBF_IO, 0)
18
+ #define IO_WITHOUT_GVL(func, arg) rb_nogvl(func, arg, RUBY_UBF_IO, 0, RB_NOGVL_OFFLOAD_SAFE)
19
19
  #define IO_WITHOUT_GVL_INT(func, arg) (int)(VALUE)IO_WITHOUT_GVL(func, arg)
20
20
 
21
21
  /** Ruby's IO, metadata and buffers. */
@@ -31,7 +31,7 @@ struct rb_io {
31
31
  int fd;
32
32
 
33
33
  /** mode flags: FMODE_XXXs */
34
- int mode;
34
+ enum rb_io_mode mode;
35
35
 
36
36
  /** child's pid (for pipes) */
37
37
  rb_pid_t pid;
@@ -78,9 +78,11 @@ void rb_parser_string_free(rb_parser_t *p, rb_parser_string_t *str);
78
78
 
79
79
  int rb_parser_dvar_defined_ref(struct parser_params*, ID, ID**);
80
80
  ID rb_parser_internal_id(struct parser_params*);
81
- int rb_parser_reg_fragment_check(struct parser_params*, rb_parser_string_t*, int);
82
- int rb_reg_named_capture_assign_iter_impl(struct parser_params *p, const char *s, long len, rb_encoding *enc, NODE **succ_block, const rb_code_location_t *loc);
81
+ typedef void (*rb_parser_reg_fragment_error_func)(struct parser_params *, VALUE);
82
+ int rb_parser_reg_fragment_check(struct parser_params*, rb_parser_string_t*, int, rb_parser_reg_fragment_error_func);
83
+ int rb_reg_named_capture_assign_iter_impl(struct parser_params *p, const char *s, long len, rb_encoding *enc, NODE **succ_block, const rb_code_location_t *loc, rb_parser_assignable_func assignable);
83
84
  int rb_parser_local_defined(struct parser_params *p, ID id, const struct rb_iseq_struct *iseq);
85
+ NODE *rb_parser_assignable(struct parser_params *p, ID id, NODE *val, const YYLTYPE *loc);
84
86
 
85
87
  RUBY_SYMBOL_EXPORT_END
86
88
 
@@ -22,7 +22,7 @@ int rb_block_min_max_arity(int *max);
22
22
  VALUE rb_block_to_s(VALUE self, const struct rb_block *block, const char *additional_info);
23
23
  VALUE rb_callable_receiver(VALUE);
24
24
 
25
- VALUE rb_func_proc_new(rb_block_call_func_t func, VALUE val);
25
+ VALUE rb_func_proc_dup(VALUE src_obj);
26
26
  VALUE rb_func_lambda_new(rb_block_call_func_t func, VALUE val, int min_argc, int max_argc);
27
27
  VALUE rb_iseq_location(const struct rb_iseq_struct *iseq);
28
28
  VALUE rb_sym_to_proc(VALUE sym);
@@ -3,4 +3,8 @@
3
3
 
4
4
  void rb_ractor_ensure_main_ractor(const char *msg);
5
5
 
6
+ RUBY_SYMBOL_EXPORT_BEGIN
7
+ void rb_ractor_setup_belonging(VALUE obj);
8
+ RUBY_SYMBOL_EXPORT_END
9
+
6
10
  #endif /* INTERNAL_RACTOR_H */
@@ -14,12 +14,12 @@
14
14
  /* re.c */
15
15
  VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
16
16
  VALUE rb_reg_check_preprocess(VALUE);
17
- long rb_reg_search0(VALUE, VALUE, long, int, int);
17
+ long rb_reg_search0(VALUE, VALUE, long, int, int, VALUE *);
18
18
  VALUE rb_reg_match_p(VALUE re, VALUE str, long pos);
19
19
  bool rb_reg_start_with_p(VALUE re, VALUE str);
20
20
  VALUE rb_reg_hash(VALUE re);
21
21
  VALUE rb_reg_equal(VALUE re1, VALUE re2);
22
- void rb_backref_set_string(VALUE string, long pos, long len);
22
+ VALUE rb_backref_set_string(VALUE string, long pos, long len);
23
23
  void rb_match_unbusy(VALUE);
24
24
  int rb_match_count(VALUE match);
25
25
  VALUE rb_reg_new_ary(VALUE ary, int options);
@@ -16,7 +16,7 @@
16
16
  #endif
17
17
 
18
18
  #ifdef HAVE_SANITIZER_ASAN_INTERFACE_H
19
- # if __has_feature(address_sanitizer)
19
+ # if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__)
20
20
  # define RUBY_ASAN_ENABLED
21
21
  # include <sanitizer/asan_interface.h>
22
22
  # endif
@@ -39,6 +39,9 @@
39
39
  #elif defined(RUBY_ASAN_ENABLED)
40
40
  # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
41
41
  __attribute__((__no_sanitize__("address"), __noinline__)) x
42
+ #elif defined(RUBY_MSAN_ENABLED)
43
+ # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
44
+ __attribute__((__no_sanitize__("memory"), __noinline__)) x
42
45
  #elif defined(NO_SANITIZE_ADDRESS)
43
46
  # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
44
47
  NO_SANITIZE_ADDRESS(NOINLINE(x))
@@ -54,10 +57,11 @@
54
57
  # include "internal/warnings.h"
55
58
  # undef NO_SANITIZE
56
59
  # define NO_SANITIZE(x, y) \
57
- COMPILER_WARNING_PUSH; \
58
- COMPILER_WARNING_IGNORED(-Wattributes); \
60
+ COMPILER_WARNING_PUSH \
61
+ COMPILER_WARNING_IGNORED(-Wattributes) \
59
62
  __attribute__((__no_sanitize__(x))) y; \
60
- COMPILER_WARNING_POP
63
+ COMPILER_WARNING_POP \
64
+ y
61
65
  #endif
62
66
 
63
67
  #ifndef NO_SANITIZE
@@ -115,26 +119,22 @@ asan_poison_memory_region(const volatile void *ptr, size_t size)
115
119
  __asan_poison_memory_region(ptr, size);
116
120
  }
117
121
 
118
- /**
119
- * This is a variant of asan_poison_memory_region that takes a VALUE.
120
- *
121
- * @param[in] obj target object.
122
- */
123
- static inline void
124
- asan_poison_object(VALUE obj)
125
- {
126
- MAYBE_UNUSED(struct RVALUE *) ptr = (void *)obj;
127
- asan_poison_memory_region(ptr, SIZEOF_VALUE);
128
- }
129
-
130
122
  #ifdef RUBY_ASAN_ENABLED
131
123
  #define asan_poison_object_if(ptr, obj) do { \
132
- if (ptr) asan_poison_object(obj); \
124
+ if (ptr) rb_asan_poison_object(obj); \
133
125
  } while (0)
134
126
  #else
135
127
  #define asan_poison_object_if(ptr, obj) ((void)(ptr), (void)(obj))
136
128
  #endif
137
129
 
130
+ RUBY_SYMBOL_EXPORT_BEGIN
131
+ /**
132
+ * This is a variant of asan_poison_memory_region that takes a VALUE.
133
+ *
134
+ * @param[in] obj target object.
135
+ */
136
+ void rb_asan_poison_object(VALUE obj);
137
+
138
138
  /**
139
139
  * This function predicates if the given object is fully addressable or not.
140
140
  *
@@ -142,12 +142,17 @@ asan_poison_object(VALUE obj)
142
142
  * @retval 0 the given object is fully addressable.
143
143
  * @retval otherwise pointer to first such byte who is poisoned.
144
144
  */
145
- static inline void *
146
- asan_poisoned_object_p(VALUE obj)
147
- {
148
- MAYBE_UNUSED(struct RVALUE *) ptr = (void *)obj;
149
- return __asan_region_is_poisoned(ptr, SIZEOF_VALUE);
150
- }
145
+ void *rb_asan_poisoned_object_p(VALUE obj);
146
+
147
+ /**
148
+ * This is a variant of asan_unpoison_memory_region that takes a VALUE.
149
+ *
150
+ * @param[in] obj target object.
151
+ * @param[in] malloc_p if the memory region is like a malloc's return value or not.
152
+ */
153
+ void rb_asan_unpoison_object(VALUE obj, bool newobj_p);
154
+
155
+ RUBY_SYMBOL_EXPORT_END
151
156
 
152
157
  /**
153
158
  * This function asserts that a (formally poisoned) memory region from ptr to
@@ -176,24 +181,11 @@ asan_unpoison_memory_region(const volatile void *ptr, size_t size, bool malloc_p
176
181
  }
177
182
  }
178
183
 
179
- /**
180
- * This is a variant of asan_unpoison_memory_region that takes a VALUE.
181
- *
182
- * @param[in] obj target object.
183
- * @param[in] malloc_p if the memory region is like a malloc's return value or not.
184
- */
185
- static inline void
186
- asan_unpoison_object(VALUE obj, bool newobj_p)
187
- {
188
- MAYBE_UNUSED(struct RVALUE *) ptr = (void *)obj;
189
- asan_unpoison_memory_region(ptr, SIZEOF_VALUE, newobj_p);
190
- }
191
-
192
184
  static inline void *
193
185
  asan_unpoison_object_temporary(VALUE obj)
194
186
  {
195
- void *ptr = asan_poisoned_object_p(obj);
196
- asan_unpoison_object(obj, false);
187
+ void *ptr = rb_asan_poisoned_object_p(obj);
188
+ rb_asan_unpoison_object(obj, false);
197
189
  return ptr;
198
190
  }
199
191
 
@@ -201,7 +193,7 @@ static inline void *
201
193
  asan_poison_object_restore(VALUE obj, void *ptr)
202
194
  {
203
195
  if (ptr) {
204
- asan_poison_object(obj);
196
+ rb_asan_poison_object(obj);
205
197
  }
206
198
  return NULL;
207
199
  }
@@ -322,5 +314,17 @@ asan_get_fake_stack_extents(void *thread_fake_stack_handle, VALUE slot,
322
314
  return false;
323
315
  }
324
316
 
317
+ extern const char ruby_asan_default_options[];
318
+
319
+ #ifdef RUBY_ASAN_ENABLED
320
+ /* Compile in the ASAN options Ruby needs, rather than relying on environment variables, so
321
+ * that even tests which fork ruby with a clean environment will run ASAN with the right
322
+ * settings */
323
+ # undef RUBY__ASAN_DEFAULT_OPTIONS
324
+ # define RUBY__ASAN_DEFAULT_OPTIONS \
325
+ RBIMPL_SYMBOL_EXPORT_BEGIN() \
326
+ const char * __asan_default_options(void) {return ruby_asan_default_options;} \
327
+ RBIMPL_SYMBOL_EXPORT_END()
328
+ #endif
325
329
 
326
330
  #endif /* INTERNAL_SANITIZERS_H */
@@ -15,9 +15,11 @@
15
15
  #include "ruby/encoding.h" /* for rb_encoding */
16
16
  #include "ruby/ruby.h" /* for VALUE */
17
17
 
18
- #define STR_NOEMBED FL_USER1
19
- #define STR_SHARED FL_USER2 /* = ELTS_SHARED */
20
- #define STR_CHILLED FL_USER3
18
+ #define STR_SHARED FL_USER0 /* = ELTS_SHARED */
19
+ #define STR_NOEMBED FL_USER1
20
+ #define STR_CHILLED (FL_USER2 | FL_USER3)
21
+ #define STR_CHILLED_LITERAL FL_USER2
22
+ #define STR_CHILLED_SYMBOL_TO_S FL_USER3
21
23
 
22
24
  enum ruby_rstring_private_flags {
23
25
  RSTRING_CHILLED = STR_CHILLED,
@@ -51,12 +53,19 @@ int rb_enc_str_coderange_scan(VALUE str, rb_encoding *enc);
51
53
  int rb_ascii8bit_appendable_encoding_index(rb_encoding *enc, unsigned int code);
52
54
  VALUE rb_str_include(VALUE str, VALUE arg);
53
55
  VALUE rb_str_byte_substr(VALUE str, VALUE beg, VALUE len);
56
+ VALUE rb_str_substr_two_fixnums(VALUE str, VALUE beg, VALUE len, int empty);
54
57
  VALUE rb_str_tmp_frozen_no_embed_acquire(VALUE str);
55
58
  void rb_str_make_embedded(VALUE);
56
59
  VALUE rb_str_upto_each(VALUE, VALUE, int, int (*each)(VALUE, VALUE), VALUE);
57
60
  size_t rb_str_size_as_embedded(VALUE);
58
61
  bool rb_str_reembeddable_p(VALUE);
59
62
  VALUE rb_str_upto_endless_each(VALUE, int (*each)(VALUE, VALUE), VALUE);
63
+ VALUE rb_str_with_debug_created_info(VALUE, VALUE, int);
64
+ VALUE rb_str_frozen_bare_string(VALUE);
65
+
66
+ /* error.c */
67
+ void rb_warn_unchilled_literal(VALUE str);
68
+ void rb_warn_unchilled_symbol_to_s(VALUE str);
60
69
 
61
70
  static inline bool STR_EMBED_P(VALUE str);
62
71
  static inline bool STR_SHARED_P(VALUE str);
@@ -123,14 +132,18 @@ CHILLED_STRING_P(VALUE obj)
123
132
  static inline void
124
133
  CHILLED_STRING_MUTATED(VALUE str)
125
134
  {
135
+ VALUE chilled_reason = RB_FL_TEST_RAW(str, STR_CHILLED);
126
136
  FL_UNSET_RAW(str, STR_CHILLED);
127
- rb_category_warn(RB_WARN_CATEGORY_DEPRECATED, "literal string will be frozen in the future");
128
- }
129
-
130
- static inline void
131
- STR_CHILL_RAW(VALUE str)
132
- {
133
- FL_SET_RAW(str, STR_CHILLED);
137
+ switch (chilled_reason) {
138
+ case STR_CHILLED_SYMBOL_TO_S:
139
+ rb_warn_unchilled_symbol_to_s(str);
140
+ break;
141
+ case STR_CHILLED_LITERAL:
142
+ rb_warn_unchilled_literal(str);
143
+ break;
144
+ default:
145
+ rb_bug("RString was chilled for multiple reasons");
146
+ }
134
147
  }
135
148
 
136
149
  static inline bool
@@ -59,7 +59,6 @@ struct RStruct {
59
59
  VALUE rb_struct_init_copy(VALUE copy, VALUE s);
60
60
  VALUE rb_struct_lookup(VALUE s, VALUE idx);
61
61
  VALUE rb_struct_s_keyword_init(VALUE klass);
62
- static inline const VALUE *rb_struct_const_heap_ptr(VALUE st);
63
62
  static inline long RSTRUCT_EMBED_LEN(VALUE st);
64
63
  static inline long RSTRUCT_LEN(VALUE st);
65
64
  static inline int RSTRUCT_LENINT(VALUE st);
@@ -117,11 +116,4 @@ RSTRUCT_GET(VALUE st, long k)
117
116
  return RSTRUCT_CONST_PTR(st)[k];
118
117
  }
119
118
 
120
- static inline const VALUE *
121
- rb_struct_const_heap_ptr(VALUE st)
122
- {
123
- assert(!FL_TEST_RAW(st, RSTRUCT_EMBED_LEN_MASK));
124
- return RSTRUCT(st)->as.heap.ptr;
125
- }
126
-
127
119
  #endif /* INTERNAL_STRUCT_H */
@@ -17,6 +17,8 @@
17
17
  #endif
18
18
 
19
19
  /* symbol.c */
20
+ void rb_sym_global_symbols_mark(void);
21
+ void rb_sym_global_symbols_update_references(void);
20
22
  VALUE rb_to_symbol_type(VALUE obj);
21
23
  VALUE rb_sym_intern(const char *ptr, long len, rb_encoding *enc);
22
24
  VALUE rb_sym_intern_ascii(const char *ptr, long len);
@@ -66,6 +66,8 @@ struct rb_io_close_wait_list {
66
66
  int rb_notify_fd_close(int fd, struct rb_io_close_wait_list *busy);
67
67
  void rb_notify_fd_close_wait(struct rb_io_close_wait_list *busy);
68
68
 
69
+ void rb_ec_check_ints(struct rb_execution_context_struct *ec);
70
+
69
71
  RUBY_SYMBOL_EXPORT_BEGIN
70
72
 
71
73
  void *rb_thread_prevent_fork(void *(*func)(void *), void *data); /* for ext/socket/raddrinfo.c */
@@ -82,4 +84,25 @@ RUBY_SYMBOL_EXPORT_END
82
84
  int rb_threadptr_execute_interrupts(struct rb_thread_struct *th, int blocking_timing);
83
85
  bool rb_thread_mn_schedulable(VALUE thread);
84
86
 
87
+ // interrupt exec
88
+
89
+ typedef VALUE (rb_interrupt_exec_func_t)(void *data);
90
+
91
+ enum rb_interrupt_exec_flag {
92
+ rb_interrupt_exec_flag_none = 0x00,
93
+ rb_interrupt_exec_flag_value_data = 0x01,
94
+ };
95
+
96
+ // interrupt the target_th and run func.
97
+ struct rb_ractor_struct;
98
+
99
+ void rb_threadptr_interrupt_exec(struct rb_thread_struct *target_th,
100
+ rb_interrupt_exec_func_t *func, void *data, enum rb_interrupt_exec_flag flags);
101
+
102
+ // create a thread in the target_r and run func on the created thread.
103
+ void rb_ractor_interrupt_exec(struct rb_ractor_struct *target_r,
104
+ rb_interrupt_exec_func_t *func, void *data, enum rb_interrupt_exec_flag flags);
105
+
106
+ void rb_threadptr_interrupt_exec_task_mark(struct rb_thread_struct *th);
107
+
85
108
  #endif /* INTERNAL_THREAD_H */
@@ -28,7 +28,10 @@ struct timeval rb_time_timeval(VALUE);
28
28
  RUBY_SYMBOL_EXPORT_BEGIN
29
29
  /* time.c (export) */
30
30
  void ruby_reset_leap_second_info(void);
31
- void ruby_reset_timezone(void);
31
+ #ifdef RBIMPL_ATTR_DEPRECATED_INTERNAL_ONLY
32
+ RBIMPL_ATTR_DEPRECATED_INTERNAL_ONLY()
33
+ #endif
34
+ void ruby_reset_timezone(const char *);
32
35
  RUBY_SYMBOL_EXPORT_END
33
36
 
34
37
  #endif /* INTERNAL_TIME_H */
@@ -54,8 +54,6 @@ void rb_evict_ivars_to_hash(VALUE obj);
54
54
  RUBY_SYMBOL_EXPORT_BEGIN
55
55
  /* variable.c (export) */
56
56
  void rb_mark_generic_ivar(VALUE obj);
57
- void rb_ref_update_generic_ivar(VALUE);
58
- void rb_mv_generic_ivar(VALUE src, VALUE dst);
59
57
  VALUE rb_const_missing(VALUE klass, VALUE name);
60
58
  int rb_class_ivar_set(VALUE klass, ID vid, VALUE value);
61
59
  void rb_iv_tbl_copy(VALUE dst, VALUE src);
@@ -77,6 +77,7 @@ VALUE rb_lambda_call(VALUE obj, ID mid, int argc, const VALUE *argv,
77
77
  void rb_check_stack_overflow(void);
78
78
  #define RB_BLOCK_NO_USE_PACKED_ARGS 2
79
79
  VALUE rb_block_call2(VALUE obj, ID mid, int argc, const VALUE *argv, rb_block_call_func_t bl_proc, VALUE data2, long flags);
80
+ struct vm_ifunc *rb_current_ifunc(void);
80
81
 
81
82
  #if USE_YJIT
82
83
  /* vm_exec.c */
@@ -96,7 +97,6 @@ struct rb_iseq_struct;
96
97
  const struct rb_callcache *rb_vm_search_method_slowpath(const struct rb_callinfo *ci, VALUE klass);
97
98
 
98
99
  /* vm_method.c */
99
- struct rb_execution_context_struct;
100
100
  int rb_ec_obj_respond_to(struct rb_execution_context_struct *ec, VALUE obj, ID id, int priv);
101
101
 
102
102
  void rb_clear_constant_cache(void);
@@ -104,6 +104,16 @@ struct iseq_compile_data {
104
104
  const VALUE err_info;
105
105
  const VALUE catch_table_ary; /* Array */
106
106
 
107
+ /* Mirror fields from ISEQ_BODY so they are accessible during iseq setup */
108
+ unsigned int iseq_size;
109
+ VALUE *iseq_encoded; /* half-encoded iseq (insn addr and operands) */
110
+ bool is_single_mark_bit; /* identifies whether mark bits are single or a list */
111
+
112
+ union {
113
+ iseq_bits_t * list; /* Find references for GC */
114
+ iseq_bits_t single;
115
+ } mark_bits;
116
+
107
117
  /* GC is not needed */
108
118
  struct iseq_label_data *start_label;
109
119
  struct iseq_label_data *end_label;
@@ -119,6 +129,7 @@ struct iseq_compile_data {
119
129
  struct iseq_compile_data_storage *storage_current;
120
130
  } insn;
121
131
  bool in_rescue;
132
+ bool in_masgn;
122
133
  int loopval_popped; /* used by NODE_BREAK */
123
134
  int last_line;
124
135
  int label_no;
@@ -193,7 +204,7 @@ VALUE *rb_iseq_original_iseq(const rb_iseq_t *iseq);
193
204
  void rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc,
194
205
  VALUE locals, VALUE args,
195
206
  VALUE exception, VALUE body);
196
- void rb_iseq_mark_and_pin_insn_storage(struct iseq_compile_data_storage *arena);
207
+ void rb_iseq_mark_and_move_insn_storage(struct iseq_compile_data_storage *arena);
197
208
 
198
209
  VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt);
199
210
  VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc);
@@ -15,6 +15,7 @@
15
15
  #include "internal/imemo.h"
16
16
  #include "internal/compilers.h"
17
17
  #include "internal/static_assert.h"
18
+ #include "ruby/atomic.h"
18
19
 
19
20
  #ifndef END_OF_ENUMERATION
20
21
  # if defined(__GNUC__) &&! defined(__STRICT_ANSI__)
@@ -181,7 +182,8 @@ struct rb_method_definition_struct {
181
182
  unsigned int iseq_overload: 1;
182
183
  unsigned int no_redef_warning: 1;
183
184
  unsigned int aliased : 1;
184
- int reference_count : 28;
185
+
186
+ rb_atomic_t reference_count;
185
187
 
186
188
  union {
187
189
  rb_method_iseq_t iseq;
@@ -237,6 +239,7 @@ st_index_t rb_hash_method_entry(st_index_t hash, const rb_method_entry_t *me);
237
239
 
238
240
  VALUE rb_method_entry_location(const rb_method_entry_t *me);
239
241
 
242
+ void rb_free_method_entry_vm_weak_references(const rb_method_entry_t *me);
240
243
  void rb_free_method_entry(const rb_method_entry_t *me);
241
244
 
242
245
  const rb_method_entry_t *rb_method_entry_clone(const rb_method_entry_t *me);
@@ -67,16 +67,27 @@ const struct kwtable *rb_reserved_word(const char *, unsigned int);
67
67
  struct parser_params;
68
68
  PRINTF_ARGS(void rb_parser_printf(struct parser_params *parser, const char *fmt, ...), 2, 3);
69
69
  VALUE rb_node_set_type(NODE *n, enum node_type t);
70
+ enum node_type rb_node_get_type(const NODE *n);
70
71
 
71
72
  RUBY_SYMBOL_EXPORT_END
72
73
 
73
74
  #define NODE_LSHIFT (NODE_TYPESHIFT+7)
74
75
  #define NODE_LMASK (((SIGNED_VALUE)1<<(sizeof(VALUE)*CHAR_BIT-NODE_LSHIFT))-1)
75
76
 
76
- #define nd_line(n) (int)(((SIGNED_VALUE)(n)->flags)>>NODE_LSHIFT)
77
- #define nd_set_line(n,l) \
78
- (n)->flags=(((n)->flags&~((VALUE)(-1)<<NODE_LSHIFT))|((VALUE)((l)&NODE_LMASK)<<NODE_LSHIFT))
77
+ static inline int
78
+ nd_line(const NODE *n)
79
+ {
80
+ if (!n) return -1;
81
+ SIGNED_VALUE flags = (SIGNED_VALUE)n->flags;
82
+ return (int)(flags >> NODE_LSHIFT);
83
+ }
79
84
 
85
+ static inline void
86
+ nd_set_line(NODE *n, SIGNED_VALUE l)
87
+ {
88
+ n->flags &= ~(~(VALUE)0 << NODE_LSHIFT);
89
+ n->flags |= ((VALUE)(l & NODE_LMASK) << NODE_LSHIFT);
90
+ }
80
91
 
81
92
  #define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1)
82
93
  #define NODE_REQUIRED_KEYWORD_P(node) ((node) == NODE_SPECIAL_REQUIRED_KEYWORD)