[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.
Identifer | oai:union.ndltd.org:puc-rio.br/oai:MAXWELL.puc-rio.br:56519 |
Date | 10 December 2021 |
Creators | GABRIEL COUTINHO DE PAULA |
Contributors | ROBERTO IERUSALIMSCHY |
Publisher | MAXWELL |
Source Sets | PUC Rio |
Language | English |
Detected Language | Portuguese |
Type | TEXTO |
Page generated in 0.0022 seconds