-
O RAII, ou Resource Acquisition Is Initialization, é um conceito que pode parecer meio obscuro, mas quando aplicado corretamente, como no caso da Vale, pode economizar um tempo precioso, como mencionado: "me salvou 5 horas vitais". Errar em liberar recursos é como deixar um garbage collector sem supervisionar — no fim, todos sabemos quem paga a conta. O artigo destaca como uma linguagem pode forçar o chamado de uma função antes de destruir um objeto; isso é um lembrete para a gente limpar os vestígios da nossa programação, assim como um dev arruma seu código antes de um pull request.
-
O conceito de concorrência estruturada sempre foi um campo fértil para debate, mas agora parece que estamos começando a juntar os melhores pedaços de várias abordagens. "Podemos combinar as melhores partes de diferentes abordagens de concorrência estruturada!" Isso é o que eu chamaria de uma verdadeira fusão de universos, tipo o crossover que todos nós devs sonhamos. Espero que isso traga mais simplicidade e robustez ao nosso código, porque, convenhamos, já temos muitos bugs para enfrentar sem complicar ainda mais as coisas.
-
Drew DeVault
15/03/2022 00:00
Este mês, o foco foi na construção de um kernel e na criação de um decodificador PNG, que já decodificou 77 dos 161 vetores de teste. Como foi mencionado, a implementação de um manipulador de interrupções e backtraces traz um toque interessante, principalmente para quem já riu com "segfaults". Uma abordagem bem sólida que demonstra as qualidades da linguagem. E quem não ama um bom desafio de gerenciamento de memória? Parece que o autor está seguindo a receita ideal para um software robusto, misturando insights técnicos com uma pitada de criatividade.
-
Drew DeVault
14/03/2022 21:00
Olhando para as últimas novidades, o protagonista do mês é o desenvolvimento de um kernel. A construção de um manipulador de interrupções e backtraces é um fator crucial que pode fazer a diferença na depuração e na eficiência do sistema. A nova biblioteca de decodificador PNG, que já lida com 77 dos 161 vetores de teste, é uma demonstração convincente do potencial da linguagem. É um trabalho que faz a ligação direta entre teoria e prática, e quem não gosta de um bom gerenciamento de memória, não é mesmo?
-
Se você está lidando com tentativas de conexão e não sabe se deve fazer retries ou não, a sugestão do autor é bem válida: usar disjuntores para quebrar tentativas e manter o tráfego normal intacto. Assim, "a carga nos serviços sobrecarregados não aumenta ainda mais". A comparação entre as abordagens é intrigante, especialmente quando você percebe que um balde de tokens pode fazer maravilhas em situações de alta falha. É como programar uma função que só vai rodar se a outra não falhar, mas com um toque de gambiarra.
-
Mitchell Hashimoto
23/02/2022 21:00
O sistema de build do Zig promete ser tão elegante quanto o seu modelo de memória, permitindo que a gente construa desde executáveis simples até projetos complexos. Como mencionado, "quando funcionam, eles podem parecer mágica", mas quando não funcionam, podem transformar o desenvolvedor em um detetive de bugs. O ponto aqui é que entender o que rola por trás da mágica pode evitar quebrar o cérebro na hora de compilar. Então, se você já sentiu que o sistema de build é um labirinto, talvez essa visão sobre suas entranhas ajude a clarear as coisas.
-
Fabien Sanglard
19/02/2022 21:00
Esse estudo do sistema gráfico CPS-1 da Capcom é como encontrar um easter egg em um jogo clássico. O CPS-1 realmente era uma máquina para a época, capaz de empilhar seis camadas de gráficos. O fato de que a escolha de onde colocar elementos de GUI era limitada por tiles é fascinante; parece que os desenvolvedores estavam sempre jogando um jogo de 'quem se alinha melhor com o grid'. E quem diria que uma mágica de sprites e tiles poderia fazer chover em um jogo, tudo isso escondido sob a complexidade do hardware?
-
Drew DeVault
18/02/2022 21:00
Plaid parece ter regenerado o conceito de "confiança digital" em um das experiências mais sombrias que o da prática de compartilhar credenciais. Ao solicitar que os usuários insiram suas informações bancárias através de um widget que nem o banco aprovou, é como se estivessem inserindo sua senha em um site fake, só que agora com um design moderno. Os bancos podem ser lentos, mas jogar a segurança pela janela em troca de conveniência é um movimento que não fica bem em ninguém. Um lembrete: nunca confie 100% em soluções que parecem boas demais para serem verdade, mesmo se forem populares.
-
Os disjuntores realmente têm seu lugar no arsenal de um dev, mas como qualquer ferramenta, tudo depende do problema que você está tentando resolver. Se você não sabe exatamente qual é a questão, adicionar um disjuntor pode ser como usar um clipe de papel para consertar um carro; pode dar certo, mas provavelmente não vai. Como o Martin Fowler diz, o trunfo é evitar falhas em cascata, mas lembre-se: tudo na vida tem seu limite, até mesmo a paciência do seu sistema.
-
Drew DeVault
15/02/2022 00:00
Mais um mês e a evolução do software livre continua a todo vapor. A liberação da versão 1.0 do fork do gddo é um marco, com um agradecimento especial ao Adnan Maolood pelo trabalho duro. Além disso, há um novo projeto de implementação do protocolo Redis que parece promissor – quem não gosta de simplificar suas operações com um pouquinho de código? E para os entusiastas de gráficos, a expansão do suporte é algo que não podemos ignorar. Se você tem um talento para desenvolvimento de suporte a terminais, essa pode ser sua chance de brilhar.
-
Drew DeVault
14/02/2022 21:00
A desenvolvedora de software livre está dando um show em produtividade, com o destaque para o lançamento da versão 1.0 do godocs.io. Como eles dizem, "nós não só fornecemos continuidade para godoc.org, mas também simplificamos e melhoramos o software". Outra parte interessante é a implementação do protocolo Redis, que é mais fácil de usar do que encontrar um bug em produção. E, claro, quem não gostaria de ajudar a desenvolver suporte para terminais? Se a sua máquina está pedindo um pouco de carinho, essa pode ser a hora de dar uma força.
-
Mitchell Hashimoto
12/02/2022 21:00
O Zig está passando por uma transformação interessante com a geração do AIR, que é "Analisado Representação Intermediária". "AIR, que se diferencia do ZIR por ser uma representação intermediária totalmente tipada, permite baixar diretamente para código de máquina". Isso é como passar de um terminal com a aparência de DOS para um IDE elegante. A magia aqui acontece na etapa de Sema, onde o Zig valida e tipa as funções, o que faz dessa fase um verdadeiro canivete suíço para desenvolvedores que adoram tipos. Obviamente, isso implica que precisamos garantir que as funções que queremos visualizar no AIR sejam exportadas, mas quem não gosta de um pouco de trabalho extra?
-
Mitchell Hashimoto
11/02/2022 21:00
ZIR, a nova representação intermediária do compilador Zig, é um passo importante após a construção da árvore sintática abstrata (AST). Como mencionado, "o ZIR é uma forma IR não tipada que é gerada para cada arquivo Zig", permitindo uma análise mais fácil para otimizações. Ele basicamente divide a lógica do programa em instruções mais granulares, deixando os devs mais próximos do que acontece nos bastidores. Para quem é fã de compilers, isso pode ser como descobrir os segredos de Hogwarts, só que para codificadores.
-
Mitchell Hashimoto
10/02/2022 21:00
O post de Mitchell Hashimoto detalha como o analisador do Zig trabalha na construção de uma árvore de sintaxe abstrata a partir de um fluxo de tokens. Uma parte interessante é a introdução das MultiArrayLists, que otimizam o armazenamento em comparação com os ArrayLists convencionais, reduzindo o desperdício de memória e melhorando a localidade em cache. Para quem mergulha nos internals do compilador, é um prato cheio entre bytes e árvores. A prática de design do Zig continua a fazer a diferença na performance de compilação.
-
Mitchell Hashimoto
09/02/2022 21:00
O artigo apresenta uma análise detalhada do tokenizador do Zig, que é a primeira etapa no pipeline de um compilador. É interessante notar que ele transforma a sintaxe em uma sequência de tokens, mas sem se preocupar se esses tokens têm algum significado semântico. Isso é responsabilidade do parser na próxima fase. E o mais legal? O tokenizador do Zig não faz alocações na memória, o que é uma característica valiosa em programação de sistemas. É como cozinhar com um orçamento limitado: você aprende a fazer mágica sem gastar uma fortuna em ingredientes.
-
Dan Luu
01/02/2022 21:00
É fascinante como a sabedoria de bar pode ser bem rasa às vezes. O autor observa que em círculos sociais, muitos discutem solucoes mirabolantes para problemas complexos, como a construção de um concorrente do Google, sem entender a fundo os subproblemas envolvidos. Isso lembra aqueles devs que acham que podem resolver tudo só com um conhecimento superficial, tipo pegar um atalho no Git e acabar criando um merge conflict monumental. Uma reflexão interessante para a galera que acha que basta um pouco de conhecimento para ser especialista.
-
Drew DeVault
28/01/2022 00:00
Um post que promete uma espiada nas entranhas de uma nova linguagem de programação de sistemas, focando na implementação de um parser de tipos de mídia. O autor menciona que ‘a especificação não é boa’, o que é um eufemismo que até um desenvolvedor em modo debugger entenderia. O código com 250 linhas parece oferecer uma solução prática, e eu mal consigo esperar para ver como essa linguagem vai lidar com as armadilhas do RFC 2045, especialmente com aquele ‘folding’. No final, parece que estamos apenas tentando fazer com que a dança das vírgulas e dos caracteres faça sentido. Vamos ver até onde essa jornada nos leva.
-
Drew DeVault
27/01/2022 21:00
Parece que a equipe da nova linguagem de programação está mergulhando de cabeça no fascinante mundo dos tipos MIME. A proposta de "implementar um parser para tipos de mídia” e mapear esses tipos para extensões de arquivo é uma tarefa bem interessante, especialmente considerando a confusão das especificações geradas por RFCs. O código de 250 linhas, embora enxuto, promete evitar as armadilhas do 'folding' – uma escolha sensata, já que menos é mais quando se trata de torturar strings. E aí, quem se habilita a testar essa brincadeira?
-
Lua.org News
27/01/2022 07:21
Então, a nova versão do Lua chega para corrigir todos os bugs conhecidos da 5.4.3. É como a versão atualizada daquele jogo de plataforma que você ama, mas em vez de novas fases, temos apenas um patch que evita que você caia no abismo. Para quem trabalha com scripts leves, isso é uma boa notícia, já que a estabilidade é chave. A manutenção do código é sempre mais fácil quando ele não fica fazendo drama à toa.
-
Chegou a vez do DynamoDB soprar velinhas e o destaque da festa é a previsibilidade. A migração de sistemas que sofriam com cargas inesperadas e comportamento errático para uma solução que gerencia as requisições de forma clara é um golaço. O autor enfatiza que a facilidade em rejeitar cargas excessivas e a definição clara do trabalho necessário são game changers. No final das contas, quem oferece uma API que não deixa você andando em círculos merece ser celebrado.