Европейская служба внешних связей
- 1 year ago
- 0
- 0
Интерфейс внешних функций ( англ. Foreign Function Interface, FFI ) — это механизм, с помощью которого программа, написанная на одном языке программирования , может вызывать подпрограммы или использовать услуги, написанные или скомпилированные на другом языке. FFI часто используется в контекстах, где производятся вызовы из бинарной динамически подключаемой библиотеки .
Термин происходит из спецификации для Common Lisp , которая явно ссылается на функцию языка программирования, позволяющую производить вызовы между языками как таковые [ источник не указан 190 дней ] ; этот термин также часто официально используется в документации интерпретатора и компилятора Haskell , Rust , Python , OCaml и LuaJIT (Lua) . Другие языки используют другую терминологию: в документации по языку программирования Ада говорится о « », в то время как Java называет свой интерфейс Java Native Interface или . Интерфейс внешней функции стал общим термином для механизмов, предоставляющих такие услуги.
Связывание одного программного языка с другим является непростой задачей. Язык, для которого создаётся интерфейс к другому языку, должен разбираться в соглашениях вызова, системе типов , структурах данных , механизмах выделения памяти и методов линковки языка-цели для корректной работы. Требуется тщательно согласовать семантику обоих языков, чтобы они могли корректно понимать передаваемые между ними данные.
Кроме того, добавление FFI к типобезопасному языку потенциально расширяет набор операций, которые могут нарушить безопасность тонкими и сложными для обнаружения способами.