rubydex 0.1.0.beta11 → 0.1.0.beta13

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 (108) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +23 -23
  3. data/README.md +125 -125
  4. data/THIRD_PARTY_LICENSES.html +2018 -945
  5. data/exe/rdx +47 -47
  6. data/ext/rubydex/declaration.c +453 -388
  7. data/ext/rubydex/declaration.h +23 -23
  8. data/ext/rubydex/definition.c +284 -197
  9. data/ext/rubydex/definition.h +28 -28
  10. data/ext/rubydex/diagnostic.c +6 -6
  11. data/ext/rubydex/diagnostic.h +11 -11
  12. data/ext/rubydex/document.c +97 -98
  13. data/ext/rubydex/document.h +10 -10
  14. data/ext/rubydex/extconf.rb +146 -127
  15. data/ext/rubydex/graph.c +701 -512
  16. data/ext/rubydex/graph.h +10 -10
  17. data/ext/rubydex/handle.h +44 -44
  18. data/ext/rubydex/location.c +22 -22
  19. data/ext/rubydex/location.h +15 -15
  20. data/ext/rubydex/reference.c +123 -104
  21. data/ext/rubydex/reference.h +15 -16
  22. data/ext/rubydex/rubydex.c +22 -22
  23. data/ext/rubydex/utils.c +108 -86
  24. data/ext/rubydex/utils.h +34 -28
  25. data/lib/rubydex/comment.rb +17 -17
  26. data/lib/rubydex/declaration.rb +11 -0
  27. data/lib/rubydex/diagnostic.rb +21 -21
  28. data/lib/rubydex/failures.rb +15 -15
  29. data/lib/rubydex/graph.rb +98 -92
  30. data/lib/rubydex/keyword.rb +17 -0
  31. data/lib/rubydex/keyword_parameter.rb +13 -0
  32. data/lib/rubydex/location.rb +90 -90
  33. data/lib/rubydex/mixin.rb +22 -0
  34. data/lib/rubydex/version.rb +5 -5
  35. data/lib/rubydex.rb +24 -20
  36. data/rbi/rubydex.rbi +425 -310
  37. data/rust/Cargo.lock +1851 -1851
  38. data/rust/Cargo.toml +29 -29
  39. data/rust/about.toml +10 -10
  40. data/rust/{about.hbs → about_templates/about.hbs} +81 -78
  41. data/rust/about_templates/mingw_licenses.hbs +1071 -0
  42. data/rust/rubydex/Cargo.toml +42 -42
  43. data/rust/rubydex/src/compile_assertions.rs +13 -13
  44. data/rust/rubydex/src/diagnostic.rs +110 -109
  45. data/rust/rubydex/src/errors.rs +28 -28
  46. data/rust/rubydex/src/indexing/local_graph.rs +224 -224
  47. data/rust/rubydex/src/indexing/rbs_indexer.rs +1551 -1554
  48. data/rust/rubydex/src/indexing/ruby_indexer.rs +2329 -6753
  49. data/rust/rubydex/src/indexing/ruby_indexer_tests.rs +4962 -0
  50. data/rust/rubydex/src/indexing.rs +210 -210
  51. data/rust/rubydex/src/integrity.rs +279 -278
  52. data/rust/rubydex/src/job_queue.rs +199 -205
  53. data/rust/rubydex/src/lib.rs +17 -17
  54. data/rust/rubydex/src/listing.rs +371 -272
  55. data/rust/rubydex/src/main.rs +160 -160
  56. data/rust/rubydex/src/model/built_in.rs +83 -0
  57. data/rust/rubydex/src/model/comment.rs +24 -24
  58. data/rust/rubydex/src/model/declaration.rs +679 -588
  59. data/rust/rubydex/src/model/definitions.rs +1682 -1602
  60. data/rust/rubydex/src/model/document.rs +222 -252
  61. data/rust/rubydex/src/model/encoding.rs +22 -22
  62. data/rust/rubydex/src/model/graph.rs +3782 -3556
  63. data/rust/rubydex/src/model/id.rs +110 -110
  64. data/rust/rubydex/src/model/identity_maps.rs +58 -58
  65. data/rust/rubydex/src/model/ids.rs +60 -38
  66. data/rust/rubydex/src/model/keywords.rs +256 -256
  67. data/rust/rubydex/src/model/name.rs +298 -298
  68. data/rust/rubydex/src/model/references.rs +111 -111
  69. data/rust/rubydex/src/model/string_ref.rs +50 -50
  70. data/rust/rubydex/src/model/visibility.rs +41 -41
  71. data/rust/rubydex/src/model.rs +15 -14
  72. data/rust/rubydex/src/offset.rs +147 -147
  73. data/rust/rubydex/src/position.rs +6 -6
  74. data/rust/rubydex/src/query.rs +1841 -1700
  75. data/rust/rubydex/src/resolution.rs +1852 -5895
  76. data/rust/rubydex/src/resolution_tests.rs +4701 -0
  77. data/rust/rubydex/src/stats/memory.rs +71 -71
  78. data/rust/rubydex/src/stats/orphan_report.rs +264 -263
  79. data/rust/rubydex/src/stats/timer.rs +127 -127
  80. data/rust/rubydex/src/stats.rs +11 -11
  81. data/rust/rubydex/src/test_utils/context.rs +226 -226
  82. data/rust/rubydex/src/test_utils/graph_test.rs +730 -679
  83. data/rust/rubydex/src/test_utils/local_graph_test.rs +602 -602
  84. data/rust/rubydex/src/test_utils.rs +52 -52
  85. data/rust/rubydex/src/visualization/dot.rs +192 -176
  86. data/rust/rubydex/src/visualization.rs +6 -6
  87. data/rust/rubydex/tests/cli.rs +185 -167
  88. data/rust/rubydex-mcp/Cargo.toml +28 -28
  89. data/rust/rubydex-mcp/src/main.rs +48 -48
  90. data/rust/rubydex-mcp/src/server.rs +1145 -1145
  91. data/rust/rubydex-mcp/src/tools.rs +49 -49
  92. data/rust/rubydex-mcp/tests/mcp.rs +302 -302
  93. data/rust/rubydex-sys/Cargo.toml +20 -20
  94. data/rust/rubydex-sys/build.rs +14 -14
  95. data/rust/rubydex-sys/cbindgen.toml +12 -12
  96. data/rust/rubydex-sys/src/declaration_api.rs +485 -469
  97. data/rust/rubydex-sys/src/definition_api.rs +443 -352
  98. data/rust/rubydex-sys/src/diagnostic_api.rs +99 -99
  99. data/rust/rubydex-sys/src/document_api.rs +85 -54
  100. data/rust/rubydex-sys/src/graph_api.rs +1017 -700
  101. data/rust/rubydex-sys/src/lib.rs +79 -9
  102. data/rust/rubydex-sys/src/location_api.rs +79 -79
  103. data/rust/rubydex-sys/src/name_api.rs +187 -135
  104. data/rust/rubydex-sys/src/reference_api.rs +267 -195
  105. data/rust/rubydex-sys/src/utils.rs +70 -70
  106. data/rust/rustfmt.toml +2 -2
  107. metadata +16 -9
  108. data/lib/rubydex/librubydex_sys.so +0 -0
@@ -1,71 +1,71 @@
1
- use std::io;
2
-
3
- #[cfg(unix)]
4
- use libc::{RUSAGE_SELF, getrusage, rusage};
5
-
6
- /// Memory statistics for the current process
7
- #[derive(Debug, Clone, Copy)]
8
- pub struct MemoryStats {
9
- /// Maximum resident set size in bytes
10
- pub max_rss_bytes: i64,
11
- }
12
-
13
- impl MemoryStats {
14
- /// Get current memory statistics using getrusage
15
- ///
16
- /// # Errors
17
- ///
18
- /// Returns an error if the `getrusage` system call fails.
19
- #[cfg(unix)]
20
- pub fn current() -> Result<Self, io::Error> {
21
- unsafe {
22
- let mut usage = std::mem::MaybeUninit::<rusage>::uninit();
23
- let result = getrusage(RUSAGE_SELF, usage.as_mut_ptr());
24
-
25
- if result == 0 {
26
- let usage = usage.assume_init();
27
- // On macOS and BSD, ru_maxrss is in bytes
28
- // On Linux, ru_maxrss is in kilobytes
29
- let max_rss_bytes = if cfg!(target_os = "linux") {
30
- usage.ru_maxrss * 1024
31
- } else {
32
- usage.ru_maxrss
33
- };
34
-
35
- Ok(Self { max_rss_bytes })
36
- } else {
37
- Err(io::Error::last_os_error())
38
- }
39
- }
40
- }
41
-
42
- /// Get current memory statistics (not supported on non-Unix platforms)
43
- ///
44
- /// # Errors
45
- ///
46
- /// Returns an error on non-Unix platforms where memory statistics are not supported.
47
- #[cfg(not(unix))]
48
- pub fn current() -> Result<Self, io::Error> {
49
- Err(io::Error::new(
50
- io::ErrorKind::Unsupported,
51
- "Memory statistics not supported on this platform",
52
- ))
53
- }
54
-
55
- /// Print memory statistics in a human-readable format
56
- #[allow(clippy::cast_precision_loss)]
57
- pub fn print(&self) {
58
- let mrss_mb = self.max_rss_bytes as f64 / 1024.0 / 1024.0;
59
-
60
- println!("Maximum RSS: {} bytes ({:.2} MB)", self.max_rss_bytes, mrss_mb);
61
- println!();
62
- }
63
-
64
- /// Retrieve and print memory usage statistics
65
- pub fn print_memory_usage() {
66
- match Self::current() {
67
- Ok(stats) => stats.print(),
68
- Err(e) => eprintln!("Warning: Could not retrieve memory statistics: {e}"),
69
- }
70
- }
71
- }
1
+ use std::io;
2
+
3
+ #[cfg(unix)]
4
+ use libc::{RUSAGE_SELF, getrusage, rusage};
5
+
6
+ /// Memory statistics for the current process
7
+ #[derive(Debug, Clone, Copy)]
8
+ pub struct MemoryStats {
9
+ /// Maximum resident set size in bytes
10
+ pub max_rss_bytes: i64,
11
+ }
12
+
13
+ impl MemoryStats {
14
+ /// Get current memory statistics using getrusage
15
+ ///
16
+ /// # Errors
17
+ ///
18
+ /// Returns an error if the `getrusage` system call fails.
19
+ #[cfg(unix)]
20
+ pub fn current() -> Result<Self, io::Error> {
21
+ unsafe {
22
+ let mut usage = std::mem::MaybeUninit::<rusage>::uninit();
23
+ let result = getrusage(RUSAGE_SELF, usage.as_mut_ptr());
24
+
25
+ if result == 0 {
26
+ let usage = usage.assume_init();
27
+ // On macOS and BSD, ru_maxrss is in bytes
28
+ // On Linux, ru_maxrss is in kilobytes
29
+ let max_rss_bytes = if cfg!(target_os = "linux") {
30
+ usage.ru_maxrss * 1024
31
+ } else {
32
+ usage.ru_maxrss
33
+ };
34
+
35
+ Ok(Self { max_rss_bytes })
36
+ } else {
37
+ Err(io::Error::last_os_error())
38
+ }
39
+ }
40
+ }
41
+
42
+ /// Get current memory statistics (not supported on non-Unix platforms)
43
+ ///
44
+ /// # Errors
45
+ ///
46
+ /// Returns an error on non-Unix platforms where memory statistics are not supported.
47
+ #[cfg(not(unix))]
48
+ pub fn current() -> Result<Self, io::Error> {
49
+ Err(io::Error::new(
50
+ io::ErrorKind::Unsupported,
51
+ "Memory statistics not supported on this platform",
52
+ ))
53
+ }
54
+
55
+ /// Print memory statistics in a human-readable format
56
+ #[allow(clippy::cast_precision_loss)]
57
+ pub fn print(&self) {
58
+ let mrss_mb = self.max_rss_bytes as f64 / 1024.0 / 1024.0;
59
+
60
+ println!("Maximum RSS: {} bytes ({:.2} MB)", self.max_rss_bytes, mrss_mb);
61
+ println!();
62
+ }
63
+
64
+ /// Retrieve and print memory usage statistics
65
+ pub fn print_memory_usage() {
66
+ match Self::current() {
67
+ Ok(stats) => stats.print(),
68
+ Err(e) => eprintln!("Warning: Could not retrieve memory statistics: {e}"),
69
+ }
70
+ }
71
+ }