SWIG: Генератор интерфейсов для C/C++ и скриптовых языков
SWIG
SWIG: инструмент для интеграции C/C++ с языками программирования (Python, Java, Lua и др.). Создание интерфейсов, оберток и XML. Open source с 1996 года.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Упрощенный генератор оберток и интерфейсов (SWIG) — это инструмент разработки с открытым исходным кодом, предназначенный для связи компьютерных программ или библиотек, написанных на C или C++, с языками сценариев, такими как Lua, Perl, PHP, Python, R, Ruby, Tcl, а также с другими языковыми реализациями, включая C#, Java, JavaScript, Go, D, OCaml, Octave, Scilab и Scheme. Результатом работы также может быть XML.
The Simplified Wrapper and Interface Generator (SWIG) is an open source software tool used to connect computer programs or libraries written in C or C++ with scripting languages such as Lua, Perl, PHP, Python, R, Ruby, Tcl, and other language implementations like C#, Java, JavaScript, Go, D, OCaml, Octave, Scilab and Scheme. Output can also be in the form of XML.
История
SWIG написан на языках C и C++ и находится в открытом доступе с февраля 1996 года. Первоначальным автором и основным разработчиком был Дэвид М. Бизли, который разработал SWIG, работая аспирантом в Лос-Аламосской национальной лаборатории и Университете Юты, а также будучи преподавателем Чикагского университета. В настоящее время разработка поддерживается активной группой добровольцев под руководством Уильяма Фултона. SWIG распространяется под лицензией GNU General Public License.
SWIG is written in C and C++ and has been publicly available since February 1996. The initial author and main developer was David M. Beazley who developed SWIG while working as a graduate student at Los Alamos National Laboratory and the University of Utah and while on the faculty at the University of Chicago. Development is currently supported by an active group of volunteers led by William Fulton. SWIG has been released under a GNU General Public License.
Google Summer of Code (Гугл Лето кода)
SWIG был успешным участником Google Summer of Code в 2008, 2009 и 2012 годах. В 2008 году SWIG получил четыре места. Хаою Бай работал над Python 3.0 бэкендом SWIG летом, Ян Джезабек занимался поддержкой генерации COM-обёрток, Шерил Фоил работала над комментарием "Переводчик" для SWIG, а Мацей Друал – над C бэкендом. В 2009 году SWIG снова участвовал в Google Summer of Code. В этот раз в программе участвовали четыре студента. Баозенг Дин работал над модулем Scilab, Матевз Джековец – над функциями C++0x, Ашиш Шарма провёл лето, работая над модулем Objective C, а Миклош Вайна – над PHP-директорами. В 2012 году SWIG участвовал в Google Summer of Code. В этот раз четыре из пяти студентов успешно завершили свои проекты. Лейф Мидделсхулте работал над модулем целевого языка C, Свати Шарма улучшила модуль Objective C, Неха Наранг добавила новый модуль для JavaScript, а Дмитрий Кабак занимался документацией исходного кода и комментариями Doxygen.
SWIG was a successful participant of Google Summer of Code in 2008, 2009, 2012. In 2008, SWIG got four slots. Haoyu Bai spent his summers on SWIG's Python 3.0 Backend, Jan Jezabek worked on Support for generating COM wrappers, Cheryl Foil spent her time on Comment 'Translator' for SWIG, and Maciej Drwal worked on a C backend. In 2009, SWIG again participated in Google Summer of Code. This time four students participated. Baozeng Ding worked on a Scilab module. Matevz Jekovec spent time on C++0x features. Ashish Sharma spent his summer on an Objective C module, Miklos Vajna spent his time on PHP directors. In 2012, SWIG participated in Google Summer of Code. This time four out of five students successfully completed the project. Leif Middelschulte worked on a C target language module. Swati Sharma enhanced the Objective C module. Neha Narang added the new module on JavaScript. Dmitry Kabak worked on source code documentation and Doxygen comments.
Альтернативы
Для Python аналогичную функциональность предоставляют SIP, Pybind11 и библиотека Boost.python из Boost.
For Python, similar functionality is offered by SIP, Pybind11, and Boost's Boost. python library.