serialbench 0.1.2 → 0.1.3

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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/benchmark.yml +273 -228
  3. data/.github/workflows/rake.yml +11 -0
  4. data/.github/workflows/windows-debug.yml +171 -0
  5. data/.gitignore +32 -0
  6. data/.rubocop.yml +1 -0
  7. data/.rubocop_todo.yml +274 -0
  8. data/Gemfile +13 -1
  9. data/README.adoc +36 -0
  10. data/data/schemas/result.yml +29 -0
  11. data/docs/PLATFORM_VALIDATION_FIX.md +79 -0
  12. data/docs/SYCK_YAML_FIX.md +91 -0
  13. data/docs/WEBSITE_COMPLETION_PLAN.md +440 -0
  14. data/docs/WINDOWS_LIBXML_FIX.md +136 -0
  15. data/docs/WINDOWS_SETUP.md +122 -0
  16. data/lib/serialbench/benchmark_runner.rb +3 -3
  17. data/lib/serialbench/cli/benchmark_cli.rb +74 -1
  18. data/lib/serialbench/cli/environment_cli.rb +3 -3
  19. data/lib/serialbench/cli/resultset_cli.rb +72 -26
  20. data/lib/serialbench/cli/ruby_build_cli.rb +75 -88
  21. data/lib/serialbench/cli/validate_cli.rb +88 -0
  22. data/lib/serialbench/cli.rb +6 -2
  23. data/lib/serialbench/config_manager.rb +15 -26
  24. data/lib/serialbench/models/benchmark_config.rb +12 -0
  25. data/lib/serialbench/models/benchmark_result.rb +39 -3
  26. data/lib/serialbench/models/environment_config.rb +3 -2
  27. data/lib/serialbench/models/platform.rb +56 -4
  28. data/lib/serialbench/models/result.rb +28 -1
  29. data/lib/serialbench/models/result_set.rb +8 -0
  30. data/lib/serialbench/ruby_build_manager.rb +19 -23
  31. data/lib/serialbench/runners/asdf_runner.rb +1 -1
  32. data/lib/serialbench/runners/docker_runner.rb +2 -4
  33. data/lib/serialbench/runners/local_runner.rb +71 -0
  34. data/lib/serialbench/serializers/base_serializer.rb +1 -1
  35. data/lib/serialbench/serializers/json/rapidjson_serializer.rb +1 -1
  36. data/lib/serialbench/serializers/toml/base_toml_serializer.rb +0 -2
  37. data/lib/serialbench/serializers/toml/toml_rb_serializer.rb +1 -1
  38. data/lib/serialbench/serializers/toml/tomlib_serializer.rb +1 -1
  39. data/lib/serialbench/serializers/xml/libxml_serializer.rb +4 -8
  40. data/lib/serialbench/serializers/xml/nokogiri_serializer.rb +2 -2
  41. data/lib/serialbench/serializers/xml/oga_serializer.rb +4 -8
  42. data/lib/serialbench/serializers/xml/ox_serializer.rb +2 -2
  43. data/lib/serialbench/serializers/xml/rexml_serializer.rb +3 -3
  44. data/lib/serialbench/serializers/yaml/psych_serializer.rb +1 -1
  45. data/lib/serialbench/serializers/yaml/syck_serializer.rb +1 -1
  46. data/lib/serialbench/serializers.rb +2 -2
  47. data/lib/serialbench/site_generator.rb +180 -2
  48. data/lib/serialbench/templates/assets/css/format_based.css +1 -53
  49. data/lib/serialbench/templates/assets/css/themes.css +5 -4
  50. data/lib/serialbench/templates/assets/js/chart_helpers.js +44 -14
  51. data/lib/serialbench/templates/assets/js/dashboard.js +14 -15
  52. data/lib/serialbench/templates/format_based.liquid +480 -252
  53. data/lib/serialbench/version.rb +1 -1
  54. data/lib/serialbench/yaml_validator.rb +36 -0
  55. data/serialbench.gemspec +11 -2
  56. metadata +34 -23
  57. data/.github/workflows/ci.yml +0 -74
  58. data/.github/workflows/docker.yml +0 -272
@@ -108,7 +108,9 @@ class SerialBenchDashboard {
108
108
 
109
109
  if (this.data.environments) {
110
110
  Object.values(this.data.environments).forEach(env => {
111
- platforms.add(env.ruby_platform);
111
+ // Use os-arch combination instead of ruby_platform
112
+ const platformKey = `${env.os}-${env.arch}`;
113
+ platforms.add(platformKey);
112
114
  rubyVersions.add(env.ruby_version);
113
115
  });
114
116
  }
@@ -120,7 +122,7 @@ class SerialBenchDashboard {
120
122
  Array.from(platforms).sort().forEach(platform => {
121
123
  const option = document.createElement('option');
122
124
  option.value = platform;
123
- option.textContent = this.formatPlatformName(platform);
125
+ option.textContent = platform;
124
126
  platformSelect.appendChild(option);
125
127
  });
126
128
  }
@@ -148,15 +150,6 @@ class SerialBenchDashboard {
148
150
  }
149
151
  }
150
152
 
151
- formatPlatformName(platform) {
152
- const platformMap = {
153
- 'aarch64-linux': 'ARM64 Linux',
154
- 'x86_64-linux': 'x64 Linux',
155
- 'x86_64-darwin': 'x64 macOS',
156
- 'aarch64-darwin': 'ARM64 macOS'
157
- };
158
- return platformMap[platform] || platform;
159
- }
160
153
 
161
154
  setupFilterEventListeners() {
162
155
  // Platform filter
@@ -213,7 +206,9 @@ class SerialBenchDashboard {
213
206
  // Set all platforms and versions by default
214
207
  if (this.data.environments) {
215
208
  Object.values(this.data.environments).forEach(env => {
216
- this.filters.platforms.add(env.ruby_platform);
209
+ // Use os-arch combination instead of ruby_platform
210
+ const platformKey = `${env.os}-${env.arch}`;
211
+ this.filters.platforms.add(platformKey);
217
212
  this.filters.rubyVersions.add(env.ruby_version);
218
213
  });
219
214
  }
@@ -336,8 +331,10 @@ class SerialBenchDashboard {
336
331
  shouldIncludeEnvironment(env) {
337
332
  if (!env) return false;
338
333
 
334
+ // Use os-arch combination for platform matching
335
+ const platformKey = `${env.os}-${env.arch}`;
339
336
  const platformMatch = this.filters.platforms.size === 0 ||
340
- this.filters.platforms.has(env.ruby_platform);
337
+ this.filters.platforms.has(platformKey);
341
338
  const versionMatch = this.filters.rubyVersions.size === 0 ||
342
339
  this.filters.rubyVersions.has(env.ruby_version);
343
340
 
@@ -634,8 +631,10 @@ class SerialBenchDashboard {
634
631
  // Show all environments, but apply platform and version filters only (not format)
635
632
  const filteredEnvs = Object.entries(this.data.environments)
636
633
  .filter(([key, env]) => {
634
+ // Use os-arch combination for platform matching
635
+ const platformKey = `${env.os}-${env.arch}`;
637
636
  const platformMatch = this.filters.platforms.size === 0 ||
638
- this.filters.platforms.has(env.ruby_platform);
637
+ this.filters.platforms.has(platformKey);
639
638
  const versionMatch = this.filters.rubyVersions.size === 0 ||
640
639
  this.filters.rubyVersions.has(env.ruby_version);
641
640
  return platformMatch && versionMatch;
@@ -649,7 +648,7 @@ class SerialBenchDashboard {
649
648
  container.innerHTML = filteredEnvs.map(([key, env]) => `
650
649
  <div class="environment-card fade-in-up">
651
650
  <h3 class="environment-card-title">
652
- Ruby ${env.ruby_version} on ${this.formatPlatformName(env.ruby_platform)}
651
+ Ruby ${env.ruby_version} on ${env.os}-${env.arch}
653
652
  </h3>
654
653
  <p><strong>Source:</strong> ${env.source_file ? env.source_file.split('/').pop() : 'Unknown'}</p>
655
654
  <p><strong>Timestamp:</strong> ${new Date(env.timestamp).toLocaleString()}</p>