21 марта, точно по расписанию, состоялся выпуск очередной версии свободного (GPL) редактора топологий печатных плат — pcb-rnd 1.2.8.
Проект существует с 2013 года, когда его автор (Tibor «Igor2» Palinkas) устав от неконструктивных дискуссий в списке рассылок проекта gEDA pcb, основал свой форк редактора и принялся реализовывать различные улучшения (более подробно про мотивацию и цели проекта). С тех пор было изменено/переписано более двух третей (68.8%) всей кодовой базы (объёмом ~200KSLOC). Помимо этого была проведена впечатляющая работа по организации сопутствующей инфраструктуры проекта, вокруг которого собралось активное сообщество (7000+ коммитов и 7 релизов в год).
Основные изменения в проекте в сравнении с pcb
- Переписывание с нуля всей модели данных (новый формат файла, введение новых базовых примитивов padstacks и subcircuits вместо старых line/via/pin/pad), что позволило решить многие проблемы, существовавшие десятилетиями.
- Переписан с нуля код управления слоями платы: отказ от старой модели, где существовали слои с явной физической привязкой (токопроводящий слой, шелкография, паяльная маска, контур платы) и присутствовало множество связанных с этим ограничений. Например, было невозможно убрать паяльную маску в произвольном месте без грязных хаков (вроде добавления проводника нулевой толщины). Теперь это не проблема: слои стали полностью абстрактными, их можно произвольно комбинировать между собой с помощью булевых операций, а при копировании/вставке элементов между разными стопками слоёв привязка (адаптация) к новой стопке осуществляется «на лету». Добавлен интерфейс редактирования стопки слоёв, введены динамические UI-слои, предназначенные для вывода различной информации поверх рабочего пространства и не влияющие на данные текущего проекта.
- Изменения в библиотеке компонентов: введение параметрических посадочных мест, очистка от дубликатов, веб-интерфейс для генератора компонентов, подгрузка компонентов из online-библиотек, полноценная многоуровневость библиотеки (с гибкими настройками), собственный каталог компонентов (по сути являющийся улучшенным эквивалентом gedasymbols): анонс, каталог edakrill.
- Модули импорта-экспорта для большого количества сторонних форматов (перечень howto по этой теме).
- Новый скриптовый интерфейс программы поддерживает более десятка языков (от awk и Ruby до Python и Lua), всё — опционально.
- Новая иерархическая система параметров проекта.
- Очистка кода от glib, приведение всей кодовой базы к стандарту C89 (C99 для графического интерфейса на GTK).
- Радикальная модуляризация: сокращение объёма ядра программы до минимума, вынос большей части функций в плагины.
- Переход с autotools на scconfig.
- Рефакторинг, избавление от неподдерживаемого кода.
- Большой задел на будущее: основательная подготовка инфраструктуры, модульная архитектура приложения и чистые внутренние API позволяют легко расширять возможности программы. Например, уже сейчас ведётся активная работа над генераторами сеток (meshes) для FEM/FDTD-симуляторов.
- Полная и прозрачная совместимость со всеми форматами файлов оригинального pcb.
Полезные ссылки
- Примечания к выпуску.
- Обширная пользовательская база публикаций и заметок по проекту (активно используемая при написании этой новости).
- Документация.
- Сравнение функционала pcb и pcb-rnd в виде таблицы.
- Наглядная картинка, демонстрирующая разнообразие внешних интерфейсов pcb-rnd.
- Видеоролики на archive.org с демонстрацией новых функций программы.
>>> Подробности