dotnet_logo

CoreCLR agora é Open Source


E ai galera, tudo bem?! Faz um tempão que não escrevo nada, mas melhor escrever algo do que não escrever nada! Vamos ao que interessa.

Ontem foi o dia que a Microsoft lançou como open source o CoreCLR no GitHub. CoreCLR é o motor de execução do .NET Core, que realiza todas as funções como coletor de lixo(garbage collection) e compilação para código de máquina. O .NET Core é uma implementação modular do .NET, ele pode ser usado para uma variedade de cenários, desde aplicações consoles até aplicações web na nuvem. Para entender a diferença do .NET Core para o .NET Framework, você pode ler esse post.

CoreCLR fonte

Como eu disse, o fonte do CoreCLR foi lançado como open source no GitHub, e você pode acessa-lo aqui e você pode forkar, clonar e buildar. Essa versão que eles publicaram é completa a atualizada, isso inclui o RyuJIT, .NET GC(Garbage Collector), componentes nativos de interop e outros componentes do .NET Runtime. Isso mostra que a Microsoft está levando a sério o Open Source, com um forte compromisso com a comunidade o que faz compartilhar essa implementação multiplataforma do .NET.

Código do CoreCLR no GitHub

Atualmente o .NET Core compila e roda no Windows, eles prometem que irão adicionar as implementações especificas para Linux e Mac nos próximos meses, mas eles já possuem algum código especifico para Linux no código do .NET Core, eles inicialmente abriram as portas. O intuito deles foi para que a comunidade pudesse apreciar o código e se juntar a ela na jornada de fazer o código multiplataforma.

O repositório CoreCLR

O repositório do CoreCLR é muito parecido com o CoreFX, no qual muitas pessoas já estão colaborando nos últimos meses. Ela quer continuar evoluindo esses repositórios junto com a comunidade.
Falando de tamanho, o CoreCLR tem cerca de 2,6 milhões de linhas de código, é muito código!!!! Por exemplo, só o código do JIT tem cerca de 320 mil linhas, o GC tem 55 mil. O repositório do CoreFX tem umas 500 mil linhas, e eles estimam que essa quantidade de linhas é cerca de 25% do seu tamanho total, eles estimam que quando o .NET Core estiver completo, ele devera ter algo em torno de 5 milhões de linhas de código, é muita coisa!!!

Gráfico de linhas de código

A diferença entre o CoreFX e o CoreCLR, é que o CoreFX é somente C#, e o CoreCLR possui uma grande quantidade de código C# e C++. Para que você possa buildar esse projeto, você precisar de algumas ferramentes para C# e C++, incluindo as que vem no Visual Studio. Eles escolheram CMake, um sistema de build que é open source e multiplataforma, pois eles precisavam de um sistema que pudesse ser usando tanto no Windows, Linux e Mac e é obvio rodasse o build em cada um, entre as opções, para eles, CMake foi a melhor.

Você pode aprender como buildar no developer guide deles, eles vão continuar atualizando esse documento a medida que Linux e Mac se tornem realidade.

Como comunidade, eles estão esperando ver muitas contribuições de código, entre outras. Eles estão também trazendo a infra estrutura deles de validação para o ambiente open source afim de tornar mais fácil as contribuições. Como o .NET Core suporta uma gama diversa de cenários, é importantíssimo que ele tenha um set muito rico de teste para detectar os problemas o mais rápido possível.

Criando aplicações com .NET Core

Atualmente só é possível criar dois tipos de aplicações:

1. ASP.NET 5 Web Apps e Serviços
2. Console apps

Nesse ultimo ano se tem falado de ASP.NET 5, você pode usar tanto o .NET Framework quanto o .NET Core para fazer uma app usando ASP.NET 5. Hoje ele usa o Mono runtime para rodar no Linux e Mac, mas quando o .NET Core suportar Linux e Mac, eles vão usa o .NET Core ao invés do Mono. Infelizmente ainda não é possível usar o CoreCLR e CoreFX para construir apps com ASP.NET 5, mas o objetivo deles é permitir de fim a fim uma experiencia opens source para o .NET Core e ASP.NET 5.

Se você quiser testar, a aplicação console é uma ótima opção, inclusive a maior parte da infra estrutura de teste da Microsoft é usando esse tipo de aplicação. E se você quiser, modifique o CoreCLR e execute sua console app em cima da sua versão modificada!

.NET Core Console Apps

Apesar de estar funcionando, esse tipo de app ainda não está finalizado, nos próximos meses, eles irão concluir o suporte completo a esse tipo de app, incluindo os templates de projeto para Visual Studio e debugging, além disso eles também querem que prover um ótimo suporte para criação de apps console usando OminiSharp. Eles acreditam que nós iremos criar ferramentas de console para Windows, Linux e Mac, e o mais legal é que eles dizem que será preciso apenas um binário, ou seja, iremos rodar nas 3 plataformas com o mesmo “.exe”.

Abaixo segue uma imagem de um “Hello World” usando o CoreCLR

Conclusão

Eles dizem que vinham preparando a alguns meses para poder lançar o CoreCLR, agora todos nos poderemos ver os commits sendo feitos, agora vamos fazer a nossa parte e contribuir para o crescimento da plataforma. Se você quiser ver o post na integra, da uma olhada aqui. Fique ligado, em março de 2015 vai acontecer a .NET Conf, vamos torce para que apareçam algumas demos legais lá!!!


sobre Alberto Monteiro

Desenvolvedor no Grupo Fortes, cuja principal área de conhecimento são em tecnologias Microsoft, como Windows Forms / Services, WPF, ASP.NET(MVC/WEB API), Windows Phone, EF. Gosta de sopa de letrinhas(SOLID, DDD, TDD, BDD, IoC, SoC, UoW), possui aplicações de Windows Phone publicadas no marketplace, já contribuiu no jQuery UI. Atualmente trabalha com ASP.NET MVC / Web API, Windows Azure, Amazon AWS, jQuery/UI, Knockout, EF, Ninject, AutoMapper, Restfulie, SignalR, KendoUI.