-
No design de sistemas distribuídos, separar a arquitetura em planos de controle e de dados é fundamental. "Reconhecendo as diferenças nos requisitos entre esses dois papéis" é um ponto que não dá pra ignorar. Enquanto o plano de dados deve estar sempre ativo para atender as requisições, o plano de controle lida com a lógica que pode se dar ao luxo de falhar temporariamente. No fundo, mesmo um monólito nunca é 100% monolítico; sempre há um algum nível de separação entre armazenamento e lógica de negócio, afinal, a vida de um dev nunca foi fácil.
-
Phil Oppermann (OS in Rust)
13/03/2019 21:00
Este post capricha ao desmistificar a implementação do suporte a paging no kernel. Ele aborda as técnicas para tornar as estruturas de página acessíveis, pesando prós e contras, o que é essencial para entender como evitar aquelas traps de memória que podem arrancar suspiros dos devs. O foco na implementação de funções de tradução e mapeamento é ótimo; depois de tudo, ninguém quer descobrir que seu código é um loop infinito de falhas de página. Além disso, o código-fonte disponível no GitHub torna tudo mais acessível para quem quiser jogar de volta no repositório.
-
Drew DeVault
11/03/2019 00:00
Após 1.315 dias de trabalho duro, o sway 1.0 finalmente chegou. O projeto, que reescreveu quase todo o desktop Linux, recebeu as contribuições de cerca de 300 desenvolvedores, resultando em mais de 9.000 commits. "Sway 1.0 é a primeira versão estável e representa um ambiente de desktop muito mais capaz e flexível", e isso é algo que quem usou versões antigas vai notar imediatamente. Agora, se você estava preso no passado, prepare-se para uma atualização significativa que também promete impulsionar a padronização e a cooperação entre os projetos do Wayland.
-
Drew DeVault
10/03/2019 21:00
Depois de mais de 1.300 dias de dedicação, o sway 1.0 finalmente chega para sacudir o universo Wayland. O projeto, que começou como um simples esforço individual, agora conta com a colaboração de quase 300 desenvolvedores. A nova versão promete um desktop mais estável e poderoso, superando os desafios que faziam do sway 0.15 uma experiência digna de um bug hunt. Com a inclusão de ferramentas como swaylock e grim, parece que a comunidade Linux vai adorar essa atualização.
-
Drew DeVault
10/02/2019 01:00
Wayland está de volta à berlinda e, pelo visto, as confusões a respeito dele também. O autor, que além de manter o wlroots se destaca no desenvolvimento do compositor sway, aponta que "a arte de odiar o Wayland se tornou uma atividade de culto". Um ponto interessante é a crítica à segurança, mostrando que um keylogger que utiliza LD_PRELOAD não significa que o Wayland é vulnerável, mas sim que qualquer app que permite isso já é um problema. No final das contas, sempre tem espaço para nuances e melhorias nos protocolos, então vale a pena acompanhar o que está por vir.
-
Phil Oppermann (OS in Rust)
27/01/2019 23:00
O post aborda como acessar as tabelas de páginas físicas a partir do kernel, o que não é tão simples quanto parece. Ele detalha a implementação de uma função que traduz endereços virtuais em físicos e como criar novos mapeamentos nas tabelas de páginas. É uma leitura essencial para quem quer entender a fundo a hierarquia de tabelas de páginas no x86_64. Se a depuração de memória fosse um esporte, esse post seria o manual do campeão.
-
Drew DeVault
23/01/2019 01:00
Usar um laptop como o Thinkpad X200 de 11 anos é como jogar D&D com dados de papelão: pode parecer antiquado, mas ainda dá conta do recado. O autor menciona como seu antigo laptop o ajuda a "empatia com usuários que não têm hardware de ponta". E convenhamos, quem precisa de um supercomputador para rodar planilhas ou ver vídeos? O que vale são as preferências pessoais e, claro, a compatibilidade do hardware com sistemas operacionais bons como o Linux. No fim das contas, às vezes menos é mais, especialmente quando o menor custo ainda entrega quase 5 bilhões de operações por segundo.
-
Drew DeVault
22/01/2019 23:00
Usar hardware antigo é quase como aquele culto geek que defende que o console velhinho é mais divertido que o último lançamento. O autor mostra como seu Thinkpad X200, com 11 anos de idade, ainda dá conta do recado, com total suporte no Linux e uma performance que, para muitos, é mais do que suficiente. Ele destaca uma verdade importante: "muitos usuários não podem pagar por hardware de ponta" e que, sim, é possível empatia de verdade ao experimentar limitações. No fim das contas, a tecnologia deve se adaptar ao usuário, e não o contrário. Isso nos faz lembrar que nem todo superpoder precisa de uma armadura de alta tecnologia.
-
Phil Oppermann (OS in Rust)
13/01/2019 23:00
A paginação é um esquema clássico de gerenciamento de memória, e este post faz uma boa introdução ao tema. Fico impressionado como ele aborda desde a necessidade de isolamento de memória, até como a tabela de páginas multilível funciona na arquitetura x86_64. "Memory Protection" é apenas uma parte do quebra-cabeça; a verdadeira mágica acontece quando conseguimos lidar com a fragmentação da memória. Enquanto isso, seguimos esperando pelo dia em que a gestão de memória não seja mais um problema no nosso sistema.
-
Drew DeVault
12/01/2019 23:00
O sr.ht está realmente se esforçando para garantir a integridade dos dados dos usuários, algo que deve ser elogiado. O autor enfatiza que, "outages são okay - desde que, quando o serviço for restaurado, tudo ainda esteja lá". Isso é essencial em um mundo onde a perda de dados pode estourar a cabeça de qualquer dev. A estratégia de backups usando ZFS e a arquitetura redundante para PostgreSQL são escolhas bem informadas, mesmo que ainda estejam na fase alfa. O importante é saber que, mesmo com as falhas, o foco em não perder nenhum byte é um comprometimento que poucos serviços oferecem.
-
Drew DeVault
28/12/2018 01:00
Pelo que parece, Simon Ser está fazendo um trabalho interessante com o projeto mrsh, que é uma implementação de shell estritamente POSIX. A abordagem de usar um parser de descida recursiva para gerar uma AST é uma jogada esperta, mantendo as coisas simples e sem depender de ferramentas complexas como flex ou bison. E, como mencionado, performance não é tão crítica para scripts de shell; é quase como otimizar uma página de HTML que nunca será visitada. Além disso, ter essa interface pública da libmrsh abre um leque de possibilidades, e não, não estou falando do Super Mario, mas de editores de texto e linters.
-
Drew DeVault
27/12/2018 23:00
O projeto mrsh, que está em desenvolvimento, traz uma implementação POSIX de shell, interessante para quem curte detalhes técnicos. O uso de um parser de descida recursiva para gerar uma árvore de sintaxe abstrata é uma escolha inteligente para evitar dependências desnecessárias. Como o texto menciona, "a performance não é crítica para parsing de scripts shell", o que faz todo sentido. Além disso, a possibilidade de usar o AST para diversas aplicações, como editores de texto e linters, mostra a versatilidade da libmrsh.
-
Drew DeVault
20/12/2018 01:00
O HiFive Unleashed finalmente chegou, e o autor não poderia estar mais animado. Com "RISC-V é uma arquitetura de conjunto de instruções open-source e sem royalties", este é um passo importante para democratizar o acesso a novas arquiteturas. O processo de portabilidade envolve alguns desafios, especialmente com a libc do Alpine, que ainda está em desenvolvimento, mas é bom ver que "vários patches" foram aplicados para corrigir problemas. No final das contas, a comunidade vai sair ganhando com um pouco mais de diversidade no ecossistema Linux.
-
Drew DeVault
19/12/2018 23:00
Receber um HiFive Unleashed deve ser como abrir um presente de aniversário atrasado, só que em vez de um brinquedo, você ganha um baita projeto de portabilidade. RISC-V está se mostrando uma arquitetura aberta e cheia de potencial, e o port para o Alpine Linux pode realmente acelerar a adoção dessa tecnologia. Como o autor mencionou, a questão do 'bootstrapping' é crucial e requer disciplina, mas no final, ter um sistema auto-hospedado é o sonho de qualquer dev. Afinal, quem não gostaria de compilar o seu próprio SO em uma mesa de jantar?
-
Fabien Sanglard
10/12/2018 23:00
A proteção do Dreamcast parecia à prova de balas, com seu GD-ROM e toda a pompa de um discão de 1 GiB. Mas como qualquer dev que já teve um projeto desmoronando sabe, "parecia" não é sempre realidade. A desmistificação começou com hackers que sacaram a sequência de boot e, como em um jogo de quebra-cabeça, transformaram a vulnerabilidade em acesso fácil. É quase irônico que a fraqueza tenha, de fato, contribuído para o fim do último suspiro do hardware da SEGA.
-
Andrew Kelley (criador do Zig)
04/12/2018 17:02
Rodar código diretamente no hardware é como viver a experiência do retro-gaming em tempo real, e esse projeto de arcade no Raspberry Pi é um passeio interessante. O uso de Zig para lidar com crashes e bugs em um ambiente freestanding importa muito, especialmente quando o padrão é simplesmente deixar a CPU em um loop eterno. A adição de um handler de panic personalizado que fornece mensagens e stack traces é uma jogada inteligente, lembrando que debugging é quase uma arte. Agora, se eles conseguirem adicionar a DWARF info ao kernel, teremos uma verdadeira maravilha nas mãos.
-
Drew DeVault
29/10/2018 00:00
A memória virtual é como um truque de mágica da vida real no seu computador, permitindo que ele use mais espaço do que realmente tem. O artigo explica que "apenas um pequeno subconjunto do seu espaço de endereçamento está mapeado para RAM física", o que explica porque às vezes parece que temos mais memória disponível do que realmente temos. O uso de MMU e chamadas de sistema como mmap para gerenciamento de memória é um ótimo exemplo de como o kernel e os processos interagem em um cenário multi-tarefa. E, claro, quem nunca sofreu um page fault quando todo o sistema está a pedido de RAM? Parece que a memória nunca é suficiente, mesmo em um mundo de 16 exbibytes.
-
Drew DeVault
28/10/2018 21:00
A memória virtual é como aquele nível de abstração que a gente ama em programação, só que aplicada ao mundo real da memória do computador. Basicamente, enquanto sua RAM tenta se comportar como um array gigante de bytes, a MMU está lá fazendo malabarismos para gerenciar tudo isso. O mais interessante é que só uma parte da sua bela arquitetura de 64 bits está realmente ligada à RAM física; o resto está lá para dar suporte a uma infinidade de outras operações e, claro, evitar que um processo dane o espaço de memória do outro. Isso mostra que, entre um malloc e um context switch, sempre tem uma dança acontecendo por trás das cortinas do sistema.
-
Phil Oppermann (OS in Rust)
21/10/2018 21:00
Este post vai direto ao ponto ao explicar como configurar o controlador de interrupções programável para gerenciar interrupções de hardware de forma eficiente. Ao invés de ficar checando teclado constantemente, o kernel reage apenas quando necessário - alô, eficiência. A escolha do Intel 8259, mesmo com muito tempo de estrada, mostra que a simplicidade pode ser bem-vinda ao introduzir conceitos mais complexos. E claro, não podemos esquecer do dilema da concorrência, onde o modelo de propriedade do Rust oferece alguma proteção contra os bugs desencadeados pelas interrupções assíncronas. Para quem curte low-level, esse é um prato cheio.
-
Drew DeVault
20/10/2018 00:00
Parece que a equipe do Sway tirou uma página do livro do Nerds unidos e fez o que parecia impossível: transformar um projeto secundário em "o compositor de Wayland". Com 8.269 commits, essa versão 1.0-beta.1 não só tira a poeira de problemas da versão 0.15, como entrega um pacote de funcionalidades que até o mais resistente dos devs vai achar útil. O suporte a múltiplas GPUs e os novos recursos para configuração de entradas, como o teclado que você nunca soube que precisava, estão simplesmente no topo da lista dos desejos de quem gosta de brincar de Deus pilhando as configurações do sistema.