puma-plus-core 0.1.0

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 (1055) hide show
  1. checksums.yaml +7 -0
  2. data/ext/puma_plus_core/extconf.rb +85 -0
  3. data/go/cmd/puma-plus/main.go +472 -0
  4. data/go/go.mod +20 -0
  5. data/go/go.sum +38 -0
  6. data/go/internal/control/booted_test.go +97 -0
  7. data/go/internal/control/decide.go +427 -0
  8. data/go/internal/control/decide_test.go +526 -0
  9. data/go/internal/control/loop.go +343 -0
  10. data/go/internal/control/loop_test.go +228 -0
  11. data/go/internal/control/replay.go +121 -0
  12. data/go/internal/control/sim/cooldown_test.go +74 -0
  13. data/go/internal/control/sim/sim.go +599 -0
  14. data/go/internal/control/sim/sim_test.go +300 -0
  15. data/go/internal/frontend/acceptor.go +164 -0
  16. data/go/internal/frontend/altsvc.go +57 -0
  17. data/go/internal/frontend/altsvc_test.go +170 -0
  18. data/go/internal/frontend/bodypump.go +81 -0
  19. data/go/internal/frontend/env.go +224 -0
  20. data/go/internal/frontend/env_test.go +64 -0
  21. data/go/internal/frontend/handler.go +543 -0
  22. data/go/internal/frontend/handler_test.go +486 -0
  23. data/go/internal/frontend/hijack.go +108 -0
  24. data/go/internal/frontend/hijack_test.go +197 -0
  25. data/go/internal/frontend/hooks_test.go +283 -0
  26. data/go/internal/frontend/launcher_test.go +289 -0
  27. data/go/internal/frontend/listeners.go +196 -0
  28. data/go/internal/frontend/protocol_test.go +391 -0
  29. data/go/internal/frontend/ractor_shepherd.go +160 -0
  30. data/go/internal/frontend/ractor_smoke_test.go +168 -0
  31. data/go/internal/frontend/realcert_test.go +163 -0
  32. data/go/internal/frontend/rtbridge.go +410 -0
  33. data/go/internal/frontend/shepherd.go +188 -0
  34. data/go/internal/frontend/socket.go +37 -0
  35. data/go/internal/frontend/socketpair_test.go +34 -0
  36. data/go/internal/frontend/tlscert.go +184 -0
  37. data/go/internal/frontend/tlscert_test.go +81 -0
  38. data/go/internal/frontend/wscontrol.go +198 -0
  39. data/go/internal/metrics/collector.go +207 -0
  40. data/go/internal/metrics/endpoints.go +244 -0
  41. data/go/internal/metrics/gvl.go +136 -0
  42. data/go/internal/metrics/gvl_test.go +122 -0
  43. data/go/internal/metrics/hist.go +204 -0
  44. data/go/internal/metrics/hist_test.go +353 -0
  45. data/go/internal/metrics/window.go +120 -0
  46. data/go/internal/queue/drain_test.go +141 -0
  47. data/go/internal/queue/queue.go +297 -0
  48. data/go/internal/realtime/event.go +53 -0
  49. data/go/internal/realtime/hub.go +456 -0
  50. data/go/internal/realtime/hub_test.go +370 -0
  51. data/go/internal/realtime/id.go +69 -0
  52. data/go/internal/realtime/id_test.go +64 -0
  53. data/go/internal/websocket/frame.go +186 -0
  54. data/go/internal/websocket/serve.go +196 -0
  55. data/go/internal/websocket/transport.go +101 -0
  56. data/go/internal/webtransport/serve.go +169 -0
  57. data/go/internal/webtransport/transport.go +220 -0
  58. data/go/internal/wire/golden_test.go +250 -0
  59. data/go/internal/wire/rack_test.go +40 -0
  60. data/go/internal/wire/ractor_test.go +43 -0
  61. data/go/internal/wire/wire.go +401 -0
  62. data/go/vendor/github.com/dunglas/httpsfv/LICENSE +27 -0
  63. data/go/vendor/github.com/dunglas/httpsfv/README.md +25 -0
  64. data/go/vendor/github.com/dunglas/httpsfv/bareitem.go +115 -0
  65. data/go/vendor/github.com/dunglas/httpsfv/binary.go +59 -0
  66. data/go/vendor/github.com/dunglas/httpsfv/boolean.go +49 -0
  67. data/go/vendor/github.com/dunglas/httpsfv/date.go +41 -0
  68. data/go/vendor/github.com/dunglas/httpsfv/decimal.go +64 -0
  69. data/go/vendor/github.com/dunglas/httpsfv/decode.go +63 -0
  70. data/go/vendor/github.com/dunglas/httpsfv/dictionary.go +167 -0
  71. data/go/vendor/github.com/dunglas/httpsfv/displaystring.go +105 -0
  72. data/go/vendor/github.com/dunglas/httpsfv/encode.go +42 -0
  73. data/go/vendor/github.com/dunglas/httpsfv/innerlist.go +91 -0
  74. data/go/vendor/github.com/dunglas/httpsfv/integer.go +120 -0
  75. data/go/vendor/github.com/dunglas/httpsfv/item.go +73 -0
  76. data/go/vendor/github.com/dunglas/httpsfv/key.go +81 -0
  77. data/go/vendor/github.com/dunglas/httpsfv/list.go +99 -0
  78. data/go/vendor/github.com/dunglas/httpsfv/member.go +9 -0
  79. data/go/vendor/github.com/dunglas/httpsfv/params.go +143 -0
  80. data/go/vendor/github.com/dunglas/httpsfv/string.go +88 -0
  81. data/go/vendor/github.com/dunglas/httpsfv/token.go +71 -0
  82. data/go/vendor/github.com/dunglas/httpsfv/utils.go +16 -0
  83. data/go/vendor/github.com/quic-go/qpack/LICENSE.md +7 -0
  84. data/go/vendor/github.com/quic-go/qpack/README.md +21 -0
  85. data/go/vendor/github.com/quic-go/qpack/decoder.go +183 -0
  86. data/go/vendor/github.com/quic-go/qpack/encoder.go +95 -0
  87. data/go/vendor/github.com/quic-go/qpack/header_field.go +16 -0
  88. data/go/vendor/github.com/quic-go/qpack/static_table.go +255 -0
  89. data/go/vendor/github.com/quic-go/qpack/varint.go +69 -0
  90. data/go/vendor/github.com/quic-go/quic-go/FIPS140.md +37 -0
  91. data/go/vendor/github.com/quic-go/quic-go/FUZZING.md +59 -0
  92. data/go/vendor/github.com/quic-go/quic-go/LICENSE +21 -0
  93. data/go/vendor/github.com/quic-go/quic-go/README.md +65 -0
  94. data/go/vendor/github.com/quic-go/quic-go/SECURITY.md +14 -0
  95. data/go/vendor/github.com/quic-go/quic-go/buffer_pool.go +92 -0
  96. data/go/vendor/github.com/quic-go/quic-go/client.go +109 -0
  97. data/go/vendor/github.com/quic-go/quic-go/closed_conn.go +58 -0
  98. data/go/vendor/github.com/quic-go/quic-go/codecov.yml +23 -0
  99. data/go/vendor/github.com/quic-go/quic-go/config.go +129 -0
  100. data/go/vendor/github.com/quic-go/quic-go/conn_id_generator.go +212 -0
  101. data/go/vendor/github.com/quic-go/quic-go/conn_id_manager.go +321 -0
  102. data/go/vendor/github.com/quic-go/quic-go/connection.go +3150 -0
  103. data/go/vendor/github.com/quic-go/quic-go/connection_logging.go +315 -0
  104. data/go/vendor/github.com/quic-go/quic-go/crypto_stream.go +249 -0
  105. data/go/vendor/github.com/quic-go/quic-go/crypto_stream_manager.go +73 -0
  106. data/go/vendor/github.com/quic-go/quic-go/datagram_queue.go +137 -0
  107. data/go/vendor/github.com/quic-go/quic-go/errors.go +105 -0
  108. data/go/vendor/github.com/quic-go/quic-go/flow_controller_base.go +84 -0
  109. data/go/vendor/github.com/quic-go/quic-go/flow_controller_connection.go +186 -0
  110. data/go/vendor/github.com/quic-go/quic-go/flow_controller_stream.go +196 -0
  111. data/go/vendor/github.com/quic-go/quic-go/frame_sorter.go +274 -0
  112. data/go/vendor/github.com/quic-go/quic-go/framer.go +295 -0
  113. data/go/vendor/github.com/quic-go/quic-go/http3/README.md +9 -0
  114. data/go/vendor/github.com/quic-go/quic-go/http3/body.go +137 -0
  115. data/go/vendor/github.com/quic-go/quic-go/http3/capsule.go +148 -0
  116. data/go/vendor/github.com/quic-go/quic-go/http3/client.go +496 -0
  117. data/go/vendor/github.com/quic-go/quic-go/http3/conn.go +319 -0
  118. data/go/vendor/github.com/quic-go/quic-go/http3/error.go +63 -0
  119. data/go/vendor/github.com/quic-go/quic-go/http3/error_codes.go +84 -0
  120. data/go/vendor/github.com/quic-go/quic-go/http3/frames.go +327 -0
  121. data/go/vendor/github.com/quic-go/quic-go/http3/gzip_reader.go +39 -0
  122. data/go/vendor/github.com/quic-go/quic-go/http3/headers.go +429 -0
  123. data/go/vendor/github.com/quic-go/quic-go/http3/ip_addr.go +48 -0
  124. data/go/vendor/github.com/quic-go/quic-go/http3/mockgen.go +11 -0
  125. data/go/vendor/github.com/quic-go/quic-go/http3/qlog/event.go +138 -0
  126. data/go/vendor/github.com/quic-go/quic-go/http3/qlog/frame.go +220 -0
  127. data/go/vendor/github.com/quic-go/quic-go/http3/qlog/qlog_dir.go +15 -0
  128. data/go/vendor/github.com/quic-go/quic-go/http3/qlog.go +56 -0
  129. data/go/vendor/github.com/quic-go/quic-go/http3/request_writer.go +324 -0
  130. data/go/vendor/github.com/quic-go/quic-go/http3/response_writer.go +372 -0
  131. data/go/vendor/github.com/quic-go/quic-go/http3/server.go +738 -0
  132. data/go/vendor/github.com/quic-go/quic-go/http3/server_conn.go +259 -0
  133. data/go/vendor/github.com/quic-go/quic-go/http3/state_tracking_stream.go +173 -0
  134. data/go/vendor/github.com/quic-go/quic-go/http3/stream.go +406 -0
  135. data/go/vendor/github.com/quic-go/quic-go/http3/trace.go +105 -0
  136. data/go/vendor/github.com/quic-go/quic-go/http3/transport.go +538 -0
  137. data/go/vendor/github.com/quic-go/quic-go/interface.go +221 -0
  138. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/ack_eliciting.go +33 -0
  139. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/ecn.go +340 -0
  140. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/frame.go +21 -0
  141. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/interfaces.go +39 -0
  142. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/lost_packet_tracker.go +73 -0
  143. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/mockgen.go +6 -0
  144. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/packet.go +60 -0
  145. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/packet_number_generator.go +84 -0
  146. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/received_packet_handler.go +119 -0
  147. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/received_packet_history.go +159 -0
  148. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/received_packet_tracker.go +228 -0
  149. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/send_mode.go +46 -0
  150. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/sent_packet_handler.go +1143 -0
  151. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/sent_packet_history.go +274 -0
  152. data/go/vendor/github.com/quic-go/quic-go/internal/congestion/bandwidth.go +22 -0
  153. data/go/vendor/github.com/quic-go/quic-go/internal/congestion/clock.go +20 -0
  154. data/go/vendor/github.com/quic-go/quic-go/internal/congestion/cubic.go +214 -0
  155. data/go/vendor/github.com/quic-go/quic-go/internal/congestion/cubic_sender.go +330 -0
  156. data/go/vendor/github.com/quic-go/quic-go/internal/congestion/hybrid_slow_start.go +112 -0
  157. data/go/vendor/github.com/quic-go/quic-go/internal/congestion/interface.go +27 -0
  158. data/go/vendor/github.com/quic-go/quic-go/internal/congestion/pacer.go +110 -0
  159. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/aead.go +91 -0
  160. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/cipher_suite.go +114 -0
  161. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/cipher_suite_fips140.go +48 -0
  162. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/crypto_setup.go +718 -0
  163. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/fake_conn.go +21 -0
  164. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/fips140_go126.go +9 -0
  165. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/fips140_legacy.go +7 -0
  166. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/header_protector.go +134 -0
  167. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/hkdf.go +26 -0
  168. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/initial_aead.go +80 -0
  169. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/interface.go +140 -0
  170. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/quic_event_go125.go +11 -0
  171. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/quic_event_go126.go +11 -0
  172. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/retry_go125.go +68 -0
  173. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/retry_go126.go +70 -0
  174. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/session_ticket.go +55 -0
  175. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/tls_config_go126.go +54 -0
  176. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/tls_config_go127.go +24 -0
  177. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/token_generator.go +126 -0
  178. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/token_protector.go +78 -0
  179. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/updatable_aead.go +372 -0
  180. data/go/vendor/github.com/quic-go/quic-go/internal/monotime/time.go +90 -0
  181. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/connection_id.go +116 -0
  182. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/encryption_level.go +65 -0
  183. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/key_phase.go +36 -0
  184. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/packet_number.go +57 -0
  185. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/params.go +169 -0
  186. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/perspective.go +26 -0
  187. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/protocol.go +156 -0
  188. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/stream.go +102 -0
  189. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/version.go +115 -0
  190. data/go/vendor/github.com/quic-go/quic-go/internal/qerr/error_codes.go +87 -0
  191. data/go/vendor/github.com/quic-go/quic-go/internal/qerr/errors.go +134 -0
  192. data/go/vendor/github.com/quic-go/quic-go/internal/utils/buffered_write_closer.go +26 -0
  193. data/go/vendor/github.com/quic-go/quic-go/internal/utils/connstats.go +14 -0
  194. data/go/vendor/github.com/quic-go/quic-go/internal/utils/linkedlist/README.md +6 -0
  195. data/go/vendor/github.com/quic-go/quic-go/internal/utils/linkedlist/linkedlist.go +264 -0
  196. data/go/vendor/github.com/quic-go/quic-go/internal/utils/log.go +131 -0
  197. data/go/vendor/github.com/quic-go/quic-go/internal/utils/rand.go +29 -0
  198. data/go/vendor/github.com/quic-go/quic-go/internal/utils/ringbuffer/ringbuffer.go +96 -0
  199. data/go/vendor/github.com/quic-go/quic-go/internal/utils/rtt_stats.go +159 -0
  200. data/go/vendor/github.com/quic-go/quic-go/internal/wire/ack_frame.go +298 -0
  201. data/go/vendor/github.com/quic-go/quic-go/internal/wire/ack_frequency_frame.go +65 -0
  202. data/go/vendor/github.com/quic-go/quic-go/internal/wire/ack_range.go +14 -0
  203. data/go/vendor/github.com/quic-go/quic-go/internal/wire/connection_close_frame.go +75 -0
  204. data/go/vendor/github.com/quic-go/quic-go/internal/wire/crypto_frame.go +97 -0
  205. data/go/vendor/github.com/quic-go/quic-go/internal/wire/data_blocked_frame.go +29 -0
  206. data/go/vendor/github.com/quic-go/quic-go/internal/wire/datagram_frame.go +85 -0
  207. data/go/vendor/github.com/quic-go/quic-go/internal/wire/extended_header.go +164 -0
  208. data/go/vendor/github.com/quic-go/quic-go/internal/wire/frame.go +33 -0
  209. data/go/vendor/github.com/quic-go/quic-go/internal/wire/frame_parser.go +192 -0
  210. data/go/vendor/github.com/quic-go/quic-go/internal/wire/frame_type.go +81 -0
  211. data/go/vendor/github.com/quic-go/quic-go/internal/wire/handshake_done_frame.go +17 -0
  212. data/go/vendor/github.com/quic-go/quic-go/internal/wire/header.go +302 -0
  213. data/go/vendor/github.com/quic-go/quic-go/internal/wire/immediate_ack_frame.go +18 -0
  214. data/go/vendor/github.com/quic-go/quic-go/internal/wire/log.go +74 -0
  215. data/go/vendor/github.com/quic-go/quic-go/internal/wire/max_data_frame.go +33 -0
  216. data/go/vendor/github.com/quic-go/quic-go/internal/wire/max_stream_data_frame.go +43 -0
  217. data/go/vendor/github.com/quic-go/quic-go/internal/wire/max_streams_frame.go +50 -0
  218. data/go/vendor/github.com/quic-go/quic-go/internal/wire/new_connection_id_frame.go +80 -0
  219. data/go/vendor/github.com/quic-go/quic-go/internal/wire/new_token_frame.go +43 -0
  220. data/go/vendor/github.com/quic-go/quic-go/internal/wire/path_challenge_frame.go +32 -0
  221. data/go/vendor/github.com/quic-go/quic-go/internal/wire/path_response_frame.go +32 -0
  222. data/go/vendor/github.com/quic-go/quic-go/internal/wire/ping_frame.go +17 -0
  223. data/go/vendor/github.com/quic-go/quic-go/internal/wire/pool.go +33 -0
  224. data/go/vendor/github.com/quic-go/quic-go/internal/wire/reset_stream_frame.go +79 -0
  225. data/go/vendor/github.com/quic-go/quic-go/internal/wire/retire_connection_id_frame.go +30 -0
  226. data/go/vendor/github.com/quic-go/quic-go/internal/wire/short_header.go +62 -0
  227. data/go/vendor/github.com/quic-go/quic-go/internal/wire/stop_sending_frame.go +45 -0
  228. data/go/vendor/github.com/quic-go/quic-go/internal/wire/stream_data_blocked_frame.go +42 -0
  229. data/go/vendor/github.com/quic-go/quic-go/internal/wire/stream_frame.go +191 -0
  230. data/go/vendor/github.com/quic-go/quic-go/internal/wire/streams_blocked_frame.go +50 -0
  231. data/go/vendor/github.com/quic-go/quic-go/internal/wire/transport_parameters.go +593 -0
  232. data/go/vendor/github.com/quic-go/quic-go/internal/wire/version_negotiation.go +53 -0
  233. data/go/vendor/github.com/quic-go/quic-go/mockgen.go +47 -0
  234. data/go/vendor/github.com/quic-go/quic-go/mtu_discoverer.go +253 -0
  235. data/go/vendor/github.com/quic-go/quic-go/oss-fuzz.sh +52 -0
  236. data/go/vendor/github.com/quic-go/quic-go/packet_packer.go +1009 -0
  237. data/go/vendor/github.com/quic-go/quic-go/packet_unpacker.go +222 -0
  238. data/go/vendor/github.com/quic-go/quic-go/path_manager.go +206 -0
  239. data/go/vendor/github.com/quic-go/quic-go/path_manager_outgoing.go +314 -0
  240. data/go/vendor/github.com/quic-go/quic-go/qlog/event.go +849 -0
  241. data/go/vendor/github.com/quic-go/quic-go/qlog/frame.go +481 -0
  242. data/go/vendor/github.com/quic-go/quic-go/qlog/packet_header.go +96 -0
  243. data/go/vendor/github.com/quic-go/quic-go/qlog/qlog_dir.go +61 -0
  244. data/go/vendor/github.com/quic-go/quic-go/qlog/types.go +305 -0
  245. data/go/vendor/github.com/quic-go/quic-go/qlogwriter/jsontext/encoder.go +324 -0
  246. data/go/vendor/github.com/quic-go/quic-go/qlogwriter/trace.go +124 -0
  247. data/go/vendor/github.com/quic-go/quic-go/qlogwriter/writer.go +229 -0
  248. data/go/vendor/github.com/quic-go/quic-go/quicvarint/io.go +98 -0
  249. data/go/vendor/github.com/quic-go/quic-go/quicvarint/varint.go +180 -0
  250. data/go/vendor/github.com/quic-go/quic-go/receive_stream.go +578 -0
  251. data/go/vendor/github.com/quic-go/quic-go/retransmission_queue.go +158 -0
  252. data/go/vendor/github.com/quic-go/quic-go/send_conn.go +124 -0
  253. data/go/vendor/github.com/quic-go/quic-go/send_queue.go +112 -0
  254. data/go/vendor/github.com/quic-go/quic-go/send_stream.go +915 -0
  255. data/go/vendor/github.com/quic-go/quic-go/server.go +1119 -0
  256. data/go/vendor/github.com/quic-go/quic-go/sni.go +136 -0
  257. data/go/vendor/github.com/quic-go/quic-go/stateless_reset.go +42 -0
  258. data/go/vendor/github.com/quic-go/quic-go/stream.go +253 -0
  259. data/go/vendor/github.com/quic-go/quic-go/streams_map.go +356 -0
  260. data/go/vendor/github.com/quic-go/quic-go/streams_map_incoming.go +209 -0
  261. data/go/vendor/github.com/quic-go/quic-go/streams_map_outgoing.go +253 -0
  262. data/go/vendor/github.com/quic-go/quic-go/sys_conn.go +143 -0
  263. data/go/vendor/github.com/quic-go/quic-go/sys_conn_buffers.go +68 -0
  264. data/go/vendor/github.com/quic-go/quic-go/sys_conn_buffers_write.go +70 -0
  265. data/go/vendor/github.com/quic-go/quic-go/sys_conn_df.go +22 -0
  266. data/go/vendor/github.com/quic-go/quic-go/sys_conn_df_darwin.go +90 -0
  267. data/go/vendor/github.com/quic-go/quic-go/sys_conn_df_linux.go +42 -0
  268. data/go/vendor/github.com/quic-go/quic-go/sys_conn_df_windows.go +52 -0
  269. data/go/vendor/github.com/quic-go/quic-go/sys_conn_helper_darwin.go +38 -0
  270. data/go/vendor/github.com/quic-go/quic-go/sys_conn_helper_freebsd.go +33 -0
  271. data/go/vendor/github.com/quic-go/quic-go/sys_conn_helper_linux.go +156 -0
  272. data/go/vendor/github.com/quic-go/quic-go/sys_conn_helper_nonlinux.go +10 -0
  273. data/go/vendor/github.com/quic-go/quic-go/sys_conn_no_oob.go +21 -0
  274. data/go/vendor/github.com/quic-go/quic-go/sys_conn_oob.go +338 -0
  275. data/go/vendor/github.com/quic-go/quic-go/sys_conn_windows.go +42 -0
  276. data/go/vendor/github.com/quic-go/quic-go/token_store.go +116 -0
  277. data/go/vendor/github.com/quic-go/quic-go/transport.go +848 -0
  278. data/go/vendor/github.com/quic-go/webtransport-go/LICENSE +7 -0
  279. data/go/vendor/github.com/quic-go/webtransport-go/README.md +31 -0
  280. data/go/vendor/github.com/quic-go/webtransport-go/SECURITY.md +14 -0
  281. data/go/vendor/github.com/quic-go/webtransport-go/capsule.go +261 -0
  282. data/go/vendor/github.com/quic-go/webtransport-go/client_conn.go +289 -0
  283. data/go/vendor/github.com/quic-go/webtransport-go/codecov.yml +12 -0
  284. data/go/vendor/github.com/quic-go/webtransport-go/config.go +90 -0
  285. data/go/vendor/github.com/quic-go/webtransport-go/errors.go +96 -0
  286. data/go/vendor/github.com/quic-go/webtransport-go/flow_control.go +107 -0
  287. data/go/vendor/github.com/quic-go/webtransport-go/protocol.go +59 -0
  288. data/go/vendor/github.com/quic-go/webtransport-go/receive_stream.go +185 -0
  289. data/go/vendor/github.com/quic-go/webtransport-go/send_stream.go +322 -0
  290. data/go/vendor/github.com/quic-go/webtransport-go/server.go +533 -0
  291. data/go/vendor/github.com/quic-go/webtransport-go/session.go +463 -0
  292. data/go/vendor/github.com/quic-go/webtransport-go/session_manager.go +190 -0
  293. data/go/vendor/github.com/quic-go/webtransport-go/stream.go +147 -0
  294. data/go/vendor/github.com/quic-go/webtransport-go/streams_map_incoming.go +179 -0
  295. data/go/vendor/github.com/quic-go/webtransport-go/streams_map_outgoing.go +357 -0
  296. data/go/vendor/github.com/quic-go/webtransport-go/transport.go +126 -0
  297. data/go/vendor/golang.org/x/crypto/LICENSE +27 -0
  298. data/go/vendor/golang.org/x/crypto/PATENTS +22 -0
  299. data/go/vendor/golang.org/x/crypto/chacha20/chacha_arm64.go +16 -0
  300. data/go/vendor/golang.org/x/crypto/chacha20/chacha_arm64.s +307 -0
  301. data/go/vendor/golang.org/x/crypto/chacha20/chacha_generic.go +398 -0
  302. data/go/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go +13 -0
  303. data/go/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.go +16 -0
  304. data/go/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.s +501 -0
  305. data/go/vendor/golang.org/x/crypto/chacha20/chacha_s390x.go +27 -0
  306. data/go/vendor/golang.org/x/crypto/chacha20/chacha_s390x.s +224 -0
  307. data/go/vendor/golang.org/x/crypto/chacha20/xor.go +42 -0
  308. data/go/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305.go +101 -0
  309. data/go/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.go +92 -0
  310. data/go/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.s +5230 -0
  311. data/go/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_generic.go +87 -0
  312. data/go/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_noasm.go +15 -0
  313. data/go/vendor/golang.org/x/crypto/chacha20poly1305/fips140only_compat.go +9 -0
  314. data/go/vendor/golang.org/x/crypto/chacha20poly1305/fips140only_go1.26.go +11 -0
  315. data/go/vendor/golang.org/x/crypto/chacha20poly1305/xchacha20poly1305.go +89 -0
  316. data/go/vendor/golang.org/x/crypto/internal/alias/alias.go +31 -0
  317. data/go/vendor/golang.org/x/crypto/internal/alias/alias_purego.go +34 -0
  318. data/go/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go +9 -0
  319. data/go/vendor/golang.org/x/crypto/internal/poly1305/poly1305.go +99 -0
  320. data/go/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s +93 -0
  321. data/go/vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go +47 -0
  322. data/go/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go +312 -0
  323. data/go/vendor/golang.org/x/crypto/internal/poly1305/sum_loong64.s +123 -0
  324. data/go/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.s +187 -0
  325. data/go/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.go +76 -0
  326. data/go/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.s +503 -0
  327. data/go/vendor/golang.org/x/net/LICENSE +27 -0
  328. data/go/vendor/golang.org/x/net/PATENTS +22 -0
  329. data/go/vendor/golang.org/x/net/bpf/asm.go +41 -0
  330. data/go/vendor/golang.org/x/net/bpf/constants.go +222 -0
  331. data/go/vendor/golang.org/x/net/bpf/doc.go +87 -0
  332. data/go/vendor/golang.org/x/net/bpf/instructions.go +726 -0
  333. data/go/vendor/golang.org/x/net/bpf/setter.go +10 -0
  334. data/go/vendor/golang.org/x/net/bpf/vm.go +150 -0
  335. data/go/vendor/golang.org/x/net/bpf/vm_instructions.go +182 -0
  336. data/go/vendor/golang.org/x/net/http/httpguts/guts.go +50 -0
  337. data/go/vendor/golang.org/x/net/http/httpguts/httplex.go +347 -0
  338. data/go/vendor/golang.org/x/net/http2/README.md +19 -0
  339. data/go/vendor/golang.org/x/net/http2/ascii.go +53 -0
  340. data/go/vendor/golang.org/x/net/http2/ciphers.go +641 -0
  341. data/go/vendor/golang.org/x/net/http2/client_conn_pool.go +301 -0
  342. data/go/vendor/golang.org/x/net/http2/client_priority_go126.go +20 -0
  343. data/go/vendor/golang.org/x/net/http2/client_priority_go127.go +13 -0
  344. data/go/vendor/golang.org/x/net/http2/clientconn.go +57 -0
  345. data/go/vendor/golang.org/x/net/http2/config.go +171 -0
  346. data/go/vendor/golang.org/x/net/http2/config_go125.go +15 -0
  347. data/go/vendor/golang.org/x/net/http2/config_go126.go +15 -0
  348. data/go/vendor/golang.org/x/net/http2/databuffer.go +149 -0
  349. data/go/vendor/golang.org/x/net/http2/errors.go +145 -0
  350. data/go/vendor/golang.org/x/net/http2/flow.go +120 -0
  351. data/go/vendor/golang.org/x/net/http2/frame.go +1871 -0
  352. data/go/vendor/golang.org/x/net/http2/gotrack.go +181 -0
  353. data/go/vendor/golang.org/x/net/http2/h2c/h2c.go +256 -0
  354. data/go/vendor/golang.org/x/net/http2/hpack/encode.go +245 -0
  355. data/go/vendor/golang.org/x/net/http2/hpack/hpack.go +523 -0
  356. data/go/vendor/golang.org/x/net/http2/hpack/huffman.go +226 -0
  357. data/go/vendor/golang.org/x/net/http2/hpack/static_table.go +188 -0
  358. data/go/vendor/golang.org/x/net/http2/hpack/tables.go +403 -0
  359. data/go/vendor/golang.org/x/net/http2/http2.go +415 -0
  360. data/go/vendor/golang.org/x/net/http2/pipe.go +184 -0
  361. data/go/vendor/golang.org/x/net/http2/server.go +3217 -0
  362. data/go/vendor/golang.org/x/net/http2/server_common.go +221 -0
  363. data/go/vendor/golang.org/x/net/http2/server_wrap.go +217 -0
  364. data/go/vendor/golang.org/x/net/http2/transport.go +3036 -0
  365. data/go/vendor/golang.org/x/net/http2/transport_common.go +447 -0
  366. data/go/vendor/golang.org/x/net/http2/transport_wrap.go +394 -0
  367. data/go/vendor/golang.org/x/net/http2/unencrypted.go +32 -0
  368. data/go/vendor/golang.org/x/net/http2/write.go +381 -0
  369. data/go/vendor/golang.org/x/net/http2/writesched.go +252 -0
  370. data/go/vendor/golang.org/x/net/http2/writesched_common.go +90 -0
  371. data/go/vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go +420 -0
  372. data/go/vendor/golang.org/x/net/http2/writesched_priority_rfc9218.go +226 -0
  373. data/go/vendor/golang.org/x/net/http2/writesched_random.go +81 -0
  374. data/go/vendor/golang.org/x/net/http2/writesched_roundrobin.go +121 -0
  375. data/go/vendor/golang.org/x/net/idna/idna.go +884 -0
  376. data/go/vendor/golang.org/x/net/idna/punycode.go +220 -0
  377. data/go/vendor/golang.org/x/net/idna/tables15.0.0.go +5144 -0
  378. data/go/vendor/golang.org/x/net/idna/tables17.0.0.go +5302 -0
  379. data/go/vendor/golang.org/x/net/idna/trie.go +51 -0
  380. data/go/vendor/golang.org/x/net/idna/trieval.go +119 -0
  381. data/go/vendor/golang.org/x/net/internal/httpcommon/ascii.go +53 -0
  382. data/go/vendor/golang.org/x/net/internal/httpcommon/headermap.go +115 -0
  383. data/go/vendor/golang.org/x/net/internal/httpcommon/request.go +475 -0
  384. data/go/vendor/golang.org/x/net/internal/httpsfv/httpsfv.go +665 -0
  385. data/go/vendor/golang.org/x/net/internal/iana/const.go +223 -0
  386. data/go/vendor/golang.org/x/net/internal/socket/cmsghdr.go +11 -0
  387. data/go/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go +13 -0
  388. data/go/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go +13 -0
  389. data/go/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go +13 -0
  390. data/go/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go +13 -0
  391. data/go/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go +27 -0
  392. data/go/vendor/golang.org/x/net/internal/socket/cmsghdr_unix.go +21 -0
  393. data/go/vendor/golang.org/x/net/internal/socket/cmsghdr_zos_s390x.go +11 -0
  394. data/go/vendor/golang.org/x/net/internal/socket/complete_dontwait.go +25 -0
  395. data/go/vendor/golang.org/x/net/internal/socket/complete_nodontwait.go +21 -0
  396. data/go/vendor/golang.org/x/net/internal/socket/empty.s +7 -0
  397. data/go/vendor/golang.org/x/net/internal/socket/error_unix.go +31 -0
  398. data/go/vendor/golang.org/x/net/internal/socket/error_windows.go +26 -0
  399. data/go/vendor/golang.org/x/net/internal/socket/iovec_32bit.go +18 -0
  400. data/go/vendor/golang.org/x/net/internal/socket/iovec_64bit.go +18 -0
  401. data/go/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go +18 -0
  402. data/go/vendor/golang.org/x/net/internal/socket/iovec_stub.go +11 -0
  403. data/go/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go +21 -0
  404. data/go/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go +195 -0
  405. data/go/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go +39 -0
  406. data/go/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go +16 -0
  407. data/go/vendor/golang.org/x/net/internal/socket/msghdr_linux.go +36 -0
  408. data/go/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go +23 -0
  409. data/go/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go +23 -0
  410. data/go/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go +14 -0
  411. data/go/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go +38 -0
  412. data/go/vendor/golang.org/x/net/internal/socket/msghdr_stub.go +14 -0
  413. data/go/vendor/golang.org/x/net/internal/socket/msghdr_zos_s390x.go +35 -0
  414. data/go/vendor/golang.org/x/net/internal/socket/norace.go +12 -0
  415. data/go/vendor/golang.org/x/net/internal/socket/race.go +37 -0
  416. data/go/vendor/golang.org/x/net/internal/socket/rawconn.go +91 -0
  417. data/go/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go +53 -0
  418. data/go/vendor/golang.org/x/net/internal/socket/rawconn_msg.go +59 -0
  419. data/go/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go +15 -0
  420. data/go/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go +15 -0
  421. data/go/vendor/golang.org/x/net/internal/socket/socket.go +281 -0
  422. data/go/vendor/golang.org/x/net/internal/socket/sys_bsd.go +15 -0
  423. data/go/vendor/golang.org/x/net/internal/socket/sys_const_unix.go +20 -0
  424. data/go/vendor/golang.org/x/net/internal/socket/sys_linux.go +22 -0
  425. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_386.go +28 -0
  426. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_386.s +11 -0
  427. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go +10 -0
  428. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go +10 -0
  429. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go +10 -0
  430. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_loong64.go +12 -0
  431. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go +10 -0
  432. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go +10 -0
  433. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go +10 -0
  434. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go +10 -0
  435. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_ppc.go +10 -0
  436. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go +10 -0
  437. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go +10 -0
  438. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_riscv64.go +12 -0
  439. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go +28 -0
  440. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s +11 -0
  441. data/go/vendor/golang.org/x/net/internal/socket/sys_netbsd.go +25 -0
  442. data/go/vendor/golang.org/x/net/internal/socket/sys_posix.go +184 -0
  443. data/go/vendor/golang.org/x/net/internal/socket/sys_stub.go +52 -0
  444. data/go/vendor/golang.org/x/net/internal/socket/sys_unix.go +121 -0
  445. data/go/vendor/golang.org/x/net/internal/socket/sys_windows.go +55 -0
  446. data/go/vendor/golang.org/x/net/internal/socket/sys_zos_s390x.go +66 -0
  447. data/go/vendor/golang.org/x/net/internal/socket/sys_zos_s390x.s +11 -0
  448. data/go/vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go +39 -0
  449. data/go/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go +32 -0
  450. data/go/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go +32 -0
  451. data/go/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go +32 -0
  452. data/go/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go +30 -0
  453. data/go/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go +32 -0
  454. data/go/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go +30 -0
  455. data/go/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go +32 -0
  456. data/go/vendor/golang.org/x/net/internal/socket/zsys_freebsd_riscv64.go +30 -0
  457. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go +35 -0
  458. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go +38 -0
  459. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go +35 -0
  460. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go +38 -0
  461. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_loong64.go +39 -0
  462. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go +35 -0
  463. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go +38 -0
  464. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go +38 -0
  465. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go +35 -0
  466. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc.go +35 -0
  467. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go +38 -0
  468. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go +38 -0
  469. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go +39 -0
  470. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go +38 -0
  471. data/go/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go +35 -0
  472. data/go/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go +38 -0
  473. data/go/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go +35 -0
  474. data/go/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go +38 -0
  475. data/go/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go +30 -0
  476. data/go/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go +32 -0
  477. data/go/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go +30 -0
  478. data/go/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go +32 -0
  479. data/go/vendor/golang.org/x/net/internal/socket/zsys_openbsd_mips64.go +30 -0
  480. data/go/vendor/golang.org/x/net/internal/socket/zsys_openbsd_ppc64.go +30 -0
  481. data/go/vendor/golang.org/x/net/internal/socket/zsys_openbsd_riscv64.go +30 -0
  482. data/go/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go +32 -0
  483. data/go/vendor/golang.org/x/net/internal/socket/zsys_zos_s390x.go +28 -0
  484. data/go/vendor/golang.org/x/net/ipv4/batch.go +194 -0
  485. data/go/vendor/golang.org/x/net/ipv4/control.go +144 -0
  486. data/go/vendor/golang.org/x/net/ipv4/control_bsd.go +43 -0
  487. data/go/vendor/golang.org/x/net/ipv4/control_pktinfo.go +41 -0
  488. data/go/vendor/golang.org/x/net/ipv4/control_stub.go +13 -0
  489. data/go/vendor/golang.org/x/net/ipv4/control_unix.go +75 -0
  490. data/go/vendor/golang.org/x/net/ipv4/control_windows.go +12 -0
  491. data/go/vendor/golang.org/x/net/ipv4/control_zos.go +88 -0
  492. data/go/vendor/golang.org/x/net/ipv4/dgramopt.go +264 -0
  493. data/go/vendor/golang.org/x/net/ipv4/doc.go +240 -0
  494. data/go/vendor/golang.org/x/net/ipv4/endpoint.go +186 -0
  495. data/go/vendor/golang.org/x/net/ipv4/genericopt.go +55 -0
  496. data/go/vendor/golang.org/x/net/ipv4/header.go +170 -0
  497. data/go/vendor/golang.org/x/net/ipv4/helper.go +77 -0
  498. data/go/vendor/golang.org/x/net/ipv4/iana.go +38 -0
  499. data/go/vendor/golang.org/x/net/ipv4/icmp.go +57 -0
  500. data/go/vendor/golang.org/x/net/ipv4/icmp_linux.go +25 -0
  501. data/go/vendor/golang.org/x/net/ipv4/icmp_stub.go +25 -0
  502. data/go/vendor/golang.org/x/net/ipv4/packet.go +117 -0
  503. data/go/vendor/golang.org/x/net/ipv4/payload.go +23 -0
  504. data/go/vendor/golang.org/x/net/ipv4/payload_cmsg.go +84 -0
  505. data/go/vendor/golang.org/x/net/ipv4/payload_nocmsg.go +39 -0
  506. data/go/vendor/golang.org/x/net/ipv4/sockopt.go +44 -0
  507. data/go/vendor/golang.org/x/net/ipv4/sockopt_posix.go +71 -0
  508. data/go/vendor/golang.org/x/net/ipv4/sockopt_stub.go +42 -0
  509. data/go/vendor/golang.org/x/net/ipv4/sys_aix.go +43 -0
  510. data/go/vendor/golang.org/x/net/ipv4/sys_asmreq.go +122 -0
  511. data/go/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go +25 -0
  512. data/go/vendor/golang.org/x/net/ipv4/sys_asmreqn.go +44 -0
  513. data/go/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go +21 -0
  514. data/go/vendor/golang.org/x/net/ipv4/sys_bpf.go +24 -0
  515. data/go/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go +16 -0
  516. data/go/vendor/golang.org/x/net/ipv4/sys_bsd.go +41 -0
  517. data/go/vendor/golang.org/x/net/ipv4/sys_darwin.go +69 -0
  518. data/go/vendor/golang.org/x/net/ipv4/sys_dragonfly.go +39 -0
  519. data/go/vendor/golang.org/x/net/ipv4/sys_freebsd.go +80 -0
  520. data/go/vendor/golang.org/x/net/ipv4/sys_linux.go +61 -0
  521. data/go/vendor/golang.org/x/net/ipv4/sys_solaris.go +61 -0
  522. data/go/vendor/golang.org/x/net/ipv4/sys_ssmreq.go +52 -0
  523. data/go/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go +21 -0
  524. data/go/vendor/golang.org/x/net/ipv4/sys_stub.go +13 -0
  525. data/go/vendor/golang.org/x/net/ipv4/sys_windows.go +44 -0
  526. data/go/vendor/golang.org/x/net/ipv4/sys_zos.go +57 -0
  527. data/go/vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go +16 -0
  528. data/go/vendor/golang.org/x/net/ipv4/zsys_darwin.go +59 -0
  529. data/go/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go +13 -0
  530. data/go/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go +52 -0
  531. data/go/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go +54 -0
  532. data/go/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go +54 -0
  533. data/go/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go +52 -0
  534. data/go/vendor/golang.org/x/net/ipv4/zsys_freebsd_riscv64.go +52 -0
  535. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_386.go +72 -0
  536. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go +74 -0
  537. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go +72 -0
  538. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go +74 -0
  539. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_loong64.go +76 -0
  540. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go +72 -0
  541. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go +74 -0
  542. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go +74 -0
  543. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go +72 -0
  544. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go +72 -0
  545. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go +74 -0
  546. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go +74 -0
  547. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go +76 -0
  548. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go +74 -0
  549. data/go/vendor/golang.org/x/net/ipv4/zsys_netbsd.go +13 -0
  550. data/go/vendor/golang.org/x/net/ipv4/zsys_openbsd.go +13 -0
  551. data/go/vendor/golang.org/x/net/ipv4/zsys_solaris.go +57 -0
  552. data/go/vendor/golang.org/x/net/ipv4/zsys_zos_s390x.go +56 -0
  553. data/go/vendor/golang.org/x/net/ipv6/batch.go +116 -0
  554. data/go/vendor/golang.org/x/net/ipv6/control.go +187 -0
  555. data/go/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go +51 -0
  556. data/go/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go +97 -0
  557. data/go/vendor/golang.org/x/net/ipv6/control_stub.go +13 -0
  558. data/go/vendor/golang.org/x/net/ipv6/control_unix.go +55 -0
  559. data/go/vendor/golang.org/x/net/ipv6/control_windows.go +12 -0
  560. data/go/vendor/golang.org/x/net/ipv6/dgramopt.go +301 -0
  561. data/go/vendor/golang.org/x/net/ipv6/doc.go +239 -0
  562. data/go/vendor/golang.org/x/net/ipv6/endpoint.go +127 -0
  563. data/go/vendor/golang.org/x/net/ipv6/genericopt.go +56 -0
  564. data/go/vendor/golang.org/x/net/ipv6/header.go +55 -0
  565. data/go/vendor/golang.org/x/net/ipv6/helper.go +58 -0
  566. data/go/vendor/golang.org/x/net/ipv6/iana.go +86 -0
  567. data/go/vendor/golang.org/x/net/ipv6/icmp.go +60 -0
  568. data/go/vendor/golang.org/x/net/ipv6/icmp_bsd.go +29 -0
  569. data/go/vendor/golang.org/x/net/ipv6/icmp_linux.go +27 -0
  570. data/go/vendor/golang.org/x/net/ipv6/icmp_solaris.go +27 -0
  571. data/go/vendor/golang.org/x/net/ipv6/icmp_stub.go +23 -0
  572. data/go/vendor/golang.org/x/net/ipv6/icmp_windows.go +22 -0
  573. data/go/vendor/golang.org/x/net/ipv6/icmp_zos.go +29 -0
  574. data/go/vendor/golang.org/x/net/ipv6/payload.go +23 -0
  575. data/go/vendor/golang.org/x/net/ipv6/payload_cmsg.go +70 -0
  576. data/go/vendor/golang.org/x/net/ipv6/payload_nocmsg.go +38 -0
  577. data/go/vendor/golang.org/x/net/ipv6/sockopt.go +43 -0
  578. data/go/vendor/golang.org/x/net/ipv6/sockopt_posix.go +89 -0
  579. data/go/vendor/golang.org/x/net/ipv6/sockopt_stub.go +46 -0
  580. data/go/vendor/golang.org/x/net/ipv6/sys_aix.go +79 -0
  581. data/go/vendor/golang.org/x/net/ipv6/sys_asmreq.go +24 -0
  582. data/go/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go +17 -0
  583. data/go/vendor/golang.org/x/net/ipv6/sys_bpf.go +24 -0
  584. data/go/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go +16 -0
  585. data/go/vendor/golang.org/x/net/ipv6/sys_bsd.go +59 -0
  586. data/go/vendor/golang.org/x/net/ipv6/sys_darwin.go +80 -0
  587. data/go/vendor/golang.org/x/net/ipv6/sys_freebsd.go +94 -0
  588. data/go/vendor/golang.org/x/net/ipv6/sys_linux.go +76 -0
  589. data/go/vendor/golang.org/x/net/ipv6/sys_solaris.go +76 -0
  590. data/go/vendor/golang.org/x/net/ipv6/sys_ssmreq.go +54 -0
  591. data/go/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go +21 -0
  592. data/go/vendor/golang.org/x/net/ipv6/sys_stub.go +13 -0
  593. data/go/vendor/golang.org/x/net/ipv6/sys_windows.go +68 -0
  594. data/go/vendor/golang.org/x/net/ipv6/sys_zos.go +72 -0
  595. data/go/vendor/golang.org/x/net/ipv6/zsys_aix_ppc64.go +68 -0
  596. data/go/vendor/golang.org/x/net/ipv6/zsys_darwin.go +64 -0
  597. data/go/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go +42 -0
  598. data/go/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go +64 -0
  599. data/go/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go +66 -0
  600. data/go/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go +66 -0
  601. data/go/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm64.go +64 -0
  602. data/go/vendor/golang.org/x/net/ipv6/zsys_freebsd_riscv64.go +64 -0
  603. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_386.go +72 -0
  604. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go +74 -0
  605. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go +72 -0
  606. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go +74 -0
  607. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_loong64.go +76 -0
  608. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go +72 -0
  609. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go +74 -0
  610. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go +74 -0
  611. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go +72 -0
  612. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go +72 -0
  613. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go +74 -0
  614. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go +74 -0
  615. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_riscv64.go +76 -0
  616. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go +74 -0
  617. data/go/vendor/golang.org/x/net/ipv6/zsys_netbsd.go +42 -0
  618. data/go/vendor/golang.org/x/net/ipv6/zsys_openbsd.go +42 -0
  619. data/go/vendor/golang.org/x/net/ipv6/zsys_solaris.go +63 -0
  620. data/go/vendor/golang.org/x/net/ipv6/zsys_zos_s390x.go +62 -0
  621. data/go/vendor/golang.org/x/sys/LICENSE +27 -0
  622. data/go/vendor/golang.org/x/sys/PATENTS +22 -0
  623. data/go/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s +17 -0
  624. data/go/vendor/golang.org/x/sys/cpu/asm_darwin_arm64_gc.s +12 -0
  625. data/go/vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s +17 -0
  626. data/go/vendor/golang.org/x/sys/cpu/byteorder.go +66 -0
  627. data/go/vendor/golang.org/x/sys/cpu/cpu.go +343 -0
  628. data/go/vendor/golang.org/x/sys/cpu/cpu_aix.go +33 -0
  629. data/go/vendor/golang.org/x/sys/cpu/cpu_arm.go +73 -0
  630. data/go/vendor/golang.org/x/sys/cpu/cpu_arm64.go +191 -0
  631. data/go/vendor/golang.org/x/sys/cpu/cpu_arm64.s +35 -0
  632. data/go/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64.go +67 -0
  633. data/go/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64_other.go +31 -0
  634. data/go/vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go +61 -0
  635. data/go/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go +12 -0
  636. data/go/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go +21 -0
  637. data/go/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go +15 -0
  638. data/go/vendor/golang.org/x/sys/cpu/cpu_gc_x86.s +26 -0
  639. data/go/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go +12 -0
  640. data/go/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go +22 -0
  641. data/go/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c +37 -0
  642. data/go/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go +25 -0
  643. data/go/vendor/golang.org/x/sys/cpu/cpu_linux.go +15 -0
  644. data/go/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go +39 -0
  645. data/go/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go +120 -0
  646. data/go/vendor/golang.org/x/sys/cpu/cpu_linux_loong64.go +22 -0
  647. data/go/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go +22 -0
  648. data/go/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go +9 -0
  649. data/go/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go +30 -0
  650. data/go/vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go +162 -0
  651. data/go/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go +40 -0
  652. data/go/vendor/golang.org/x/sys/cpu/cpu_loong64.go +62 -0
  653. data/go/vendor/golang.org/x/sys/cpu/cpu_loong64.s +13 -0
  654. data/go/vendor/golang.org/x/sys/cpu/cpu_mips64x.go +15 -0
  655. data/go/vendor/golang.org/x/sys/cpu/cpu_mipsx.go +11 -0
  656. data/go/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go +173 -0
  657. data/go/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go +65 -0
  658. data/go/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s +11 -0
  659. data/go/vendor/golang.org/x/sys/cpu/cpu_other_arm.go +9 -0
  660. data/go/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go +11 -0
  661. data/go/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go +11 -0
  662. data/go/vendor/golang.org/x/sys/cpu/cpu_other_ppc64x.go +12 -0
  663. data/go/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go +11 -0
  664. data/go/vendor/golang.org/x/sys/cpu/cpu_other_x86.go +11 -0
  665. data/go/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go +16 -0
  666. data/go/vendor/golang.org/x/sys/cpu/cpu_riscv64.go +33 -0
  667. data/go/vendor/golang.org/x/sys/cpu/cpu_s390x.go +172 -0
  668. data/go/vendor/golang.org/x/sys/cpu/cpu_s390x.s +57 -0
  669. data/go/vendor/golang.org/x/sys/cpu/cpu_wasm.go +17 -0
  670. data/go/vendor/golang.org/x/sys/cpu/cpu_windows.go +26 -0
  671. data/go/vendor/golang.org/x/sys/cpu/cpu_windows_arm64.go +38 -0
  672. data/go/vendor/golang.org/x/sys/cpu/cpu_x86.go +236 -0
  673. data/go/vendor/golang.org/x/sys/cpu/cpu_zos.go +10 -0
  674. data/go/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go +25 -0
  675. data/go/vendor/golang.org/x/sys/cpu/endian_big.go +10 -0
  676. data/go/vendor/golang.org/x/sys/cpu/endian_little.go +10 -0
  677. data/go/vendor/golang.org/x/sys/cpu/hwcap_linux.go +71 -0
  678. data/go/vendor/golang.org/x/sys/cpu/parse.go +55 -0
  679. data/go/vendor/golang.org/x/sys/cpu/proc_cpuinfo_linux.go +53 -0
  680. data/go/vendor/golang.org/x/sys/cpu/runtime_auxv.go +16 -0
  681. data/go/vendor/golang.org/x/sys/cpu/runtime_auxv_go121.go +18 -0
  682. data/go/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go +26 -0
  683. data/go/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go +35 -0
  684. data/go/vendor/golang.org/x/sys/cpu/syscall_darwin_arm64_gc.go +54 -0
  685. data/go/vendor/golang.org/x/sys/cpu/syscall_darwin_x86_gc.go +98 -0
  686. data/go/vendor/golang.org/x/sys/cpu/zcpu_windows.go +48 -0
  687. data/go/vendor/golang.org/x/sys/unix/README.md +184 -0
  688. data/go/vendor/golang.org/x/sys/unix/affinity_linux.go +189 -0
  689. data/go/vendor/golang.org/x/sys/unix/aliases.go +13 -0
  690. data/go/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s +17 -0
  691. data/go/vendor/golang.org/x/sys/unix/asm_bsd_386.s +27 -0
  692. data/go/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s +27 -0
  693. data/go/vendor/golang.org/x/sys/unix/asm_bsd_arm.s +27 -0
  694. data/go/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s +27 -0
  695. data/go/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s +29 -0
  696. data/go/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s +27 -0
  697. data/go/vendor/golang.org/x/sys/unix/asm_linux_386.s +65 -0
  698. data/go/vendor/golang.org/x/sys/unix/asm_linux_amd64.s +57 -0
  699. data/go/vendor/golang.org/x/sys/unix/asm_linux_arm.s +56 -0
  700. data/go/vendor/golang.org/x/sys/unix/asm_linux_arm64.s +50 -0
  701. data/go/vendor/golang.org/x/sys/unix/asm_linux_loong64.s +51 -0
  702. data/go/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s +54 -0
  703. data/go/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s +52 -0
  704. data/go/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s +42 -0
  705. data/go/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s +47 -0
  706. data/go/vendor/golang.org/x/sys/unix/asm_linux_s390x.s +54 -0
  707. data/go/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s +29 -0
  708. data/go/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s +17 -0
  709. data/go/vendor/golang.org/x/sys/unix/asm_zos_s390x.s +382 -0
  710. data/go/vendor/golang.org/x/sys/unix/auxv.go +36 -0
  711. data/go/vendor/golang.org/x/sys/unix/auxv_unsupported.go +13 -0
  712. data/go/vendor/golang.org/x/sys/unix/bluetooth_linux.go +36 -0
  713. data/go/vendor/golang.org/x/sys/unix/bpxsvc_zos.go +657 -0
  714. data/go/vendor/golang.org/x/sys/unix/bpxsvc_zos.s +192 -0
  715. data/go/vendor/golang.org/x/sys/unix/cap_freebsd.go +195 -0
  716. data/go/vendor/golang.org/x/sys/unix/constants.go +13 -0
  717. data/go/vendor/golang.org/x/sys/unix/dev_aix_ppc.go +26 -0
  718. data/go/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go +28 -0
  719. data/go/vendor/golang.org/x/sys/unix/dev_darwin.go +24 -0
  720. data/go/vendor/golang.org/x/sys/unix/dev_dragonfly.go +30 -0
  721. data/go/vendor/golang.org/x/sys/unix/dev_freebsd.go +30 -0
  722. data/go/vendor/golang.org/x/sys/unix/dev_linux.go +42 -0
  723. data/go/vendor/golang.org/x/sys/unix/dev_netbsd.go +29 -0
  724. data/go/vendor/golang.org/x/sys/unix/dev_openbsd.go +29 -0
  725. data/go/vendor/golang.org/x/sys/unix/dev_zos.go +28 -0
  726. data/go/vendor/golang.org/x/sys/unix/dirent.go +102 -0
  727. data/go/vendor/golang.org/x/sys/unix/endian_big.go +9 -0
  728. data/go/vendor/golang.org/x/sys/unix/endian_little.go +9 -0
  729. data/go/vendor/golang.org/x/sys/unix/env_unix.go +31 -0
  730. data/go/vendor/golang.org/x/sys/unix/fcntl.go +36 -0
  731. data/go/vendor/golang.org/x/sys/unix/fcntl_darwin.go +24 -0
  732. data/go/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go +13 -0
  733. data/go/vendor/golang.org/x/sys/unix/fdset.go +27 -0
  734. data/go/vendor/golang.org/x/sys/unix/gccgo.go +59 -0
  735. data/go/vendor/golang.org/x/sys/unix/gccgo_c.c +44 -0
  736. data/go/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go +20 -0
  737. data/go/vendor/golang.org/x/sys/unix/ifreq_linux.go +139 -0
  738. data/go/vendor/golang.org/x/sys/unix/ioctl_linux.go +334 -0
  739. data/go/vendor/golang.org/x/sys/unix/ioctl_signed.go +74 -0
  740. data/go/vendor/golang.org/x/sys/unix/ioctl_unsigned.go +74 -0
  741. data/go/vendor/golang.org/x/sys/unix/ioctl_zos.go +71 -0
  742. data/go/vendor/golang.org/x/sys/unix/mkall.sh +250 -0
  743. data/go/vendor/golang.org/x/sys/unix/mkerrors.sh +814 -0
  744. data/go/vendor/golang.org/x/sys/unix/mmap_nomremap.go +13 -0
  745. data/go/vendor/golang.org/x/sys/unix/mremap.go +57 -0
  746. data/go/vendor/golang.org/x/sys/unix/pagesize_unix.go +15 -0
  747. data/go/vendor/golang.org/x/sys/unix/pledge_openbsd.go +111 -0
  748. data/go/vendor/golang.org/x/sys/unix/ptrace_darwin.go +11 -0
  749. data/go/vendor/golang.org/x/sys/unix/ptrace_ios.go +11 -0
  750. data/go/vendor/golang.org/x/sys/unix/race.go +30 -0
  751. data/go/vendor/golang.org/x/sys/unix/race0.go +25 -0
  752. data/go/vendor/golang.org/x/sys/unix/readdirent_getdents.go +12 -0
  753. data/go/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go +19 -0
  754. data/go/vendor/golang.org/x/sys/unix/readv_unix.go +103 -0
  755. data/go/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go +16 -0
  756. data/go/vendor/golang.org/x/sys/unix/sockcmsg_linux.go +85 -0
  757. data/go/vendor/golang.org/x/sys/unix/sockcmsg_unix.go +106 -0
  758. data/go/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go +46 -0
  759. data/go/vendor/golang.org/x/sys/unix/sockcmsg_zos.go +58 -0
  760. data/go/vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s +75 -0
  761. data/go/vendor/golang.org/x/sys/unix/syscall.go +86 -0
  762. data/go/vendor/golang.org/x/sys/unix/syscall_aix.go +582 -0
  763. data/go/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go +52 -0
  764. data/go/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go +83 -0
  765. data/go/vendor/golang.org/x/sys/unix/syscall_bsd.go +609 -0
  766. data/go/vendor/golang.org/x/sys/unix/syscall_darwin.go +711 -0
  767. data/go/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +50 -0
  768. data/go/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +50 -0
  769. data/go/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +26 -0
  770. data/go/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +359 -0
  771. data/go/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +56 -0
  772. data/go/vendor/golang.org/x/sys/unix/syscall_freebsd.go +455 -0
  773. data/go/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go +64 -0
  774. data/go/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +64 -0
  775. data/go/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +60 -0
  776. data/go/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +60 -0
  777. data/go/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go +60 -0
  778. data/go/vendor/golang.org/x/sys/unix/syscall_hurd.go +30 -0
  779. data/go/vendor/golang.org/x/sys/unix/syscall_hurd_386.go +28 -0
  780. data/go/vendor/golang.org/x/sys/unix/syscall_illumos.go +78 -0
  781. data/go/vendor/golang.org/x/sys/unix/syscall_linux.go +2574 -0
  782. data/go/vendor/golang.org/x/sys/unix/syscall_linux_386.go +313 -0
  783. data/go/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go +12 -0
  784. data/go/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go +144 -0
  785. data/go/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go +12 -0
  786. data/go/vendor/golang.org/x/sys/unix/syscall_linux_arm.go +218 -0
  787. data/go/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +188 -0
  788. data/go/vendor/golang.org/x/sys/unix/syscall_linux_gc.go +14 -0
  789. data/go/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go +16 -0
  790. data/go/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go +13 -0
  791. data/go/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go +30 -0
  792. data/go/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go +20 -0
  793. data/go/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go +220 -0
  794. data/go/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +187 -0
  795. data/go/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +173 -0
  796. data/go/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go +203 -0
  797. data/go/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +114 -0
  798. data/go/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +193 -0
  799. data/go/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go +295 -0
  800. data/go/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +111 -0
  801. data/go/vendor/golang.org/x/sys/unix/syscall_netbsd.go +388 -0
  802. data/go/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go +37 -0
  803. data/go/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +37 -0
  804. data/go/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +37 -0
  805. data/go/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +37 -0
  806. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd.go +346 -0
  807. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go +41 -0
  808. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +41 -0
  809. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +41 -0
  810. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go +41 -0
  811. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go +26 -0
  812. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go +39 -0
  813. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go +41 -0
  814. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go +41 -0
  815. data/go/vendor/golang.org/x/sys/unix/syscall_solaris.go +1183 -0
  816. data/go/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +27 -0
  817. data/go/vendor/golang.org/x/sys/unix/syscall_unix.go +619 -0
  818. data/go/vendor/golang.org/x/sys/unix/syscall_unix_gc.go +14 -0
  819. data/go/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go +22 -0
  820. data/go/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go +3213 -0
  821. data/go/vendor/golang.org/x/sys/unix/sysvshm_linux.go +20 -0
  822. data/go/vendor/golang.org/x/sys/unix/sysvshm_unix.go +51 -0
  823. data/go/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go +13 -0
  824. data/go/vendor/golang.org/x/sys/unix/timestruct.go +76 -0
  825. data/go/vendor/golang.org/x/sys/unix/unveil_openbsd.go +51 -0
  826. data/go/vendor/golang.org/x/sys/unix/vgetrandom_linux.go +13 -0
  827. data/go/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go +11 -0
  828. data/go/vendor/golang.org/x/sys/unix/xattr_bsd.go +280 -0
  829. data/go/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go +1384 -0
  830. data/go/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go +1385 -0
  831. data/go/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +1922 -0
  832. data/go/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +1922 -0
  833. data/go/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +1737 -0
  834. data/go/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +2042 -0
  835. data/go/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +2039 -0
  836. data/go/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +2033 -0
  837. data/go/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +2033 -0
  838. data/go/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go +2147 -0
  839. data/go/vendor/golang.org/x/sys/unix/zerrors_linux.go +4207 -0
  840. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +883 -0
  841. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +883 -0
  842. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +888 -0
  843. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +885 -0
  844. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +875 -0
  845. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +889 -0
  846. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +889 -0
  847. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +889 -0
  848. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +889 -0
  849. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +941 -0
  850. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +945 -0
  851. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +945 -0
  852. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +885 -0
  853. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +944 -0
  854. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +987 -0
  855. data/go/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +1779 -0
  856. data/go/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +1769 -0
  857. data/go/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +1758 -0
  858. data/go/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +1769 -0
  859. data/go/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +1905 -0
  860. data/go/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +1905 -0
  861. data/go/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +1905 -0
  862. data/go/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go +1905 -0
  863. data/go/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go +1905 -0
  864. data/go/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go +1904 -0
  865. data/go/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go +1903 -0
  866. data/go/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +1556 -0
  867. data/go/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go +990 -0
  868. data/go/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go +40 -0
  869. data/go/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go +17 -0
  870. data/go/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go +49 -0
  871. data/go/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go +49 -0
  872. data/go/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go +79 -0
  873. data/go/vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s +364 -0
  874. data/go/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +1461 -0
  875. data/go/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +1420 -0
  876. data/go/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +1188 -0
  877. data/go/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +1069 -0
  878. data/go/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +2728 -0
  879. data/go/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +799 -0
  880. data/go/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +2728 -0
  881. data/go/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +799 -0
  882. data/go/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +1666 -0
  883. data/go/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +1886 -0
  884. data/go/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +1886 -0
  885. data/go/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +1886 -0
  886. data/go/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +1886 -0
  887. data/go/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go +1886 -0
  888. data/go/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go +101 -0
  889. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux.go +2267 -0
  890. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +469 -0
  891. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +636 -0
  892. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +584 -0
  893. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +535 -0
  894. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go +469 -0
  895. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +636 -0
  896. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +630 -0
  897. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +619 -0
  898. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +636 -0
  899. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go +641 -0
  900. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +687 -0
  901. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +687 -0
  902. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +531 -0
  903. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +478 -0
  904. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +631 -0
  905. data/go/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +1848 -0
  906. data/go/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +1848 -0
  907. data/go/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +1848 -0
  908. data/go/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +1848 -0
  909. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +2407 -0
  910. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s +719 -0
  911. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +2407 -0
  912. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s +719 -0
  913. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +2407 -0
  914. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s +719 -0
  915. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +2407 -0
  916. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s +719 -0
  917. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +2407 -0
  918. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s +719 -0
  919. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go +2407 -0
  920. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s +862 -0
  921. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go +2407 -0
  922. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s +719 -0
  923. data/go/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +2217 -0
  924. data/go/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go +3458 -0
  925. data/go/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +280 -0
  926. data/go/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +280 -0
  927. data/go/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +280 -0
  928. data/go/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go +280 -0
  929. data/go/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go +280 -0
  930. data/go/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go +280 -0
  931. data/go/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go +281 -0
  932. data/go/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go +439 -0
  933. data/go/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +437 -0
  934. data/go/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go +316 -0
  935. data/go/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +393 -0
  936. data/go/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +393 -0
  937. data/go/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +393 -0
  938. data/go/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +393 -0
  939. data/go/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go +393 -0
  940. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +470 -0
  941. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +394 -0
  942. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +434 -0
  943. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +337 -0
  944. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +334 -0
  945. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +454 -0
  946. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +384 -0
  947. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +384 -0
  948. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +454 -0
  949. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +461 -0
  950. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +433 -0
  951. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +433 -0
  952. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +338 -0
  953. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +399 -0
  954. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +413 -0
  955. data/go/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +274 -0
  956. data/go/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +274 -0
  957. data/go/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +274 -0
  958. data/go/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go +274 -0
  959. data/go/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +219 -0
  960. data/go/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +219 -0
  961. data/go/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +219 -0
  962. data/go/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go +218 -0
  963. data/go/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go +221 -0
  964. data/go/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go +217 -0
  965. data/go/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go +218 -0
  966. data/go/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go +2852 -0
  967. data/go/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +353 -0
  968. data/go/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +357 -0
  969. data/go/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +878 -0
  970. data/go/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +878 -0
  971. data/go/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +473 -0
  972. data/go/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +651 -0
  973. data/go/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +656 -0
  974. data/go/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +642 -0
  975. data/go/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +636 -0
  976. data/go/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go +638 -0
  977. data/go/vendor/golang.org/x/sys/unix/ztypes_linux.go +6475 -0
  978. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +717 -0
  979. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +731 -0
  980. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +711 -0
  981. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +710 -0
  982. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +711 -0
  983. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +716 -0
  984. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +713 -0
  985. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +713 -0
  986. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +716 -0
  987. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +724 -0
  988. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +719 -0
  989. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +719 -0
  990. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +798 -0
  991. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +733 -0
  992. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +714 -0
  993. data/go/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +585 -0
  994. data/go/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +593 -0
  995. data/go/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +590 -0
  996. data/go/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +593 -0
  997. data/go/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +568 -0
  998. data/go/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +568 -0
  999. data/go/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +575 -0
  1000. data/go/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +568 -0
  1001. data/go/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +568 -0
  1002. data/go/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go +570 -0
  1003. data/go/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go +570 -0
  1004. data/go/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +516 -0
  1005. data/go/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go +552 -0
  1006. data/go/vendor/golang.org/x/sys/windows/aliases.go +13 -0
  1007. data/go/vendor/golang.org/x/sys/windows/dll_windows.go +380 -0
  1008. data/go/vendor/golang.org/x/sys/windows/env_windows.go +57 -0
  1009. data/go/vendor/golang.org/x/sys/windows/eventlog.go +20 -0
  1010. data/go/vendor/golang.org/x/sys/windows/exec_windows.go +248 -0
  1011. data/go/vendor/golang.org/x/sys/windows/memory_windows.go +48 -0
  1012. data/go/vendor/golang.org/x/sys/windows/mkerrors.bash +70 -0
  1013. data/go/vendor/golang.org/x/sys/windows/mkknownfolderids.bash +27 -0
  1014. data/go/vendor/golang.org/x/sys/windows/mksyscall.go +9 -0
  1015. data/go/vendor/golang.org/x/sys/windows/race.go +30 -0
  1016. data/go/vendor/golang.org/x/sys/windows/race0.go +25 -0
  1017. data/go/vendor/golang.org/x/sys/windows/security_windows.go +1537 -0
  1018. data/go/vendor/golang.org/x/sys/windows/service.go +257 -0
  1019. data/go/vendor/golang.org/x/sys/windows/setupapi_windows.go +1425 -0
  1020. data/go/vendor/golang.org/x/sys/windows/str.go +22 -0
  1021. data/go/vendor/golang.org/x/sys/windows/syscall.go +104 -0
  1022. data/go/vendor/golang.org/x/sys/windows/syscall_windows.go +1952 -0
  1023. data/go/vendor/golang.org/x/sys/windows/types_windows.go +4057 -0
  1024. data/go/vendor/golang.org/x/sys/windows/types_windows_386.go +35 -0
  1025. data/go/vendor/golang.org/x/sys/windows/types_windows_amd64.go +34 -0
  1026. data/go/vendor/golang.org/x/sys/windows/types_windows_arm.go +35 -0
  1027. data/go/vendor/golang.org/x/sys/windows/types_windows_arm64.go +34 -0
  1028. data/go/vendor/golang.org/x/sys/windows/zerrors_windows.go +9468 -0
  1029. data/go/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go +149 -0
  1030. data/go/vendor/golang.org/x/sys/windows/zsyscall_windows.go +4828 -0
  1031. data/go/vendor/golang.org/x/text/LICENSE +27 -0
  1032. data/go/vendor/golang.org/x/text/PATENTS +22 -0
  1033. data/go/vendor/golang.org/x/text/secure/bidirule/bidirule.go +340 -0
  1034. data/go/vendor/golang.org/x/text/transform/transform.go +709 -0
  1035. data/go/vendor/golang.org/x/text/unicode/bidi/bidi.go +359 -0
  1036. data/go/vendor/golang.org/x/text/unicode/bidi/bracket.go +335 -0
  1037. data/go/vendor/golang.org/x/text/unicode/bidi/core.go +1064 -0
  1038. data/go/vendor/golang.org/x/text/unicode/bidi/prop.go +206 -0
  1039. data/go/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go +2042 -0
  1040. data/go/vendor/golang.org/x/text/unicode/bidi/tables17.0.0.go +2135 -0
  1041. data/go/vendor/golang.org/x/text/unicode/bidi/trieval.go +48 -0
  1042. data/go/vendor/golang.org/x/text/unicode/norm/composition.go +512 -0
  1043. data/go/vendor/golang.org/x/text/unicode/norm/forminfo.go +296 -0
  1044. data/go/vendor/golang.org/x/text/unicode/norm/input.go +109 -0
  1045. data/go/vendor/golang.org/x/text/unicode/norm/iter.go +454 -0
  1046. data/go/vendor/golang.org/x/text/unicode/norm/normalize.go +610 -0
  1047. data/go/vendor/golang.org/x/text/unicode/norm/readwriter.go +125 -0
  1048. data/go/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go +7907 -0
  1049. data/go/vendor/golang.org/x/text/unicode/norm/tables17.0.0.go +8104 -0
  1050. data/go/vendor/golang.org/x/text/unicode/norm/transform.go +88 -0
  1051. data/go/vendor/golang.org/x/text/unicode/norm/trie.go +54 -0
  1052. data/go/vendor/modules.txt +63 -0
  1053. data/lib/puma_plus/core/version.rb +13 -0
  1054. data/lib/puma_plus/core.rb +60 -0
  1055. metadata +1099 -0
@@ -0,0 +1,184 @@
1
+ package frontend
2
+
3
+ import (
4
+ "crypto/ecdsa"
5
+ "crypto/elliptic"
6
+ "crypto/rand"
7
+ "crypto/tls"
8
+ "crypto/x509"
9
+ "crypto/x509/pkix"
10
+ "fmt"
11
+ "math/big"
12
+ "net"
13
+ "strings"
14
+ "time"
15
+ )
16
+
17
+ // DevCertLifetime is how long a generated development certificate stays valid.
18
+ //
19
+ // Long enough that no server outlives its own certificate, which is the failure
20
+ // this replaced -- see DevCertificate for why a long window is safe here.
21
+ const DevCertLifetime = 10 * 365 * 24 * time.Hour
22
+
23
+ // DevCertificate mints a self-signed certificate for local development.
24
+ //
25
+ // HTTP/3 has no cleartext mode -- QUIC always runs TLS -- so a certificate is
26
+ // not optional the way it is for h1 and h2c. Rather than make every developer
27
+ // produce one before they can try h3, the spike generates one in memory at boot.
28
+ //
29
+ // Deliberately in-memory: nothing is written to disk, so there is no private key
30
+ // lying around to be mistaken for something trustworthy and none of it outlives
31
+ // the process that made it. puma-dev's approach (a real local CA, added to the
32
+ // system trust store, with per-SNI leaf certs cached in an LRU --
33
+ // puma-dev/dev/ssl.go) is what a real product needs; this is the smallest thing
34
+ // that makes h2 and h3 testable.
35
+ //
36
+ // Validity is deliberately long, which reads backwards until you notice what
37
+ // bounds the lifetime here. The key never leaves memory and dies with the
38
+ // process, so it is the process, not NotAfter, that limits exposure. An earlier
39
+ // 24-hour window therefore protected nothing and broke something: the
40
+ // certificate is minted once at boot and never refreshed, so any server running
41
+ // longer than a day served an expired cert and failed every client. Given a
42
+ // choice between expiring and re-minting on a timer, a long window is the one
43
+ // with no moving parts.
44
+ //
45
+ // It is emphatically NOT a CA. A self-signed leaf used directly as a server
46
+ // certificate needs neither IsCA nor KeyUsageCertSign, and setting them is what
47
+ // would turn "harmless throwaway" into "ten-year signing key" for anyone who
48
+ // added it to a trust store.
49
+ func DevCertificate(hosts ...string) (tls.Certificate, error) {
50
+ key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
51
+ if err != nil {
52
+ return tls.Certificate{}, fmt.Errorf("generating dev key: %w", err)
53
+ }
54
+
55
+ serialMax := new(big.Int).Lsh(big.NewInt(1), 128)
56
+ serial, err := rand.Int(rand.Reader, serialMax)
57
+ if err != nil {
58
+ return tls.Certificate{}, err
59
+ }
60
+
61
+ tmpl := x509.Certificate{
62
+ SerialNumber: serial,
63
+ Subject: pkix.Name{
64
+ Organization: []string{"puma-plus development"},
65
+ CommonName: "puma-plus dev",
66
+ },
67
+ // An hour of backdating absorbs clock skew between this machine and
68
+ // whatever is connecting to it.
69
+ NotBefore: time.Now().Add(-time.Hour),
70
+ NotAfter: time.Now().Add(DevCertLifetime),
71
+
72
+ KeyUsage: x509.KeyUsageDigitalSignature,
73
+ ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
74
+ BasicConstraintsValid: true,
75
+ IsCA: false,
76
+ }
77
+
78
+ if len(hosts) == 0 {
79
+ hosts = []string{"localhost"}
80
+ }
81
+ for _, h := range hosts {
82
+ if ip := net.ParseIP(h); ip != nil {
83
+ tmpl.IPAddresses = append(tmpl.IPAddresses, ip)
84
+ } else {
85
+ tmpl.DNSNames = append(tmpl.DNSNames, h)
86
+ }
87
+ }
88
+ // Loopback is always included: every local client reaches us one of these
89
+ // ways, and a cert that fails on 127.0.0.1 is useless for testing.
90
+ tmpl.IPAddresses = append(tmpl.IPAddresses, net.IPv4(127, 0, 0, 1), net.IPv6loopback)
91
+
92
+ der, err := x509.CreateCertificate(rand.Reader, &tmpl, &tmpl, &key.PublicKey, key)
93
+ if err != nil {
94
+ return tls.Certificate{}, fmt.Errorf("creating dev certificate: %w", err)
95
+ }
96
+
97
+ return tls.Certificate{
98
+ Certificate: [][]byte{der},
99
+ PrivateKey: key,
100
+ Leaf: mustParse(der),
101
+ }, nil
102
+ }
103
+
104
+ // LoadCertificate reads a PEM certificate chain and its private key.
105
+ //
106
+ // The leaf is parsed and attached, which tls.LoadX509KeyPair does not do. It
107
+ // costs one parse at boot and buys the ability to say which certificate was
108
+ // loaded and when it expires -- the two questions asked whenever TLS is
109
+ // mysteriously failing.
110
+ func LoadCertificate(certPath, keyPath string) (tls.Certificate, error) {
111
+ cert, err := tls.LoadX509KeyPair(certPath, keyPath)
112
+ if err != nil {
113
+ // The wrapped error already names which file failed and why, including
114
+ // the common "private key does not match public key" mismatch.
115
+ return tls.Certificate{}, fmt.Errorf("loading certificate %s with key %s: %w",
116
+ certPath, keyPath, err)
117
+ }
118
+
119
+ if len(cert.Certificate) > 0 {
120
+ leaf, err := x509.ParseCertificate(cert.Certificate[0])
121
+ if err != nil {
122
+ return tls.Certificate{}, fmt.Errorf("parsing certificate %s: %w", certPath, err)
123
+ }
124
+ cert.Leaf = leaf
125
+ }
126
+ return cert, nil
127
+ }
128
+
129
+ // DescribeCertificate summarises a loaded certificate for the boot log, and
130
+ // reports whether it is currently usable.
131
+ //
132
+ // Expiry is checked and surfaced rather than left to fail at handshake time,
133
+ // where it appears as an opaque client-side error on a machine that is not this
134
+ // one.
135
+ func DescribeCertificate(cert tls.Certificate) (desc string, problem string) {
136
+ leaf := cert.Leaf
137
+ if leaf == nil {
138
+ return "certificate (unparsed)", ""
139
+ }
140
+
141
+ names := append([]string{}, leaf.DNSNames...)
142
+ for _, ip := range leaf.IPAddresses {
143
+ names = append(names, ip.String())
144
+ }
145
+ if len(names) == 0 {
146
+ names = []string{leaf.Subject.CommonName}
147
+ }
148
+
149
+ desc = fmt.Sprintf("%s, expires %s", strings.Join(names, ","),
150
+ leaf.NotAfter.Format("2006-01-02"))
151
+
152
+ now := time.Now()
153
+ switch {
154
+ case now.After(leaf.NotAfter):
155
+ problem = fmt.Sprintf("certificate EXPIRED on %s", leaf.NotAfter.Format("2006-01-02"))
156
+ case now.Before(leaf.NotBefore):
157
+ problem = fmt.Sprintf("certificate is not valid until %s", leaf.NotBefore.Format("2006-01-02"))
158
+ case leaf.NotAfter.Sub(now) < 14*24*time.Hour:
159
+ problem = fmt.Sprintf("certificate expires in %d days",
160
+ int(leaf.NotAfter.Sub(now).Hours()/24))
161
+ }
162
+ return desc, problem
163
+ }
164
+
165
+ func mustParse(der []byte) *x509.Certificate {
166
+ c, err := x509.ParseCertificate(der)
167
+ if err != nil {
168
+ return nil
169
+ }
170
+ return c
171
+ }
172
+
173
+ // TLSConfig builds a server TLS config advertising the given ALPN protocols.
174
+ //
175
+ // ALPN is how the client and server agree on the HTTP version, so the protocol
176
+ // list is the actual switch that decides whether a TLS connection becomes h2 or
177
+ // h1. Getting it wrong means a benchmark labelled "h2" silently measures h1.
178
+ func TLSConfig(cert tls.Certificate, protos ...string) *tls.Config {
179
+ return &tls.Config{
180
+ Certificates: []tls.Certificate{cert},
181
+ NextProtos: protos,
182
+ MinVersion: tls.VersionTLS12,
183
+ }
184
+ }
@@ -0,0 +1,81 @@
1
+ package frontend
2
+
3
+ import (
4
+ "crypto/x509"
5
+ "net"
6
+ "testing"
7
+ "time"
8
+ )
9
+
10
+ // TestDevCertificateOutlivesTheProcess is the regression test for a certificate
11
+ // that expired while its server was still running.
12
+ //
13
+ // The cert is minted once at boot and never refreshed, so a 24-hour NotAfter
14
+ // meant any server up for longer than a day served an expired certificate and
15
+ // failed every client. Nothing caught it because no test ran for a day.
16
+ func TestDevCertificateOutlivesTheProcess(t *testing.T) {
17
+ cert, err := DevCertificate("localhost")
18
+ if err != nil {
19
+ t.Fatal(err)
20
+ }
21
+ leaf := cert.Leaf
22
+ if leaf == nil {
23
+ t.Fatal("no parsed leaf on the certificate")
24
+ }
25
+
26
+ // A year is far more than any plausible uptime, and far less than the ten
27
+ // the constant asks for -- so this fails on a short window without pinning
28
+ // the exact value.
29
+ if until := time.Until(leaf.NotAfter); until < 365*24*time.Hour {
30
+ t.Errorf("certificate expires in %s; a server running longer than that "+
31
+ "would serve an expired cert, because it is minted once at boot and "+
32
+ "never refreshed", until.Round(time.Hour))
33
+ }
34
+
35
+ // Backdated, so a client whose clock is slightly behind still accepts it.
36
+ if !leaf.NotBefore.Before(time.Now()) {
37
+ t.Errorf("NotBefore %s is not in the past; clock skew would reject it", leaf.NotBefore)
38
+ }
39
+ }
40
+
41
+ // TestDevCertificateIsNotACA: a self-signed leaf used directly as a server
42
+ // certificate needs neither IsCA nor KeyUsageCertSign. With a ten-year window,
43
+ // setting them is the difference between a harmless throwaway and a long-lived
44
+ // signing key for anyone who adds it to a trust store.
45
+ func TestDevCertificateIsNotACA(t *testing.T) {
46
+ cert, err := DevCertificate("localhost")
47
+ if err != nil {
48
+ t.Fatal(err)
49
+ }
50
+ leaf := cert.Leaf
51
+
52
+ if leaf.IsCA {
53
+ t.Error("dev certificate is marked as a CA; it signs nothing and should not be able to")
54
+ }
55
+ if leaf.KeyUsage&x509.KeyUsageCertSign != 0 {
56
+ t.Error("dev certificate carries KeyUsageCertSign; it issues no certificates")
57
+ }
58
+ if leaf.KeyUsage&x509.KeyUsageDigitalSignature == 0 {
59
+ t.Error("dev certificate lacks KeyUsageDigitalSignature, which TLS needs")
60
+ }
61
+ }
62
+
63
+ // TestDevCertificateCoversLoopback: every local client arrives over loopback
64
+ // under some name, and a certificate that fails on 127.0.0.1 is useless for the
65
+ // testing it exists to enable.
66
+ func TestDevCertificateCoversLoopback(t *testing.T) {
67
+ cert, err := DevCertificate("example.test")
68
+ if err != nil {
69
+ t.Fatal(err)
70
+ }
71
+ leaf := cert.Leaf
72
+
73
+ for _, ip := range []net.IP{net.IPv4(127, 0, 0, 1), net.IPv6loopback} {
74
+ if err := leaf.VerifyHostname(ip.String()); err != nil {
75
+ t.Errorf("certificate does not cover %s: %v", ip, err)
76
+ }
77
+ }
78
+ if err := leaf.VerifyHostname("example.test"); err != nil {
79
+ t.Errorf("certificate does not cover the requested host: %v", err)
80
+ }
81
+ }
@@ -0,0 +1,198 @@
1
+ package frontend
2
+
3
+ import (
4
+ "log"
5
+ "net"
6
+ "strconv"
7
+
8
+ "github.com/evanphx/puma-plus/internal/realtime"
9
+ "github.com/evanphx/puma-plus/internal/websocket"
10
+ "github.com/evanphx/puma-plus/internal/wire"
11
+ )
12
+
13
+ // WSControlConn is a worker process's outbound WebSocket command channel.
14
+ //
15
+ // A worker's data connections are busy carrying requests and are blocked reading
16
+ // between them, so they cannot be used to push commands out. Each worker process
17
+ // therefore opens one extra connection with role "ws", which exists purely so
18
+ // the application can address connections it is not currently handling --
19
+ // answering a different client, or broadcasting to a topic long after the
20
+ // request that subscribed to it finished.
21
+ type WSControlConn struct {
22
+ hub *realtime.Hub
23
+ conn net.Conn
24
+ r *wire.Reader
25
+ w *wire.Writer
26
+ logger *log.Logger
27
+ pid int
28
+ }
29
+
30
+ // ServeWSControl reads commands from a worker's ws control connection until it
31
+ // closes.
32
+ func ServeWSControl(hub *realtime.Hub, nc net.Conn, pid int, logger *log.Logger) {
33
+ if logger == nil {
34
+ logger = log.Default()
35
+ }
36
+ c := &WSControlConn{
37
+ hub: hub, conn: nc, r: wire.NewReader(nc), w: wire.NewWriter(nc),
38
+ logger: logger, pid: pid,
39
+ }
40
+ defer nc.Close()
41
+
42
+ for {
43
+ typ, payload, err := c.r.ReadFrame()
44
+ if err != nil {
45
+ return
46
+ }
47
+ if err := c.handle(typ, payload); err != nil {
48
+ logger.Printf("ws control pid=%d: %v", pid, err)
49
+ return
50
+ }
51
+ }
52
+ }
53
+
54
+ func (c *WSControlConn) handle(typ uint8, payload []byte) error {
55
+ switch typ {
56
+ case wire.TypeWSSend:
57
+ args, body, err := splitArgs(payload)
58
+ if err != nil {
59
+ return err
60
+ }
61
+ if conn := c.hub.Get(args["conn_id"]); conn != nil {
62
+ binary := args["opcode"] == "binary"
63
+ // An explicit stream targets one stream of a WebTransport session;
64
+ // without it the message goes to the session's default channel,
65
+ // which is what a WebSocket has anyway.
66
+ if sid := args["stream_id"]; sid != "" {
67
+ _ = conn.SendOnStream(sid, body, binary)
68
+ } else {
69
+ _ = conn.Send(body, binary)
70
+ }
71
+ }
72
+
73
+ case wire.TypeWSPublish:
74
+ args, body, err := splitArgs(payload)
75
+ if err != nil {
76
+ return err
77
+ }
78
+ // One frame in, N writes out, all inside Go, across BOTH transports:
79
+ // a topic may hold WebSocket and WebTransport clients at once and each
80
+ // gets the message in its native form. This is the operation that would
81
+ // otherwise cost the application N frames across the process boundary
82
+ // per broadcast.
83
+ c.hub.Publish(args["topic"], body, args["opcode"] == "binary")
84
+
85
+ case wire.TypeWSSubscribe:
86
+ args, _, err := splitArgs(payload)
87
+ if err != nil {
88
+ return err
89
+ }
90
+ c.hub.Subscribe(args["conn_id"], args["topic"])
91
+
92
+ case wire.TypeWSUnsubscribe:
93
+ args, _, err := splitArgs(payload)
94
+ if err != nil {
95
+ return err
96
+ }
97
+ c.hub.Unsubscribe(args["conn_id"], args["topic"])
98
+
99
+ case wire.TypeWSClose:
100
+ args, _, err := splitArgs(payload)
101
+ if err != nil {
102
+ return err
103
+ }
104
+ if conn := c.hub.Get(args["conn_id"]); conn != nil {
105
+ code, _ := strconv.Atoi(args["code"])
106
+ if code == 0 {
107
+ code = websocket.CloseNormal
108
+ }
109
+ conn.CloseWith(code, args["reason"])
110
+ }
111
+
112
+ case wire.TypeWSDatagram:
113
+ args, body, err := splitArgs(payload)
114
+ if err != nil {
115
+ return err
116
+ }
117
+ if conn := c.hub.Get(args["conn_id"]); conn != nil {
118
+ // May fail with ErrNoDatagrams on a WebSocket client. Not an error
119
+ // worth killing the channel over -- the app asked for something the
120
+ // client's transport cannot do, and it can find that out via
121
+ // puma_plus.ws.transport.
122
+ _ = conn.SendDatagram(body)
123
+ }
124
+
125
+ case wire.TypeWSPublishDatagram:
126
+ args, body, err := splitArgs(payload)
127
+ if err != nil {
128
+ return err
129
+ }
130
+ c.hub.PublishDatagram(args["topic"], body)
131
+
132
+ case wire.TypeWSOpenStream:
133
+ args, _, err := splitArgs(payload)
134
+ if err != nil {
135
+ return err
136
+ }
137
+ if conn := c.hub.Get(args["conn_id"]); conn != nil {
138
+ id, err := conn.OpenStream()
139
+ result := id
140
+ if err != nil {
141
+ result = ""
142
+ }
143
+ return c.w.WriteFrame(wire.TypeWSQueryReply, wire.AppendKV(nil, []wire.Pair{
144
+ {Key: []byte("seq"), Value: []byte(args["seq"])},
145
+ {Key: []byte("result"), Value: []byte(result)},
146
+ }))
147
+ }
148
+
149
+ case wire.TypeWSQuery:
150
+ args, _, err := splitArgs(payload)
151
+ if err != nil {
152
+ return err
153
+ }
154
+ return c.reply(args)
155
+ }
156
+ return nil
157
+ }
158
+
159
+ // reply answers a synchronous query. The sequence number lets Ruby match the
160
+ // answer to its question without needing a connection per in-flight query.
161
+ func (c *WSControlConn) reply(args map[string]string) error {
162
+ var result string
163
+ switch args["kind"] {
164
+ case "subscribers":
165
+ result = strconv.Itoa(c.hub.Subscribers(args["topic"]))
166
+ case "connections":
167
+ result = strconv.Itoa(c.hub.Count())
168
+ case "exists":
169
+ result = "false"
170
+ if c.hub.Get(args["conn_id"]) != nil {
171
+ result = "true"
172
+ }
173
+ case "transport":
174
+ if conn := c.hub.Get(args["conn_id"]); conn != nil {
175
+ result = conn.Kind()
176
+ }
177
+ default:
178
+ result = ""
179
+ }
180
+ return c.w.WriteFrame(wire.TypeWSQueryReply, wire.AppendKV(nil, []wire.Pair{
181
+ {Key: []byte("seq"), Value: []byte(args["seq"])},
182
+ {Key: []byte("result"), Value: []byte(result)},
183
+ }))
184
+ }
185
+
186
+ // splitArgs decodes the leading kv blob and returns whatever follows as the
187
+ // payload. The blob is self-delimiting, so a message body needs no length field.
188
+ func splitArgs(payload []byte) (map[string]string, []byte, error) {
189
+ pairs, rest, err := wire.DecodeKV(payload)
190
+ if err != nil {
191
+ return nil, nil, err
192
+ }
193
+ args := make(map[string]string, len(pairs))
194
+ for _, p := range pairs {
195
+ args[string(p.Key)] = string(p.Value)
196
+ }
197
+ return args, rest, nil
198
+ }
@@ -0,0 +1,207 @@
1
+ package metrics
2
+
3
+ import (
4
+ "sync"
5
+ "sync/atomic"
6
+ "time"
7
+ )
8
+
9
+ // WindowDepth is the number of 1s snapshots retained.
10
+ const WindowDepth = 10
11
+
12
+ // ScaleWindow is how many snapshots the control loop's percentile view merges.
13
+ // Five seconds is long enough that a single slow request cannot trip a scale-up
14
+ // and short enough to react inside the fork cooldown.
15
+ const ScaleWindow = 5
16
+
17
+ // Collector owns every measurement puma-plus takes.
18
+ //
19
+ // The design constraint is that the hot path costs two time.Now() calls (vDSO,
20
+ // no syscall) plus a handful of atomic adds, with zero allocation. Everything
21
+ // expensive -- percentiles, merges, rendering -- happens on the tick or on a
22
+ // scrape, never per request.
23
+ type Collector struct {
24
+ QueueTime *Rolling // Q = T3-T2b, the product metric
25
+ ServiceTime *Rolling // T5-T4, from the RESP_END trailer
26
+ TTFB *Rolling // T2b-T5, the user-visible number
27
+
28
+ // Counters. RequestsCount matches puma's stat of the same name.
29
+ RequestsCount atomic.Uint64
30
+ ShedCount atomic.Uint64
31
+ ErrorCount atomic.Uint64
32
+ BytesOut atomic.Uint64
33
+
34
+ // Arrival rate and mean service time, at two time constants each. The fast
35
+ // pair feeds the shed decision; the slow pair feeds scaling.
36
+ ArrivalFast *EWMA
37
+ ArrivalSlow *EWMA
38
+ ServiceSlow *EWMA
39
+
40
+ // GVLFraction is the share of service time spent queued behind the GVL,
41
+ // averaged slowly. Above ~0.3 the process is GVL-bound: its threads are
42
+ // waiting on each other rather than working, so adding more of them deepens
43
+ // the queue instead of raising throughput.
44
+ //
45
+ // This is the one signal that distinguishes "blocked on a database" from
46
+ // "blocked on another Ruby thread". Both look like not-on-CPU to every
47
+ // cheaper heuristic. Zero when the worker has no native GVL extension, in
48
+ // which case the controller falls back to io_fraction and gain probing.
49
+ // CPUFraction is the share of service time actually spent on CPU.
50
+ CPUFraction *EWMA
51
+
52
+ // GVL turns each worker's cumulative counter into a fraction of available
53
+ // thread-time. See gvl.go for why it is a rate over thread-time rather than
54
+ // a per-request delta.
55
+ GVL *GVLTracker
56
+
57
+ startedAt time.Time
58
+ lastRotate time.Time
59
+ lastRequest atomic.Uint64 // RequestsCount at the previous tick
60
+
61
+ // Two scratch histograms, not one. Tick runs on the ticker goroutine while
62
+ // QuantilesNs runs on whichever goroutine is serving /stats, so a single
63
+ // shared scratch would be a data race. Each is reused to keep scrapes and
64
+ // ticks allocation-free.
65
+ tickScratch Histogram
66
+ queryMu sync.Mutex
67
+ queryScratch Histogram
68
+ }
69
+
70
+ // NewCollector creates a collector with the standard windows.
71
+ func NewCollector(now time.Time) *Collector {
72
+ return &Collector{
73
+ QueueTime: NewRolling(WindowDepth),
74
+ ServiceTime: NewRolling(WindowDepth),
75
+ TTFB: NewRolling(WindowDepth),
76
+ ArrivalFast: NewEWMA(1 * time.Second),
77
+ ArrivalSlow: NewEWMA(15 * time.Second),
78
+ ServiceSlow: NewEWMA(15 * time.Second),
79
+ CPUFraction: NewEWMA(15 * time.Second),
80
+ GVL: NewGVLTracker(),
81
+ startedAt: now,
82
+ lastRotate: now,
83
+ }
84
+ }
85
+
86
+ // ObserveWork records where a request's service time actually went, so the
87
+ // controller can tell threads-will-help from threads-will-not-help.
88
+ func (c *Collector) ObserveWork(service, cpu time.Duration, now time.Time) {
89
+ if service <= 0 {
90
+ return
91
+ }
92
+ c.CPUFraction.Update(float64(cpu)/float64(service), now)
93
+ }
94
+
95
+ // ObserveGVL records a worker's cumulative GVL-wait counter.
96
+ func (c *Collector) ObserveGVL(workerID int, cumulative uint64, threads int, now time.Time) {
97
+ c.GVL.Observe(workerID, cumulative, threads, now)
98
+ }
99
+
100
+ // GVLFractionValue reports the measured GVL fraction and whether it is real.
101
+ func (c *Collector) GVLFractionValue() (float64, bool) { return c.GVL.Fraction() }
102
+
103
+ // ObserveRequest records one completed request. Called once per response, off
104
+ // the latency-critical path (the client already has its bytes).
105
+ func (c *Collector) ObserveRequest(queue, service, ttfb time.Duration, bytesOut int) {
106
+ c.RequestsCount.Add(1)
107
+ c.QueueTime.Record(uint64(queue.Nanoseconds()))
108
+ c.TTFB.Record(uint64(ttfb.Nanoseconds()))
109
+ if service > 0 {
110
+ c.ServiceTime.Record(uint64(service.Nanoseconds()))
111
+ }
112
+ if bytesOut > 0 {
113
+ c.BytesOut.Add(uint64(bytesOut))
114
+ }
115
+ }
116
+
117
+ // ObserveShed records a request rejected without dispatch.
118
+ func (c *Collector) ObserveShed() { c.ShedCount.Add(1) }
119
+
120
+ // ObserveError records a backend failure.
121
+ func (c *Collector) ObserveError() { c.ErrorCount.Add(1) }
122
+
123
+ // Tick rotates the windows and updates the rate averages. Called once per second.
124
+ func (c *Collector) Tick(now time.Time) {
125
+ elapsed := now.Sub(c.lastRotate).Seconds()
126
+ if elapsed <= 0 {
127
+ elapsed = 1
128
+ }
129
+
130
+ total := c.RequestsCount.Load()
131
+ delta := total - c.lastRequest.Load()
132
+ c.lastRequest.Store(total)
133
+
134
+ rate := float64(delta) / elapsed
135
+ c.ArrivalFast.Update(rate, now)
136
+ c.ArrivalSlow.Update(rate, now)
137
+
138
+ // Mean service time over the window just closed. Falls back to holding the
139
+ // previous value when no requests completed, rather than decaying toward
140
+ // zero -- a zero service time would make the Little's Law predictor claim
141
+ // infinite capacity precisely when we have no evidence either way.
142
+ c.ServiceTime.Merge(1, &c.tickScratch)
143
+ if c.tickScratch.Count() > 0 {
144
+ c.ServiceSlow.Update(c.tickScratch.Mean()/1e9, now)
145
+ }
146
+
147
+ c.QueueTime.Rotate()
148
+ c.ServiceTime.Rotate()
149
+ c.TTFB.Rotate()
150
+ c.lastRotate = now
151
+ }
152
+
153
+ // PredictedWait estimates the queue time the *next* arrival will experience,
154
+ // via Little's Law: W = (L+1) * S / c.
155
+ //
156
+ // This matters because measured percentiles are lagging indicators -- a request
157
+ // must suffer the queue before it can report it, so when the queue is growing,
158
+ // p95 describes the past. The predictor describes the request arriving now,
159
+ // which is why shedding keys off this and scaling keys off measured p95
160
+ // confirmed by this.
161
+ //
162
+ // We can compute it honestly only because we own both sides of L = lambda*W: L
163
+ // is an integer we maintain, not an estimate. Puma cannot compute this.
164
+ //
165
+ // KNOWN LIMITATION, measured in Phase 2 and load-bearing for the controller:
166
+ // the estimate is only as good as S-bar, and S-bar comes from a 15s EWMA. When
167
+ // the workload's service time changes regime, the predictor lags badly -- an
168
+ // observed run went from a 4us hello workload to a 100ms sleep workload and
169
+ // reported S = 1.1ms (predicting a 7ms wait) while requests were actually
170
+ // waiting ~600ms. It recovers within a few seconds once the new regime
171
+ // dominates the average.
172
+ //
173
+ // So the predictor is least trustworthy exactly when the workload shifts, which
174
+ // is when a controller is most tempted to act. This is the concrete reason the
175
+ // control loop must scale on *measured* p95 confirmed by this predictor, and
176
+ // never on the predictor alone. Shedding may use it directly because a shed is
177
+ // cheap and instantly reversible; a fork is neither.
178
+ func (c *Collector) PredictedWait(depth, capacity int) time.Duration {
179
+ if capacity <= 0 {
180
+ // No workers connected: any arrival waits indefinitely. Report a large
181
+ // but finite value so callers compare rather than special-case.
182
+ return time.Hour
183
+ }
184
+ s := c.ServiceSlow.Value()
185
+ if s <= 0 {
186
+ return 0
187
+ }
188
+ w := float64(depth+1) * s / float64(capacity)
189
+ return time.Duration(w * float64(time.Second))
190
+ }
191
+
192
+ // Uptime since the collector was created.
193
+ func (c *Collector) Uptime(now time.Time) time.Duration { return now.Sub(c.startedAt) }
194
+
195
+ // StartedAt reports when collection began.
196
+ func (c *Collector) StartedAt() time.Time { return c.startedAt }
197
+
198
+ // QuantilesNs merges the last `windows` snapshots of r and returns p50/p95/p99
199
+ // in nanoseconds. Safe for concurrent callers.
200
+ func (c *Collector) QuantilesNs(r *Rolling, windows int) (p50, p95, p99 uint64) {
201
+ c.queryMu.Lock()
202
+ defer c.queryMu.Unlock()
203
+ r.Merge(windows, &c.queryScratch)
204
+ return c.queryScratch.Quantile(0.50),
205
+ c.queryScratch.Quantile(0.95),
206
+ c.queryScratch.Quantile(0.99)
207
+ }