Skip to content

Releases/3.2.0 - #164

Merged
whomwah merged 15 commits into
releasefrom
releases/3.2.0
Jan 8, 2026
Merged

Releases/3.2.0#164
whomwah merged 15 commits into
releasefrom
releases/3.2.0

Conversation

@whomwah

@whomwah whomwah commented Jan 8, 2026

Copy link
Copy Markdown
Owner

This pull request introduces a comprehensive benchmarking suite to the RQRCode project, updates documentation and contribution guidelines, and raises the minimum supported Ruby version. The benchmarks provide detailed performance and memory usage metrics for all export formats, with supporting Rake tasks and documentation. The Ruby version matrix and documentation are updated to reflect new requirements and benchmarking capabilities.

Benchmarking infrastructure and tasks:

  • Added a full benchmarking suite under the benchmark/ directory, including scripts for SVG, PNG, HTML, ANSI, and format comparisons, as well as a shared benchmark_helper.rb utility. Benchmarks measure both end-to-end (generation + export) and rendering-only performance, with results saved as JSON for tracking over time. [1] [2]
  • Added Rake tasks for running individual or all benchmarks, integrating them into the development workflow.

Documentation and guidelines:

  • Added benchmark/README.md with detailed instructions, performance baselines, and interpretation guidance for benchmark results.
  • Added AGENTS.md as a development guide for AI agents, covering build/test commands, code style, file structure, and commit message conventions.
  • Updated README.md to document the new minimum Ruby version (>= 3.2.0) and to reference the new benchmarking suite and its usage. [1] [2]

Ruby version and CI updates:

  • Raised the minimum supported Ruby version to 3.2.0 and updated the GitHub Actions CI matrix to test only Ruby 3.2, 3.3, 3.4, and 4.0. [1] [2]

Changelog and release management:

  • Added a new 3.2.0 release entry in CHANGELOG.md, summarizing benchmarking additions, performance improvements, Ruby version changes, and documentation updates. Updated changelog links for the new release. [1] [2]

Miscellaneous:

  • Minor updates to Gemfile for development setup.

- Add Rake tasks for running benchmarks
- Add benchmark scripts for SVG, PNG, HTML, ANSI, and format comparison
- Add benchmark_helper.rb for shared setup and result saving
- Add benchmark/README.md with usage and baseline results
- Update Gemfile.lock with benchmark dependencies
- Ignore benchmark/results/ in .gitignore
- Remove Ruby 3.0 from CI test matrix
- Introduce run_ips_e2e for full workflow timing (generation + export)
- Update all export benchmarks to run both end-to-end and rendering-only
  modes
- Expand README with detailed explanation of benchmark types and output
- Clarify benchmark output and add summary messages for each script
Rewrite HTML export to use a single loop and preallocate string
capacity, improving speed and memory usage. Remove unnecessary helper
classes.
- Refactor path tracing to use integer direction constants and arrays
- Remove Edge struct, reduce allocations and intermediate arrays
- Build SVG path string directly for each loop, minimizing string ops
- Improves rendering speed by 130% and reduces output size
- Update benchmark README with new performance results
- Add comprehensive SVG export tests covering options and output
Using AI Assistant to identity (and fix) performance bottlenecks
@whomwah whomwah self-assigned this Jan 8, 2026
@whomwah
whomwah marked this pull request as ready for review January 8, 2026 19:23
@whomwah
whomwah merged commit f0d6500 into release Jan 8, 2026
8 checks passed
@whomwah
whomwah deleted the releases/3.2.0 branch January 8, 2026 19:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant