Fabio Mascarenhas de Queiroz. Optimized Compilation of a Dynamic Language to a Managed Runtime Environment TESE DE DOUTORADO

Documentos relacionados
Measurable Cardinals and Relative Consistency Proofs in Set Theory

Pedro Paiva Zühlke d Oliveira

DEPARTAMENTO DE INFORMÁTICA

Collusion in Auctions on the Absence of Public Information

Artur Manoel Passos. Essays in Portfolio Management and Stocks Return Forecasting. M.A. Dissertation

Typed Lua: An Optional Type System for Lua

Baaba Abassawah Ghansah. Population Dynamics. Dissertação de Mestrado

Eveline Russo Sacramento. An Approach for Dealing with Inconsistencies in Data Mashups CTC TESE DE DOUTORADO. Programa de Pós-Graduação em Informática

Marlene Isabel Silva Marchena. Measuring and Implementing the Bullwhip Effect in Supply Chains. Tese de Doutorado

Rodrigo Rodrigues Adão. Household Income and Strategic Default Decision in the Subprime Crisis. Dissertação de Mestrado

Bruno Loureiro Rezende. Um Framework para a Automação de Testes com Linguagens de Especificação Configuráveis DISSERTAÇÃO DE MESTRADO

Renato Figueiró Maia. Um Framework para Sistemas Baseados em Componentes Distribuídos. Informática DEPARTAMENTO DE INFORMÁTICA

An Environment for Integrating Bibliographical Data based on Mediators

Sérgio Queiroz de Medeiros. Correspondência entre PEGs e Classes de Gramáticas Livres de Contexto. Tese de Doutorado

JOSÉ RICARDO SANCHEZ FILHO ANALYSIS OF THE LONG-TERM EFFECTS OF THE VOLUNTARY OFFER OF THE BID RULE ON STOCKS LISTED IN THE BRAZILIAN STOCK EXCHANGE

João Paulo Cordeiro de Noronha Pessoa. Flex Cars and the Competitive Effect on Ethanol and Gasoline Retail Markets

Adriano Francisco Branco. Um modelo de programação para RSSF com. Dissertação de Mestrado

Finalizadores e Ciclos em Tabelas Fracas

Guilherme Frederico Lima de Carvalho e Silva

Um Estudo Sobre Middlewares Adaptáveis

Iam Vita Jabour. O Impacto de Atributos Estruturais na Identificação de Tabelas e Listas em Documentos HTML. Dissertação de Mestrado

Bruno Siqueira Silva. Workflows dinâmicos em gerência de projetos ágeis. Dissertação de Mestrado

Elicitação de requisitos de software através da utilização de questionários

João Paulo de Freitas Araujo. Algoritmos para acelerar a computação de Árvores de corte de Gomory e Hu. Dissertação de Mestrado

Guilherme Finkelfarb Lichand. Courts, Contract Enforcement, and Entrepreneurship. Dissertação de Mestrado

Improved Approximations for the k-hotlink Assignment Problem and for Binary Searching in Trees

Criação Automática de Visões Materializadas em SGBDs Relacionais

Leonardo Sant Anna Antunes Maciel. Um Estudo sobre Instrumentação da Máquina Virtual de Lua para Análise de Desempenho. Dissertação de Mestrado

A Graph Based Theorem Proving Platform with Strategies

Lourival Vieira Neto. Lunatik: Scripting de Kernel de Sistema Operacional com Lua. Dissertação de Mestrado

Parallel Algorithms for Multicore Game Engines

Alexander Arturo Mera Caraballo. Publishing Annotated Multimedia Deep Web Data DISSERTAÇÃO DE MESTRADO

CIS 500 Software Foundations Fall September(continued) IS 500, 8 September(continued) 1

Adriano Medeiros dos Santos. Suporte a Componentes Compostos Para o Middleware SCS. Dissertação de Mestrado

Controle da Execução e Disponibilização de Dados para Aplicativos sobre Seqüências Biológicas: o Caso BLAST

Stochastic Programming with Endogenous Uncertainty: An Application in Humanitarian Logistics

Bruno Lopes Vieira. Extending Propositional Dynamic Logic for Petri Nets. Tese de Doutorado

Relação entre Governança Corporativa e Remuneração de Executivos no Brasil

Bruno de Figueiredo Melo e Souza. Modelos de fatoração matricial para recomendação de vídeos. Dissertação de Mestrado

Alessandro Cavalcante Gurgel. Blending and Reusing Rules for Architectural Degradation Prevention DISSERTAÇÃO DE MESTRADO

Favoritism and Informational Effects in Public Procurement Auctions

Livro do Desassossego

Proposta de um sistema de suporte à decisão para programação de navios baseado em otimização: um caso prático

Gerenciando Conflitos em Reuniões: Uma Estratégia para a Elicitação de Requisitos de Software

Geração semi-automática de massas de testes funcionais a partir da composição de casos de uso e tabelas de decisão

Sistema para Consultas sobre Banco de Dados Relacional Baseado em Palavras-Chave

Apêndice 1 Pedido de autorização das escalas que englobaram o protocolo. Pedido de autorização da Cognitive Test Anxiety Scale CTAR25

Gabriela Fagundes Dunhofer. A Origem da Obra de Arte. Heidegger e a crítica da representação. Dissertação de Mestrado

Felipe Nogueira Barbara de Oliveira. Aplicação Adaptativa de Guia Eletrônico utilizando o Ginga-NCL. Dissertação de Mestrado

Imagens do brasileiro construídas pelo estrangeiro: dos estereótipos nas expressões qualificativas

Davi Romero de Vasconcelos. Análise de Estratégias Utilizando Verificação Formal de Modelos. Dissertação de Mestrado

Dárlinton Barbosa Feres Carvalho. Combining a process and tools to support the analysis of online communities applied to healthcare TESE DE DOUTORADO

Medicina Integrativa - A Cura pelo Equilíbrio (Portuguese Edition)

Imigração Estudar. Estudar - Universidade. I would like to enroll at a university. Dizer que você quer se matricular

Variable selection for linear and smooth transition models via LASSO: comparisons, applications and new methodology

DEPARTAMENTO DE INFORMÁTICA

Cálculo de seqüentes de sucedente múltiplo para lógica intuicionista de primeira ordem

CLEIDE MÉRCIA SOARES DA SILVA PEREIRA

COLÉGIO SHALOM Ensino Fundamental 7º Ano Profª: Ludmilla Vilas Boas Disciplina: Inglês. Estudante:. No. "Foco, Força e Fé

Imigração Estudar. Estudar - Universidade. Dizer que você quer se matricular. I want to apply for course.

Tese / Thesis Work Análise de desempenho de sistemas distribuídos de grande porte na plataforma Java

Victor Pantoja. Um Framework para Integração entre Aplicações Móveis e Redes Sociais. Dissertação de Mestrado

UERJ Programa de Pós-graduação em Engenharia Mecânica (PPGEM) Seminary Class

Aplicação da Análise de Sistemas à Definição de Processos de Desenvolvimento de Software

Framework.NET. Linguagem de Programação III. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento Acadêmico de Informática Campus Monte Castelo

Conceitos de Linguagens de Programação (Portuguese Edition)

BR localization: Hotfix 109. Technical documentation Documentação Técnica Version Oct 23, de outubro de 2018

Geraldo da Silva Rocha Netto. Escalonamento Flexível de Workflows com Restrições Temporais. Dissertação de Mestrado

Compras de itens não críticos: implementação no nível operacional e práticas em uma empresa de petróleo

Registration of dissertations theme and mentor Enrollment on the Master s

Introdução A Delphi Com Banco De Dados Firebird (Portuguese Edition)

Vinícius Garcia de Freitas Pacheco. O letramento funcional e linguagem das embalagens de óleos lubrificantes. Dissertação de Mestrado

Aprendizado de Máquina para o Problema de Sentiment Classification

Os desafios de interface e de interação na computação ciente de contexto

CARLA DANIELA CABRAL DIAS. A utilização das ferramentas informáticas de apoio à auditoria interna nas empresas portuguesas

Heidegger e a relação homem-técnica-natureza na crise ambiental contemporânea

Marcos Borges Pessoa. Geração e execução automática de scripts de teste para aplicações web a partir de casos de uso direcionados por comportamento

Sofia Ribeiro Manso de Abreu e Silva. Catalogue of Linked Data Cube Descriptions. Dissertação de Mestrado

Francisco Benjamim Filho. XHITS: Estendendo o Algoritmo HITS para Extração de Tópicos na WWW DISSERTAÇÃO DE MESTRADO

Marcelo Gomes Metello. Process-Oriented Modeling and Simulation for Serious Games TESE DE DOUTORADO

Deployment of Distributed Component-based Applications on Cloud Infrastructures

PROJETO DE INTERFACES PARA ÁLGEBRA DE MAPAS EM GEOPROCESSAMENTO NO AMBIENTE SPRING

Conversação Para Viagem - Inglês (Michaelis Tour) (Portuguese Edition)

Análise da satisfação dos clientes de serviços de cabotagem no Brasil: Um estudo de caso

Marcelo de Mattos Bezerra. Interações no Ensino e na Prática do Design e da Arquitetura. Dissertação de Mestrado

Como Falar no Rádio - Prática de Locução Am e Fm (Portuguese Edition)

As 100 melhores piadas de todos os tempos (Portuguese Edition)

Re-engenharia do software C&L para plataforma Lua-Kepler utilizando princípios de transparência

Avaliação Preliminar dos Movimentos Aéreos no Aeroporto Internacional Antônio Carlos Jobim Galeão

Ivan Luiz Gonçalves Pinto. O Progresso da Ciência e o Anarquismo Epistemológico de Karl Paul Feyerabend

Tânia Cristina Soeiro Simões O uso das preposições locais no processo de aquisição formal da língua alemã como segunda língua

Editorial Review. Users Review

PRINT HYPERMEDIA PRESENTATION OF CINEMORPHICS, SELF SHIFTING AND META- IDENTITY. Charles Webb*

Célia Antunes Barroca. Subsídios do Governo no âmbito do SNC NCRF 22. Universidade de Aveiro Ano 2011

LDC Mediator: A Mediator for Linked Data Cubes

Pedro Tiago Barbosa do Couto. Resolução de problemas de transporte rodoviário de cargas utilizando programação inteira DISSERTAÇÃO DE MESTRADO

Minimização de custos de produção via programação inteira mista: estudo de caso de planejamento de produção de luminárias

O LIVRO DE URANTIA PDF

Memes: Conceito de Conteúdo de Informação Como Alternativa de Pesquisa de Posicionamento de Marca

Uma Proposta de Sistema de Dependência a Distância Usando a Plataforma Moodle

Transcrição:

Fabio Mascarenhas de Queiroz Optimized Compilation of a Dynamic Language to a Managed Runtime Environment TESE DE DOUTORADO DEPARTMENTO DE INFORMÁTICA Postgraduate Program in Informatics Rio de Janeiro September 2009

Fabio Mascarenhas de Queiroz Optimized Compilation of a Dynamic Language to a Managed Runtime Environment TESE DE DOUTORADO Dissertation presented to the Postgraduate Program in Informatics of the Departamento de Informática, PUC Rio as partial fulfillment of the requirements for the degree of Doutor em Informática Advisor: Prof. Roberto Ierusalimschy Rio de Janeiro September 2009

Fabio Mascarenhas de Queiroz Optimized Compilation of a Dynamic Language to a Managed Runtime Environment Dissertation presented to the Postgraduate Program in Informatics of the Departamento de Informática, PUC Rio as partial fulfillment of the requirements for the degree of Doutor em Informática. Approved by the following commission: Prof. Roberto Ierusalimschy Advisor Departmento de Informática PUC Rio Prof. Noemi de La Rocque Rodriguez Departamento de Informática PUC Rio Prof. Edward Hermann Haeusler Departamento de Informática PUC Rio Prof. Sandro Rigo Instituto de Computação UNICAMP Prof. Claudio Luis de Amorim COPPE UFRJ Prof. José Eugenio Leal Head of the Science and Engineering Center PUC Rio Rio de Janeiro September 4, 2009

All rights reserved. Fabio Mascarenhas de Queiroz Fabio Mascarenhas de Queiroz graduated from the Universidade Federal da Bahia (Salvador, Bahia) in Computer Science. He then obtained a Master degree at PUC Rio in programming languages, and has now finished his Ph. D. at PUC Rio, also in programming languages. Queiroz, Fabio Mascarenhas de Bibliographic data Optimized Compilation of a Dynamic Language to a Managed Runtime Environment / Fabio Mascarenhas de Queiroz; advisor: Roberto Ierusalimschy. Rio de Janeiro : PUC Rio, Departamento de Informática, 2009. v., 97 f: il. ; 29,7 cm 1. Tese de Doutorado - Pontifícia Universidade Católica do Rio de Janeiro, Departamento de Informática. Inclui bibliografia. 1. Informática Dissertação. 2. Linguagens de Programação. 3. Compiladores. 4. Inferência de Tipos. 5. Ambientes de Execução Gerenciada. 6. Desempenho. 7. Linguagens Dinâmicas. 8. Lua. I. Ierusalimschy, Roberto. II. Pontifícia Universidade Católica do Rio de Janeiro. Departamento de Informática. III. Título. CDD: 004

Acknowledgments I would like to thank my advisor, Professor Roberto Ierusalimschy, for his advice and insights in crucial moments of this work, and for the many intellectually stimulating, and entertaining, conversations that we had through these almost seven years that I have been his student, both Master s and Ph. D. s. I also would like to thank my friends and colleagues at Lablua, Sérgio Medeiros and Hisham Muhammad, for providing a productive and fun work environment. I also thank my friends, my family, and specially Cristina, for the constant encouragement, prodding, and for enduring me in when I was my most stressed and least social. Finally, I would like ot thank CNPq and FAPERJ for their financial support in respectively the first and second half of my doctorate, without which this work could not have been done.

Abstract Queiroz, Fabio Mascarenhas de; Ierusalimschy, Roberto. Optimized Compilation of a Dynamic Language to a Managed Runtime Environment. Rio de Janeiro, 2009. 97p. Tese de Doutorado Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro. Managed runtime environments have become popular targets for compilers of high-level programming languages. They provide a high-level type system with enforced runtime safety, as well as facilities such as garbage collection, possibly sandboxed access to services of the underlying platform, multithreading, and a rich library of data structures and algorithms. But managed runtime environments lack a clear performance model, which hinders attempts at optimizing the compilation of any language that does not have a direct mapping to the runtime environments semantics. This is aggravated if the language is dynamically typed. We assert that it is possible to build a compiler for a dynamic language that targets a managed runtime environment so that it rivals a compiler that targets machine code directly in efficiency of the code it generates. This dissertation presents such a compiler, describing the optimizations that were needed to build it, and benchmarks that validate these optimizations. Our optimizations do not depend on runtime code generation, only on information that is statically available from the source program. We use a novel type inference analysis to increase the amount of information available. Keywords Programming Languages. Compilers. Type Inference. Managed Runtime Environments. Benchmarking. Dynamic Languages. Common Language Runtime. Lua.

Resumo Queiroz, Fabio Mascarenhas de; Ierusalimschy, Roberto. Compilação Otimizada de uma Linguagem Dinâmica para um Ambiente de Execução Gerenciada. Rio de Janeiro, 2009. 97p. Tese de Doutorado Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro. Ambientes de Execução Gerenciada tornaram-se alvos populares para compiladores de linguagens de programação de alto nível. Eles provêem um sistema tipos de alto nível com segurança de memória garantida, assim como facilidades como coleta de lixo, acesso a serviços da plataforma subjacente (possivelmente através de uma sandbox), multithreading, e uma rica biblioteca de estruturas de dados e algorithmos, mas não possuem um modelo de desempenho claro, o que atrapalha tentativas de otimização de qualquer linguagem que não tenha um mapeamento direto na semântica do ambiente de execução, especialmente se a linguagem é dinamicamente tipada. Nós afirmamos que é possível construir um compilador para uma linguagem dinâmica que tem como alvo um ambiente de execução gerenciada que rivaliza um compilador que tem como alvo linguagem de máquina na eficiência do código que ele gera. Essa tese apresenta um compilador com tal característica, descrevendo as otimizações necessárias para sua construção, e testes de desempenho que validam essas otimizações. Nossas otimizações não dependem de geração de código em tempo de execução, apenas em informação estaticamente disponível no código fonte. Nós usamos uma nova análise de inferência de tipos para aumentar a quantidade de informação disponível. Palavras chave Linguagens de Programação. Compiladores. Inferência de Tipos. Ambientes de Execução Gerenciada. Desempenho. Linguagens Dinâmicas. Lua.

Contents 1 Introduction 10 1.1 A Lua Primer 13 1.2 The Common Language Runtime 15 2 Naive Compilation 17 2.1 Basic Compiler 18 2.2 Variations of the Basic Compiler 22 2.3 Related Work 27 3 Type Inference and Optimization 31 3.1 Type Inference For Lua 31 3.2 Compiling Types 55 3.3 Related Work 57 4 Benchmarks 62 4.1 Benchmark Programs 62 4.2 Benchmarking the Variations 64 4.3 Other Benchmarks 69 5 Conclusions 73 A Operational Semantics 83 A.1 Semantic Rules 83 B Typing Rules 89 C Collected Benchmark Results 95

List of Figures 3.1 Type Language 38 3.2 Coercion Relation 39 3.3 Abstract Syntax 41 4.1.NET 3.5 SP1 Comparison 65 4.2.NET 3.5 SP1 Comparison, Richards benchmarks 66 4.3.NET 4.0 Beta 1 Comparison 67 4.4.NET 4.0 Beta 1 Comparison, Richards benchmarks 68 4.5 Mono 2.4 Comparison 69 4.6 Mono 2.4 Comparison, Richards benchmarks 70 4.7 Comparison with Lua 5.1.4 71 4.8 Comparison with Lua 5.1.4, Richards benchmarks 72 4.9 Comparison with IronPython 72

List of Tables 2.1 Compiler names 18 4.1 First benchmark suite 63 4.2 Second benchmark suite 64 C.1 Benchmark running times for Mono 2.4, in seconds 95 C.2 Benchmark running times for.net 3.5 SP1, in seconds 96 C.3 Benchmark running times for.net 4.0 Beta 1, in seconds 96 C.4 Benchmark running times for Lua 5.1.4 and LuaJIT 1.1.5, in seconds 97 C.5 Benchmark running times for IronPython 2.0, in seconds 97