Futuro do ReactOS

Após uma reunião entre os principais membros do time de desenvolvimento do ReactOS que aconteceu na Suécia, o coordenador do projeto, Aleksey Bragin, postou um resumo interessante na lista de discussões. Além de dizer que o projeto nunca esteve em tão bom momento, um dos principais objetivos é determinar um nicho de mercado que o ReactOS deve dar prioridade. Dentre os temas sugeridos, o que aparentemente a tendência seria dar suporte a aplicações de servidor, como por exemplo, o subsistema de rede, suporte ao VNC/RDP, Apache, MySQL, PHP e etc.

Após longos anos de desenvolvimento, o ReactOS finalmente se aproxima de uma estabilidade tal que permitirá em breve trocar o status de Alpha para Beta, o que sem dúvida alguma ajudará a dar maior visibilidade a ele.

Publicado em ReactOS | 5 Comentários

Liberação da versão 0.3.12

Ontem foi liberada a versão 0.3.12 do ReactOS. Abaixo segue a nota de lançamento em tradução livre feita pelo do coordenador do projeto, Aleksey Bragin.

Esta é uma liberação enorme para a equipe, não apenas no que diz respeito ao número de melhorias, mas em termos de salto de arquitetura e estabilidade, trazendo alguns dos aspectos mais modernos do kernel do Windows NT para o ReactOS.

Foi quase um ano desde a última versão, e mesmo entendendo que isso possa ter sido excessivo, foi necessário para conseguir estabilizar o sistema operacional devido à natureza do trabalho que foi realizado. Desde o início deste lançamento o foco foi em uma única área, o mecanismo de tratamento de exceções, que resultou em uma reescrita completa da área. Isto trouxe consigo a necessidade de mais alterações que se transformaram em muitas áreas, recebendo uma revisão e muitas novas tecnologias sendo desenvolvidas e introduzidas no núcleo. O que daí resultou foi um núcleo muito mais moderno que contém um código significativamente menos rodado que o código substituído. Isto provocou uma grande fase de testes para trazer a estabilidade e compatibilidade a níveis superiores ao encontrado no código anterior.

Durante a elaboração desta versão, 259 bugs foram corrigidos, incluindo 61 regressões, alguns dos quais oriundos do ReactOS 0.3.7. Dez desses erros tinham mais de 3 anos, e o mais antigo, #969, 5 anos.

Uma lista muito reduzido de algumas das mudanças mais importantes que aconteceram no último ano é a seguinte:

  • Gerenciador de Memória – O gerenciador de memória continuou a ser alvo da equipe ARM, substituído peça-por-peça, mas continuando a manter o gerenciador de antigo. Embora a transição completa não tenha sido feita nesse lançamento, o que é óbvio são as melhorias na estabilidade, velocidade e compatibilidade deste novo modelo.
  • Suporte NMI – ReactOS agora pode lidar com NMIs com uma Tela Vermelha da Morte, útil para capturar erros de hardware detectados pela CPU ou barramentos. Além disso, suporte a callbacks NMI de terceiro foi implementado, que é útil para certos sistemas servidores. Finalmente, o suporte para gerar um despejo de memória durante um NMI foi parcialmente implementado, o que pode ajudar quando a máquina estiver congelada ou pendurada e um interruptor externo de despejo NMI está sendo utilizado.
  • Reescrita do Tratamento de Exceções – Quase todas as falhas da CPU, exceções, tratamentos, e o código de chamada do sistema está agora escrito em C ao invés de assembler. Muito código antigo ou obsoleto foram desativados, muitos caminhos de depuração pesados também foram desativados por padrão. Além disso, a portabilidade para x64 e ARM agora compartilham muito mais código. Finalmente, o código está muito mais limpo e pode tirar proveito das otimizações do compilador para gerar o melhor instrução possível para o processador em vez de escrever via assembler manualmente o que era específica apenas para determinados modelos de CPU. Estão em curso trabalhos para remover as rotinas em assembler restantes.
  • EMS – O Gerenciador de Sistema de Emergência (ou Headless) foi parcialmente implementado. Os parâmetros de inicialização documentadas pela Microsoft agora são suportados, e a saída de depuração agora é enviado para a porta serial como o esperado. O trabalho é contínuo para fornecer o EMS recursos de registro e para mover o depurador KDbg legados mais EMS. O driver SAC (Special Administration Console) está em curso de desenvolvimento para ajudar nessa área.
  • Compatibilidade PnP – Várias melhorias foram feitas para aumentar o suporte de hardware e suporte ao carregamento de drivers de terceiro.
  • Melhorias ACPI – A equipe ARM tem implementado os drivers básicos necessários para suporte a baterias e drivers de UPS/baterias de terceiro, incluindo suporte para a especificação ACPI de Bateria Composta. Este suporte não está habilitado nessa versão porque o ACPI está ainda em fase de desenvolvimento.
  • Novo controlador PCI-X – A equipe ARM vem lentamente trabalho no novo driver de barramento PCI. Anteriormente, o ReactOS estava usando um driver de barramento PCI muito simples e que praticamente não dava suporte as mais diversas combinações encontradas no mundo real. Com este novo driver, a compatibilidade com hardware real, e não apenas máquinas virtuais, deve melhorar significativamente, assim como o seu desempenho.
  • Suporte SxS – O suporte a código Side-by-Side foi adicionado, assim como o carregamento e procura de arquivos de manifesto. É um passo importante para a compatibilidade com aplicações modernas que utilizam esta tecnologia.
  • Correções da Corrupção do Pool – Talvez um dos bugs mais graves já econtrados foram corrigidos graças aos esforços combinados dos principais desenvolvedores do ReactOS utilizando métodos avançados, incluindo uma versão personalizada da máquina virtual QEMU.
  • Reescrita das rotinas de Timer e Mensagens – O manuseio incorreto de mensagens não  enfileirada que levava ao travamento de certas aplicações aplicações foi corrigido. A reescrita das rotinas de temporização também foram concluídas nesta versão, isso corrige muitos problemas relacionados ao cronômetro, a mais conhecida é a “necessidade de mover o mouse para fazer o download do Firefox”.
  • Compilação x64 – Enquanto a versão de 64 bits está ainda em fase inicial de desenvolvimento em relação ao funcionamento do kernel, a maioria dos problemas de compilação genéricos foram resolvidos e as funcionalidades básicas necessárias foram implementadas. Estes esforços já foram colocados na árvore principal de desenvolvimento, de modo que o trunk já pode ser compilado para x64. Com a ajuda de builds automáticos, quebras possíveis podem agora ser rapidamente detectadas e resolvidas. Mas não espere que o ambiente gráfico seja iniciado!

As notas de versão para 0.3.12 é foram feitas de uma forma diferentes das versões anteriores, com ênfase na transmissão de um resumo conciso e compreensível de importantes mudanças na liberação. Assim, em vez de duplicar esse resumo aqui, nós convidamos você a ler o seu conteúdo e ver o que foi realizado.

Embora a equipe do ReactOS tenha comparecido a vários eventos e conferências públicas em diversos países, nós tivemos uma baixa produção de notícias, o que possa fazer parecer como um patch quieto ou uma calmaria na atividade. No entanto esperamos que este lançamento sirva para mostrar que nos bastidores nós estivemos mais ocupado do que nunca.

Publicado em ReactOS | Marcado com | 2 Comentários

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à.

Publicado em ReactOS | Marcado com | 4 Comentários

Suporte Multilingue

Recentemente iniciei os trabalhos para tentar implementar no ReactOS o novo suporte a Interface de Usuário Multilingue (MUI) introduzido a partir do Windows Vista. Esse recurso permite que se desenvolvam aplicações multilíngues sem a necessidade de recompilar o código cada vez que uma novo idioma é adicionado.

Estou em fase bastante preliminar da implementação, basicamente tentando montar o quebra-cabeça de como o Windows trabalha. Assim que tiver mais informações darei mais detalhes.

Viste o Windows MUI Knowledge Center para obter maiores informações sobre esse recurso.

Publicado em ReactOS | Deixe um comentário

Liberação do ramo principal

Nesta quarta-feira, Aleksey Bragin criou o ramo 0.3.12 do ReactOS, permitindo que o ramo principal fosse novamente liberado para todos os desenvolvedores. O ramo principal estava trancado para a maioria dos desenvolvedores devido ao grande número de regressões geradas recentemente.

Isso também significa que está cada vez mais próxima a liberação da versão 0.3.12 do ReactOS. Você pode conferir uma listagem preliminar da extensa notas da versão aqui.

Publicado em ReactOS | Marcado com | Deixe um comentário

Preparativos para a Versão 0.3.12

Nesta semana, Aleksey Bragin – coordenador geral do projeto ReactOS – sinalizou na lista de discussão ros-dev, que nos próximos dias o ramo 0.3.12 será criado para liberação. Isto se deve principalmente ao fato de que o ramo principal de desenvolvimento está trancado para que se possa efetuar as correções das regressões.

Já faz algum tempo que o ramo principal esta trancado, o que resulta em baixa produtividade para os desenvolvedores, visto que são obrigados a ficarem esperando para continuarem suas implementações.

Aleksey Bragin
Publicado em ReactOS | Marcado com | Deixe um comentário

Bem-vindo ao ReactOS BR

Seja bem-vindo ao ReactOS BR, mais um blog brasileiro dedicado ao sistema operacional ReactOS.

Publicado em ReactOS BR | Deixe um comentário