pyroscope-rbspy-oncpu 0.19.1

Sampling CPU profiler for Ruby
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
use anyhow::{format_err, Result};
use semver::Version;

pub struct RubyVersion {
    pub semver_version: Version,
    pub get_execution_context_fn: crate::core::types::GetExecutionContextFn,
    pub is_maybe_thread_fn: crate::core::types::IsMaybeThreadFn,
    pub get_stack_trace_fn: crate::core::types::StackTraceFn,
}

pub fn get(v: &str) -> Result<RubyVersion> {
    match v {
        "1.9.1" => Ok(RubyVersion {
            semver_version: Version::new(1, 9, 1),
            get_execution_context_fn: super::ruby_version::ruby_1_9_1_0::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_1_9_1_0::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_1_9_1_0::is_maybe_thread,
        }),
        "1.9.2" => Ok(RubyVersion {
            semver_version: Version::new(1, 9, 2),
            get_execution_context_fn: super::ruby_version::ruby_1_9_2_0::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_1_9_2_0::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_1_9_2_0::is_maybe_thread,
        }),
        "1.9.3" => Ok(RubyVersion {
            semver_version: Version::new(1, 9, 3),
            get_execution_context_fn: super::ruby_version::ruby_1_9_3_0::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_1_9_3_0::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_1_9_3_0::is_maybe_thread,
        }),
        "2.0.0" => Ok(RubyVersion {
            semver_version: Version::new(2, 0, 0),
            get_execution_context_fn: super::ruby_version::ruby_2_0_0_0::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_0_0_0::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_0_0_0::is_maybe_thread,
        }),
        "2.1.0" => Ok(RubyVersion {
            semver_version: Version::new(2, 1, 0),
            get_execution_context_fn: super::ruby_version::ruby_2_1_0::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_1_0::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_1_0::is_maybe_thread,
        }),
        "2.1.1" => Ok(RubyVersion {
            semver_version: Version::new(2, 1, 1),
            get_execution_context_fn: super::ruby_version::ruby_2_1_1::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_1_1::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_1_1::is_maybe_thread,
        }),
        "2.1.2" => Ok(RubyVersion {
            semver_version: Version::new(2, 1, 2),
            get_execution_context_fn: super::ruby_version::ruby_2_1_2::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_1_2::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_1_2::is_maybe_thread,
        }),
        "2.1.3" => Ok(RubyVersion {
            semver_version: Version::new(2, 1, 3),
            get_execution_context_fn: super::ruby_version::ruby_2_1_3::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_1_3::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_1_3::is_maybe_thread,
        }),
        "2.1.4" => Ok(RubyVersion {
            semver_version: Version::new(2, 1, 4),
            get_execution_context_fn: super::ruby_version::ruby_2_1_4::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_1_4::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_1_4::is_maybe_thread,
        }),
        "2.1.5" => Ok(RubyVersion {
            semver_version: Version::new(2, 1, 5),
            get_execution_context_fn: super::ruby_version::ruby_2_1_5::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_1_5::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_1_5::is_maybe_thread,
        }),
        "2.1.6" => Ok(RubyVersion {
            semver_version: Version::new(2, 1, 6),
            get_execution_context_fn: super::ruby_version::ruby_2_1_6::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_1_6::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_1_6::is_maybe_thread,
        }),
        "2.1.7" => Ok(RubyVersion {
            semver_version: Version::new(2, 1, 7),
            get_execution_context_fn: super::ruby_version::ruby_2_1_7::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_1_7::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_1_7::is_maybe_thread,
        }),
        "2.1.8" => Ok(RubyVersion {
            semver_version: Version::new(2, 1, 8),
            get_execution_context_fn: super::ruby_version::ruby_2_1_8::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_1_8::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_1_8::is_maybe_thread,
        }),
        "2.1.9" => Ok(RubyVersion {
            semver_version: Version::new(2, 1, 9),
            get_execution_context_fn: super::ruby_version::ruby_2_1_9::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_1_9::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_1_9::is_maybe_thread,
        }),
        "2.1.10" => Ok(RubyVersion {
            semver_version: Version::new(2, 1, 10),
            get_execution_context_fn: super::ruby_version::ruby_2_1_10::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_1_10::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_1_10::is_maybe_thread,
        }),
        "2.2.0" => Ok(RubyVersion {
            semver_version: Version::new(2, 2, 0),
            get_execution_context_fn: super::ruby_version::ruby_2_2_0::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_2_0::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_2_0::is_maybe_thread,
        }),
        "2.2.1" => Ok(RubyVersion {
            semver_version: Version::new(2, 2, 1),
            get_execution_context_fn: super::ruby_version::ruby_2_2_1::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_2_1::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_2_1::is_maybe_thread,
        }),
        "2.2.2" => Ok(RubyVersion {
            semver_version: Version::new(2, 2, 2),
            get_execution_context_fn: super::ruby_version::ruby_2_2_2::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_2_2::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_2_2::is_maybe_thread,
        }),
        "2.2.3" => Ok(RubyVersion {
            semver_version: Version::new(2, 2, 3),
            get_execution_context_fn: super::ruby_version::ruby_2_2_3::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_2_3::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_2_3::is_maybe_thread,
        }),
        "2.2.4" => Ok(RubyVersion {
            semver_version: Version::new(2, 2, 4),
            get_execution_context_fn: super::ruby_version::ruby_2_2_4::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_2_4::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_2_4::is_maybe_thread,
        }),
        "2.2.5" => Ok(RubyVersion {
            semver_version: Version::new(2, 2, 5),
            get_execution_context_fn: super::ruby_version::ruby_2_2_5::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_2_5::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_2_5::is_maybe_thread,
        }),
        "2.2.6" => Ok(RubyVersion {
            semver_version: Version::new(2, 2, 6),
            get_execution_context_fn: super::ruby_version::ruby_2_2_6::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_2_6::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_2_6::is_maybe_thread,
        }),
        "2.2.7" => Ok(RubyVersion {
            semver_version: Version::new(2, 2, 7),
            get_execution_context_fn: super::ruby_version::ruby_2_2_7::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_2_7::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_2_7::is_maybe_thread,
        }),
        "2.2.8" => Ok(RubyVersion {
            semver_version: Version::new(2, 2, 8),
            get_execution_context_fn: super::ruby_version::ruby_2_2_8::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_2_8::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_2_8::is_maybe_thread,
        }),
        "2.2.9" => Ok(RubyVersion {
            semver_version: Version::new(2, 2, 9),
            get_execution_context_fn: super::ruby_version::ruby_2_2_9::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_2_9::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_2_9::is_maybe_thread,
        }),
        "2.2.10" => Ok(RubyVersion {
            semver_version: Version::new(2, 2, 10),
            get_execution_context_fn: super::ruby_version::ruby_2_2_10::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_2_10::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_2_10::is_maybe_thread,
        }),
        "2.3.0" => Ok(RubyVersion {
            semver_version: Version::new(2, 3, 0),
            get_execution_context_fn: super::ruby_version::ruby_2_3_0::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_3_0::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_3_0::is_maybe_thread,
        }),
        "2.3.1" => Ok(RubyVersion {
            semver_version: Version::new(2, 3, 1),
            get_execution_context_fn: super::ruby_version::ruby_2_3_1::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_3_1::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_3_1::is_maybe_thread,
        }),
        "2.3.2" => Ok(RubyVersion {
            semver_version: Version::new(2, 3, 2),
            get_execution_context_fn: super::ruby_version::ruby_2_3_2::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_3_2::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_3_2::is_maybe_thread,
        }),
        "2.3.3" => Ok(RubyVersion {
            semver_version: Version::new(2, 3, 3),
            get_execution_context_fn: super::ruby_version::ruby_2_3_3::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_3_3::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_3_3::is_maybe_thread,
        }),
        "2.3.4" => Ok(RubyVersion {
            semver_version: Version::new(2, 3, 4),
            get_execution_context_fn: super::ruby_version::ruby_2_3_4::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_3_4::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_3_4::is_maybe_thread,
        }),
        "2.3.5" => Ok(RubyVersion {
            semver_version: Version::new(2, 3, 5),
            get_execution_context_fn: super::ruby_version::ruby_2_3_5::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_3_5::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_3_5::is_maybe_thread,
        }),
        "2.3.6" => Ok(RubyVersion {
            semver_version: Version::new(2, 3, 6),
            get_execution_context_fn: super::ruby_version::ruby_2_3_6::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_3_6::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_3_6::is_maybe_thread,
        }),
        "2.3.7" => Ok(RubyVersion {
            semver_version: Version::new(2, 3, 7),
            get_execution_context_fn: super::ruby_version::ruby_2_3_7::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_3_7::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_3_7::is_maybe_thread,
        }),
        "2.3.8" => Ok(RubyVersion {
            semver_version: Version::new(2, 3, 8),
            get_execution_context_fn: super::ruby_version::ruby_2_3_8::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_3_8::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_3_8::is_maybe_thread,
        }),
        "2.4.0" => Ok(RubyVersion {
            semver_version: Version::new(2, 4, 0),
            get_execution_context_fn: super::ruby_version::ruby_2_4_0::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_4_0::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_4_0::is_maybe_thread,
        }),
        "2.4.1" => Ok(RubyVersion {
            semver_version: Version::new(2, 4, 1),
            get_execution_context_fn: super::ruby_version::ruby_2_4_1::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_4_1::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_4_1::is_maybe_thread,
        }),
        "2.4.2" => Ok(RubyVersion {
            semver_version: Version::new(2, 4, 2),
            get_execution_context_fn: super::ruby_version::ruby_2_4_2::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_4_2::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_4_2::is_maybe_thread,
        }),
        "2.4.3" => Ok(RubyVersion {
            semver_version: Version::new(2, 4, 3),
            get_execution_context_fn: super::ruby_version::ruby_2_4_3::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_4_3::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_4_3::is_maybe_thread,
        }),
        "2.4.4" => Ok(RubyVersion {
            semver_version: Version::new(2, 4, 4),
            get_execution_context_fn: super::ruby_version::ruby_2_4_4::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_4_4::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_4_4::is_maybe_thread,
        }),
        "2.4.5" => Ok(RubyVersion {
            semver_version: Version::new(2, 4, 5),
            get_execution_context_fn: super::ruby_version::ruby_2_4_5::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_4_5::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_4_5::is_maybe_thread,
        }),
        "2.4.6" => Ok(RubyVersion {
            semver_version: Version::new(2, 4, 6),
            get_execution_context_fn: super::ruby_version::ruby_2_4_6::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_4_6::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_4_6::is_maybe_thread,
        }),
        "2.4.7" => Ok(RubyVersion {
            semver_version: Version::new(2, 4, 7),
            get_execution_context_fn: super::ruby_version::ruby_2_4_7::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_4_7::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_4_7::is_maybe_thread,
        }),
        "2.4.8" => Ok(RubyVersion {
            semver_version: Version::new(2, 4, 8),
            get_execution_context_fn: super::ruby_version::ruby_2_4_8::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_4_8::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_4_8::is_maybe_thread,
        }),
        "2.4.9" => Ok(RubyVersion {
            semver_version: Version::new(2, 4, 9),
            get_execution_context_fn: super::ruby_version::ruby_2_4_9::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_4_9::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_4_9::is_maybe_thread,
        }),
        "2.4.10" => Ok(RubyVersion {
            semver_version: Version::new(2, 4, 10),
            get_execution_context_fn: super::ruby_version::ruby_2_4_10::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_4_10::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_4_10::is_maybe_thread,
        }),
        "2.5.0" => Ok(RubyVersion {
            semver_version: Version::new(2, 5, 0),
            get_execution_context_fn: super::ruby_version::ruby_2_5_0::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_5_0::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_5_0::is_maybe_thread,
        }),
        "2.5.1" => Ok(RubyVersion {
            semver_version: Version::new(2, 5, 1),
            get_execution_context_fn: super::ruby_version::ruby_2_5_1::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_5_1::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_5_1::is_maybe_thread,
        }),
        "2.5.2" => Ok(RubyVersion {
            semver_version: Version::new(2, 5, 2),
            get_execution_context_fn: super::ruby_version::ruby_2_5_2::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_5_2::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_5_2::is_maybe_thread,
        }),
        "2.5.3" => Ok(RubyVersion {
            semver_version: Version::new(2, 5, 3),
            get_execution_context_fn: super::ruby_version::ruby_2_5_3::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_5_3::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_5_3::is_maybe_thread,
        }),
        "2.5.4" => Ok(RubyVersion {
            semver_version: Version::new(2, 5, 4),
            get_execution_context_fn: super::ruby_version::ruby_2_5_4::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_5_4::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_5_4::is_maybe_thread,
        }),
        "2.5.5" => Ok(RubyVersion {
            semver_version: Version::new(2, 5, 5),
            get_execution_context_fn: super::ruby_version::ruby_2_5_5::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_5_5::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_5_5::is_maybe_thread,
        }),
        "2.5.6" => Ok(RubyVersion {
            semver_version: Version::new(2, 5, 6),
            get_execution_context_fn: super::ruby_version::ruby_2_5_6::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_5_6::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_5_6::is_maybe_thread,
        }),
        "2.5.7" => Ok(RubyVersion {
            semver_version: Version::new(2, 5, 7),
            get_execution_context_fn: super::ruby_version::ruby_2_5_7::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_5_7::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_5_7::is_maybe_thread,
        }),
        "2.5.8" => Ok(RubyVersion {
            semver_version: Version::new(2, 5, 8),
            get_execution_context_fn: super::ruby_version::ruby_2_5_8::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_5_8::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_5_8::is_maybe_thread,
        }),
        "2.5.9" => Ok(RubyVersion {
            semver_version: Version::new(2, 5, 9),
            get_execution_context_fn: super::ruby_version::ruby_2_5_9::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_5_9::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_5_9::is_maybe_thread,
        }),
        "2.6.0" => Ok(RubyVersion {
            semver_version: Version::new(2, 6, 0),
            get_execution_context_fn: super::ruby_version::ruby_2_6_0::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_6_0::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_6_0::is_maybe_thread,
        }),
        "2.6.1" => Ok(RubyVersion {
            semver_version: Version::new(2, 6, 1),
            get_execution_context_fn: super::ruby_version::ruby_2_6_1::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_6_1::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_6_1::is_maybe_thread,
        }),
        "2.6.2" => Ok(RubyVersion {
            semver_version: Version::new(2, 6, 2),
            get_execution_context_fn: super::ruby_version::ruby_2_6_2::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_6_2::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_6_2::is_maybe_thread,
        }),
        "2.6.3" => Ok(RubyVersion {
            semver_version: Version::new(2, 6, 3),
            get_execution_context_fn: super::ruby_version::ruby_2_6_3::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_6_3::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_6_3::is_maybe_thread,
        }),
        "2.6.4" => Ok(RubyVersion {
            semver_version: Version::new(2, 6, 4),
            get_execution_context_fn: super::ruby_version::ruby_2_6_4::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_6_4::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_6_4::is_maybe_thread,
        }),
        "2.6.5" => Ok(RubyVersion {
            semver_version: Version::new(2, 6, 5),
            get_execution_context_fn: super::ruby_version::ruby_2_6_5::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_6_5::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_6_5::is_maybe_thread,
        }),
        "2.6.6" => Ok(RubyVersion {
            semver_version: Version::new(2, 6, 6),
            get_execution_context_fn: super::ruby_version::ruby_2_6_6::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_6_6::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_6_6::is_maybe_thread,
        }),
        "2.6.7" => Ok(RubyVersion {
            semver_version: Version::new(2, 6, 7),
            get_execution_context_fn: super::ruby_version::ruby_2_6_7::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_6_7::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_6_7::is_maybe_thread,
        }),
        "2.6.8" => Ok(RubyVersion {
            semver_version: Version::new(2, 6, 8),
            get_execution_context_fn: super::ruby_version::ruby_2_6_8::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_6_8::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_6_8::is_maybe_thread,
        }),
        "2.6.9" => Ok(RubyVersion {
            semver_version: Version::new(2, 6, 9),
            get_execution_context_fn: super::ruby_version::ruby_2_6_9::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_6_9::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_6_9::is_maybe_thread,
        }),
        "2.6.10" => Ok(RubyVersion {
            semver_version: Version::new(2, 6, 10),
            get_execution_context_fn: super::ruby_version::ruby_2_6_10::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_6_10::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_6_10::is_maybe_thread,
        }),
        "2.7.0" => Ok(RubyVersion {
            semver_version: Version::new(2, 7, 0),
            get_execution_context_fn: super::ruby_version::ruby_2_7_0::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_7_0::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_7_0::is_maybe_thread,
        }),
        "2.7.1" => Ok(RubyVersion {
            semver_version: Version::new(2, 7, 1),
            get_execution_context_fn: super::ruby_version::ruby_2_7_1::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_7_1::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_7_1::is_maybe_thread,
        }),
        "2.7.2" => Ok(RubyVersion {
            semver_version: Version::new(2, 7, 2),
            get_execution_context_fn: super::ruby_version::ruby_2_7_2::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_7_2::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_7_2::is_maybe_thread,
        }),
        "2.7.3" => Ok(RubyVersion {
            semver_version: Version::new(2, 7, 3),
            get_execution_context_fn: super::ruby_version::ruby_2_7_3::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_7_3::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_7_3::is_maybe_thread,
        }),
        "2.7.4" => Ok(RubyVersion {
            semver_version: Version::new(2, 7, 4),
            get_execution_context_fn: super::ruby_version::ruby_2_7_4::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_7_4::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_7_4::is_maybe_thread,
        }),
        "2.7.5" => Ok(RubyVersion {
            semver_version: Version::new(2, 7, 5),
            get_execution_context_fn: super::ruby_version::ruby_2_7_5::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_7_5::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_7_5::is_maybe_thread,
        }),
        "2.7.6" => Ok(RubyVersion {
            semver_version: Version::new(2, 7, 6),
            get_execution_context_fn: super::ruby_version::ruby_2_7_6::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_7_6::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_7_6::is_maybe_thread,
        }),
        "2.7.7" => Ok(RubyVersion {
            semver_version: Version::new(2, 7, 7),
            get_execution_context_fn: super::ruby_version::ruby_2_7_7::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_7_7::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_7_7::is_maybe_thread,
        }),
        "2.7.8" => Ok(RubyVersion {
            semver_version: Version::new(2, 7, 8),
            get_execution_context_fn: super::ruby_version::ruby_2_7_8::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_2_7_8::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_2_7_8::is_maybe_thread,
        }),
        "3.0.0" => Ok(RubyVersion {
            semver_version: Version::new(3, 0, 0),
            get_execution_context_fn: super::ruby_version::ruby_3_0_0::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_0_0::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_0_0::is_maybe_thread,
        }),
        "3.0.1" => Ok(RubyVersion {
            semver_version: Version::new(3, 0, 1),
            get_execution_context_fn: super::ruby_version::ruby_3_0_1::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_0_1::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_0_1::is_maybe_thread,
        }),
        "3.0.2" => Ok(RubyVersion {
            semver_version: Version::new(3, 0, 2),
            get_execution_context_fn: super::ruby_version::ruby_3_0_2::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_0_2::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_0_2::is_maybe_thread,
        }),
        "3.0.3" => Ok(RubyVersion {
            semver_version: Version::new(3, 0, 3),
            get_execution_context_fn: super::ruby_version::ruby_3_0_3::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_0_3::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_0_3::is_maybe_thread,
        }),
        "3.0.4" => Ok(RubyVersion {
            semver_version: Version::new(3, 0, 4),
            get_execution_context_fn: super::ruby_version::ruby_3_0_4::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_0_4::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_0_4::is_maybe_thread,
        }),
        "3.0.5" => Ok(RubyVersion {
            semver_version: Version::new(3, 0, 5),
            get_execution_context_fn: super::ruby_version::ruby_3_0_5::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_0_5::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_0_5::is_maybe_thread,
        }),
        "3.0.6" => Ok(RubyVersion {
            semver_version: Version::new(3, 0, 6),
            get_execution_context_fn: super::ruby_version::ruby_3_0_6::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_0_6::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_0_6::is_maybe_thread,
        }),
        "3.1.0" => Ok(RubyVersion {
            semver_version: Version::new(3, 1, 0),
            get_execution_context_fn: super::ruby_version::ruby_3_1_0::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_1_0::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_1_0::is_maybe_thread,
        }),
        "3.1.1" => Ok(RubyVersion {
            semver_version: Version::new(3, 1, 1),
            get_execution_context_fn: super::ruby_version::ruby_3_1_1::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_1_1::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_1_1::is_maybe_thread,
        }),
        "3.1.2" => Ok(RubyVersion {
            semver_version: Version::new(3, 1, 2),
            get_execution_context_fn: super::ruby_version::ruby_3_1_2::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_1_2::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_1_2::is_maybe_thread,
        }),
        "3.1.3" => Ok(RubyVersion {
            semver_version: Version::new(3, 1, 3),
            get_execution_context_fn: super::ruby_version::ruby_3_1_3::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_1_3::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_1_3::is_maybe_thread,
        }),
        "3.1.4" => Ok(RubyVersion {
            semver_version: Version::new(3, 1, 4),
            get_execution_context_fn: super::ruby_version::ruby_3_1_4::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_1_4::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_1_4::is_maybe_thread,
        }),
        "3.2.0" => Ok(RubyVersion {
            semver_version: Version::new(3, 2, 0),
            get_execution_context_fn: super::ruby_version::ruby_3_2_0::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_2_0::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_2_0::is_maybe_thread,
        }),
        "3.2.1" => Ok(RubyVersion {
            semver_version: Version::new(3, 2, 1),
            get_execution_context_fn: super::ruby_version::ruby_3_2_1::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_2_1::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_2_1::is_maybe_thread,
        }),
        "3.2.2" => Ok(RubyVersion {
            semver_version: Version::new(3, 2, 2),
            get_execution_context_fn: super::ruby_version::ruby_3_2_2::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_2_2::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_2_2::is_maybe_thread,
        }),
        "3.2.3" => Ok(RubyVersion {
            semver_version: Version::new(3, 2, 3),
            get_execution_context_fn: super::ruby_version::ruby_3_2_3::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_2_3::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_2_3::is_maybe_thread,
        }),
        "3.3.0" => Ok(RubyVersion {
            semver_version: Version::new(3, 3, 0),
            get_execution_context_fn: super::ruby_version::ruby_3_3_0::get_execution_context,
            get_stack_trace_fn: super::ruby_version::ruby_3_3_0::get_stack_trace,
            is_maybe_thread_fn: super::ruby_version::ruby_3_3_0::is_maybe_thread,
        }),
        _ => Err(format_err!("rbspy doesn't support Ruby {} yet. If this is a new patch-level version of Ruby, you can try using `--force-version` with the previous version number.", v)),
    }
}