This page is likely outdated. Visit the new documentation for updated content.

Projetos correntes para o ambiente de execução do Mono

Acompanhamento dos projetos da equipe da VM.

Projetos em Andamento

Soft Debugger

O Soft Debugger é uma nova tecnologia de depuração, usado principalmente pelo Mono no iPhone.

Compactação do GC

Trabalho no Coletor de Lixo Geracional.

Nosso plano atual é:

  • Complete the GC in single-threaded mode.
  • Ativar o novo GC no git.
  • Depurar/corrigir quaisquer problemas com o GC.
  • Implementar uma versão multi-thread do coletor principal.

Líder: Paolo

LLVM como um Backend de Geração de Código

Utilizar o código LLVM otimizado como um backend para o JIT do Mono. Para mais informação veja o Mono LLVM page.

Líder: Zoltan

Correções na Introspecção

Suporte para tipos definidos pelo usuário (utilizado pelo PostSharp e outras ferramentas similares).

Esta é uma tarefa que consome muito tempo, pois requer testar todos os pontos de entrada na corlib que aceitam os tipos System.Type ou System.Reflection.*.

Continuações

Suporte para Continuações existe nas versões do Mono após a 2.6.

Correções do Reflection.Emit

Corrigir execução do código SRE (utilizado pelo F# e shells Boo interativos e DLR em modo de depuração).

Esta é uma série de pequenas tarefas:

  • Terminar o levantamento das instanciações genéricas para o código gerenciado. Ainda nos falto o método genérico inflado e o método genérico inflado sobre o tipo genérico inflado.

  • Remover a instalação de dois estágios do MonoClass. Esta etapa é um pouco mais complicada e levará à diversas mudanças internas ao código de reflexão no ambiente de execução.

  • Revisar todo o código no ambiente de execução que faz suposições sobre os objetos SRE, isso deve levar a uma série de simplicação e correção de erros de longa data.

Líder: ?

Correções do Ambiente de Execução

Corrigir suporte à chamada de cauda para F#.

Adicionar suporte à variância genérica (requerido pelo C# 4.0). Este é um projeto de baixa prioridade, uma vez que apenas será lançado em 2010.

Segurança: Moonlight

  • Validação de metadados.
  • Auditoria do código System.Reflection.Emit.
  • Validação IL.
  • Sistema de segurança CoreCLR.

Performance

Métodos sem “quadro de pilha” em x86

Em x86 podemos evitar o uso do ponteiro para quadro de pilha (FP - Frame Pointer) e ganhar um registro extra.

Líder: Mark Probst

Melhorias no código genérico

O código IL do código genérico é um pouco diferente do código usual e o JIT atual não consegue tratá-lo adequadamente.

Áreas onde pode-se melhorar:

  • Evitar LDADDR para chamadas restritas sobre tipos de referência.
  • Gerar código intrínsico (otimizado) e remover o “envelopamento” (boxing) de métodos em System.Object sobre tipos primitivos. Isso é importante para fazer as coleções genéricas produzirem código muito próximo do escrito manualmente.

Porte para Consoles de Jogos

Trabalhar para portar e dar suporte do Mono no Mono:Wii e no Mono:PlayStation3.

O porte para Wii está pronto; O porte para PlayStation3 está terminado, porém requer algum trabalho para empacotar e polir as arestas.

Características Inovadoras

  • Framework de Continuação do Paolo.

Mudanças na API

Como parte do Mono 2.8, estaremos quebrando a API embarcada para limpar muitos problemas que surgiram ao longo dos anos.

Você pode ler mais sobre eles na página Mudanças da API de Tempo de Execução do Mono.

Compilação entre Plataformas

Suporte para configurar o Mono para compilação cruzada. Inicialmente está OK para quando a origem e o destino possuem a mesma ordenação de bits (endianess) e o mesmo tamanho de ‘palavra’ (32/64 bits).

O cenário mais importante é quando a origem é um MacOS/Intel compilando para um destino iPhone/ARM.

Projetos de Baixa Prioridade

  • Mono.Simd para NEON (processadores ARM) e/ou VMX (processador de celular).
  • Ligação ao código C++ sem necessitar código intermediário em C.

Projetos Concluídos

  • Linear: Uma atualização para a representação interna (RI) do JIT.
  • JIT Regalloc: Um novo framework de alocação de registros.
  • SafeHandles: Suporte para SafeHandles 2.0.