Return to search

[en] A FOREIGN FUNCTION INTERFACE FOR PALLENE / [pt] UMA INTERFACE DE FUNÇÕES EXTERNAS PARA PALLENE

[pt] Pallene é um subconjunto estaticamente tipado da linguagem de programação
Lua, projetada para atuar como uma linguagem de sistemas em
contraparte ao scripting de Lua, e usada para escrever bibliotecas de baixo
nível e módulos de extensão para Lua. Nesse sentido, Pallene é uma linguagem
companheira, usada sempre lado a lado com Lua, compartilhando seu runtime.
Pallene, tanto como uma linguagem de sistema em contraparte a Lua e
como uma ponte entre Lua e outras linguagens, deve fornecer um mecanismo
de interação com bibliotecas e serviços de sistema escritos em uma linguagem
de baixo nível como C. Para este fim, apresentamos um design e implementação
de Interface de Função Estrangeira (IFE) para Pallene, que permite chamar
funções externas que seguem as convenções de chamada C, e manipular
representações de dados C diretamente.
Nosso design equilibra flexibilidade e segurança seguindo uma abordagem
empírica, em que preferimos sacrificar flexibilidade hipotética a menos que
vejamos um caso de uso que nos faça comprometer em segurança. Nossa
implementação tem como objetivo ser tão portátil quanto o Pallene, além de
ter um bom desempenho e ser simples. Uma vez que a implementação de
Pallene já depende de um compilador de C, a nossa IFE usa agressivamente o
compilador de C já disponível para sua vantagem. Dessa forma, podemos usar
diretamente os arquivos de cabeçalho de bibliotecas externas, permitindo que
a IFE verifique a exatidão das ligações de função externa e que use macros de
C. / [en] Pallene is a statically typed subset of the Lua programming language, designed to act as a system-language counterpart to Lua’s scripting, and used to write lower-level libraries and extension modules for Lua. In this sense, Pallene is a companion language, always intended to be used side-by-side with
Lua, sharing its runtime. Pallene, both as a system-language counterpart to Lua and as a bridge between Lua and foreign languages, must provide a mechanism to interact with libraries and system services written in a low-level language like C. To this end, we present a Foreign Function Interface (FFI) design and implementation for Pallene, which allows for calling external functions that follow C calling conventions and manipulating C data representations directly. Our design balances flexibility and safety following an empirical approach, wherein we prefer to sacrifice hypothetical flexibility unless we see a
real use case that forces us to compromise on safety. Our implementation aims to be as portable as Pallene, as well as performant and simple. Since Pallene s implementation already depends on a C compiler, the FFI aggressively uses the already available C compiler to its advantage. This way, we can directly use foreign libraries header files, enabling the FFI to verify the correctness of function bindings and to use macro definitions.

Identiferoai:union.ndltd.org:puc-rio.br/oai:MAXWELL.puc-rio.br:56519
Date10 December 2021
CreatorsGABRIEL COUTINHO DE PAULA
ContributorsROBERTO IERUSALIMSCHY
PublisherMAXWELL
Source SetsPUC Rio
LanguageEnglish
Detected LanguagePortuguese
TypeTEXTO

Page generated in 0.0022 seconds