8000 Releases · freerouting/freerouting · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Releases: freerouting/freerouting

Freerouting v2.1.0

12 Apr 13:50
Compare
Choose a tag to compare

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.

Freerouting v2.0.1

14 Nov 13:30
Compare
Choose a tag to compare

This release focuses on bug fixes, including: fixing the installers that missed Java libraries, resolving issues with the CLI (headless) mode, fixing problems with localized strings and enhancing exception handling related to analytics.

For a detailed description of the new features introduced in version 2.0.0, please refer to the v2.0.0 release notes.

What's Changed

  • Bump org.apache.logging.log4j:log4j-core from 2.23.1 to 2.24.1 by @dependabot in #374
  • Bump org.eclipse.jetty:jetty-security from 12.0.14 to 12.0.15 by @dependabot in #373
  • Bump org.glassfish.jersey.core:jersey-client from 3.1.7 to 3.1.9 by @dependabot in #372
  • Bump org.eclipse.jetty:jetty-server from 12.0.14 to 12.0.15 by @dependabot in #371

Full Changelog: v2.0.0...v2.0.1

Freerouting v2.0.0

06 Nov 16:28
Compare
Choose a tag to compare

This is one of the biggest updates in Freerouting's history! I’ve volunteered 220 hours into this release, and I truly hope you enjoy it!

What’s new? A lot! Let’s dive in:

GUI Upgrade

GUI screenshot

In v1.9, I introduced anonymous telemetry, which helped me understand which features users rely on most. Based on that data, I’ve revamped the user interface, making it sleeker and more modern. A few features (like context-aware help, select mode, macros, and snapshot management) have been disabled and will be fully removed in future releases.

  • Menus have been rearranged and simplified for better usability.
  • New icons, mode selectors, and unit controls have been added.
  • Several router settings windows have been combined, and I plan to streamline them even further based on what settings are actually used.
  • Warnings and error indicators have been modernized and are now displayed in the bottom right corner.
  • A new User Settings window allows you to configure telemetry and contact preferences.
  • Freerouting now has a refreshed color palette that aligns with KiCad’s modern look. While the palette remains customizable, the color editor will be removed in the next release.

Configuration framework

A brand-new configuration framework unifies how users set preferences. Now, you can choose from multiple methods: freerouting.json configuration file, environment variables, command line arguments, or GUI.

  • Configuration file: Modify the freerouting.json file directly.
  • Environment variables: Override configuration settings with variables in the format FREEROUTING__{key}__{subkey}. For example, FREEROUTING__ROUTER__MAX_PASSES=20 changes the maximum passes to 20.
  • Command line arguments: Adjust settings like --router.max_passes=10 to control the number of allowed passes.
  • GUI: If enabled, certain settings can be tweaked directly through the interface.

Check out its documentation for more details.

Improved Localization

Localization has been overhauled. Previously, short text fragments were combined programmatically, which caused issues with non-English languages. Now, we use whole sentence templates with placeholders, offering more flexibility for translators. For example, "Saving Specctra session '{{filename}}' was successful." gives more control to translators, ensuring better results for all languages.

Additionally, I've added fallback mechanisms and generalized support for labels, buttons, and text boxes across the entire UI.

Routing job scheduler

I introduced a multi-threaded routing job scheduler. It is responsible for managing and executing the routing jobs of Freerouting. This improvement enables us to run routing jobs in parallel. This was a crucial prerequisite for the API to work, but it will also let GUI users run and monitor long-running jobs in the background.

Public API (beta)

The Freerouting API is now publicly available at https://api.freerouting.app/v1. This involved a huge backend refactor and opens the door to tighter integration with EDAs like KiCad, EasyEDA, and tscircuit.

The API and its documentation are still evolving, with close collaboration from the tscircuit team to make it as useful as possible.

CLI interface

Freerouting now natively supports headless operation, allowing you to access its functionality via the command line, without needing a graphical interface. You can run Freerouting in CLI mode by setting the gui.enabled setting to false.

Unit Tests

I’ve introduced unit testing for evaluating DSN files before accepting new commits. This helps ensure new features or contributions don’t introduce bugs. It supports testing in local environments, via GitHub Actions, and Docker.

Docker support

Freerouting now supports Docker! The container is compatible with both ARM64 and x64 platforms, and it works on Microsoft Azure.

Personal notes

I know release notes are usually impersonal, but we’re all geeks here, so let me get a bit personal. :) I love Freerouting because it gives time back to people who love to build. When it works, it’s amazing. But sometimes it doesn’t, and I know the frustration that comes with it.

I work hard to make it better, but sometimes other projects, or life gets in the way. Being an open-source maintainer isn’t easy—issues pile up, and there’s never enough time. It's a race that never ends, and it’s both exhilarating and exhausting.

I’ll be taking a short break for a few months, but I’ll be back. Please continue to post issues and pull requests, and I’ll get to them as soon as I can.

Sponsors

A heartfelt thank you to my sponsors for their invaluable support an 8000 d motivation, which enables me to continue volunteering as the sole developer and maintainer of Freerouting.

Special thanks to @tscircuit (and @seveibar) for your ongoing generosity!

I’d also like to acknowledge past sponsors: @cpyne, @rozza-m, and @Digilent. Your support has been essential to this project.

Last but definitely not least, I'd like to thank my family for tirelessly accepting that when I said, "Just another 5 minutes for this quick fix," it often meant they'd see me hours later. Their patience as they waited again and again for me to finish up and join them is truly heroic. Hearts to my lovely wife—you kept me alive with fantastic food despite my best efforts to subsist solely on caffeine and code during those intense programming marathons.

Since I’m currently the only active contributor to Freerouting, even a small monthly contribution would be greatly appreciated. If you’d like to support this project, please consider sponsoring me: GitHub Sponsors. Thank you!

Statistics

Here are the v1.9 statistics from the period of 1st November 2023 and 24th October 2024.

Language

Language pie chart

Operating System

OS pie chart

Java Version

Java pie chart

What's Changed

New Contributors

Full Changelog: v1.9.0...v2.0.0

Freerouting v1.9.0

30 Oct 12:47
c88ad67
Compare
Choose a tag to compare

Many things improved since the last release including bug fixes and improvements, and I would like to highlight just a few:

Global settings file (freerouting.json)

We now have a global freerouting.json file stored in the temp folder for all the defaults that we use. They don't cover all the settings we have just yet, but you can still have more control over the processes than before. Command line arguments can override them, just like before. Freerouting now can remember your the default folder from where you opened your last board, yay!

Modern, KiCad-like color schema

The color schema was modified to match KiCad good-looking, more modern look:
image

Analytics

Added Segment's Analytics framework to the code, so we finally can get insights from anonymous usage statistics. This is a crucial step moving forward, because the plan is to have a feature reduction release in the near future, where we can get rid of all the functions that are not used by you. You can disable this by using the -da command line argument.

Various changes

We fixed a few issues with keepouts, component rotation and snapshot files, added more robust 2+ layer support, automated version checking, new dialog boxes (with -dct command line argument to set the timeout), fixed high DPI texts, fixed KiCad plugin issues (including on-demand JRE installation) and compile time warnings.

All in all this release is packed with good stuff!

What's Changed

👍New Contributors

🥇Donors

I also would like to thank all of our donors: @Digilent, @cpyne and @rozza-m! (see #177 for details)

Full Changelog: v1.8.0...v1.9.0

Freerouting v1.8.0

22 May 16:17
Compare
Choose a tag to compare

Improved clearance handling, automatic snapshots, new "delete all tracks and vias" feature, loading errors and warnings dialog, KiCad plugin script update, DSN buffer increase and updated translations.

What's Changed

New Contributors

Full Changelog: v1.7.0...v1.8.0

Freerouting v1.7.0

08 Feb 15:51
ba0b23e
Compare
Choose a tag to compare

Fixed issues with clearances, Java 19, KiCad plugin Java version check and updated the Chinese translations.

What's Changed

  • Fixed the clearance violation problem when route optimizer run in a multi-threaded mode @andrasfuchs
  • Fixed the issue caused by Java 19 @andrasfuchs
  • KiCad plugin prevented the installation because of incorrect Java version detection @andrasfuchs
  • Added application icons to all windows and added window size restrictions where it made sense @andrasfuchs
  • Updated Simplified Chinese Translation by @taotieren in #164
  • Bump com.github.ben-manes.versions from 0.44.0 to 0.45.0 by @dependabot in #165

New Contributors

Full Changelog: v1.6.5...v1.7.0

Freerouting v1.6.5

03 Jan 16:23
Compare
Choose a tag to compare

Added translations for Hindi, Spanish, French, Arabic, Bengali, Russian, Portuguese, Japanese, Korean.
Integrations for KiCad, EAGLE and Target3001! are now stored in this repo, in the integrations folder.
Fixed a DSN file reading issue and added -dl command line argument to disable logging.

What's Changed

  • Add translation files for Hindi, Spanish, French, Arabic, Bengali, Russian, Portuguese, Japanese, Korean @andrasfuchs
  • Add integrations @andrasfuchs
  • Disable logging for KiCad integration by default @andrasfuchs
  • Update Network.read_net_pins() to handle DSN files exported from eagle by @Rezer in #147
  • Remove bintray publishing @andrasfuchs
  • Bump log4j-api from 2.18.0 to 2.19.0 by @dependabot in #142
  • Bump log4j-core from 2.18.0 to 2.19.0 by @dependabot in #141
  • Bump com.github.ben-manes.versions from 0.42.0 to 0.44.0 by @dependabot in #154

New Contributors

Full Changelog: v1.6.2...v1.6.5

Freerouting v1.6.2

13 Jul 13:05
Compare
Choose a tag to compare

This is mainly a bugfix and performance improvement release.

Freerouting needs Java developers, UX/UI designers and translators (see #127) to be able to continuously evolve.
Please read #81 and consider joining/supporting the project!

What's Changed

Full Changelog: v1.6.1...v1.6.2

Freerouting v1.6.1

07 Jun 14:37
Compare
Choose a tag to compare

This is a hotfix release of v1.6.0 that fixes the bug #118 on systems with Chinese and German language settings.

What's Changed

Freerouting v1.6.0

06 Jun 11:32
Compare
Choose a tag to compare

This release have a new feature that allows users to tell autorouter to skip a net-class. This can be useful for example if you want to manually connect components to GND, VCC after freerouting finished. You have this option in the GUI in the Rules / Net Classes / "ignore by autorouter" column, or you can use the new "-inc" command line argument to set those net classes. E.g. -inc GND,VCC tells the autorouter to not route the connections in the GND and VCC net classes.

The autorouter parameters were slightly modified to improve the end results. It causes the algorithm to run a little longer, but our tests confirmed that it is a reasonable tradeoff. To run the autorouter indefinitely, use the -oit 0 command line argument.

We moved from Java 11 to Java 17.

DSN file reader was upgraded to handle non-ANSI (Cyrillic, Chinese, etc.) characters.

From this release on macOS installer package is not supported. Freerouting still works on macOS by using the .jar release, but it needs a Java 17 runtime to be installed. If someone who 1, has a Mac and 2, is a member of the Apple Developer Program has the time to work on the macOS installer, let me know.

As always, this release contains many small fixes and improvements.

Freerouting needs Java developers, UX/UI designers and translators to be able to continuously evolve.
Please read my post about the situation and consider joining/supporting the project!

What's Changed

Full Changelog: v1.5.0...v1.6.0

0