azk v0.14.0: a jornada é a recompensa

Tanto que já foi feito, tanto ainda por fazer

To read the English version, click here.

Quem acompanha nosso blog, tem idéia do quanto temos trabalhado na evolução do azk. Foram duas novas versões nos últimos dois meses (v0.12.0 e v0.13.0).

Para o azk realmente ter chance de realizar seu potencial como um utilitário de código aberto de ampla aplicação, ele precisa ser robusto e confiável. Tem que estar sempre disponível, sempre quando você precisa… como o sol ou o ar.

Por isso, o azk nunca estará completo. Sempre haverá muito o que melhorar no azk, não importa o quanto ele evolua.

Assim, dando seguimento ao nosso esforço nesse sentido, apresentamos hoje o azk v0.14.0!

Update: Graças ao feedback do @arthurgeek já descobrimos um bug na versão v0.14.0 que impossibilitava a primeira execução do `azk agent` em modo daemon. O bug já está corrigido e já publicamos a versão v0.14.1 do azk!

Neste release, procuramos tornar o azk mais robusto. Como não poderia deixar de ser, também trabalhamos um pouco mais na sua performance.

A primeira grande mudança nesta versão foi a adoção do docopt, uma fantástica linguagem de descrição de interfaces de linha de comando (CLI). Isso significa que nossa CLI está mais rápida do que nunca e concordando ainda mais com os padrões POSIX. Entretanto, isso também significa que ela mudou um pouco. Recomendamos fortemente que você cheque as alterações da CLI e veja se alguma delas impacta em seu uso do azk.

Para saber mais sobre como fizemos isso, leia nosso outro post de hoje aqui no blog.

Outra mudança importante está relacionada ao conceito de promessas. Muito do azk é escrito em Javascript e nós usamos esse conceito amplamente em nosso código. Em poucas palavras, promessa é uma maneira elegante e poderosa de se realizar processamento assíncrono, evitando o famoso inferno de callbacks.

Anteriormente, o azk usava o Q como biblioteca de promessas, mas nesta versão estamos migrando para o BlueBird, que tem mostrado performance superior e maior concordância com o padrão de promessas do Javascript.

Ainda sobre padrões de Javascript, o azk fazia muito uso do método progress oferecido pelo Q (em que o método assíncrono é capaz de se comunicar com quem o chamou antes de o processo terminar), mas ele foi deprecado no padrão de promessas do Javascript (e por isso não está disponível no Bluebird).

Para manter esse comportamento no azk, estamos usando agora a biblioteca Postal como serviço de mensagens. O Postal é baseado no modelo de pub/sub e permite que o autor da chamada de um processo assíncrono receba o estado atual do mesmo via troca de mensagens.

Por fim, melhoramos também o processo de inicialização do azk agent quando executado em segundo plano (modo daemon). Anteriormente, o Node.js era responsável por isso, o que trazia uma série de problemas conhecidos tais como processos órfãos remanescentes após o azk agent ser finalizado e saídas padrão (stdout) não sendo direcionadas corretamente.

O código responsável por manter tudo isso em funcionamento dentro do Node.js era bastante complexo. Como solução, resolvemos deixar o próprio Bash cuidar de desconectar o processo, redirecionar o stdout e enviá-lo para segundo plano. Ficou muito mais elegante e eficiente!

Enfim, como deu pra notar, esta é uma nova versão do azk que traz muitas novidades. É o nosso maior release até hoje. Foram 218 commits e mais de 13.870 alterações de código! Um pequeno tour de force.

Naturalmente, também trazemos uma série de correções de bugs e outras melhorias menores. Para uma lista completa do que mudou, confira o changelog aqui.

Obrigado por todo o apoio, a colaboração e o engajamento com o azk. E não esqueçam de dar uma "estrela" para o azk no Github! ;)

https://github.com/azukiapp/azk

Vamos codar, codar e codar! Até a próxima.
Time Azuki

Mais sobre o azk

+ Site: http://azk.io
+ Github: https://github.com/azukiapp/azk
+ Documentação: http://docs.azk.io
+ Diretório de imagens criadas pelo time do azk: http://images.azk.io

Contribua com o azk

+ “Star” o azk no Github: https://github.com/azukiapp/azk
+ Reporte um problema: https://github.com/azukiapp/azk/issues/new
+ Ajude a resolver um problema reportado: https://github.com/azukiapp/azk/issues
+ Confira os sponsors do azk: http://azk.io/#sponsors

Fale com o time do azk

+ Assine a newsletter semanal: http://www.azk.io/#newsletter
+ Acompanhe o blog: https://medium.com/azuki-news
+ Fale com nosso suporte (chat): https://gitter.im/azukiapp/azk/pt (Português) e https://gitter.im/azukiapp/azk (English)
+ Facebook: https://www.facebook.com/azukiapp
+ Twitter: http://twitter.com/azukiapp
+ YouTube: https://www.youtube.com/user/Azukiapp/videos

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.