[en] A FOREIGN FUNCTION INTERFACE FOR 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 companhe...

Descripción completa

Detalles Bibliográficos
Autor: GABRIEL COUTINHO DE PAULA
Tipo de recurso: tesis doctoral
Estado:Versión publicada
Fecha de publicación:2021
País:Brasil
Institución:Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)
Repositorio:Repositório Institucional da PUC-RIO (Projeto Maxwell)
Idioma:inglés
OAI Identifier:oai:MAXWELL.puc-rio.br:56519
Acceso en línea:https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=56519&idi=1
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=56519&idi=2
http://doi.org/10.17771/PUCRio.acad.56519
Access Level:acceso abierto
Palabra clave:[pt] COMPILADORES
[pt] INTERFACE DE FUNCAO EXTERNA
[pt] LUA
[en] COMPILERS
[en] FOREIGN FUNCTION INTERFACE
[en] LUA
Descripción
Sumario:[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.