serialbench 0.2.0 → 0.3.1

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/.github/scripts/push-to-data.sh +65 -0
  3. data/.github/workflows/benchmark.yml +106 -160
  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 +20 -23
  12. data/lib/serialbench/cli/benchmark_cli.rb +1 -1
  13. data/lib/serialbench/cli.rb +1 -8
  14. data/lib/serialbench/models/benchmark_result.rb +2 -0
  15. data/lib/serialbench/serializers/base_serializer.rb +14 -2
  16. data/lib/serialbench/serializers/xml/base_xml_serializer.rb +6 -10
  17. data/lib/serialbench/serializers/xml/leptris_serializer.rb +15 -8
  18. data/lib/serialbench/serializers/xml/nokogiri_serializer.rb +2 -7
  19. data/lib/serialbench/serializers/xml/oga_serializer.rb +4 -0
  20. data/lib/serialbench/version.rb +1 -1
  21. data/lib/serialbench.rb +1 -1
  22. metadata +8 -38
  23. data/lib/serialbench/templates/assets/css/benchmark_report.css +0 -535
  24. data/lib/serialbench/templates/assets/css/format_based.css +0 -474
  25. data/lib/serialbench/templates/assets/css/themes.css +0 -589
  26. data/lib/serialbench/templates/assets/js/chart_helpers.js +0 -411
  27. data/lib/serialbench/templates/assets/js/dashboard.js +0 -795
  28. data/lib/serialbench/templates/assets/js/navigation.js +0 -142
  29. data/lib/serialbench/templates/base.liquid +0 -49
  30. data/lib/serialbench/templates/format_based.liquid +0 -507
  31. data/lib/serialbench/templates/partials/chart_section.liquid +0 -4
  32. data/site/.gitignore +0 -5
  33. data/site/README.md +0 -32
  34. data/site/astro.config.mjs +0 -12
  35. data/site/package-lock.json +0 -6160
  36. data/site/package.json +0 -22
  37. data/site/public/favicon.svg +0 -4
  38. data/site/scripts/gen-sample-data.mjs +0 -154
  39. data/site/src/components/AvailabilityMatrix.astro +0 -61
  40. data/site/src/components/CalibratedLeaderboard.vue +0 -134
  41. data/site/src/components/CitationBox.vue +0 -50
  42. data/site/src/components/DashboardConsole.vue +0 -193
  43. data/site/src/components/FeaturesTable.astro +0 -97
  44. data/site/src/components/MemoryPanel.vue +0 -44
  45. data/site/src/components/OpsChart.vue +0 -135
  46. data/site/src/config.ts +0 -18
  47. data/site/src/layouts/Layout.astro +0 -85
  48. data/site/src/lib/channels.ts +0 -24
  49. data/site/src/lib/dashboard.ts +0 -269
  50. data/site/src/pages/index.astro +0 -44
  51. data/site/src/pages/library/[slug].astro +0 -128
  52. data/site/src/pages/methodology.astro +0 -55
  53. data/site/src/styles/global.css +0 -103
  54. data/site/tsconfig.json +0 -5
@@ -1,535 +0,0 @@
1
- /* Serialbench Report Styles - Modern Pastel Theme */
2
- :root {
3
- --primary-color: #6b73ff;
4
- --secondary-color: #9c88ff;
5
- --accent-color: #ff8a95;
6
- --success-color: #4ecdc4;
7
- --warning-color: #ffd93d;
8
- --background-color: #fefefe;
9
- --text-color: #2d3748;
10
- --border-color: #e2e8f0;
11
- --light-bg: #f7fafc;
12
- --card-bg: #ffffff;
13
- --gradient-primary: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
14
- --gradient-secondary: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%);
15
- --gradient-accent: linear-gradient(135deg, #ffecd2 0%, #fcb69f 100%);
16
- --shadow-soft: 0 4px 20px rgba(0, 0, 0, 0.08);
17
- --shadow-medium: 0 8px 30px rgba(0, 0, 0, 0.12);
18
- --border-radius: 16px;
19
- --border-radius-small: 12px;
20
- }
21
-
22
- * {
23
- margin: 0;
24
- padding: 0;
25
- box-sizing: border-box;
26
- }
27
-
28
- body {
29
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Inter', sans-serif;
30
- line-height: 1.7;
31
- color: var(--text-color);
32
- background: var(--gradient-secondary);
33
- min-height: 100vh;
34
- }
35
-
36
- .container {
37
- max-width: 1200px;
38
- margin: 0 auto;
39
- padding: 20px;
40
- }
41
-
42
- header {
43
- text-align: center;
44
- margin-bottom: 40px;
45
- padding: 50px 30px;
46
- background: var(--gradient-primary);
47
- color: white;
48
- border-radius: var(--border-radius);
49
- box-shadow: var(--shadow-medium);
50
- position: relative;
51
- overflow: hidden;
52
- }
53
-
54
- header::before {
55
- content: '';
56
- position: absolute;
57
- top: 0;
58
- left: 0;
59
- right: 0;
60
- bottom: 0;
61
- background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="grain" width="100" height="100" patternUnits="userSpaceOnUse"><circle cx="25" cy="25" r="1" fill="white" opacity="0.1"/><circle cx="75" cy="75" r="1" fill="white" opacity="0.1"/><circle cx="50" cy="10" r="0.5" fill="white" opacity="0.15"/><circle cx="20" cy="80" r="0.5" fill="white" opacity="0.15"/><circle cx="80" cy="30" r="0.5" fill="white" opacity="0.15"/></pattern></defs><rect width="100" height="100" fill="url(%23grain)"/></svg>');
62
- pointer-events: none;
63
- }
64
-
65
- header > * {
66
- position: relative;
67
- z-index: 1;
68
- }
69
-
70
- header h1 {
71
- font-size: 3em;
72
- margin-bottom: 15px;
73
- font-weight: 700;
74
- letter-spacing: -0.02em;
75
- text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
76
- }
77
-
78
- .subtitle {
79
- font-size: 1.3em;
80
- opacity: 0.95;
81
- margin-bottom: 25px;
82
- font-weight: 300;
83
- letter-spacing: 0.01em;
84
- }
85
-
86
- .metadata {
87
- display: flex;
88
- justify-content: center;
89
- gap: 40px;
90
- flex-wrap: wrap;
91
- font-size: 0.95em;
92
- font-weight: 400;
93
- }
94
-
95
- .metadata p {
96
- background: rgba(255, 255, 255, 0.15);
97
- padding: 8px 16px;
98
- border-radius: var(--border-radius-small);
99
- backdrop-filter: blur(10px);
100
- border: 1px solid rgba(255, 255, 255, 0.2);
101
- }
102
-
103
- .benchmark-nav {
104
- display: flex;
105
- justify-content: center;
106
- gap: 10px;
107
- margin-bottom: 40px;
108
- flex-wrap: wrap;
109
- }
110
-
111
- .nav-btn {
112
- padding: 14px 28px;
113
- border: none;
114
- background: var(--card-bg);
115
- color: var(--text-color);
116
- border-radius: 30px;
117
- cursor: pointer;
118
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
119
- font-weight: 600;
120
- font-size: 0.95em;
121
- box-shadow: var(--shadow-soft);
122
- border: 2px solid transparent;
123
- position: relative;
124
- overflow: hidden;
125
- }
126
-
127
- .nav-btn::before {
128
- content: '';
129
- position: absolute;
130
- top: 0;
131
- left: -100%;
132
- width: 100%;
133
- height: 100%;
134
- background: var(--gradient-accent);
135
- transition: left 0.3s ease;
136
- z-index: 0;
137
- }
138
-
139
- .nav-btn:hover {
140
- transform: translateY(-3px);
141
- box-shadow: var(--shadow-medium);
142
- border-color: var(--secondary-color);
143
- }
144
-
145
- .nav-btn:hover::before {
146
- left: 0;
147
- }
148
-
149
- .nav-btn > * {
150
- position: relative;
151
- z-index: 1;
152
- }
153
-
154
- .nav-btn.active {
155
- background: var(--gradient-primary);
156
- color: white;
157
- transform: translateY(-2px);
158
- box-shadow: var(--shadow-medium);
159
- }
160
-
161
- .nav-btn.active::before {
162
- display: none;
163
- }
164
-
165
- .section {
166
- background: var(--card-bg);
167
- border-radius: var(--border-radius);
168
- padding: 40px;
169
- box-shadow: var(--shadow-soft);
170
- border: 1px solid var(--border-color);
171
- backdrop-filter: blur(10px);
172
- }
173
-
174
- .section.hidden {
175
- display: none;
176
- }
177
-
178
- .section.active {
179
- display: block;
180
- }
181
-
182
- /* Hidden utility class for new templates */
183
- .hidden {
184
- display: none !important;
185
- }
186
-
187
- .section h2 {
188
- color: var(--primary-color);
189
- margin-bottom: 35px;
190
- font-size: 2.2em;
191
- font-weight: 700;
192
- position: relative;
193
- padding-bottom: 15px;
194
- }
195
-
196
- .section h2::after {
197
- content: '';
198
- position: absolute;
199
- bottom: 0;
200
- left: 0;
201
- width: 60px;
202
- height: 4px;
203
- background: var(--gradient-primary);
204
- border-radius: 2px;
205
- }
206
-
207
- .section h3 {
208
- color: var(--primary-color);
209
- margin: 35px 0 25px 0;
210
- font-size: 1.6em;
211
- font-weight: 600;
212
- position: relative;
213
- padding-left: 20px;
214
- }
215
-
216
- .section h3::before {
217
- content: '';
218
- position: absolute;
219
- left: 0;
220
- top: 50%;
221
- transform: translateY(-50%);
222
- width: 4px;
223
- height: 24px;
224
- background: var(--gradient-accent);
225
- border-radius: 2px;
226
- }
227
-
228
- .charts-grid {
229
- display: grid;
230
- grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
231
- gap: 30px;
232
- margin-bottom: 40px;
233
- }
234
-
235
- .chart-container {
236
- background: var(--card-bg);
237
- padding: 25px;
238
- border-radius: var(--border-radius-small);
239
- border: 1px solid var(--border-color);
240
- box-shadow: var(--shadow-soft);
241
- transition: all 0.3s ease;
242
- position: relative;
243
- overflow: hidden;
244
- }
245
-
246
- .chart-container::before {
247
- content: '';
248
- position: absolute;
249
- top: 0;
250
- left: 0;
251
- right: 0;
252
- height: 3px;
253
- background: var(--gradient-accent);
254
- }
255
-
256
- .chart-container:hover {
257
- transform: translateY(-2px);
258
- box-shadow: var(--shadow-medium);
259
- }
260
-
261
- .chart-container h4 {
262
- text-align: center;
263
- margin-bottom: 20px;
264
- color: var(--primary-color);
265
- font-size: 1.2em;
266
- font-weight: 600;
267
- letter-spacing: 0.01em;
268
- }
269
-
270
- .summary-grid {
271
- display: grid;
272
- grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
273
- gap: 30px;
274
- }
275
-
276
- .summary-card {
277
- background: var(--card-bg);
278
- padding: 30px;
279
- border-radius: var(--border-radius-small);
280
- border: 1px solid var(--border-color);
281
- box-shadow: var(--shadow-soft);
282
- transition: all 0.3s ease;
283
- position: relative;
284
- overflow: hidden;
285
- }
286
-
287
- .summary-card::before {
288
- content: '';
289
- position: absolute;
290
- top: 0;
291
- left: 0;
292
- right: 0;
293
- height: 3px;
294
- background: var(--gradient-primary);
295
- }
296
-
297
- .summary-card:hover {
298
- transform: translateY(-2px);
299
- box-shadow: var(--shadow-medium);
300
- }
301
-
302
- .summary-card h3 {
303
- color: var(--primary-color);
304
- margin-bottom: 20px;
305
- font-size: 1.4em;
306
- font-weight: 600;
307
- }
308
-
309
- .summary-card ul {
310
- list-style: none;
311
- padding-left: 0;
312
- }
313
-
314
- .summary-card li {
315
- padding: 12px 0;
316
- border-bottom: 1px solid var(--border-color);
317
- transition: all 0.2s ease;
318
- position: relative;
319
- padding-left: 20px;
320
- }
321
-
322
- .summary-card li::before {
323
- content: '▸';
324
- position: absolute;
325
- left: 0;
326
- color: var(--secondary-color);
327
- font-weight: bold;
328
- }
329
-
330
- .summary-card li:hover {
331
- padding-left: 25px;
332
- color: var(--primary-color);
333
- }
334
-
335
- .summary-card li:last-child {
336
- border-bottom: none;
337
- }
338
-
339
- .environments-grid {
340
- display: grid;
341
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
342
- gap: 20px;
343
- }
344
-
345
- .environment-card {
346
- background: var(--card-bg);
347
- padding: 25px;
348
- border-radius: var(--border-radius-small);
349
- border: 1px solid var(--border-color);
350
- box-shadow: var(--shadow-soft);
351
- transition: all 0.3s ease;
352
- position: relative;
353
- overflow: hidden;
354
- }
355
-
356
- .environment-card::before {
357
- content: '';
358
- position: absolute;
359
- top: 0;
360
- left: 0;
361
- right: 0;
362
- height: 3px;
363
- background: var(--gradient-secondary);
364
- }
365
-
366
- .environment-card:hover {
367
- transform: translateY(-2px);
368
- box-shadow: var(--shadow-medium);
369
- }
370
-
371
- .environment-card h3 {
372
- color: var(--primary-color);
373
- margin-bottom: 18px;
374
- font-size: 1.3em;
375
- font-weight: 600;
376
- }
377
-
378
- .environment-card p {
379
- margin-bottom: 8px;
380
- color: #6c757d;
381
- }
382
-
383
- .serializer-versions {
384
- margin-top: 15px;
385
- }
386
-
387
- .serializer-versions h4 {
388
- color: var(--primary-color);
389
- margin-bottom: 12px;
390
- font-size: 1.1em;
391
- font-weight: 600;
392
- }
393
-
394
- .serializer-versions ul {
395
- list-style: none;
396
- padding-left: 0;
397
- }
398
-
399
- .serializer-versions li {
400
- padding: 6px 0;
401
- color: var(--text-color);
402
- font-size: 0.95em;
403
- transition: color 0.2s ease;
404
- }
405
-
406
- .serializer-versions li:hover {
407
- color: var(--primary-color);
408
- }
409
-
410
- @media (max-width: 768px) {
411
- .container {
412
- padding: 15px;
413
- }
414
-
415
- header {
416
- padding: 30px 20px;
417
- margin-bottom: 30px;
418
- }
419
-
420
- header h1 {
421
- font-size: 2.2em;
422
- }
423
-
424
- .metadata {
425
- flex-direction: column;
426
- gap: 15px;
427
- }
428
-
429
- .metadata p {
430
- padding: 10px 20px;
431
- }
432
-
433
- .benchmark-nav {
434
- gap: 8px;
435
- }
436
-
437
- .nav-btn {
438
- padding: 12px 20px;
439
- font-size: 0.9em;
440
- }
441
-
442
- .section {
443
- padding: 25px;
444
- }
445
-
446
- .section h2 {
447
- font-size: 1.8em;
448
- }
449
-
450
- .section h3 {
451
- font-size: 1.4em;
452
- margin: 25px 0 20px 0;
453
- }
454
-
455
- .charts-grid {
456
- grid-template-columns: 1fr;
457
- gap: 20px;
458
- }
459
-
460
- .chart-container {
461
- padding: 20px;
462
- }
463
-
464
- .summary-grid {
465
- grid-template-columns: 1fr;
466
- gap: 20px;
467
- }
468
-
469
- .environments-grid {
470
- grid-template-columns: 1fr;
471
- }
472
- }
473
-
474
- /* Additional modern enhancements */
475
- .charts-grid {
476
- gap: 25px;
477
- }
478
-
479
- .summary-grid {
480
- gap: 25px;
481
- }
482
-
483
- .environments-grid {
484
- gap: 25px;
485
- }
486
-
487
- /* Smooth scrolling */
488
- html {
489
- scroll-behavior: smooth;
490
- }
491
-
492
- /* Focus styles for accessibility */
493
- .nav-btn:focus {
494
- outline: 2px solid var(--primary-color);
495
- outline-offset: 2px;
496
- }
497
-
498
- /* Loading animation for charts */
499
- @keyframes fadeInUp {
500
- from {
501
- opacity: 0;
502
- transform: translateY(20px);
503
- }
504
- to {
505
- opacity: 1;
506
- transform: translateY(0);
507
- }
508
- }
509
-
510
- .chart-container {
511
- animation: fadeInUp 0.6s ease-out;
512
- }
513
-
514
- .summary-card {
515
- animation: fadeInUp 0.6s ease-out;
516
- }
517
-
518
- .environment-card {
519
- animation: fadeInUp 0.6s ease-out;
520
- }
521
-
522
- /* Stagger animation delays */
523
- .chart-container:nth-child(1) { animation-delay: 0.1s; }
524
- .chart-container:nth-child(2) { animation-delay: 0.2s; }
525
- .chart-container:nth-child(3) { animation-delay: 0.3s; }
526
- .chart-container:nth-child(4) { animation-delay: 0.4s; }
527
-
528
- .summary-card:nth-child(1) { animation-delay: 0.1s; }
529
- .summary-card:nth-child(2) { animation-delay: 0.2s; }
530
-
531
- .environment-card:nth-child(1) { animation-delay: 0.1s; }
532
- .environment-card:nth-child(2) { animation-delay: 0.2s; }
533
- .environment-card:nth-child(3) { animation-delay: 0.3s; }
534
- .environment-card:nth-child(4) { animation-delay: 0.4s; }
535
- .environment-card:nth-child(5) { animation-delay: 0.5s; }