+
Skip to content

Freerouting v2.1.0

Latest
Compare
Choose a tag to compare
@andrasfuchs andrasfuchs released this 12 Apr 13:50
· 6 commits to master since this release

This document outlines the key changes and improvements introduced in Freerouting version 2.1.0. This release focuses on providing better routing analysis through a new scoring system, significant algorithm refinements, a new Python client library, updated container support, and foundational work for future performance enhancements.

New Scoring System Implementation

Version 2.1.0 introduces a comprehensive scoring system to offer objective metrics for evaluating autorouting results.

  • Quantitative Analysis: The system provides detailed board statistics and calculates scores based on parameters like total trace length, via count, and route completion percentage.
  • Improved Feedback: The underlying structure for board statistics has been significantly refactored to support this new system and facilitate comparison between different routing runs.
  • CLI Integration: For command-line interface (CLI) usage, the routing job results, including input/output statistics and the calculated score, are now exported in JSON format upon completion, aiding automated workflows and analysis.

This feature aims to provide users with enhanced tools for assessing and optimizing routing outcomes.

Algorithm Enhancements and Multi-threading Preparation

The core routing algorithms have undergone substantial refinement in this release, alongside preparatory work for multi-threaded operation:

  • Core Algorithm Improvements:
    • Backtracking Logic: The capability to backtrack from difficult routing situations has been significantly improved, potentially increasing route completion rates.
    • Hybrid Strategy: A hybrid routing strategy is now employed more consistently to balance speed and result quality.
    • Reliability Fixes: Issues such as potential infinite loops in specific modes have been addressed, and prior improvement thresholds have been removed for more consistent behavior.
    • Shape Support: Support for simplex shapes within the 45-degree routing algorithm has been added.
  • Multi-threading Prepared (Not Enabled by Default):
    • Significant code changes have been implemented to prepare the router for multi-threaded execution. This includes making core data structures like BoardHistory thread-safe.
    • Important: This multi-threading capability is not enabled by default in version 2.1.0. It requires further testing and bugfixing before being activated in a future release. The groundwork laid in 2.1.0 facilitates this future development and allows for experimental use.
  • Optimizer Availability: The optimizer functionality has been made GUI-independent and re-enabled for API and CLI execution paths.
  • Enhanced Logging: More detailed feedback is provided during routing and optimization, offering better insight into the process and potential failure points.

These changes collectively aim to improve routing reliability and quality, while paving the way for future performance scaling.

New Python Client Library

To facilitate integration and scripting for Python users, a new Freerouting Python Client library has been introduced. It is available in its own dedicated repository: https://github.com/freerouting/freerouting-python-client

I encourage Python developers utilizing Freerouting in their workflows to explore this new library.
You can start using it by simply installing the freerouting-client package:

pip install freerouting-client

Docker Image Updates on GitHub Container Registry (GHCR)

The process for distributing Freerouting via Docker has been updated:

  • Automated Publication: GitHub Actions workflows are now configured to automatically build and publish Docker images to the GitHub Container Registry (GHCR).
  • Stable and Nightly Builds: Users can now access Docker images for both stable releases (e.g., 2.1.0) and development (nightly) builds directly from ghcr.io/freerouting/freerouting.

This provides a standardized and accessible method for obtaining Freerouting versions in containerized environments.

A Note on Project Stewardship

This release also marks a transition in the project's maintenance. As the sole developer and maintainer, Andras Fuchs will be stepping back from active development leadership following this release.

Developing and maintaining Freerouting demands significant time and resources, exemplified by the 61 hours invested in this release alone, a much more in the last 5 years. While the project has benefited from community usage and bug reporting, the level of direct code contribution and financial sponsorship required for sustainable, long-term development by a single maintainer has proven challenging to achieve.

Gratitude is extended to all users and contributors who have engaged with the project. To ensure Freerouting's continued development and availability, future support through institutional backing (e.g., from a company, foundation, or university) is being sought. If you are aware of potential opportunities or can facilitate relevant introductions, please reach out via my LinkedIn profile.

Contributors

While primary development was handled by the maintainer, contributions are essential for any open-source project. Recognition and thanks are extended to the following individuals for their code contributions, issue reporting, testing, and translations integrated during this development cycle:

Sponsors

Freerouting is open-source software, and its development relies on community support. Financial contributions help cover operational costs and potentially fund development efforts.

I extend my sincere thanks to our current sponsors for their invaluable support: @tscircuit, @schollz, @0ddjob, @ufoDziner and two others who wish to remain anonymous.

Organizations or individuals who find Freerouting valuable are encouraged to consider sponsorship to support its potential future maintenance and development.

点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载