6.5 KiB
6.5 KiB
KiCad IPC API Rust
MIT-licensed Rust bindings for the KiCad IPC API.
Current Status
Early scaffold phase. Core architecture + step-by-step implementation plan:
/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/prompts/IPC_RUST_EXECUTION_PLAN.md/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/proto/README.md
Roadmap
- Async-first layered client (
v0.1.0) - Full PCB read surface + trace write capability (
v0.1.0) - Blocking wrapper parity (
v0.2.0)
Local Testing
- CLI runbook:
/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/docs/TEST_CLI.md
KiCad v10 RC1.1 API Completion Matrix
Source of truth for this matrix:
/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/proto/common/commands/base_commands.proto/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/proto/common/commands/editor_commands.proto/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/proto/common/commands/project_commands.proto/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/proto/board/board_commands.proto/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/proto/schematic/schematic_commands.proto
Legend:
Implemented= wrapped in current Rust client (src/client.rs).Not yet= exists in proto, not wrapped yet.- Command messages only (request payloads); helper/response messages excluded.
Section Coverage
| Section | Proto Commands | Implemented | Coverage |
|---|---|---|---|
| Common (base) | 6 | 2 | 33% |
| Common editor/document | 23 | 9 | 39% |
| Project manager | 5 | 1 | 20% |
| Board editor (PCB) | 22 | 13 | 59% |
| Schematic editor (dedicated proto commands) | 0 | 0 | n/a |
| Total | 56 | 25 | 45% |
Common (base)
| KiCad Command | Status | Rust API |
|---|---|---|
Ping |
Implemented | KiCadClient::ping |
GetVersion |
Implemented | KiCadClient::get_version |
GetKiCadBinaryPath |
Not yet | - |
GetTextExtents |
Not yet | - |
GetTextAsShapes |
Not yet | - |
GetPluginSettingsPath |
Not yet | - |
Common editor/document
| KiCad Command | Status | Rust API |
|---|---|---|
RefreshEditor |
Not yet | - |
GetOpenDocuments |
Implemented | KiCadClient::get_open_documents, KiCadClient::get_current_project_path, KiCadClient::has_open_board |
SaveDocument |
Not yet | - |
SaveCopyOfDocument |
Not yet | - |
RevertDocument |
Not yet | - |
RunAction |
Not yet | - |
BeginCommit |
Not yet | - |
EndCommit |
Not yet | - |
CreateItems |
Not yet | - |
GetItems |
Implemented | KiCadClient::get_items_raw_by_type_codes, KiCadClient::get_items_by_type_codes, KiCadClient::get_items_details_by_type_codes, KiCadClient::get_all_pcb_items_raw, KiCadClient::get_all_pcb_items, KiCadClient::get_all_pcb_items_details, KiCadClient::get_pad_netlist |
GetItemsById |
Implemented | KiCadClient::get_items_by_id_raw, KiCadClient::get_items_by_id, KiCadClient::get_items_by_id_details |
UpdateItems |
Not yet | - |
DeleteItems |
Not yet | - |
GetBoundingBox |
Implemented | KiCadClient::get_item_bounding_boxes |
GetSelection |
Implemented | KiCadClient::get_selection_raw, KiCadClient::get_selection, KiCadClient::get_selection_summary, KiCadClient::get_selection_details |
AddToSelection |
Not yet | - |
RemoveFromSelection |
Not yet | - |
ClearSelection |
Not yet | - |
HitTest |
Implemented | KiCadClient::hit_test_item |
GetTitleBlockInfo |
Implemented | KiCadClient::get_title_block_info |
SaveDocumentToString |
Implemented | KiCadClient::get_board_as_string |
SaveSelectionToString |
Implemented | KiCadClient::get_selection_as_string |
ParseAndCreateItemsFromString |
Not yet | - |
Project manager
| KiCad Command | Status | Rust API |
|---|---|---|
GetNetClasses |
Implemented | KiCadClient::get_net_classes_raw, KiCadClient::get_net_classes |
SetNetClasses |
Not yet | - |
ExpandTextVariables |
Not yet | - |
GetTextVariables |
Not yet | - |
SetTextVariables |
Not yet | - |
Board editor (PCB)
| KiCad Command | Status | Rust API |
|---|---|---|
GetBoardStackup |
Implemented | KiCadClient::get_board_stackup_raw, KiCadClient::get_board_stackup |
UpdateBoardStackup |
Not yet | - |
GetBoardEnabledLayers |
Implemented | KiCadClient::get_board_enabled_layers |
SetBoardEnabledLayers |
Not yet | - |
GetGraphicsDefaults |
Implemented | KiCadClient::get_graphics_defaults_raw, KiCadClient::get_graphics_defaults |
GetBoardOrigin |
Implemented | KiCadClient::get_board_origin |
SetBoardOrigin |
Not yet | - |
GetNets |
Implemented | KiCadClient::get_nets |
GetItemsByNet |
Implemented | KiCadClient::get_items_by_net_raw, KiCadClient::get_items_by_net |
GetItemsByNetClass |
Implemented | KiCadClient::get_items_by_net_class_raw, KiCadClient::get_items_by_net_class |
GetNetClassForNets |
Implemented | KiCadClient::get_netclass_for_nets_raw, KiCadClient::get_netclass_for_nets |
RefillZones |
Not yet | - |
GetPadShapeAsPolygon |
Implemented | KiCadClient::get_pad_shape_as_polygon_raw, KiCadClient::get_pad_shape_as_polygon |
CheckPadstackPresenceOnLayers |
Implemented | KiCadClient::check_padstack_presence_on_layers_raw, KiCadClient::check_padstack_presence_on_layers |
InjectDrcError |
Not yet | - |
GetVisibleLayers |
Implemented | KiCadClient::get_visible_layers |
SetVisibleLayers |
Not yet | - |
GetActiveLayer |
Implemented | KiCadClient::get_active_layer |
SetActiveLayer |
Not yet | - |
GetBoardEditorAppearanceSettings |
Implemented | KiCadClient::get_board_editor_appearance_settings_raw, KiCadClient::get_board_editor_appearance_settings |
SetBoardEditorAppearanceSettings |
Not yet | - |
InteractiveMoveItems |
Not yet | - |
Schematic editor
| Item | Value |
|---|---|
Dedicated commands in proto/schematic/schematic_commands.proto |
None in current proto snapshot |
| Coverage | n/a |
Symbol editor
| Item | Value |
|---|---|
| Dedicated symbol-editor command proto | None in current snapshot |
| Current path | Uses common editor/document commands via DocumentType::DOCTYPE_SYMBOL |
Footprint editor
| Item | Value |
|---|---|
| Dedicated footprint-editor command proto | None in current snapshot |
| Current path | Uses common editor/document commands via DocumentType::DOCTYPE_FOOTPRINT |