Miguel de Icaza anunciou o lançamento do Mono 3.0, que vem com melhorias como o Async para programação assíncrona, funcionalidade melhorada do SGen do coletor de lixo e uma API de Eval aperfeiçoada, além de compatibilidade com o .NET Framework 4.5.
O Mono 3.0 é uma atualização da versão 2.10 - a última versão estável do Mono. Algumas das novidades já tinham sido incluídas nas versões 2.11.x lançadas neste ano. As principais mudanças são:
- Compilador C# Async;
- Integração com diversos projetos open source da Microsoft como ASP.NET MVC 4, ASP.NET WebPages, Entity Framework, Razor e System.Json;
- O SGen Garbage Collector passa a ser o coletor de lixo padrão, com melhorias de desempenho e escalabilidade e melhor aproveitamento de hardware com múltiplos processadores e núcleos. O SGen também foi portado para Windows e MPIS;
- A API Eval() agora pode compilar tipos completos, ao invés de apenas expressões. O compilador como serviço (compiler-as-a-service) deixou de possuir escopo global e pode ser instanciado múltiplas vezes em escopos diferentes;
- Há diversas otimizações em tempo de execução para tipos, como ThreadLocal<T> e List<T>;
- Foram incluídos novos atributos para forçar o compilador a fazer in-lining, para aumento de desempenho;
- Há a possibilidade de compilação binária de 64 bits no MacOS (embora só exista suporte para distribuição em 32 bits);
- Melhorias no Soft Debugger para melhor desempenho com dispositivos conectados via USB;
- Inclusão do F# 3.0 com o Mono no OS X;
- A implementação do banco de dados SQLite do Mono passa a contar com suporte à API de criptografia do iOS. Também é possível alterar o modelo de threads através de configuração.
Pode-se ver mais detalhes sobre as mudanças nas notas de lançamento.
Miguel de Icaza afirma que todas as melhorias serão implementadas futuramente também no MonoTouch e Mono para Android. E o mantenedor do Mono indica que o time do projeto está trabalhando para reduzir a duração de ciclos de lançamento. Desse modo, mudanças maiores serão feitas em um ramo (branch) separado e depois migradas para o ramo principal. O objetivo dessa iniciativa é manter o ramo principal o mais estável possível.
Um dos principais pontos levantados por desenvolvedores que utilizam o Mono é a falta de um construtor de interfaces multiplataforma. O time, no momento, recomenda a construção de interfaces nativas para cada plataforma, utilizando um conjunto de funcionalidades compartilhadas. Uma sugestão do próprio Miguel de Icaza é a utilização de GTK#, ou o Qt com mapeamento Qyoto para C#, ou ainda um novo conjunto de ferramentas chamado Xwt.
Estão disponíveis binários (3.0.2 beta) para Windows, OS X e OpenSUSE. P0de-se também efetuar o build a partir do código-fonte.