Plataforma .NET no ReactOS com o Mono

Ontem foi liberada a versão 2.8 do projeto Mono, que tem como novidade o suporte a plataforma .NET 4.0, assim como suporte a especificação da linguagem de programação C# 4.0. Para maiores informações confirma as notas da versão do Mono 2.8.

Isso me animou a testar novamente o Mono no ReactOS, torcendo para que quem sabe ele funcionasse. Depois de recompilar a última versão de desenvolvimento do ReactOS e instalar o Mono, minha primeira reação foi decepcionante, ao executar o simples comando mono –version não funcionou, a mensagem “Weird VirtualQuery result” era apresentada e o programa morria.

No entanto não me dei por vencido e resolvi vasculhar no código fonte do Mono em busca alguma pista sobre esse problema. Apesar de ter encontrado essa mensagem em 5 locais diferentes, como por exemplo nessa linha de código, era obvio que o problema não era no Mono, mas assim mesmo serviu como base para depurar o ReactOS.

Assim sendo, fui em buscas de respostas no código fonte do ReactOS. Depois de um bom tempo brigando com a ferramenta de depuração consegui chegar em algum lugar próximo da origem do problema. Embora não tenha conseguido detectar o local exato, durante os testes percebi que em modo de depuração de certa forma conseguia contornar o problema, que possivelmente está relacionada com algum tipo de timing. Foi ai então que ao invés de tentar descobrir o problema resolvi simplesmente ignorar ele e continuar com a execução do programa para ver até onde iria chegar, o que para minha surpresa chegou ao fim normal da execuçã0, ou seja, o comando mono –version efetivamente finalizou exibindo a sua versão.

A partir dai, o próximo passo seria ver se conseguiria chegar mais longe. Então rapidamente escrevi um clássico programa “Alô Mundo” em C# e experimentei compilar. Novamente, para minha surpresa o programa foi compilado com sucesso. A partir daí foi só alegria, pois não só como consegui executar esse simples programa, como também experimentei coisas um pouco mais complexas, até mesmo uma aplicação com Windows.Forms. Embora essa última tenha executada, ela apresentou alguns problemas gráficos, no entanto a lógica do programa permaneceu intacta.

Apesar de ter conseguido executar uma aplicação escrita para a Plataforma .NET com o mono somente em modo de depuração no ReactOS, nota-se que apesar dele ainda estar em estágio alpha, ficou demonstrado o quanto evoluiu nos últimos tempos e o quanto de potencial ele tem ainda por demonstrar. É sem dúvida uma grande notícia para aqueles que depositam suas esperanças em ver um sistema operacional livre e de código aberto binariamente compatível com a plataforma NT.

Esse é o mundo do software livre, é o mundo onde são apresentadas opções e somos livres para escolher o que utilizar sem termos que pagar (caro) por isso.

Nota: Para quem quiser reproduzir essa experiência, é relativamente simples. Após a instalação do Mono, reinicie o ReactOS em modo de depuração e abra o prompt de comando do Mono e pressione TAB+K, isso irá ativar console de depuração do Kernel, em seguida digite “set condition * first always” e depois “cont”, com isso o sistema voltará a funcionar. Execute “mono –version”, o sistema irá voltar ao modo de depuração, continue digitando “cont” até ignorar todos os erros de execução e voilà.

Anúncios
Esse post foi publicado em ReactOS e marcado . Guardar link permanente.

4 respostas para Plataforma .NET no ReactOS com o Mono

  1. Tomas disse:

    Pergunta meio boba, mas tu reporta essas tuas experiencias pro projeto ReactOS??

  2. Já está na 0.3.1.5 (estável). E rodando Office 2003!

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s