[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...
| Autor: | |
|---|---|
| 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 |
| 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. |
|---|