code_ownership 2.1.4 → 2.2.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 (505) hide show
  1. checksums.yaml +4 -4
  2. data/.cargo/config +2 -2
  3. data/Cargo.lock +6 -59
  4. data/ext/cargo-vendor/codeowners-0.5.0/.cargo-checksum.json +1 -0
  5. data/ext/cargo-vendor/codeowners-0.5.0/.github/workflows/audit.yml +31 -0
  6. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/.github/workflows/ci.yml +11 -0
  7. data/ext/cargo-vendor/codeowners-0.5.0/.github/workflows/codeql.yml +21 -0
  8. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/Cargo.lock +27 -115
  9. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/Cargo.toml +44 -3
  10. data/ext/cargo-vendor/codeowners-0.5.0/perf/README.md +204 -0
  11. data/ext/cargo-vendor/codeowners-0.5.0/perf/compare.sh +23 -0
  12. data/ext/cargo-vendor/codeowners-0.5.0/perf/run.sh +28 -0
  13. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/rust-toolchain.toml +1 -1
  14. data/ext/cargo-vendor/codeowners-0.5.0/src/bin/codeowners-perf.rs +719 -0
  15. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/cache/file.rs +9 -9
  16. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/cache/mod.rs +4 -4
  17. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/cache/noop.rs +4 -4
  18. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/cli.rs +7 -7
  19. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/main.rs +3 -3
  20. data/ext/cargo-vendor/codeowners-0.5.0/src/ownership/file_owner_resolver.rs +829 -0
  21. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/validator.rs +108 -15
  22. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership.rs +22 -3
  23. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/project.rs +4 -4
  24. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/project_builder.rs +40 -14
  25. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/project_file_builder.rs +2 -2
  26. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/runner/api.rs +8 -5
  27. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/runner/types.rs +1 -2
  28. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/runner.rs +39 -29
  29. data/ext/cargo-vendor/codeowners-0.5.0/tests/annotation_in_unowned_team_glob_test.rs +64 -0
  30. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/common/mod.rs +1 -1
  31. data/ext/cargo-vendor/codeowners-0.5.0/tests/directory_codeowner_github_team_test.rs +22 -0
  32. data/ext/cargo-vendor/codeowners-0.5.0/tests/empty_directory_codeowner_test.rs +26 -0
  33. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/annotation_in_unowned_team_glob/.github/CODEOWNERS +18 -0
  34. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/annotation_in_unowned_team_glob/config/code_ownership.yml +4 -0
  35. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/annotation_in_unowned_team_glob/config/teams/alpha.yml +7 -0
  36. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/annotation_in_unowned_team_glob/config/teams/beta.yml +3 -0
  37. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/annotation_in_unowned_team_glob/ruby/app/services/alpha_owned.rb +2 -0
  38. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/annotation_in_unowned_team_glob/ruby/app/services/beta_owned.rb +4 -0
  39. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/directory-codeowner-github-team/.github/CODEOWNERS +15 -0
  40. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/directory-codeowner-github-team/app/by_handle/.codeowner +1 -0
  41. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/directory-codeowner-github-team/app/by_handle/handled.rb +2 -0
  42. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/directory-codeowner-github-team/app/by_name/named.rb +2 -0
  43. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/empty-directory-codeowner/.github/CODEOWNERS +14 -0
  44. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/empty-directory-codeowner/app/services/.codeowner +1 -0
  45. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/empty-directory-codeowner/app/services/nested/.codeowner +1 -0
  46. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/empty-directory-codeowner/app/services/nested/nested_file.rb +2 -0
  47. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/empty-directory-codeowner/config/code_ownership.yml +10 -0
  48. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/empty-directory-codeowner/config/teams/foo.yml +5 -0
  49. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/invalid-directory-codeowner/.github/CODEOWNERS +14 -0
  50. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/invalid-directory-codeowner/app/services/.codeowner +1 -0
  51. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/invalid-directory-codeowner/app/services/nested/.codeowner +1 -0
  52. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/invalid-directory-codeowner/app/services/nested/nested_file.rb +2 -0
  53. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/invalid-directory-codeowner/config/code_ownership.yml +10 -0
  54. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/invalid-directory-codeowner/config/teams/foo.yml +5 -0
  55. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/multiple-directory-owners/app/services/.codeowner +1 -0
  56. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/multiple-directory-owners/config/code_ownership.yml +10 -0
  57. data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/multiple-directory-owners/config/teams/foo.yml +5 -0
  58. data/ext/cargo-vendor/codeowners-0.5.0/tests/global_gitignore_test.rs +50 -0
  59. data/ext/cargo-vendor/codeowners-0.5.0/tests/invalid_directory_codeowner_test.rs +26 -0
  60. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/invalid_project_test.rs +9 -9
  61. data/ext/cargo-vendor/codeowners-0.5.0/tests/perf_harness_test.rs +245 -0
  62. data/ext/cargo-vendor/codeowners-0.5.0/tests/untracked_new_file_test.rs +63 -0
  63. data/ext/cargo-vendor/codeowners-0.5.0/tests/untracked_source_file_test.rs +40 -0
  64. data/ext/cargo-vendor/error-stack-0.8.0/.cargo-checksum.json +1 -0
  65. data/ext/cargo-vendor/error-stack-0.8.0/.cargo_vcs_info.json +6 -0
  66. data/ext/cargo-vendor/error-stack-0.8.0/.justfile +16 -0
  67. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/CHANGELOG.md +50 -1
  68. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/Cargo.lock +253 -310
  69. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/Cargo.toml +107 -52
  70. data/ext/cargo-vendor/error-stack-0.8.0/Cargo.toml.orig +109 -0
  71. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/README.md +16 -18
  72. data/ext/cargo-vendor/error-stack-0.8.0/build.rs +28 -0
  73. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/examples/demo.rs +21 -19
  74. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/examples/detect.rs +6 -6
  75. data/ext/cargo-vendor/error-stack-0.8.0/examples/exit_code.rs +25 -0
  76. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/examples/parse_config.rs +5 -5
  77. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/compat/anyhow.rs +7 -7
  78. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/compat/eyre.rs +7 -6
  79. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/compat/mod.rs +7 -9
  80. data/ext/cargo-vendor/error-stack-0.8.0/src/context.rs +52 -0
  81. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/error.rs +2 -9
  82. data/ext/cargo-vendor/error-stack-0.8.0/src/ext/iter.rs +286 -0
  83. data/ext/cargo-vendor/error-stack-0.8.0/src/ext/mod.rs +19 -0
  84. data/ext/cargo-vendor/error-stack-0.8.0/src/ext/stream.rs +212 -0
  85. data/ext/cargo-vendor/error-stack-0.8.0/src/ext/tuple.rs +218 -0
  86. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/fmt/charset.rs +12 -12
  87. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/fmt/color.rs +30 -30
  88. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/fmt/config.rs +1 -1
  89. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/fmt/hook.rs +23 -24
  90. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/fmt/location.rs +3 -3
  91. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/fmt/mod.rs +62 -52
  92. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/frame/frame_impl.rs +12 -15
  93. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/frame/kind.rs +11 -10
  94. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/frame/mod.rs +8 -10
  95. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/future.rs +57 -63
  96. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/hook/context.rs +18 -20
  97. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/hook/mod.rs +16 -15
  98. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/iter.rs +12 -57
  99. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/lib.rs +99 -87
  100. data/ext/cargo-vendor/error-stack-0.8.0/src/macros.rs +212 -0
  101. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/report.rs +525 -207
  102. data/ext/cargo-vendor/error-stack-0.8.0/src/result.rs +137 -0
  103. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/serde.rs +53 -38
  104. data/ext/cargo-vendor/error-stack-0.8.0/src/sink.rs +672 -0
  105. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/common.rs +36 -24
  106. data/ext/cargo-vendor/error-stack-0.8.0/tests/compiletest.rs +22 -0
  107. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__charset_ascii.snap +1 -1
  108. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__charset_utf8.snap +1 -1
  109. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__diagnostics_add.snap +1 -1
  110. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__doc.snap +1 -1
  111. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__emit.snap +1 -1
  112. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__emit_alt.snap +1 -1
  113. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__hookcontext_cast.snap +1 -1
  114. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__hookcontext_decrement.snap +1 -1
  115. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__hookcontext_emit.snap +1 -1
  116. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__hookcontext_increment.snap +1 -1
  117. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__hookcontext_storage.snap +1 -1
  118. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__preference_color.snap +1 -1
  119. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__preference_emphasis.snap +1 -1
  120. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__preference_none.snap +1 -1
  121. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt_doc_alt.snap +1 -1
  122. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/hook__debug_hook.snap +1 -1
  123. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/hook__debug_hook_provide.snap +1 -1
  124. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/lib__suggestion.snap +2 -2
  125. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/report_debug__doc.snap +3 -3
  126. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__complex.snap +1 -1
  127. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__hook_location.snap +1 -1
  128. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__linear.snap +2 -2
  129. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__linear_ext.snap +2 -2
  130. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__multiline_context.snap +3 -3
  131. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__sources.snap +1 -1
  132. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__sources_transparent.snap +1 -1
  133. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__sources_nested.snap +10 -10
  134. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__sources_nested@spantrace-backtrace.snap +10 -10
  135. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__sources_nested_alternate.snap +10 -10
  136. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__sources_nested_alternate@spantrace-backtrace.snap +10 -10
  137. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_serialize__attachment.snap +1 -1
  138. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_serialize__context.snap +1 -1
  139. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_serialize__multiple_sources.snap +2 -2
  140. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_serialize__multiple_sources_at_root.snap +2 -2
  141. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_attach.rs +41 -15
  142. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_attach_printable.rs +14 -15
  143. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_backtrace.rs +0 -1
  144. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_change_context.rs +31 -9
  145. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_compatibility.rs +8 -17
  146. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_conversion.rs +25 -3
  147. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_debug.rs +91 -91
  148. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_display.rs +8 -9
  149. data/ext/cargo-vendor/error-stack-0.8.0/tests/test_downcast.rs +101 -0
  150. data/ext/cargo-vendor/error-stack-0.8.0/tests/test_extend.rs +99 -0
  151. data/ext/cargo-vendor/error-stack-0.8.0/tests/test_frame.rs +136 -0
  152. data/ext/cargo-vendor/error-stack-0.8.0/tests/test_iter.rs +132 -0
  153. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_macros.rs +5 -31
  154. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_provision.rs +3 -2
  155. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_serialize.rs +14 -14
  156. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_span_trace.rs +10 -11
  157. data/ext/cargo-vendor/error-stack-0.8.0/tests/ui/attach_diagnostics.rs +21 -0
  158. data/ext/cargo-vendor/error-stack-0.8.0/tests/ui/attach_diagnostics.stderr +23 -0
  159. data/ext/cargo-vendor/error-stack-0.8.0/tests/ui/frames_mut_escape.rs +28 -0
  160. data/ext/cargo-vendor/error-stack-0.8.0/tests/ui/frames_mut_escape.stderr +13 -0
  161. data/ext/cargo-vendor/error-stack-0.8.0/tests/ui/macro_invalid_args.rs +32 -0
  162. data/ext/cargo-vendor/error-stack-0.8.0/tests/ui/macro_invalid_args.stderr +132 -0
  163. data/ext/cargo-vendor/error-stack-0.8.0/tests/ui/missing_args.rs +32 -0
  164. data/ext/cargo-vendor/error-stack-0.8.0/tests/ui/missing_args.stderr +35 -0
  165. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/ui/must_use.rs +3 -3
  166. data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/ui/must_use.stderr +1 -1
  167. data/ext/code_ownership/Cargo.toml +1 -1
  168. data/ext/code_ownership/src/lib.rs +13 -1
  169. data/lib/code_ownership/version.rb +1 -1
  170. data/lib/code_ownership.rb +3 -0
  171. metadata +340 -431
  172. data/ext/cargo-vendor/ahash-0.7.8/.cargo-checksum.json +0 -1
  173. data/ext/cargo-vendor/ahash-0.7.8/.cargo_vcs_info.json +0 -6
  174. data/ext/cargo-vendor/ahash-0.7.8/.github/workflows/rust.yml +0 -151
  175. data/ext/cargo-vendor/ahash-0.7.8/Cargo.toml +0 -149
  176. data/ext/cargo-vendor/ahash-0.7.8/Cargo.toml.orig +0 -96
  177. data/ext/cargo-vendor/ahash-0.7.8/FAQ.md +0 -118
  178. data/ext/cargo-vendor/ahash-0.7.8/LICENSE-APACHE +0 -201
  179. data/ext/cargo-vendor/ahash-0.7.8/LICENSE-MIT +0 -25
  180. data/ext/cargo-vendor/ahash-0.7.8/README.md +0 -110
  181. data/ext/cargo-vendor/ahash-0.7.8/build.rs +0 -47
  182. data/ext/cargo-vendor/ahash-0.7.8/rustfmt.toml +0 -1
  183. data/ext/cargo-vendor/ahash-0.7.8/src/aes_hash.rs +0 -440
  184. data/ext/cargo-vendor/ahash-0.7.8/src/convert.rs +0 -167
  185. data/ext/cargo-vendor/ahash-0.7.8/src/fallback_hash.rs +0 -392
  186. data/ext/cargo-vendor/ahash-0.7.8/src/hash_map.rs +0 -371
  187. data/ext/cargo-vendor/ahash-0.7.8/src/hash_quality_test.rs +0 -517
  188. data/ext/cargo-vendor/ahash-0.7.8/src/hash_set.rs +0 -313
  189. data/ext/cargo-vendor/ahash-0.7.8/src/lib.rs +0 -263
  190. data/ext/cargo-vendor/ahash-0.7.8/src/operations.rs +0 -330
  191. data/ext/cargo-vendor/ahash-0.7.8/src/random_state.rs +0 -363
  192. data/ext/cargo-vendor/ahash-0.7.8/src/specialize.rs +0 -239
  193. data/ext/cargo-vendor/ahash-0.7.8/tests/bench.rs +0 -154
  194. data/ext/cargo-vendor/ahash-0.7.8/tests/map_tests.rs +0 -203
  195. data/ext/cargo-vendor/ahash-0.7.8/tests/nopanic.rs +0 -72
  196. data/ext/cargo-vendor/codeowners-0.3.3/.cargo-checksum.json +0 -1
  197. data/ext/cargo-vendor/codeowners-0.3.3/.github/workflows/audit.yml +0 -19
  198. data/ext/cargo-vendor/codeowners-0.3.3/src/ownership/file_owner_resolver.rs +0 -416
  199. data/ext/cargo-vendor/error-stack-0.5.0/.cargo-checksum.json +0 -1
  200. data/ext/cargo-vendor/error-stack-0.5.0/.cargo_vcs_info.json +0 -6
  201. data/ext/cargo-vendor/error-stack-0.5.0/.justfile +0 -58
  202. data/ext/cargo-vendor/error-stack-0.5.0/Cargo.toml.orig +0 -87
  203. data/ext/cargo-vendor/error-stack-0.5.0/build.rs +0 -29
  204. data/ext/cargo-vendor/error-stack-0.5.0/examples/exit_code.rs +0 -24
  205. data/ext/cargo-vendor/error-stack-0.5.0/rust-toolchain.toml +0 -4
  206. data/ext/cargo-vendor/error-stack-0.5.0/src/context.rs +0 -132
  207. data/ext/cargo-vendor/error-stack-0.5.0/src/macros.rs +0 -253
  208. data/ext/cargo-vendor/error-stack-0.5.0/src/result.rs +0 -267
  209. data/ext/cargo-vendor/error-stack-0.5.0/tests/compiletest.rs +0 -7
  210. data/ext/cargo-vendor/error-stack-0.5.0/tests/snapshots/test_debug__sources_nested@backtrace.snap +0 -104
  211. data/ext/cargo-vendor/error-stack-0.5.0/tests/snapshots/test_debug__sources_nested@spantrace.snap +0 -104
  212. data/ext/cargo-vendor/error-stack-0.5.0/tests/snapshots/test_debug__sources_nested_alternate@backtrace.snap +0 -104
  213. data/ext/cargo-vendor/error-stack-0.5.0/tests/snapshots/test_debug__sources_nested_alternate@spantrace.snap +0 -104
  214. data/ext/cargo-vendor/error-stack-0.5.0/tests/test_downcast.rs +0 -41
  215. data/ext/cargo-vendor/error-stack-0.5.0/tests/test_extend.rs +0 -78
  216. data/ext/cargo-vendor/error-stack-0.5.0/tests/test_frame.rs +0 -126
  217. data/ext/cargo-vendor/error-stack-0.5.0/tests/test_iter.rs +0 -99
  218. data/ext/cargo-vendor/error-stack-0.5.0/tests/ui/macro_invalid_args.rs +0 -60
  219. data/ext/cargo-vendor/error-stack-0.5.0/tests/ui/macro_invalid_args.stderr +0 -101
  220. data/ext/cargo-vendor/getrandom-0.2.16/.cargo-checksum.json +0 -1
  221. data/ext/cargo-vendor/getrandom-0.2.16/.cargo_vcs_info.json +0 -6
  222. data/ext/cargo-vendor/getrandom-0.2.16/CHANGELOG.md +0 -498
  223. data/ext/cargo-vendor/getrandom-0.2.16/Cargo.lock +0 -354
  224. data/ext/cargo-vendor/getrandom-0.2.16/Cargo.toml +0 -121
  225. data/ext/cargo-vendor/getrandom-0.2.16/Cargo.toml.orig +0 -67
  226. data/ext/cargo-vendor/getrandom-0.2.16/LICENSE-APACHE +0 -201
  227. data/ext/cargo-vendor/getrandom-0.2.16/LICENSE-MIT +0 -26
  228. data/ext/cargo-vendor/getrandom-0.2.16/README.md +0 -81
  229. data/ext/cargo-vendor/getrandom-0.2.16/SECURITY.md +0 -13
  230. data/ext/cargo-vendor/getrandom-0.2.16/benches/buffer.rs +0 -71
  231. data/ext/cargo-vendor/getrandom-0.2.16/src/apple-other.rs +0 -24
  232. data/ext/cargo-vendor/getrandom-0.2.16/src/custom.rs +0 -105
  233. data/ext/cargo-vendor/getrandom-0.2.16/src/error.rs +0 -189
  234. data/ext/cargo-vendor/getrandom-0.2.16/src/error_impls.rs +0 -15
  235. data/ext/cargo-vendor/getrandom-0.2.16/src/espidf.rs +0 -18
  236. data/ext/cargo-vendor/getrandom-0.2.16/src/fuchsia.rs +0 -13
  237. data/ext/cargo-vendor/getrandom-0.2.16/src/getentropy.rs +0 -21
  238. data/ext/cargo-vendor/getrandom-0.2.16/src/getrandom.rs +0 -25
  239. data/ext/cargo-vendor/getrandom-0.2.16/src/hermit.rs +0 -29
  240. data/ext/cargo-vendor/getrandom-0.2.16/src/js.rs +0 -155
  241. data/ext/cargo-vendor/getrandom-0.2.16/src/lazy.rs +0 -56
  242. data/ext/cargo-vendor/getrandom-0.2.16/src/lib.rs +0 -407
  243. data/ext/cargo-vendor/getrandom-0.2.16/src/linux_android.rs +0 -7
  244. data/ext/cargo-vendor/getrandom-0.2.16/src/linux_android_with_fallback.rs +0 -33
  245. data/ext/cargo-vendor/getrandom-0.2.16/src/netbsd.rs +0 -46
  246. data/ext/cargo-vendor/getrandom-0.2.16/src/rdrand.rs +0 -121
  247. data/ext/cargo-vendor/getrandom-0.2.16/src/solaris.rs +0 -34
  248. data/ext/cargo-vendor/getrandom-0.2.16/src/solid.rs +0 -18
  249. data/ext/cargo-vendor/getrandom-0.2.16/src/use_file.rs +0 -120
  250. data/ext/cargo-vendor/getrandom-0.2.16/src/util.rs +0 -35
  251. data/ext/cargo-vendor/getrandom-0.2.16/src/util_libc.rs +0 -162
  252. data/ext/cargo-vendor/getrandom-0.2.16/src/vxworks.rs +0 -29
  253. data/ext/cargo-vendor/getrandom-0.2.16/src/wasi.rs +0 -17
  254. data/ext/cargo-vendor/getrandom-0.2.16/src/windows.rs +0 -59
  255. data/ext/cargo-vendor/getrandom-0.2.16/tests/common/mod.rs +0 -100
  256. data/ext/cargo-vendor/getrandom-0.2.16/tests/custom.rs +0 -54
  257. data/ext/cargo-vendor/getrandom-0.2.16/tests/normal.rs +0 -11
  258. data/ext/cargo-vendor/getrandom-0.2.16/tests/rdrand.rs +0 -22
  259. data/ext/cargo-vendor/hashbrown-0.12.3/.cargo-checksum.json +0 -1
  260. data/ext/cargo-vendor/hashbrown-0.12.3/.cargo_vcs_info.json +0 -6
  261. data/ext/cargo-vendor/hashbrown-0.12.3/CHANGELOG.md +0 -402
  262. data/ext/cargo-vendor/hashbrown-0.12.3/Cargo.toml +0 -113
  263. data/ext/cargo-vendor/hashbrown-0.12.3/Cargo.toml.orig +0 -60
  264. data/ext/cargo-vendor/hashbrown-0.12.3/LICENSE-APACHE +0 -201
  265. data/ext/cargo-vendor/hashbrown-0.12.3/LICENSE-MIT +0 -25
  266. data/ext/cargo-vendor/hashbrown-0.12.3/README.md +0 -126
  267. data/ext/cargo-vendor/hashbrown-0.12.3/benches/bench.rs +0 -331
  268. data/ext/cargo-vendor/hashbrown-0.12.3/benches/insert_unique_unchecked.rs +0 -32
  269. data/ext/cargo-vendor/hashbrown-0.12.3/clippy.toml +0 -1
  270. data/ext/cargo-vendor/hashbrown-0.12.3/src/external_trait_impls/mod.rs +0 -4
  271. data/ext/cargo-vendor/hashbrown-0.12.3/src/external_trait_impls/rayon/helpers.rs +0 -27
  272. data/ext/cargo-vendor/hashbrown-0.12.3/src/external_trait_impls/rayon/map.rs +0 -734
  273. data/ext/cargo-vendor/hashbrown-0.12.3/src/external_trait_impls/rayon/mod.rs +0 -4
  274. data/ext/cargo-vendor/hashbrown-0.12.3/src/external_trait_impls/rayon/raw.rs +0 -231
  275. data/ext/cargo-vendor/hashbrown-0.12.3/src/external_trait_impls/rayon/set.rs +0 -659
  276. data/ext/cargo-vendor/hashbrown-0.12.3/src/external_trait_impls/serde.rs +0 -201
  277. data/ext/cargo-vendor/hashbrown-0.12.3/src/lib.rs +0 -150
  278. data/ext/cargo-vendor/hashbrown-0.12.3/src/macros.rs +0 -70
  279. data/ext/cargo-vendor/hashbrown-0.12.3/src/map.rs +0 -8408
  280. data/ext/cargo-vendor/hashbrown-0.12.3/src/raw/alloc.rs +0 -73
  281. data/ext/cargo-vendor/hashbrown-0.12.3/src/raw/bitmask.rs +0 -122
  282. data/ext/cargo-vendor/hashbrown-0.12.3/src/raw/generic.rs +0 -154
  283. data/ext/cargo-vendor/hashbrown-0.12.3/src/raw/mod.rs +0 -2460
  284. data/ext/cargo-vendor/hashbrown-0.12.3/src/raw/sse2.rs +0 -146
  285. data/ext/cargo-vendor/hashbrown-0.12.3/src/rustc_entry.rs +0 -630
  286. data/ext/cargo-vendor/hashbrown-0.12.3/src/scopeguard.rs +0 -74
  287. data/ext/cargo-vendor/hashbrown-0.12.3/src/set.rs +0 -2790
  288. data/ext/cargo-vendor/hashbrown-0.12.3/tests/hasher.rs +0 -65
  289. data/ext/cargo-vendor/hashbrown-0.12.3/tests/rayon.rs +0 -533
  290. data/ext/cargo-vendor/hashbrown-0.12.3/tests/serde.rs +0 -65
  291. data/ext/cargo-vendor/hashbrown-0.12.3/tests/set.rs +0 -34
  292. data/ext/cargo-vendor/lru-0.7.8/.cargo-checksum.json +0 -1
  293. data/ext/cargo-vendor/lru-0.7.8/.cargo_vcs_info.json +0 -6
  294. data/ext/cargo-vendor/lru-0.7.8/.github/workflows/main.yml +0 -54
  295. data/ext/cargo-vendor/lru-0.7.8/CHANGELOG.md +0 -194
  296. data/ext/cargo-vendor/lru-0.7.8/Cargo.toml +0 -42
  297. data/ext/cargo-vendor/lru-0.7.8/Cargo.toml.orig +0 -22
  298. data/ext/cargo-vendor/lru-0.7.8/LICENSE +0 -21
  299. data/ext/cargo-vendor/lru-0.7.8/README.md +0 -62
  300. data/ext/cargo-vendor/lru-0.7.8/src/lib.rs +0 -1872
  301. data/ext/cargo-vendor/version_check-0.9.5/.cargo-checksum.json +0 -1
  302. data/ext/cargo-vendor/version_check-0.9.5/.cargo_vcs_info.json +0 -6
  303. data/ext/cargo-vendor/version_check-0.9.5/.github/workflows/ci.yml +0 -42
  304. data/ext/cargo-vendor/version_check-0.9.5/.travis.yml +0 -6
  305. data/ext/cargo-vendor/version_check-0.9.5/Cargo.toml +0 -38
  306. data/ext/cargo-vendor/version_check-0.9.5/Cargo.toml.orig +0 -13
  307. data/ext/cargo-vendor/version_check-0.9.5/LICENSE-APACHE +0 -201
  308. data/ext/cargo-vendor/version_check-0.9.5/LICENSE-MIT +0 -19
  309. data/ext/cargo-vendor/version_check-0.9.5/README.md +0 -80
  310. data/ext/cargo-vendor/version_check-0.9.5/src/channel.rs +0 -195
  311. data/ext/cargo-vendor/version_check-0.9.5/src/date.rs +0 -203
  312. data/ext/cargo-vendor/version_check-0.9.5/src/lib.rs +0 -528
  313. data/ext/cargo-vendor/version_check-0.9.5/src/version.rs +0 -316
  314. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/.cargo-checksum.json +0 -1
  315. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/.cargo_vcs_info.json +0 -6
  316. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/.github/workflows/main.yml +0 -44
  317. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/.gitmodules +0 -3
  318. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/CODE_OF_CONDUCT.md +0 -49
  319. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/CONTRIBUTING.md +0 -8
  320. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/Cargo.lock +0 -23
  321. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/Cargo.toml +0 -59
  322. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/Cargo.toml.orig +0 -29
  323. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/LICENSE-APACHE +0 -201
  324. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/LICENSE-Apache-2.0_WITH_LLVM-exception +0 -220
  325. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/LICENSE-MIT +0 -23
  326. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/ORG_CODE_OF_CONDUCT.md +0 -143
  327. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/README.md +0 -94
  328. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/SECURITY.md +0 -29
  329. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/src/lib.rs +0 -47
  330. data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/src/lib_generated.rs +0 -2366
  331. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/.github/CODEOWNERS +0 -0
  332. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/.github/workflows/dotslash-config.json +0 -0
  333. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/.rustfmt.toml +0 -0
  334. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/.rusty-hook.toml +0 -0
  335. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/AGENTS.md +0 -0
  336. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/CLAUDE.md +0 -0
  337. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/README.md +0 -0
  338. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/dev/run_benchmarks_for_file.sh +0 -0
  339. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/dev/run_benchmarks_for_gv.sh +0 -0
  340. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/common_test.rs +0 -0
  341. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/config.rs +0 -0
  342. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/crosscheck.rs +0 -0
  343. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/lib.rs +0 -0
  344. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/codeowners_file_parser.rs +0 -0
  345. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/codeowners_query.rs +0 -0
  346. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/file_generator.rs +0 -0
  347. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/file_owner_finder.rs +0 -0
  348. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/mapper/annotated_file_mapper.rs +0 -0
  349. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/mapper/directory_mapper.rs +0 -0
  350. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/mapper/escaper.rs +0 -0
  351. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/mapper/package_mapper.rs +0 -0
  352. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/mapper/team_gem_mapper.rs +0 -0
  353. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/mapper/team_glob_mapper.rs +0 -0
  354. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/mapper/team_yml_mapper.rs +0 -0
  355. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/mapper.rs +0 -0
  356. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/path_utils.rs +0 -0
  357. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/tracked_files.rs +0 -0
  358. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/cache_test.rs +0 -0
  359. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/codeowners_path_test.rs +0 -0
  360. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/crosscheck_owners_test.rs +0 -0
  361. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/executable_name_config_test.rs +10 -10
  362. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_codeowners_path/config/code_ownership.yml +0 -0
  363. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_codeowners_path/config/teams/test_team.yml +0 -0
  364. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_codeowners_path/docs/CODEOWNERS +3 -3
  365. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_codeowners_path/expected/CODEOWNERS +3 -3
  366. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_codeowners_path/ruby/app/models/test.rb +0 -0
  367. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_executable_name/.github/CODEOWNERS +0 -0
  368. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_executable_name/app/foo.rb +0 -0
  369. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_executable_name/config/code_ownership.yml +0 -0
  370. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_executable_name/config/teams/foo.yml +0 -0
  371. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_executable_name/config/teams/payments.yml +0 -0
  372. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_executable_name/ruby/app/payments/foo.rb +0 -0
  373. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/default_executable_name/.github/CODEOWNERS +0 -0
  374. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/default_executable_name/app/bar.rb +0 -0
  375. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/default_executable_name/config/code_ownership.yml +0 -0
  376. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/default_executable_name/config/teams/bar.yml +0 -0
  377. data/ext/cargo-vendor/{codeowners-0.3.3/tests/fixtures/multiple-directory-owners/app/services → codeowners-0.5.0/tests/fixtures/directory-codeowner-github-team/app/by_name}/.codeowner +0 -0
  378. data/ext/cargo-vendor/{codeowners-0.3.3/tests/fixtures/multiple-directory-owners → codeowners-0.5.0/tests/fixtures/directory-codeowner-github-team}/config/code_ownership.yml +0 -0
  379. data/ext/cargo-vendor/{codeowners-0.3.3/tests/fixtures/multiple-directory-owners → codeowners-0.5.0/tests/fixtures/directory-codeowner-github-team}/config/teams/foo.yml +0 -0
  380. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/.github/CODEOWNERS +0 -0
  381. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/config/code_ownership.yml +0 -0
  382. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/config/teams/payments.yml +0 -0
  383. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/config/teams/payroll.yml +0 -0
  384. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/gems/payroll_calculator/calculator.rb +0 -0
  385. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/ruby/app/models/bank_account.rb +0 -0
  386. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/ruby/app/models/blockchain.rb +0 -0
  387. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/ruby/app/models/payroll.rb +0 -0
  388. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/ruby/app/payments/nacha.rb +0 -0
  389. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/ruby/app/services/.codeowner +0 -0
  390. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/ruby/app/services/multi_owned.rb +0 -0
  391. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/ruby/app/unowned.rb +0 -0
  392. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/ruby/packages/payroll_flow/package.yml +0 -0
  393. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/.github/CODEOWNERS +0 -0
  394. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/.keep +0 -0
  395. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/config/code_ownership.yml +0 -0
  396. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/config/teams/design.yml +0 -0
  397. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/config/teams/frontend.yml +0 -0
  398. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/frontend/apps/public/index.tsx +0 -0
  399. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/frontend/packages/dashboard/package.json +0 -0
  400. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/frontend/packages/dashboard/src/index.tsx +0 -0
  401. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/frontend/packages/ui-kit/.codeowner +0 -0
  402. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/frontend/packages/ui-kit/src/button.tsx +0 -0
  403. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/missing_github_team/.github/CODEOWNERS +0 -0
  404. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/missing_github_team/config/code_ownership.yml +0 -0
  405. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/missing_github_team/config/teams/bad_team.yml +0 -0
  406. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/missing_github_team/config/teams/good.yml +0 -0
  407. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/missing_github_team/gems/pets/dog.rb +0 -0
  408. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/multiple-directory-owners/.github/CODEOWNERS +0 -0
  409. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/multiple-directory-owners/app/consumers/.codeowner +0 -0
  410. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/multiple-directory-owners/app/consumers/deep/nesting/nestdir/deep_file.rb +0 -0
  411. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/multiple-directory-owners/app/consumers/one_owner.rb +0 -0
  412. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/multiple-directory-owners/app/services/exciting/.codeowner +0 -0
  413. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/multiple-directory-owners/app/services/exciting/some_other_file.rb +0 -0
  414. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/multiple-directory-owners/config/teams/bar.yml +0 -0
  415. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/.github/CODEOWNERS +9 -9
  416. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/.ignore +0 -0
  417. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/config/code_ownership.yml +0 -0
  418. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/config/teams/payments.yml +0 -0
  419. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/config/teams/payroll.yml +0 -0
  420. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/config/teams/ux.yml +0 -0
  421. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/gems/payroll_calculator/calculator.rb +0 -0
  422. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/gems/pets/dog.rb +0 -0
  423. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/javascript/packages/PayrollFlow/index.tsx +0 -0
  424. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/javascript/packages/PayrollFlow/package.json +0 -0
  425. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/javascript/packages/items/(special)/.codeowner +0 -0
  426. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/javascript/packages/items/(special)/pay.ts +0 -0
  427. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/javascript/packages/items/.codeowner +0 -0
  428. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/javascript/packages/items/item.ts +0 -0
  429. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/javascript/packages/list/page-admin.tsx +0 -0
  430. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/models/bank_account.rb +0 -0
  431. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/models/payroll.rb +0 -0
  432. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/payments/foo/.codeowner +0 -0
  433. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/payments/foo/ownedby_payroll.rb +0 -0
  434. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/payments/nacha.rb +0 -0
  435. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/payroll/.codeowner +0 -0
  436. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/payroll/payroll.rb +0 -0
  437. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/views/foos/edit.erb +0 -0
  438. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/views/foos/index.html.erb +0 -0
  439. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/views/foos/new.html.erb +0 -0
  440. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/ignored_files/git_ignored.rb +0 -0
  441. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/packages/payroll_flow/package.yml +0 -0
  442. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/should_be_ignored/an_ignored_file.rb +0 -0
  443. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/.github/CODEOWNERS +12 -12
  444. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/config/code_ownership.yml +0 -0
  445. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/config/teams/brewers.yml +0 -0
  446. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/config/teams/cubs.yml +0 -0
  447. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/config/teams/giants.yml +0 -0
  448. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/config/teams/rockies.yml +0 -0
  449. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/datepicker/package.json +0 -0
  450. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/datepicker/src/picks/dp.tsx +0 -0
  451. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/list/package.json +0 -0
  452. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/list/src/item.tsx +0 -0
  453. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/package.json +0 -0
  454. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/src/field.tsx +0 -0
  455. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/src/fields/small.tsx +0 -0
  456. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/gems/apollo/lib/apollo.rb +0 -0
  457. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/gems/ivy/lib/ivy.rb +0 -0
  458. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/gems/lager/lib/lager.rb +0 -0
  459. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/gems/summit/lib/summit.rb +0 -0
  460. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/packs/games/app/services/stats.rb +0 -0
  461. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/packs/games/package.yml +0 -0
  462. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/packs/locations/app/services/capacity.rb +0 -0
  463. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/packs/locations/package.yml +0 -0
  464. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/packs/schedule/app/services/date.rb +0 -0
  465. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/packs/schedule/package.yml +0 -0
  466. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/brewers/lib/util.rb +0 -0
  467. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/brewers/services/play.rb +0 -0
  468. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/.codeowner +0 -0
  469. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/.codeowner +0 -0
  470. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/db/price.rb +0 -0
  471. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/entertainment.rb +0 -0
  472. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/play.rb +0 -0
  473. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/giants/services/play.rb +0 -0
  474. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/rockies/services/play.rb +0 -0
  475. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/git_stage_test.rs +0 -0
  476. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/invalid_project_structure_test.rs +0 -0
  477. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/missing_github_team_test.rs +0 -0
  478. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/multiple_directory_owners_test.rs +0 -0
  479. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/run_config_executable_override_test.rs +0 -0
  480. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/runner_api.rs +0 -0
  481. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/untracked_files_test.rs +0 -0
  482. data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/valid_project_test.rs +6 -6
  483. /data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/valid_project_with_overrides_test.rs +0 -0
  484. /data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/validate_files_test.rs +0 -0
  485. /data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tmp/.gitkeep +0 -0
  486. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/LICENSE-APACHE.md +0 -0
  487. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/LICENSE-MIT.md +0 -0
  488. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/LICENSE.md +0 -0
  489. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/fmt/override.rs +0 -0
  490. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/hook__location_hook.snap +0 -0
  491. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/report_display__doc.snap +0 -0
  492. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/report_display_alt__doc.snap +0 -0
  493. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__alt.snap +0 -0
  494. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__charset_ascii.snap +0 -0
  495. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__color_mode_color.snap +0 -0
  496. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__color_mode_emphasis.snap +0 -0
  497. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__hook.snap +0 -0
  498. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__hook_context.snap +0 -0
  499. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__hook_decr.snap +0 -0
  500. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__hook_for_context.snap +0 -0
  501. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__hook_incr.snap +0 -0
  502. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__hook_multiple.snap +0 -0
  503. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__hook_provider.snap +0 -0
  504. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__multiline.snap +0 -0
  505. /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__norm.snap +0 -0
@@ -1,407 +0,0 @@
1
- //! Interface to the operating system's random number generator.
2
- //!
3
- //! # Supported targets
4
- //!
5
- //! | Target | Target Triple | Implementation
6
- //! | ----------------- | ------------------ | --------------
7
- //! | Linux, Android | `*‑linux‑*` | [`getrandom`][1] system call if available, otherwise [`/dev/urandom`][2] after successfully polling `/dev/random`
8
- //! | Windows | `*‑windows‑*` | [`BCryptGenRandom`]
9
- //! | macOS | `*‑apple‑darwin` | [`getentropy`][3]
10
- //! | iOS, tvOS, watchOS | `*‑apple‑ios`, `*-apple-tvos`, `*-apple-watchos` | [`CCRandomGenerateBytes`]
11
- //! | FreeBSD | `*‑freebsd` | [`getrandom`][5]
12
- //! | OpenBSD | `*‑openbsd` | [`getentropy`][7]
13
- //! | NetBSD | `*‑netbsd` | [`getrandom`][16] if available, otherwise [`kern.arandom`][8]
14
- //! | Dragonfly BSD | `*‑dragonfly` | [`getrandom`][9]
15
- //! | Solaris | `*‑solaris` | [`getrandom`][11] (with `GRND_RANDOM`)
16
- //! | illumos | `*‑illumos` | [`getrandom`][12]
17
- //! | Fuchsia OS | `*‑fuchsia` | [`cprng_draw`]
18
- //! | Redox | `*‑redox` | `/dev/urandom`
19
- //! | Haiku | `*‑haiku` | `/dev/urandom` (identical to `/dev/random`)
20
- //! | Hermit | `*-hermit` | [`sys_read_entropy`]
21
- //! | Hurd | `*-hurd-*` | [`getrandom`][17]
22
- //! | SGX | `x86_64‑*‑sgx` | [`RDRAND`]
23
- //! | VxWorks | `*‑wrs‑vxworks‑*` | `randABytes` after checking entropy pool initialization with `randSecure`
24
- //! | ESP-IDF | `*‑espidf` | [`esp_fill_random`]
25
- //! | Emscripten | `*‑emscripten` | [`getentropy`][13]
26
- //! | WASI | `wasm32‑wasi` | [`random_get`]
27
- //! | Web Browser and Node.js | `wasm*‑*‑unknown` | [`Crypto.getRandomValues`] if available, then [`crypto.randomFillSync`] if on Node.js, see [WebAssembly support]
28
- //! | SOLID | `*-kmc-solid_*` | `SOLID_RNG_SampleRandomBytes`
29
- //! | Nintendo 3DS | `*-nintendo-3ds` | [`getrandom`][18]
30
- //! | PS Vita | `*-vita-*` | [`getentropy`][13]
31
- //! | QNX Neutrino | `*‑nto-qnx*` | [`/dev/urandom`][14] (identical to `/dev/random`)
32
- //! | AIX | `*-ibm-aix` | [`/dev/urandom`][15]
33
- //! | Cygwin | `*-cygwin` | [`getrandom`][19] (based on [`RtlGenRandom`])
34
- //!
35
- //! Pull Requests that add support for new targets to `getrandom` are always welcome.
36
- //!
37
- //! ## Unsupported targets
38
- //!
39
- //! By default, `getrandom` will not compile on unsupported targets, but certain
40
- //! features allow a user to select a "fallback" implementation if no supported
41
- //! implementation exists.
42
- //!
43
- //! All of the below mechanisms only affect unsupported
44
- //! targets. Supported targets will _always_ use their supported implementations.
45
- //! This prevents a crate from overriding a secure source of randomness
46
- //! (either accidentally or intentionally).
47
- //!
48
- //! ## `/dev/urandom` fallback on Linux and Android
49
- //!
50
- //! On Linux targets the fallback is present only if either `target_env` is `musl`,
51
- //! or `target_arch` is one of the following: `aarch64`, `arm`, `powerpc`, `powerpc64`,
52
- //! `s390x`, `x86`, `x86_64`. Other supported targets [require][platform-support]
53
- //! kernel versions which support `getrandom` system call, so fallback is not needed.
54
- //!
55
- //! On Android targets the fallback is present only for the following `target_arch`es:
56
- //! `aarch64`, `arm`, `x86`, `x86_64`. Other `target_arch`es (e.g. RISC-V) require
57
- //! sufficiently high API levels.
58
- //!
59
- //! The fallback can be disabled by enabling the `linux_disable_fallback` crate feature.
60
- //! Note that doing so will bump minimum supported Linux kernel version to 3.17 and
61
- //! Android API level to 23 (Marshmallow).
62
- //!
63
- //! ### RDRAND on x86
64
- //!
65
- //! *If the `rdrand` Cargo feature is enabled*, `getrandom` will fallback to using
66
- //! the [`RDRAND`] instruction to get randomness on `no_std` `x86`/`x86_64`
67
- //! targets. This feature has no effect on other CPU architectures.
68
- //!
69
- //! ### WebAssembly support
70
- //!
71
- //! This crate fully supports the
72
- //! [`wasm32-wasi`](https://github.com/CraneStation/wasi) and
73
- //! [`wasm32-unknown-emscripten`](https://www.hellorust.com/setup/emscripten/)
74
- //! targets. However, the `wasm32-unknown-unknown` target (i.e. the target used
75
- //! by `wasm-pack`) is not automatically
76
- //! supported since, from the target name alone, we cannot deduce which
77
- //! JavaScript interface is in use (or if JavaScript is available at all).
78
- //!
79
- //! Instead, *if the `js` Cargo feature is enabled*, this crate will assume
80
- //! that you are building for an environment containing JavaScript, and will
81
- //! call the appropriate methods. Both web browser (main window and Web Workers)
82
- //! and Node.js environments are supported, invoking the methods
83
- //! [described above](#supported-targets) using the [`wasm-bindgen`] toolchain.
84
- //!
85
- //! To enable the `js` Cargo feature, add the following to the `dependencies`
86
- //! section in your `Cargo.toml` file:
87
- //! ```toml
88
- //! [dependencies]
89
- //! getrandom = { version = "0.2", features = ["js"] }
90
- //! ```
91
- //!
92
- //! This can be done even if `getrandom` is not a direct dependency. Cargo
93
- //! allows crates to enable features for indirect dependencies.
94
- //!
95
- //! This feature should only be enabled for binary, test, or benchmark crates.
96
- //! Library crates should generally not enable this feature, leaving such a
97
- //! decision to *users* of their library. Also, libraries should not introduce
98
- //! their own `js` features *just* to enable `getrandom`'s `js` feature.
99
- //!
100
- //! This feature has no effect on targets other than `wasm32-unknown-unknown`.
101
- //!
102
- //! #### Node.js ES module support
103
- //!
104
- //! Node.js supports both [CommonJS modules] and [ES modules]. Due to
105
- //! limitations in wasm-bindgen's [`module`] support, we cannot directly
106
- //! support ES Modules running on Node.js. However, on Node v15 and later, the
107
- //! module author can add a simple shim to support the Web Cryptography API:
108
- //! ```js
109
- //! import { webcrypto } from 'node:crypto'
110
- //! globalThis.crypto = webcrypto
111
- //! ```
112
- //! This crate will then use the provided `webcrypto` implementation.
113
- //!
114
- //! ### Platform Support
115
- //! This crate generally supports the same operating system and platform versions
116
- //! that the Rust standard library does. Additional targets may be supported using
117
- //! pluggable custom implementations.
118
- //!
119
- //! This means that as Rust drops support for old versions of operating systems
120
- //! (such as old Linux kernel versions, Android API levels, etc) in stable releases,
121
- //! `getrandom` may create new patch releases (`0.N.x`) that remove support for
122
- //! outdated platform versions.
123
- //!
124
- //! ### Custom implementations
125
- //!
126
- //! The [`register_custom_getrandom!`] macro allows a user to mark their own
127
- //! function as the backing implementation for [`getrandom`]. See the macro's
128
- //! documentation for more information about writing and registering your own
129
- //! custom implementations.
130
- //!
131
- //! Note that registering a custom implementation only has an effect on targets
132
- //! that would otherwise not compile. Any supported targets (including those
133
- //! using `rdrand` and `js` Cargo features) continue using their normal
134
- //! implementations even if a function is registered.
135
- //!
136
- //! ## Early boot
137
- //!
138
- //! Sometimes, early in the boot process, the OS has not collected enough
139
- //! entropy to securely seed its RNG. This is especially common on virtual
140
- //! machines, where standard "random" events are hard to come by.
141
- //!
142
- //! Some operating system interfaces always block until the RNG is securely
143
- //! seeded. This can take anywhere from a few seconds to more than a minute.
144
- //! A few (Linux, NetBSD and Solaris) offer a choice between blocking and
145
- //! getting an error; in these cases, we always choose to block.
146
- //!
147
- //! On Linux (when the `getrandom` system call is not available), reading from
148
- //! `/dev/urandom` never blocks, even when the OS hasn't collected enough
149
- //! entropy yet. To avoid returning low-entropy bytes, we first poll
150
- //! `/dev/random` and only switch to `/dev/urandom` once this has succeeded.
151
- //!
152
- //! On OpenBSD, this kind of entropy accounting isn't available, and on
153
- //! NetBSD, blocking on it is discouraged. On these platforms, nonblocking
154
- //! interfaces are used, even when reliable entropy may not be available.
155
- //! On the platforms where it is used, the reliability of entropy accounting
156
- //! itself isn't free from controversy. This library provides randomness
157
- //! sourced according to the platform's best practices, but each platform has
158
- //! its own limits on the grade of randomness it can promise in environments
159
- //! with few sources of entropy.
160
- //!
161
- //! ## Error handling
162
- //!
163
- //! We always choose failure over returning known insecure "random" bytes. In
164
- //! general, on supported platforms, failure is highly unlikely, though not
165
- //! impossible. If an error does occur, then it is likely that it will occur
166
- //! on every call to `getrandom`, hence after the first successful call one
167
- //! can be reasonably confident that no errors will occur.
168
- //!
169
- //! [1]: https://manned.org/getrandom.2
170
- //! [2]: https://manned.org/urandom.4
171
- //! [3]: https://www.unix.com/man-page/mojave/2/getentropy/
172
- //! [4]: https://www.unix.com/man-page/mojave/4/urandom/
173
- //! [5]: https://www.freebsd.org/cgi/man.cgi?query=getrandom&manpath=FreeBSD+12.0-stable
174
- //! [7]: https://man.openbsd.org/getentropy.2
175
- //! [8]: https://man.netbsd.org/sysctl.7
176
- //! [9]: https://leaf.dragonflybsd.org/cgi/web-man?command=getrandom
177
- //! [11]: https://docs.oracle.com/cd/E88353_01/html/E37841/getrandom-2.html
178
- //! [12]: https://illumos.org/man/2/getrandom
179
- //! [13]: https://github.com/emscripten-core/emscripten/pull/12240
180
- //! [14]: https://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.utilities/topic/r/random.html
181
- //! [15]: https://www.ibm.com/docs/en/aix/7.3?topic=files-random-urandom-devices
182
- //! [16]: https://man.netbsd.org/getrandom.2
183
- //! [17]: https://www.gnu.org/software/libc/manual/html_mono/libc.html#index-getrandom
184
- //! [18]: https://github.com/rust3ds/shim-3ds/commit/b01d2568836dea2a65d05d662f8e5f805c64389d
185
- //! [19]: https://github.com/cygwin/cygwin/blob/main/winsup/cygwin/libc/getentropy.cc
186
- //!
187
- //! [`BCryptGenRandom`]: https://docs.microsoft.com/en-us/windows/win32/api/bcrypt/nf-bcrypt-bcryptgenrandom
188
- //! [`RtlGenRandom`]: https://learn.microsoft.com/en-us/windows/win32/api/ntsecapi/nf-ntsecapi-rtlgenrandom
189
- //! [`Crypto.getRandomValues`]: https://www.w3.org/TR/WebCryptoAPI/#Crypto-method-getRandomValues
190
- //! [`RDRAND`]: https://software.intel.com/en-us/articles/intel-digital-random-number-generator-drng-software-implementation-guide
191
- //! [`CCRandomGenerateBytes`]: https://opensource.apple.com/source/CommonCrypto/CommonCrypto-60074/include/CommonRandom.h.auto.html
192
- //! [`cprng_draw`]: https://fuchsia.dev/fuchsia-src/zircon/syscalls/cprng_draw
193
- //! [`crypto.randomFillSync`]: https://nodejs.org/api/crypto.html#cryptorandomfillsyncbuffer-offset-size
194
- //! [`esp_fill_random`]: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/random.html#_CPPv415esp_fill_randomPv6size_t
195
- //! [`random_get`]: https://github.com/WebAssembly/WASI/blob/main/phases/snapshot/docs.md#-random_getbuf-pointeru8-buf_len-size---errno
196
- //! [WebAssembly support]: #webassembly-support
197
- //! [`wasm-bindgen`]: https://github.com/rustwasm/wasm-bindgen
198
- //! [`module`]: https://rustwasm.github.io/wasm-bindgen/reference/attributes/on-js-imports/module.html
199
- //! [CommonJS modules]: https://nodejs.org/api/modules.html
200
- //! [ES modules]: https://nodejs.org/api/esm.html
201
- //! [`sys_read_entropy`]: https://github.com/hermit-os/kernel/blob/315f58ff5efc81d9bf0618af85a59963ff55f8b1/src/syscalls/entropy.rs#L47-L55
202
- //! [platform-support]: https://doc.rust-lang.org/stable/rustc/platform-support.html
203
-
204
- #![doc(
205
- html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk.png",
206
- html_favicon_url = "https://www.rust-lang.org/favicon.ico",
207
- html_root_url = "https://docs.rs/getrandom/0.2.16"
208
- )]
209
- #![no_std]
210
- #![warn(rust_2018_idioms, unused_lifetimes, missing_docs)]
211
- #![cfg_attr(docsrs, feature(doc_auto_cfg))]
212
-
213
- #[macro_use]
214
- extern crate cfg_if;
215
-
216
- use crate::util::{slice_as_uninit_mut, slice_assume_init_mut};
217
- use core::mem::MaybeUninit;
218
-
219
- mod error;
220
- mod util;
221
- // To prevent a breaking change when targets are added, we always export the
222
- // register_custom_getrandom macro, so old Custom RNG crates continue to build.
223
- #[cfg(feature = "custom")]
224
- mod custom;
225
- #[cfg(feature = "std")]
226
- mod error_impls;
227
-
228
- pub use crate::error::Error;
229
-
230
- // System-specific implementations.
231
- //
232
- // These should all provide getrandom_inner with the signature
233
- // `fn getrandom_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error>`.
234
- // The function MUST fully initialize `dest` when `Ok(())` is returned.
235
- // The function MUST NOT ever write uninitialized bytes into `dest`,
236
- // regardless of what value it returns.
237
- cfg_if! {
238
- if #[cfg(any(target_os = "haiku", target_os = "redox", target_os = "nto", target_os = "aix"))] {
239
- mod util_libc;
240
- #[path = "use_file.rs"] mod imp;
241
- } else if #[cfg(any(
242
- target_os = "macos",
243
- target_os = "openbsd",
244
- target_os = "vita",
245
- target_os = "emscripten",
246
- ))] {
247
- mod util_libc;
248
- #[path = "getentropy.rs"] mod imp;
249
- } else if #[cfg(any(
250
- target_os = "dragonfly",
251
- target_os = "freebsd",
252
- target_os = "hurd",
253
- target_os = "illumos",
254
- // Check for target_arch = "arm" to only include the 3DS. Does not
255
- // include the Nintendo Switch (which is target_arch = "aarch64").
256
- all(target_os = "horizon", target_arch = "arm"),
257
- target_os = "cygwin",
258
- ))] {
259
- mod util_libc;
260
- #[path = "getrandom.rs"] mod imp;
261
- } else if #[cfg(all(
262
- not(feature = "linux_disable_fallback"),
263
- any(
264
- // Rust supports Android API level 19 (KitKat) [0] and the next upgrade targets
265
- // level 21 (Lollipop) [1], while `getrandom(2)` was added only in
266
- // level 23 (Marshmallow). Note that it applies only to the "old" `target_arch`es,
267
- // RISC-V Android targets sufficiently new API level, same will apply for potential
268
- // new Android `target_arch`es.
269
- // [0]: https://blog.rust-lang.org/2023/01/09/android-ndk-update-r25.html
270
- // [1]: https://github.com/rust-lang/rust/pull/120593
271
- all(
272
- target_os = "android",
273
- any(
274
- target_arch = "aarch64",
275
- target_arch = "arm",
276
- target_arch = "x86",
277
- target_arch = "x86_64",
278
- ),
279
- ),
280
- // Only on these `target_arch`es Rust supports Linux kernel versions (3.2+)
281
- // that precede the version (3.17) in which `getrandom(2)` was added:
282
- // https://doc.rust-lang.org/stable/rustc/platform-support.html
283
- all(
284
- target_os = "linux",
285
- any(
286
- target_arch = "aarch64",
287
- target_arch = "arm",
288
- target_arch = "powerpc",
289
- target_arch = "powerpc64",
290
- target_arch = "s390x",
291
- target_arch = "x86",
292
- target_arch = "x86_64",
293
- // Minimum supported Linux kernel version for MUSL targets
294
- // is not specified explicitly (as of Rust 1.77) and they
295
- // are used in practice to target pre-3.17 kernels.
296
- target_env = "musl",
297
- ),
298
- )
299
- ),
300
- ))] {
301
- mod util_libc;
302
- mod use_file;
303
- mod lazy;
304
- #[path = "linux_android_with_fallback.rs"] mod imp;
305
- } else if #[cfg(any(target_os = "android", target_os = "linux"))] {
306
- mod util_libc;
307
- #[path = "linux_android.rs"] mod imp;
308
- } else if #[cfg(target_os = "solaris")] {
309
- mod util_libc;
310
- #[path = "solaris.rs"] mod imp;
311
- } else if #[cfg(target_os = "netbsd")] {
312
- mod util_libc;
313
- #[path = "netbsd.rs"] mod imp;
314
- } else if #[cfg(target_os = "fuchsia")] {
315
- #[path = "fuchsia.rs"] mod imp;
316
- } else if #[cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos"))] {
317
- #[path = "apple-other.rs"] mod imp;
318
- } else if #[cfg(all(target_arch = "wasm32", target_os = "wasi"))] {
319
- #[path = "wasi.rs"] mod imp;
320
- } else if #[cfg(target_os = "hermit")] {
321
- #[path = "hermit.rs"] mod imp;
322
- } else if #[cfg(target_os = "vxworks")] {
323
- mod util_libc;
324
- #[path = "vxworks.rs"] mod imp;
325
- } else if #[cfg(target_os = "solid_asp3")] {
326
- #[path = "solid.rs"] mod imp;
327
- } else if #[cfg(target_os = "espidf")] {
328
- #[path = "espidf.rs"] mod imp;
329
- } else if #[cfg(windows)] {
330
- #[path = "windows.rs"] mod imp;
331
- } else if #[cfg(all(target_arch = "x86_64", target_env = "sgx"))] {
332
- mod lazy;
333
- #[path = "rdrand.rs"] mod imp;
334
- } else if #[cfg(all(feature = "rdrand",
335
- any(target_arch = "x86_64", target_arch = "x86")))] {
336
- mod lazy;
337
- #[path = "rdrand.rs"] mod imp;
338
- } else if #[cfg(all(feature = "js",
339
- any(target_arch = "wasm32", target_arch = "wasm64"),
340
- target_os = "unknown"))] {
341
- #[path = "js.rs"] mod imp;
342
- } else if #[cfg(feature = "custom")] {
343
- use custom as imp;
344
- } else if #[cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"),
345
- target_os = "unknown"))] {
346
- compile_error!("the wasm*-unknown-unknown targets are not supported by \
347
- default, you may need to enable the \"js\" feature. \
348
- For more information see: \
349
- https://docs.rs/getrandom/#webassembly-support");
350
- } else {
351
- compile_error!("target is not supported, for more information see: \
352
- https://docs.rs/getrandom/#unsupported-targets");
353
- }
354
- }
355
-
356
- /// Fill `dest` with random bytes from the system's preferred random number
357
- /// source.
358
- ///
359
- /// This function returns an error on any failure, including partial reads. We
360
- /// make no guarantees regarding the contents of `dest` on error. If `dest` is
361
- /// empty, `getrandom` immediately returns success, making no calls to the
362
- /// underlying operating system.
363
- ///
364
- /// Blocking is possible, at least during early boot; see module documentation.
365
- ///
366
- /// In general, `getrandom` will be fast enough for interactive usage, though
367
- /// significantly slower than a user-space CSPRNG; for the latter consider
368
- /// [`rand::thread_rng`](https://docs.rs/rand/*/rand/fn.thread_rng.html).
369
- #[inline]
370
- pub fn getrandom(dest: &mut [u8]) -> Result<(), Error> {
371
- // SAFETY: The `&mut MaybeUninit<_>` reference doesn't escape, and
372
- // `getrandom_uninit` guarantees it will never de-initialize any part of
373
- // `dest`.
374
- getrandom_uninit(unsafe { slice_as_uninit_mut(dest) })?;
375
- Ok(())
376
- }
377
-
378
- /// Version of the `getrandom` function which fills `dest` with random bytes
379
- /// returns a mutable reference to those bytes.
380
- ///
381
- /// On successful completion this function is guaranteed to return a slice
382
- /// which points to the same memory as `dest` and has the same length.
383
- /// In other words, it's safe to assume that `dest` is initialized after
384
- /// this function has returned `Ok`.
385
- ///
386
- /// No part of `dest` will ever be de-initialized at any point, regardless
387
- /// of what is returned.
388
- ///
389
- /// # Examples
390
- ///
391
- /// ```ignore
392
- /// # // We ignore this test since `uninit_array` is unstable.
393
- /// #![feature(maybe_uninit_uninit_array)]
394
- /// # fn main() -> Result<(), getrandom::Error> {
395
- /// let mut buf = core::mem::MaybeUninit::uninit_array::<1024>();
396
- /// let buf: &mut [u8] = getrandom::getrandom_uninit(&mut buf)?;
397
- /// # Ok(()) }
398
- /// ```
399
- #[inline]
400
- pub fn getrandom_uninit(dest: &mut [MaybeUninit<u8>]) -> Result<&mut [u8], Error> {
401
- if !dest.is_empty() {
402
- imp::getrandom_inner(dest)?;
403
- }
404
- // SAFETY: `dest` has been fully initialized by `imp::getrandom_inner`
405
- // since it returned `Ok`.
406
- Ok(unsafe { slice_assume_init_mut(dest) })
407
- }
@@ -1,7 +0,0 @@
1
- //! Implementation for Linux / Android without `/dev/urandom` fallback
2
- use crate::{util_libc, Error};
3
- use core::mem::MaybeUninit;
4
-
5
- pub fn getrandom_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error> {
6
- util_libc::sys_fill_exact(dest, util_libc::getrandom_syscall)
7
- }
@@ -1,33 +0,0 @@
1
- //! Implementation for Linux / Android with `/dev/urandom` fallback
2
- use crate::{
3
- lazy::LazyBool,
4
- util_libc::{getrandom_syscall, last_os_error, sys_fill_exact},
5
- {use_file, Error},
6
- };
7
- use core::mem::MaybeUninit;
8
-
9
- pub fn getrandom_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error> {
10
- // getrandom(2) was introduced in Linux 3.17
11
- static HAS_GETRANDOM: LazyBool = LazyBool::new();
12
- if HAS_GETRANDOM.unsync_init(is_getrandom_available) {
13
- sys_fill_exact(dest, getrandom_syscall)
14
- } else {
15
- use_file::getrandom_inner(dest)
16
- }
17
- }
18
-
19
- fn is_getrandom_available() -> bool {
20
- if getrandom_syscall(&mut []) < 0 {
21
- match last_os_error().raw_os_error() {
22
- Some(libc::ENOSYS) => false, // No kernel support
23
- // The fallback on EPERM is intentionally not done on Android since this workaround
24
- // seems to be needed only for specific Linux-based products that aren't based
25
- // on Android. See https://github.com/rust-random/getrandom/issues/229.
26
- #[cfg(target_os = "linux")]
27
- Some(libc::EPERM) => false, // Blocked by seccomp
28
- _ => true,
29
- }
30
- } else {
31
- true
32
- }
33
- }
@@ -1,46 +0,0 @@
1
- //! Implementation for NetBSD
2
- use crate::{
3
- util_libc::{sys_fill_exact, Weak},
4
- Error,
5
- };
6
- use core::{mem::MaybeUninit, ptr};
7
-
8
- fn kern_arnd(buf: &mut [MaybeUninit<u8>]) -> libc::ssize_t {
9
- static MIB: [libc::c_int; 2] = [libc::CTL_KERN, libc::KERN_ARND];
10
- let mut len = buf.len();
11
- let ret = unsafe {
12
- libc::sysctl(
13
- MIB.as_ptr(),
14
- MIB.len() as libc::c_uint,
15
- buf.as_mut_ptr() as *mut _,
16
- &mut len,
17
- ptr::null(),
18
- 0,
19
- )
20
- };
21
- if ret == -1 {
22
- -1
23
- } else {
24
- len as libc::ssize_t
25
- }
26
- }
27
-
28
- type GetRandomFn = unsafe extern "C" fn(*mut u8, libc::size_t, libc::c_uint) -> libc::ssize_t;
29
-
30
- pub fn getrandom_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error> {
31
- // getrandom(2) was introduced in NetBSD 10.0
32
- static GETRANDOM: Weak = unsafe { Weak::new("getrandom\0") };
33
- if let Some(fptr) = GETRANDOM.ptr() {
34
- let func: GetRandomFn = unsafe { core::mem::transmute(fptr) };
35
- return sys_fill_exact(dest, |buf| unsafe {
36
- func(buf.as_mut_ptr() as *mut u8, buf.len(), 0)
37
- });
38
- }
39
-
40
- // NetBSD will only return up to 256 bytes at a time, and
41
- // older NetBSD kernels will fail on longer buffers.
42
- for chunk in dest.chunks_mut(256) {
43
- sys_fill_exact(chunk, kern_arnd)?
44
- }
45
- Ok(())
46
- }
@@ -1,121 +0,0 @@
1
- //! RDRAND backend for x86(-64) targets
2
- use crate::{lazy::LazyBool, util::slice_as_uninit, Error};
3
- use core::mem::{size_of, MaybeUninit};
4
-
5
- cfg_if! {
6
- if #[cfg(target_arch = "x86_64")] {
7
- use core::arch::x86_64 as arch;
8
- use arch::_rdrand64_step as rdrand_step;
9
- } else if #[cfg(target_arch = "x86")] {
10
- use core::arch::x86 as arch;
11
- use arch::_rdrand32_step as rdrand_step;
12
- }
13
- }
14
-
15
- // Recommendation from "Intel® Digital Random Number Generator (DRNG) Software
16
- // Implementation Guide" - Section 5.2.1 and "Intel® 64 and IA-32 Architectures
17
- // Software Developer’s Manual" - Volume 1 - Section 7.3.17.1.
18
- const RETRY_LIMIT: usize = 10;
19
-
20
- #[target_feature(enable = "rdrand")]
21
- unsafe fn rdrand() -> Option<usize> {
22
- for _ in 0..RETRY_LIMIT {
23
- let mut val = 0;
24
- if rdrand_step(&mut val) == 1 {
25
- return Some(val as usize);
26
- }
27
- }
28
- None
29
- }
30
-
31
- // "rdrand" target feature requires "+rdrand" flag, see https://github.com/rust-lang/rust/issues/49653.
32
- #[cfg(all(target_env = "sgx", not(target_feature = "rdrand")))]
33
- compile_error!(
34
- "SGX targets require 'rdrand' target feature. Enable by using -C target-feature=+rdrand."
35
- );
36
-
37
- // Run a small self-test to make sure we aren't repeating values
38
- // Adapted from Linux's test in arch/x86/kernel/cpu/rdrand.c
39
- // Fails with probability < 2^(-90) on 32-bit systems
40
- #[target_feature(enable = "rdrand")]
41
- unsafe fn self_test() -> bool {
42
- // On AMD, RDRAND returns 0xFF...FF on failure, count it as a collision.
43
- let mut prev = !0; // TODO(MSRV 1.43): Move to usize::MAX
44
- let mut fails = 0;
45
- for _ in 0..8 {
46
- match rdrand() {
47
- Some(val) if val == prev => fails += 1,
48
- Some(val) => prev = val,
49
- None => return false,
50
- };
51
- }
52
- fails <= 2
53
- }
54
-
55
- fn is_rdrand_good() -> bool {
56
- #[cfg(not(target_feature = "rdrand"))]
57
- {
58
- // SAFETY: All Rust x86 targets are new enough to have CPUID, and we
59
- // check that leaf 1 is supported before using it.
60
- let cpuid0 = unsafe { arch::__cpuid(0) };
61
- if cpuid0.eax < 1 {
62
- return false;
63
- }
64
- let cpuid1 = unsafe { arch::__cpuid(1) };
65
-
66
- let vendor_id = [
67
- cpuid0.ebx.to_le_bytes(),
68
- cpuid0.edx.to_le_bytes(),
69
- cpuid0.ecx.to_le_bytes(),
70
- ];
71
- if vendor_id == [*b"Auth", *b"enti", *b"cAMD"] {
72
- let mut family = (cpuid1.eax >> 8) & 0xF;
73
- if family == 0xF {
74
- family += (cpuid1.eax >> 20) & 0xFF;
75
- }
76
- // AMD CPUs families before 17h (Zen) sometimes fail to set CF when
77
- // RDRAND fails after suspend. Don't use RDRAND on those families.
78
- // See https://bugzilla.redhat.com/show_bug.cgi?id=1150286
79
- if family < 0x17 {
80
- return false;
81
- }
82
- }
83
-
84
- const RDRAND_FLAG: u32 = 1 << 30;
85
- if cpuid1.ecx & RDRAND_FLAG == 0 {
86
- return false;
87
- }
88
- }
89
-
90
- // SAFETY: We have already checked that rdrand is available.
91
- unsafe { self_test() }
92
- }
93
-
94
- pub fn getrandom_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error> {
95
- static RDRAND_GOOD: LazyBool = LazyBool::new();
96
- if !RDRAND_GOOD.unsync_init(is_rdrand_good) {
97
- return Err(Error::NO_RDRAND);
98
- }
99
- // SAFETY: After this point, we know rdrand is supported.
100
- unsafe { rdrand_exact(dest) }.ok_or(Error::FAILED_RDRAND)
101
- }
102
-
103
- // TODO: make this function safe when we have feature(target_feature_11)
104
- #[target_feature(enable = "rdrand")]
105
- unsafe fn rdrand_exact(dest: &mut [MaybeUninit<u8>]) -> Option<()> {
106
- // We use chunks_exact_mut instead of chunks_mut as it allows almost all
107
- // calls to memcpy to be elided by the compiler.
108
- let mut chunks = dest.chunks_exact_mut(size_of::<usize>());
109
- for chunk in chunks.by_ref() {
110
- let src = rdrand()?.to_ne_bytes();
111
- chunk.copy_from_slice(slice_as_uninit(&src));
112
- }
113
-
114
- let tail = chunks.into_remainder();
115
- let n = tail.len();
116
- if n > 0 {
117
- let src = rdrand()?.to_ne_bytes();
118
- tail.copy_from_slice(slice_as_uninit(&src[..n]));
119
- }
120
- Some(())
121
- }
@@ -1,34 +0,0 @@
1
- //! Solaris implementation using getrandom(2).
2
- //!
3
- //! While getrandom(2) has been available since Solaris 11.3, it has a few
4
- //! quirks not present on other OSes. First, on Solaris 11.3, calls will always
5
- //! fail if bufsz > 1024. Second, it will always either fail or completely fill
6
- //! the buffer (returning bufsz). Third, error is indicated by returning 0,
7
- //! rather than by returning -1. Finally, "if GRND_RANDOM is not specified
8
- //! then getrandom(2) is always a non blocking call". This _might_ imply that
9
- //! in early-boot scenarios with low entropy, getrandom(2) will not properly
10
- //! block. To be safe, we set GRND_RANDOM, mirroring the man page examples.
11
- //!
12
- //! For more information, see the man page linked in lib.rs and this blog post:
13
- //! https://blogs.oracle.com/solaris/post/solaris-new-system-calls-getentropy2-and-getrandom2
14
- //! which also explains why this crate should not use getentropy(2).
15
- use crate::{util_libc::last_os_error, Error};
16
- use core::mem::MaybeUninit;
17
-
18
- const MAX_BYTES: usize = 1024;
19
-
20
- pub fn getrandom_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error> {
21
- for chunk in dest.chunks_mut(MAX_BYTES) {
22
- let ptr = chunk.as_mut_ptr() as *mut libc::c_void;
23
- let ret = unsafe { libc::getrandom(ptr, chunk.len(), libc::GRND_RANDOM) };
24
- // In case the man page has a typo, we also check for negative ret.
25
- if ret <= 0 {
26
- return Err(last_os_error());
27
- }
28
- // If getrandom(2) succeeds, it should have completely filled chunk.
29
- if (ret as usize) != chunk.len() {
30
- return Err(Error::UNEXPECTED);
31
- }
32
- }
33
- Ok(())
34
- }
@@ -1,18 +0,0 @@
1
- //! Implementation for SOLID
2
- use crate::Error;
3
- use core::{mem::MaybeUninit, num::NonZeroU32};
4
-
5
- extern "C" {
6
- pub fn SOLID_RNG_SampleRandomBytes(buffer: *mut u8, length: usize) -> i32;
7
- }
8
-
9
- pub fn getrandom_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error> {
10
- let ret = unsafe { SOLID_RNG_SampleRandomBytes(dest.as_mut_ptr() as *mut u8, dest.len()) };
11
- if ret >= 0 {
12
- Ok(())
13
- } else {
14
- // ITRON error numbers are always negative, so we negate it so that it
15
- // falls in the dedicated OS error range (1..INTERNAL_START).
16
- Err(NonZeroU32::new((-ret) as u32).unwrap().into())
17
- }
18
- }