Как скрестить ужа с сусликом. Встраиваем интерпретатор Python в программу на Go

Доклад

Доклад принят в программу конференции

Целевая аудитория

Всем, кому интересно низкоуровневое программирование на Go. Высококвалифицированным разработчикам, которые не только используют этот прекрасный язык для решения своих повседневных задач, но и заинтересованы в расширении его возможностей и преодолении его ограничений.

Тезисы

Когда в программе возникает потребность во встроенном скриптинге, возникает вопрос о выборе скриптового языка и реализации интерпретатора для него. Скриптинг в программе — это инструмент не столько для разработчиков, сколько для продвинутых пользователей, поэтому надо учитывать особенности этой аудитории. Использование нестандартного или нишевого скриптового языка способно отпугнуть потенциальных пользователей. Python знают все, поэтому выбор именно этого языка представляется идеальным.

Существуют и другие реализации встраивания интерпретатора Python в программы на Go. Однако наша реализация обладает рядом существенных преимуществ, которые не встречаются в других реализациях. Среди них: использование системной инсталляции Python, устойчивость бинарных сборок к обновлению системного Python, что сильно упрощает распространение программы, простой API, раскрывающий возможность одновременного использования независимых и изолированных друг от друга экземпляров интерпретаторов Python, автоматическое управление временем жизни объектов Python, видимых на стороне Go, с помощью сборщика мусора, гладкая интеграция многопоточности между этими двумя языками.

О том, как нам это удалось и с какими мы столкнулись трудностями и особенностями, будет рассказано в этом докладе.

Александр Певзнер

Электронная Москва

35 лет в ИТ. Системный программист, архитектор, эксперт. Начинал с цифровой электроники, потом ушел в чистое программирование. Аппаратный бэкграунд очень помогает понимать, как на самом деле работают вещи. Чувствует себя уютно, работая на стыке аппаратуры и софта. Основные рабочие языки: Си и Go. Автор пакетов ipp-usb и sane-airscan, которые входят во все дистрибутивы Linux и *BSD. Член OpenPrinting. В последние годы полностью посвятил себя разработке свободного программного обеспечения.

Видео