XS- это Perl интерфейс внешней функции, через который программа может вызывать подпрограмму C или C++ . XS или xsub - это сокращение от «eXternal Subroutine», где внешний относится к языкам программирования, внешним по отношению к Perl.
XS также относится к связующему языку для определения вызывающих интерфейсов, поддерживающих такие интерфейсы (см. Ниже).
Библиотеки подпрограмм в Perl называются модулями, а модули, содержащие xsub, называются модулями XS. Perl предоставляет основу для разработки, упаковки, распространения и установки модулей.
Может быть желательно, чтобы программа Perl вызывала подпрограмму C для обработки очень CPU или задач, интенсивно использующих память, для взаимодействия с оборудованием или низкоуровневые системные средства, или использовать существующие библиотеки подпрограмм C.
Интерпретатор Perl - это программа на C, поэтому в принципе нет препятствий для вызова из Perl в C. Однако интерфейс XS сложен и очень технический, и его использование требует некоторого понимания интерпретатора. Самой ранней ссылкой на эту тему была perlguts POD.
. Можно писать модули XS, которые обертывают C ++ код. Это в основном вопрос настройки модуля build system.
Для создания XS-модуля сначала используется пустой модуль. Затем добавляются подпрограммы C, и вызывающие интерфейсы для подпрограмм C указываются на специальном связующем языке. Наконец, модуль скомпилирован, протестирован и установлен с помощью make.
После установки модуля XS его можно загрузить в программу Perl с помощью оператора use, как обычный Модуль Perl. После загрузки модуля подпрограммы C могут быть вызваны из кода Perl, как если бы они были написаны на Perl.
XS-модули сложно писать и поддерживать, и они могут быть установлены только в том случае, если компилятор C и файлы заголовков, которые Интерпретатор Perl был скомпилирован. Кроме того, новые версии Perl могут нарушить двоичную совместимость, требуя перекомпиляции модулей XS.