O artigo Operational Semantics for Multi-Language Programs,
de Jacob Matthews e Robert Bruce Findler, apresenta duas abordagens para definir a semântica de programas escritos em duas linguagens de programação, cuidando particularmente dos dados definidos em uma língua e utilizados na outra. A incorporação global permite que os valores criados em um idioma apareçam no código em execução de outro, mas eles só podem ser transmitidos, não operados (ou talvez operados apenas por uma pequena interface). A incorporação naturais permite que os valores em uma língua para ser usado na outra através da realização de uma chamada fundido entre linguagens , o qual converte os valores a partir de uma língua para a outra.
O artigo JNI Light: Um Modelo Operacional para o Core JNI de Gang Tan apresenta uma semântica formal de como o JNI existente funciona. Em contraste com o artigo anterior, isso formaliza muitos dos detalhes de baixo nível do que está acontecendo, em vez de tentar explorar os problemas de uma perspectiva fundamental.
O trabalho de verificação de tipo de chamadas externas de função, como Verificação de segurança de tipo de chamadas externas de função de Michael Furr e Jeffrey Foster, também fornece uma estrutura formal para definir o sistema de tipos e provar sua integridade.
Examinar as referências nesses documentos e descobrir onde elas são citadas usando o google scholar ajudará você a descobrir uma imagem mais completa do que foi feito na área.
Embora muitos não estejam obviamente diretamente relacionados, uma coisa que vem à mente é o conceito de "culpa" de Wadler et al. . Isso fornece uma base teórica para pensar em misturar diferentes regimes de digitação em um todo coerente.
Em essência, a culpa permite combinar idiomas com garantias de tipo mais fraco com idiomas com garantias de tipo mais fortes sem perder todos os benefícios das garantias fortes. A idéia é que as partes do sistema com garantias mais fracas receberão a "culpa" se certas coisas derem errado, localizando erros do tipo runtime.
Espero que você possa ver como isso pode ser útil para FFI e ligações aplicáveis a idiomas com sistemas de tipos variados.
Edit: Veja a resposta de Sam TH para uma história intelectual mais completa do conceito de "culpa".
fonte