serialbench 0.2.0 → 0.4.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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/.github/scripts/push-to-data.sh +65 -0
  3. data/.github/workflows/benchmark.yml +98 -172
  4. data/.github/workflows/release.yml +68 -13
  5. data/Gemfile +1 -1
  6. data/config/benchmarks/full-json.yml +25 -0
  7. data/config/benchmarks/full-toml.yml +25 -0
  8. data/config/benchmarks/full-xml.yml +26 -0
  9. data/config/benchmarks/full-yaml.yml +25 -0
  10. data/config/benchmarks/full.yml +9 -4
  11. data/lib/serialbench/benchmark_runner.rb +32 -320
  12. data/lib/serialbench/cli/benchmark_cli.rb +1 -1
  13. data/lib/serialbench/cli.rb +0 -12
  14. data/lib/serialbench/models/benchmark_result.rb +2 -0
  15. data/lib/serialbench/models/result_store.rb +0 -38
  16. data/lib/serialbench/models.rb +0 -5
  17. data/lib/serialbench/serializers/base_serializer.rb +11 -3
  18. data/lib/serialbench/serializers/json/base_json_serializer.rb +8 -20
  19. data/lib/serialbench/serializers/json/json_serializer.rb +0 -16
  20. data/lib/serialbench/serializers/json/oj_serializer.rb +2 -17
  21. data/lib/serialbench/serializers/json/yajl_serializer.rb +2 -2
  22. data/lib/serialbench/serializers/toml/base_toml_serializer.rb +8 -29
  23. data/lib/serialbench/serializers/toml/toml_rb_serializer.rb +0 -16
  24. data/lib/serialbench/serializers/toml/tomlib_serializer.rb +0 -4
  25. data/lib/serialbench/serializers/toml/tomlrb_serializer.rb +2 -18
  26. data/lib/serialbench/serializers/xml/base_xml_serializer.rb +10 -26
  27. data/lib/serialbench/serializers/xml/leptris_serializer.rb +13 -10
  28. data/lib/serialbench/serializers/xml/libxml_serializer.rb +4 -9
  29. data/lib/serialbench/serializers/xml/nokogiri_serializer.rb +4 -9
  30. data/lib/serialbench/serializers/xml/oga_serializer.rb +6 -4
  31. data/lib/serialbench/serializers/xml/ox_serializer.rb +2 -2
  32. data/lib/serialbench/serializers/xml/rexml_serializer.rb +5 -12
  33. data/lib/serialbench/serializers/yaml/base_yaml_serializer.rb +1 -9
  34. data/lib/serialbench/serializers/yaml/syck_serializer.rb +0 -8
  35. data/lib/serialbench/test_data.rb +315 -0
  36. data/lib/serialbench/version.rb +1 -1
  37. data/lib/serialbench.rb +2 -1
  38. data/serialbench.gemspec +1 -2
  39. metadata +13 -59
  40. data/lib/serialbench/cli/resultset_cli.rb +0 -301
  41. data/lib/serialbench/models/result_set.rb +0 -79
  42. data/lib/serialbench/site_generator.rb +0 -337
  43. data/lib/serialbench/templates/assets/css/benchmark_report.css +0 -535
  44. data/lib/serialbench/templates/assets/css/format_based.css +0 -474
  45. data/lib/serialbench/templates/assets/css/themes.css +0 -589
  46. data/lib/serialbench/templates/assets/js/chart_helpers.js +0 -411
  47. data/lib/serialbench/templates/assets/js/dashboard.js +0 -795
  48. data/lib/serialbench/templates/assets/js/navigation.js +0 -142
  49. data/lib/serialbench/templates/base.liquid +0 -49
  50. data/lib/serialbench/templates/format_based.liquid +0 -507
  51. data/lib/serialbench/templates/partials/chart_section.liquid +0 -4
  52. data/site/.gitignore +0 -5
  53. data/site/README.md +0 -32
  54. data/site/astro.config.mjs +0 -12
  55. data/site/package-lock.json +0 -6160
  56. data/site/package.json +0 -22
  57. data/site/public/favicon.svg +0 -4
  58. data/site/scripts/gen-sample-data.mjs +0 -154
  59. data/site/src/components/AvailabilityMatrix.astro +0 -61
  60. data/site/src/components/CalibratedLeaderboard.vue +0 -134
  61. data/site/src/components/CitationBox.vue +0 -50
  62. data/site/src/components/DashboardConsole.vue +0 -193
  63. data/site/src/components/FeaturesTable.astro +0 -97
  64. data/site/src/components/MemoryPanel.vue +0 -44
  65. data/site/src/components/OpsChart.vue +0 -135
  66. data/site/src/config.ts +0 -18
  67. data/site/src/layouts/Layout.astro +0 -85
  68. data/site/src/lib/channels.ts +0 -24
  69. data/site/src/lib/dashboard.ts +0 -269
  70. data/site/src/pages/index.astro +0 -44
  71. data/site/src/pages/library/[slug].astro +0 -128
  72. data/site/src/pages/methodology.astro +0 -55
  73. data/site/src/styles/global.css +0 -103
  74. data/site/tsconfig.json +0 -5
@@ -1,474 +0,0 @@
1
- /* Format-Based Template Specific Styles */
2
-
3
- /* Format Tabs */
4
- .format-tabs {
5
- margin-bottom: 30px;
6
- }
7
-
8
- .format-nav {
9
- display: flex;
10
- justify-content: center;
11
- gap: 10px;
12
- margin-bottom: 30px;
13
- flex-wrap: wrap;
14
- }
15
-
16
- /* Format tab styles are defined in themes.css */
17
-
18
- /* Format Content */
19
- .format-content {
20
- background: var(--card-bg);
21
- border-radius: var(--border-radius);
22
- padding: 40px;
23
- box-shadow: var(--shadow-soft);
24
- border: 1px solid var(--border-color);
25
- backdrop-filter: blur(10px);
26
- }
27
-
28
- .format-content.hidden {
29
- display: none;
30
- }
31
-
32
- /* Operation Tabs */
33
- .operation-tabs {
34
- display: flex;
35
- justify-content: center;
36
- gap: 8px;
37
- margin-bottom: 30px;
38
- flex-wrap: wrap;
39
- }
40
-
41
- .operation-tab {
42
- padding: 10px 20px;
43
- border: none;
44
- background: var(--light-bg);
45
- color: var(--text-color);
46
- border-radius: 20px;
47
- cursor: pointer;
48
- transition: all 0.3s ease;
49
- font-weight: 500;
50
- font-size: 0.9em;
51
- border: 2px solid transparent;
52
- }
53
-
54
- .operation-tab:hover {
55
- background: var(--border-color);
56
- transform: translateY(-1px);
57
- }
58
-
59
- .operation-tab.active {
60
- background: var(--secondary-color);
61
- color: white;
62
- border-color: var(--secondary-color);
63
- }
64
-
65
- /* Operation Content */
66
- .operation-content {
67
- margin-bottom: 40px;
68
- }
69
-
70
- .operation-content.hidden {
71
- display: none;
72
- }
73
-
74
- /* Format Sections */
75
- .format-section {
76
- margin-bottom: 40px;
77
- }
78
-
79
- .format-section h2 {
80
- color: var(--primary-color);
81
- margin-bottom: 20px;
82
- font-size: 2em;
83
- font-weight: 700;
84
- position: relative;
85
- padding-bottom: 10px;
86
- }
87
-
88
- .format-section h2::after {
89
- content: '';
90
- position: absolute;
91
- bottom: 0;
92
- left: 0;
93
- width: 60px;
94
- height: 3px;
95
- background: var(--gradient-primary);
96
- border-radius: 2px;
97
- }
98
-
99
- .section-description {
100
- color: #6c757d;
101
- margin-bottom: 25px;
102
- font-size: 1.1em;
103
- line-height: 1.6;
104
- }
105
-
106
- /* Size Tabs */
107
- .size-tabs {
108
- display: flex;
109
- justify-content: center;
110
- gap: 6px;
111
- margin-bottom: 25px;
112
- flex-wrap: wrap;
113
- }
114
-
115
- .size-tab {
116
- padding: 8px 16px;
117
- border: none;
118
- background: var(--light-bg);
119
- color: var(--text-color);
120
- border-radius: 15px;
121
- cursor: pointer;
122
- transition: all 0.3s ease;
123
- font-weight: 500;
124
- font-size: 0.85em;
125
- border: 1px solid var(--border-color);
126
- }
127
-
128
- .size-tab:hover {
129
- background: var(--border-color);
130
- transform: translateY(-1px);
131
- }
132
-
133
- .size-tab.active {
134
- background: var(--accent-color);
135
- color: white;
136
- border-color: var(--accent-color);
137
- }
138
-
139
- /* Size Content */
140
- .size-content {
141
- margin-bottom: 30px;
142
- }
143
-
144
- .size-content.hidden {
145
- display: none;
146
- }
147
-
148
- /* Chart Containers */
149
- .chart-container {
150
- background: var(--card-bg);
151
- padding: 25px;
152
- border-radius: var(--border-radius-small);
153
- border: 1px solid var(--border-color);
154
- box-shadow: var(--shadow-soft);
155
- transition: all 0.3s ease;
156
- position: relative;
157
- overflow: hidden;
158
- margin-bottom: 20px;
159
- }
160
-
161
- .chart-container::before {
162
- content: '';
163
- position: absolute;
164
- top: 0;
165
- left: 0;
166
- right: 0;
167
- height: 3px;
168
- background: var(--gradient-accent);
169
- }
170
-
171
- .chart-container:hover {
172
- transform: translateY(-2px);
173
- box-shadow: var(--shadow-medium);
174
- }
175
-
176
- .chart-container canvas {
177
- max-width: 100%;
178
- height: auto;
179
- }
180
-
181
- /* Summary Grid */
182
- .summary-grid {
183
- display: grid;
184
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
185
- gap: 25px;
186
- margin-bottom: 30px;
187
- }
188
-
189
- .summary-card {
190
- background: var(--light-bg);
191
- padding: 25px;
192
- border-radius: var(--border-radius-small);
193
- border: 1px solid var(--border-color);
194
- box-shadow: var(--shadow-soft);
195
- transition: all 0.3s ease;
196
- position: relative;
197
- overflow: hidden;
198
- }
199
-
200
- .summary-card::before {
201
- content: '';
202
- position: absolute;
203
- top: 0;
204
- left: 0;
205
- right: 0;
206
- height: 3px;
207
- background: var(--gradient-primary);
208
- }
209
-
210
- .summary-card:hover {
211
- transform: translateY(-2px);
212
- box-shadow: var(--shadow-medium);
213
- }
214
-
215
- .summary-card h3 {
216
- color: var(--primary-color);
217
- margin-bottom: 15px;
218
- font-size: 1.3em;
219
- font-weight: 600;
220
- }
221
-
222
- .summary-list {
223
- list-style: none;
224
- padding-left: 0;
225
- }
226
-
227
- .summary-list li {
228
- padding: 8px 0;
229
- border-bottom: 1px solid var(--border-color);
230
- transition: all 0.2s ease;
231
- position: relative;
232
- padding-left: 20px;
233
- }
234
-
235
- .summary-list li::before {
236
- content: '▸';
237
- position: absolute;
238
- left: 0;
239
- color: var(--secondary-color);
240
- font-weight: bold;
241
- }
242
-
243
- .summary-list li:hover {
244
- padding-left: 25px;
245
- color: var(--primary-color);
246
- }
247
-
248
- .summary-list li:last-child {
249
- border-bottom: none;
250
- }
251
-
252
- .summary-card p {
253
- color: #6c757d;
254
- line-height: 1.6;
255
- margin-top: 15px;
256
- }
257
-
258
- /* Environments Grid */
259
- .environments-grid {
260
- display: grid;
261
- grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
262
- gap: 20px;
263
- }
264
-
265
- .environment-card {
266
- background: var(--light-bg);
267
- padding: 20px;
268
- border-radius: var(--border-radius-small);
269
- border: 1px solid var(--border-color);
270
- box-shadow: var(--shadow-soft);
271
- transition: all 0.3s ease;
272
- position: relative;
273
- overflow: hidden;
274
- }
275
-
276
- .environment-card::before {
277
- content: '';
278
- position: absolute;
279
- top: 0;
280
- left: 0;
281
- right: 0;
282
- height: 3px;
283
- background: var(--gradient-secondary);
284
- }
285
-
286
- .environment-card:hover {
287
- transform: translateY(-2px);
288
- box-shadow: var(--shadow-medium);
289
- }
290
-
291
- .environment-card h3 {
292
- color: var(--primary-color);
293
- margin-bottom: 15px;
294
- font-size: 1.2em;
295
- font-weight: 600;
296
- }
297
-
298
- .environment-card p {
299
- margin-bottom: 8px;
300
- color: #6c757d;
301
- font-size: 0.95em;
302
- }
303
-
304
- .environment-card strong {
305
- color: var(--text-color);
306
- }
307
-
308
- /* Responsive Design */
309
- @media (max-width: 768px) {
310
- .format-nav {
311
- gap: 6px;
312
- }
313
-
314
- .format-tab {
315
- padding: 10px 18px;
316
- font-size: 0.9em;
317
- }
318
-
319
- .format-content {
320
- padding: 25px;
321
- }
322
-
323
- .operation-tabs {
324
- gap: 6px;
325
- }
326
-
327
- .operation-tab {
328
- padding: 8px 16px;
329
- font-size: 0.85em;
330
- }
331
-
332
- .size-tabs {
333
- gap: 4px;
334
- }
335
-
336
- .size-tab {
337
- padding: 6px 12px;
338
- font-size: 0.8em;
339
- }
340
-
341
- .format-section h2 {
342
- font-size: 1.6em;
343
- }
344
-
345
- .section-description {
346
- font-size: 1em;
347
- }
348
-
349
- .summary-grid {
350
- grid-template-columns: 1fr;
351
- gap: 20px;
352
- }
353
-
354
- .environments-grid {
355
- grid-template-columns: 1fr;
356
- }
357
-
358
- .chart-container {
359
- padding: 20px;
360
- }
361
- }
362
-
363
- @media (max-width: 480px) {
364
- .format-nav {
365
- flex-direction: column;
366
- align-items: center;
367
- }
368
-
369
- .format-tab {
370
- width: 100%;
371
- max-width: 200px;
372
- }
373
-
374
- .operation-tabs {
375
- flex-direction: column;
376
- align-items: center;
377
- gap: 8px;
378
- }
379
-
380
- .operation-tab {
381
- width: 100%;
382
- max-width: 150px;
383
- }
384
-
385
- .size-tabs {
386
- flex-direction: column;
387
- align-items: center;
388
- gap: 6px;
389
- }
390
-
391
- .size-tab {
392
- width: 100%;
393
- max-width: 120px;
394
- }
395
- }
396
-
397
- /* Loading States */
398
- .chart-container.loading {
399
- position: relative;
400
- }
401
-
402
- .chart-container.loading::after {
403
- content: 'Loading chart...';
404
- position: absolute;
405
- top: 50%;
406
- left: 50%;
407
- transform: translate(-50%, -50%);
408
- color: #6c757d;
409
- font-style: italic;
410
- }
411
-
412
- /* Error States */
413
- .chart-container.error {
414
- background: #fff5f5;
415
- border-color: #fed7d7;
416
- }
417
-
418
- .chart-container.error::after {
419
- content: 'Chart data unavailable';
420
- position: absolute;
421
- top: 50%;
422
- left: 50%;
423
- transform: translate(-50%, -50%);
424
- color: #e53e3e;
425
- font-style: italic;
426
- }
427
-
428
- /* Animation Enhancements */
429
- .format-content {
430
- animation: fadeInUp 0.6s ease-out;
431
- }
432
-
433
- .operation-content {
434
- animation: fadeInUp 0.4s ease-out;
435
- }
436
-
437
- .size-content {
438
- animation: fadeInUp 0.3s ease-out;
439
- }
440
-
441
- @keyframes fadeInUp {
442
- from {
443
- opacity: 0;
444
- transform: translateY(20px);
445
- }
446
- to {
447
- opacity: 1;
448
- transform: translateY(0);
449
- }
450
- }
451
-
452
- /* Focus Styles for Accessibility */
453
- .format-tab:focus,
454
- .operation-tab:focus,
455
- .size-tab:focus {
456
- outline: 2px solid var(--primary-color);
457
- outline-offset: 2px;
458
- }
459
-
460
- /* High Contrast Mode Support */
461
- @media (prefers-contrast: high) {
462
- .format-tab,
463
- .operation-tab,
464
- .size-tab {
465
- border: 2px solid var(--text-color);
466
- }
467
-
468
- .format-tab.active,
469
- .operation-tab.active,
470
- .size-tab.active {
471
- background: var(--text-color);
472
- color: var(--background-color);
473
- }
474
- }