Hi folks,
With the release of 9.0.0-rc1 coming this weekend, I've also released the first version of the
Python supporting library for it.
There is currently no documentation for this, but if you're the kind of person who is happy to work with just the code as documentation, consider this an invitation to start playing around with it (especially if you have developed plugins for the SWIG bindings in the past and want to try porting them over).
There will be more formal public announcements of this along with some documentation when 9.0 stable is released, but for now here are some quick answers to FAQ:
- The SWIG bindings are not being removed in 9.0. They will be removed once we are confident that all existing use cases are covered by new functionality. The earliest this would happen is 10.0, but it's tied to that confidence, not a specific release version.
- The IPC API requires that KiCad be running to communicate with it. It only supports "plug-in to the KiCad UI" use cases at the moment. It does not support some current use-cases of the SWIG bindings at the moment, such as opening/manipulating/exporting KiCad board files without KiCad actually being running. We have plans to support this kind of use in the future, but not initially in 9.0.
- The IPC API does not support any plotting/exporting functionality at the moment. We recommend using kicad-cli for this functionality.
- The IPC API in 9.0 has focused on replicating the functionality currently available to SWIG action plugins. It does not add very many new features yet, and it does not yet support the schematic editor or library editors.
- Python plugins using the IPC API can run with any Python interpreter on the user's system (currently supporting between version 3.9 and 3.12; 3.13 doesn't work yet due to a dependency issue). KiCad has an experimental feature to automatically manage virtual environments and dependencies for Python-based plugins. This works if binary wheels for all required dependencies are available for the user's platform. There is not yet any good user-facing error reporting for handling cases when dependencies can't be installed automatically.
- There is an experimental Rust binding, but I haven't had the time to maintain it recently. I still plan to get back to it, but don't expect feature parity with the Python bindings anytime soon.
-Jon