Внешний функциональный интерфейс
-
Определение и использование FFI
- FFI (Foreign Function Interface) — это интерфейс для вызова функций из кода, написанного на другом языке.
- FFI позволяет вызывать функции из кода, скомпилированного на языке более низкого уровня, таком как C, из кода на языке более высокого уровня, например, Python.
- FFI может использоваться для доступа к системным функциям или для оптимизации производительности.
-
Примеры FFI
- Ada имеет привязки для вызова внешних функций и экспорта собственных функций.
- GNOME использует GObject для самоанализа объектов.
- Chromium использует компилятор IDL для стандартных интерфейсов JavaScript.
- Clean предоставляет двунаправленный FFI для многих языков.
- D, Dart, Factor, Go, GWT, LuaJIT, Nim, Node.js, Deno, Bun, Julia, PhoneGap, PHP, Python, Racket, Raku, Ruby, SWIG, Wolfram Language, Zig и Zig предоставляют FFI для различных языков.
-
Ограничения и особенности FFI
- Некоторые FFI ограничены автономными функциями, в то время как другие поддерживают вызовы методов.
- FFI часто определяются языком более высокого уровня и могут использовать службы, определенные на языке более низкого уровня.
- Некоторые FFI предоставляют средства для вызываемого языка для вызова служб на языке хостинга.
-
Особые случаи и рекомендации
- Некоторые языки компилируются в одну и ту же виртуальную машину, что не является строго FFI, но предлагает аналогичную функциональность.
- Существуют рекомендации и спецификации для различных FFI, включая JNI, JSNI и другие.