Category: Desenvolvimento

Análise de Desempenho LLVM-MCA: Armadilhas da Otimização de Vetorização

2025-06-29
Análise de Desempenho LLVM-MCA: Armadilhas da Otimização de Vetorização

O autor encontrou um problema de degradação de desempenho ao vetorizar código usando ARM NEON. O código inicial usava cinco instruções de carregamento (5L), enquanto a versão otimizada usava duas instruções de carregamento e três instruções de extensão (2L3E) para reduzir acessos à memória. Surpreendentemente, a versão 2L3E foi mais lenta. Usando LLVM-MCA para análise de desempenho, descobriu-se que 2L3E causou gargalos nas unidades de execução da CPU, utilização de recursos desequilibrada e dependências de instruções mais fortes, levando à regressão de desempenho. A versão 5L teve melhor desempenho devido ao seu uso mais equilibrado de recursos e instruções de carregamento independentes. Este estudo de caso destaca como otimizações aparentemente sólidas podem resultar em degradação de desempenho se a contenção de recursos da CPU e as dependências de instruções não forem consideradas; LLVM-MCA se mostra uma ferramenta valiosa para analisar tais problemas.

Desenvolvimento vetorização

Filtros de Bloom: Uma Estrutura de Dados Probabilística para Membros de Conjunto Eficientes

2025-06-29

Filtros de Bloom são estruturas de dados probabilísticas projetadas para testar a associação de conjuntos de forma rápida e eficiente em termos de memória. Eles usam múltiplas funções de hash para mapear elementos para bits em um vetor de bits. Se todos os bits correspondentes forem 1, o elemento *pode* estar presente; caso contrário, definitivamente está ausente. Embora propensos a falsos positivos, sua velocidade e eficiência de espaço os tornam ideais para conjuntos de dados grandes. Este artigo detalha os princípios do filtro de Bloom, a seleção da função de hash, o dimensionamento, as aplicações e exemplos de implementação em vários sistemas.

Desenvolvimento

Octelium: Plataforma de Acesso de Confiança Zero Revolucionária

2025-06-29
Octelium: Plataforma de Acesso de Confiança Zero Revolucionária

O Octelium é uma plataforma unificada, gratuita e de código aberto, auto-hospedada, para acesso a recursos de confiança zero, projetada como uma alternativa moderna a VPNs e ferramentas semelhantes. É incrivelmente versátil, funcionando como uma VPN de configuração zero, plataforma ZTNA, infraestrutura de túneis seguros, gateway de API, gateway de IA, PaaS para hospedagem segura e anônima de aplicativos em contêineres, gateway Kubernetes e até mesmo uma infraestrutura de homelab. O Octelium oferece uma arquitetura de confiança zero (ZTA) escalável para acesso seguro baseado em identidade, consciente da camada de aplicativo (L7), sem segredos, por meio de túneis WireGuard/QUIC e acesso público sem cliente.

A Guerra Secreta de Direitos Autorais por Trás do Plug and Play do Windows 95

2025-06-29
A Guerra Secreta de Direitos Autorais por Trás do Plug and Play do Windows 95

Implementar o Plug and Play no Windows 95 não foi fácil. Para fazer o hardware antigo funcionar com o novo recurso, os engenheiros usaram soluções criativas. Um exemplo interessante envolveu fabricantes adicionando a string "Not Copyright Fabrikam Computer" ao seu BIOS. Era um truque inteligente para enganar a verificação de licença do LitWare Word Processor, desbloqueando a versão completa sem ser um PC Fabrikam licenciado. Isso destaca os desafios da compatibilidade de PCs antigos e os esforços feitos pelos fabricantes para obter licenças de software.

Desenvolvimento

IPv4 caiu? Linux, WireGuard e Hetzner salvaram minha internet!

2025-06-29

Uma queda de energia interrompeu minha conectividade com a internet IPv4, deixando apenas IPv6, mas muitos sites ficaram inacessíveis. Usei um servidor VPS Hetzner, WireGuard e namespaces de rede Linux para resolver isso de forma inteligente. Configurando um servidor WireGuard no VPS, criei um túnel para minha conexão IPv6, restaurando a funcionalidade IPv4. Namespaces de rede me permitiram executar minha VPN de trabalho e Docker sem interferir no WireGuard. Também resolvi problemas de MTU do WireGuard. Todo o processo destacou a flexibilidade e o poder de resolução de problemas do Linux.

Desenvolvimento

Dois Programas Enigmáticos em Mathematica

2025-06-29

Este código apresenta dois programas em Mathematica que geram sequências numéricas. O primeiro usa loops `Do` e `While` para construir iterativamente uma sequência cujo padrão de crescimento depende da posição dos elementos precedentes. O segundo programa estende a sequência adicionando cumulativamente diferenças anteriores, continuando até que o comprimento ultrapasse 50. Ambos os programas destacam a capacidade do Mathematica em gerar sequências intrincadas, com algoritmos que merecem investigação adicional.

Desenvolvimento Geração de Sequências

XLibre: Um Fork Rebelde do X11 Desafia a Dominância do Wayland

2025-06-29
XLibre: Um Fork Rebelde do X11 Desafia a Dominância do Wayland

Frustrado com o lento progresso e as deficiências do Wayland, o desenvolvedor Enrico Weigelt lançou o XLibre, uma melhoria profunda do X11. O XLibre não é apenas um branch simples; é uma reformulação completa com o objetivo de corrigir as falhas do Wayland e oferecer desempenho e segurança superiores. Weigelt afirma ter sido expulso do projeto Xorg pela Red Hat, provocando um debate na indústria sobre o controle da Red Hat sobre o desenvolvimento do Linux. Surpreendentemente, o Fedora, uma distribuição derivada da Red Hat, está considerando substituir o X11 pelo XLibre. O futuro do XLibre ainda é incerto, mas inegavelmente injetou novas variáveis ​​no mundo da área de trabalho Linux.

Desenvolvimento

Drama no Kernel Linux: Bcachefs Removido

2025-06-29
Drama no Kernel Linux: Bcachefs Removido

O próximo kernel Linux 6.17 removerá o suporte ao sistema de arquivos Bcachefs devido a tensões crescentes entre seu mantenedor, Kent Overstreet, e Linus Torvalds. O conflito decorre de desentendimentos sobre as práticas e o tempo de envio de código, violando as regras estabelecidas da comunidade. Um ponto central de discórdia foi um novo recurso 'journal-rewind' submetido durante a fase de candidato a lançamento, levantando preocupações de outros desenvolvedores. Apesar dos argumentos de Overstreet sobre a integridade dos dados do usuário, Torvalds decidiu remover o Bcachefs por completo, marcando um evento notável na história do desenvolvimento do kernel Linux.

Desenvolvimento Conflito de Desenvolvedores

Função Awk eficiente para análise JSON

2025-06-29

Este código implementa uma função Awk robusta projetada para analisar dados JSON e extrair o valor associado a uma chave especificada. Ele lida com objetos e arrays aninhados, suporta caminhos de chaves separados por pontos e gerencia graciosamente vários tipos de dados JSON. Aproveitando as capacidades de manipulação de strings do Awk, a função percorre eficientemente a estrutura JSON, localizando a chave de destino e retornando seu valor correspondente, mostrando o poder do Awk no processamento de dados.

(akr.am)
Desenvolvimento

AGL: Uma linguagem de script concisa que compila para Go

2025-06-29
AGL: Uma linguagem de script concisa que compila para Go

AGL é uma nova linguagem de programação que compila para Go. Ela utiliza a sintaxe do Go, mas introduz melhorias como valores de retorno únicos, tipos tupla e tipos result/option para um tratamento de erros simplificado, funções anônimas concisas e métodos de array integrados. AGL suporta sobrecarga de operadores, enums e genéricos, e oferece uma extensão VSCode e suporte shebang para shell, melhorando a experiência do desenvolvedor. Sua compilação flexível permite tanto a compilação para código Go quanto a execução direta, facilitando a iteração e os testes rápidos.

Desenvolvimento

arXivLabs: Colaboração da Comunidade em Novos Recursos do arXiv

2025-06-29
arXivLabs: Colaboração da Comunidade em Novos Recursos do arXiv

arXivLabs é uma estrutura experimental que permite a colaboradores desenvolverem e compartilharem novos recursos do arXiv diretamente no site do arXiv. Indivíduos e organizações envolvidos compartilham os valores do arXiv de abertura, comunidade, excelência e privacidade dos dados do usuário. O arXiv está comprometido com esses valores e trabalha apenas com parceiros que os respeitam. Tem uma ideia para um projeto que beneficiará a comunidade do arXiv? Saiba mais sobre o arXivLabs!

Desenvolvimento

MCP: O Ecossistema de Plug-ins Universal Acidental

2025-06-29
MCP: O Ecossistema de Plug-ins Universal Acidental

Este artigo explora os usos inesperados do MCP (Protocolo de Contexto do Modelo). Inicialmente projetado para aprimorar assistentes de IA, sua capacidade de "fornecer uma maneira padronizada de conectar modelos de IA a diferentes fontes de dados e ferramentas" transcende o reino da IA. Assim como uma porta USB-C que pode conectar uma torradeira a um monitor, o MCP se tornou um ecossistema de plug-ins universal. Desenvolvedores podem criar plug-ins funcionais sem precisar entender o funcionamento interno de outros aplicativos. Isso aprimora dramaticamente a funcionalidade do aplicativo, criando aplicativos inesperados. Um aplicativo de gerenciamento de tarefas, por exemplo, pode usar servidores MCP para verificação ortográfica, pedido automático de café e muito mais.

Desenvolvimento ecossistema de plug-ins

Processo de Aplicação de Passaporte do Reino Unido: Um Jogo de Aventura Burocrático Resolvido com Haskell

2025-06-29

O processo de solicitação de passaporte do Reino Unido é comparado a um jogo online complexo por um programador. Os requerentes devem reunir vários documentos, semelhante à coleta de artefatos, para comprovar a cidadania britânica. As regras são intrincadas, cheias de lógica burocrática, exigindo até mesmo certidões de nascimento de ancestrais. Usando Haskell, o programador criou um programa simulando o processo, gerando todos os conjuntos de documentos necessários possíveis. Isso ajuda a entender a complexidade e gera discussão sobre a automação de processos governamentais e a colaboração entre humanos e computadores.

Caso de Marca Registrada JavaScript da Oracle: Uma Luta pelo Código Aberto

2025-06-29
Caso de Marca Registrada JavaScript da Oracle: Uma Luta pelo Código Aberto

O criador do Node.js está lutando contra a alegação da Oracle sobre a marca registrada "JavaScript". Embora uma alegação de fraude tenha sido rejeitada, a disputa central reside na genericidade e no abandono da marca registrada. O autor argumenta que "JavaScript" é um termo genérico, não uma marca da Oracle, e o uso pela Oracle de uma captura de tela do site do Node.js como evidência aumenta ainda mais a controvérsia. O caso seguirá em frente, com a Oracle obrigada a responder às alegações de genericidade e abandono. O resultado determinará se "JavaScript" será libertado das restrições de marca registrada e devolvido à comunidade.

Desenvolvimento

Equipe de graduação executa Xv6 em uma CPU caseira

2025-06-28

Em 2015, uma equipe de graduação da Universidade de Tóquio enfrentou um projeto ambicioso: projetar, construir e executar o sistema operacional Xv6 em uma CPU caseira com um ISA RISC personalizado. Ao longo de quatro meses, eles construíram um compilador C do zero, superaram inúmeros desafios na compreensão e implementação dos recursos de CPU necessários para um SO (interrupções, gerenciamento de memória) e portaram com sucesso o Xv6, adicionando até mesmo jogos como 2048 e Campo Minado. Sua demonstração final executou o programa de ray tracing exigido no topo do Xv6, mostrando incrível engenhosidade e habilidades de resolução de problemas. Este projeto serve como um testemunho das recompensas de reinventar a roda e do valor educacional do aprendizado prático.

Desenvolvimento Projeto de CPU

Por que desenvolvedores seniores são mais cruciais do que nunca na era da geração de código de IA

2025-06-28
Por que desenvolvedores seniores são mais cruciais do que nunca na era da geração de código de IA

Na era da geração de código impulsionada por IA, desenvolvedores seniores são mais vitais do que nunca. O artigo argumenta que um programa não é apenas código, mas um modelo teórico construído sobre uma compreensão profunda do sistema. O código gerado por IA muitas vezes carece dessa base teórica, levando a bases de código incoerentes e acúmulo de dívida técnica. Desenvolvedores seniores constroem e mantêm essa estrutura teórica, garantindo que o código esteja alinhado com as necessidades do negócio e orientando desenvolvedores juniores a transformar código disperso em programas coerentes. Portanto, as organizações precisam priorizar o compartilhamento de conhecimento e a herança teórica para cultivar desenvolvedores com bases teóricas sólidas, garantindo a qualidade do software e a manutenibilidade a longo prazo.

Desenvolvimento desenvolvedores seniores

Iniciativa de código aberto do compilador C Whitesmiths: Uma lenda retorna

2025-06-28
Iniciativa de código aberto do compilador C Whitesmiths: Uma lenda retorna

O compilador C Whitesmiths, lançado originalmente em 1978, suportava arquiteturas como DEC PDP-11 e Intel 8080, está prestes a se tornar de código aberto! Seu criador, P.J. Plauger, concedeu permissão para uso não comercial. Binários e parte do código-fonte para versões incluindo CP/M-80 e um compilador cruzado IBM System/36 estão disponíveis para download. Este compilador historicamente significativo será um recurso valioso para o estudo da história e do desenvolvimento da linguagem C.

Desenvolvimento

Nim Bare-Metal no Raspberry Pi: Uma Aventura Sem Cabeça

2025-06-28
Nim Bare-Metal no Raspberry Pi: Uma Aventura Sem Cabeça

Este projeto detalha um ambiente bare-metal para Raspberry Pi 1/Zero usando a linguagem de programação Nim. Ele possui um escalonador cooperativo, modelo de programação assíncrono e acesso direto ao hardware sem APIs específicas do fornecedor. O projeto inclui gerenciamento de memória, tratamento de exceções e monitoramento de tempo de execução, juntamente com instruções de configuração abrangentes. Planos futuros envolvem a expansão para mais plataformas de destino e a adição de mais drivers de periféricos.

Desenvolvimento

IA Generativa: Uma Mudança de Paradigma na Programação

2025-06-28
IA Generativa: Uma Mudança de Paradigma na Programação

Modelos de Linguagem Grandes (LLMs) estão revolucionando o desenvolvimento de software, uma mudança comparável à transição da linguagem assembly para linguagens de programação de alto nível. O autor argumenta que LLMs não apenas elevam o nível de abstração, mas também introduzem não-determinismo, alterando fundamentalmente a natureza da programação. A evolução do Fortran para Ruby melhorou a eficiência, mas não mudou a essência da programação. O não-determinismo introduzido por LLMs exige que os programadores se adaptem, apresentando desafios e oportunidades.

Desenvolvimento

Programação Multiestágios com Variáveis de Splice: Geração de Código Segura e Previsível

2025-06-28

Este artigo apresenta uma nova técnica chamada Programação Multiestágios (MSP) que permite que programas gerem outros programas. Para garantir a geração de código segura e previsível, os autores introduzem o conceito de "variáveis splice". As variáveis splice fornecem controle preciso sobre o processo de geração de código e escalam perfeitamente para recursos avançados, como correspondência de padrões de código e reescrita. O sistema de tipos rastreia automaticamente as dependências de variáveis, garantindo que o código gerado seja sempre bem formado, com escopo adequado e com verificação de tipos correta. O artigo demonstra o poder das variáveis splice com exemplos como a geração de uma função de potência e mostra recursos como correspondência de padrões de código e reescrita.

arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

2025-06-28
arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

arXivLabs é uma estrutura que permite que colaboradores desenvolvam e compartilhem novos recursos do arXiv diretamente em nosso site. Indivíduos e organizações que trabalham com o arXivLabs abraçaram e aceitaram nossos valores de abertura, comunidade, excelência e privacidade dos dados do usuário. O arXiv está comprometido com esses valores e trabalha apenas com parceiros que os respeitam. Tem uma ideia para um projeto que agregará valor à comunidade do arXiv? Saiba mais sobre o arXivLabs.

Desenvolvimento

Um Driver de Kernel Conciso em Rust: O Exemplo do Controlador Ethernet AX88796B

2025-06-28

Este artigo detalha a experiência de escrever um driver de kernel Linux para o controlador Ethernet embutido AX88796B usando Rust. O autor contrasta a versão Rust com sua contraparte em C, destacando as diferenças em sintaxe, tipos e APIs. A versão Rust é notavelmente concisa, com pouco mais de 100 linhas, aproveitando macros para simplificar o registro do driver e usando traits e a macro `#[vtable]` para integração perfeita com o código C existente. O artigo explica claramente as vantagens do Rust no desenvolvimento de drivers de kernel, como garantias de segurança de memória por meio de referências e tratamento de erros simplificado usando `Result` e o operador `try`, fornecendo insights valiosos para o desenvolvimento de drivers de kernel em Rust.

Desenvolvimento Driver de Kernel

bootc-image-builder: Crie imagens de disco inicializáveis a partir de contêineres

2025-06-28
bootc-image-builder: Crie imagens de disco inicializáveis a partir de contêineres

O bootc-image-builder é uma ferramenta poderosa para criar imagens de disco a partir de contêineres Fedora/CentOS bootc ou derivados. Ele suporta vários tipos de imagem (qcow2, AMI, ISO, etc.) e permite a personalização de usuários, sistemas de arquivos, parâmetros do kernel e muito mais. Usando Podman e QEMU, os usuários podem facilmente criar e executar máquinas virtuais. Este guia detalha seu uso, opções e configurações avançadas, como criar AMIs na AWS e personalizar o instalador Anaconda.

Desenvolvimento

Expressões estranhas em Rust: levando o sistema de tipos ao limite

2025-06-28
Expressões estranhas em Rust: levando o sistema de tipos ao limite

Este artigo explora algumas expressões extremas e aparentemente paradoxais dentro do poderoso sistema de tipos da linguagem de programação Rust. Ao dissecar exemplos do arquivo de teste `weird-expr.rs`, como o uso criativo de `return true`, loops aninhados e instruções `break`, e uma compreensão profunda de inferência de tipos e coerção, o artigo explica sua validade em Rust. Essas não são falhas, mas sim demonstrações do sistema de tipos flexível e do poder expressivo do Rust, mostrando sua robustez no tratamento de casos extremos.

Desenvolvimento

O Adolescente de 14 Anos que Moldou a Calculadora do Mac

2025-06-28

Chris Espinosa, um funcionário da Apple com apenas 14 anos, desempenhou um papel fundamental no desenvolvimento do Macintosh. Encarregado de documentar o Quickdraw, ele criou um programa de calculadora. Steve Jobs inicialmente não gostou, mas a solução inovadora de Espinosa — um 'Steve Jobs Roll Your Own Calculator Construction Set' personalizável — impressionou Jobs e se tornou a calculadora icônica do Mac por anos, durando até o OS 9.

Desenvolvimento

SymbolicAI: Uma estrutura neuro-simbólica para LLMs

2025-06-28
SymbolicAI: Uma estrutura neuro-simbólica para LLMs

SymbolicAI é uma estrutura neuro-simbólica que combina a programação clássica em Python com a programação diferenciável dos LLMs. Seu design modular permite fácil extensão e personalização, permitindo que os usuários escrevam seus próprios motores, os hospedem localmente ou interajam com ferramentas como pesquisa na web e geração de imagens. Os conceitos centrais são objetos Símbolo (sintático e semântico) e contratos (garantindo a correção do código por meio de decoradores). O SymbolicAI suporta inúmeras operações primitivas e integra-se a motores neuro-simbólicos como OpenAI e Anthropic por meio de APIs, juntamente com ferramentas como Wolfram Alpha e mecanismos de pesquisa. Um sistema de configuração baseado em prioridade simplifica o gerenciamento.

Desenvolvimento neuro-simbólico

c4wa: Um compilador C para WebAssembly minimalista e eficiente

2025-06-28
c4wa: Um compilador C para WebAssembly minimalista e eficiente

c4wa é um compilador que traduz um subconjunto da linguagem C para WebAssembly. Ao contrário de outros compiladores, ele gera código WebAssembly minimalista e bem otimizado, sem nenhum código auxiliar, bibliotecas incorporadas ou sobrecarga. É totalmente compatível com qualquer tempo de execução WASM fora da caixa. c4wa suporta loops, condicionais, structs, arrays, ponteiros e outros recursos típicos da linguagem C, e pode gerar código no formato WAT legível. Ele busca um equilíbrio entre a conveniência de nível superior da linguagem C e a eficiência de baixo nível do WebAssembly, oferecendo aos desenvolvedores uma nova maneira de escrever código WebAssembly de alto desempenho.

Desenvolvimento

ZubanLS: Um servidor de linguagem Python ultrarrápido construído em Rust

2025-06-27

Em 2012, o autor criou o Jedi, uma biblioteca de autocompletamento Python amplamente utilizada. No entanto, suas limitações de velocidade se tornaram aparentes. Em 2020, o autor reconstruiu do zero usando Rust, resultando em ZubanLS, o primeiro servidor de linguagem Python verdadeiramente rápido após cinco anos de trabalho dedicado. O ZubanLS é direcionado a profissionais que precisam de precisão, confiabilidade e velocidade, resolvendo problemas de longa data em ferramentas como Mypy e Pyright, priorizando o desempenho sem sacrificar recursos. O suporte para Django, ir para a definição, completações e outros recursos LSP estão em andamento. A versão inicial de 2025 pode não ser perfeita; feedback é bem-vindo para moldar o desenvolvimento futuro.

Desenvolvimento

Uma Aventura Lisp nas Águas Mortas de C

2025-06-27

Este artigo explora o poder das abstrações do Lisp e as limitações da linguagem C, usando uma linguagem semelhante a C. O autor analisa as estratégias de avaliação de parâmetros de função, destacando como o mecanismo de passagem por valor do C restringe o controle sobre os parâmetros da função, impedindo a implementação de instruções condicionais e loops flexíveis como if, while e cond do Lisp. O artigo aprofunda-se em recursos avançados como closures e criação de funções em tempo de execução, indisponíveis em C, concluindo sobre as deficiências da linguagem C em extensibilidade.

Desenvolvimento

Comunidade Linux: Fortaleza da Liberdade ou Gaiola da Exclusão?

2025-06-27

Uma postagem de blog gerou um debate acalorado sobre a inclusão na comunidade Linux. O autor compartilhou um comentário condescendente e excludente que criticava o uso de "Linux" em vez de "GNU/Linux" e o acusava de tentar "simplificar" o sistema. O autor rebate que a verdadeira "liberdade" não deve acontecer às custas de grupos marginalizados, destacando falhas graves de acessibilidade no ecossistema Linux. Isso acendeu uma discussão sobre a cultura da comunidade, a importância da inclusão e acessibilidade, e o respeito por aqueles que contribuem para melhorar o sistema.

Desenvolvimento
1 2 42 43 44 46 48 49 50 206 207