Category: Desenvolvimento

Múltiplas Descobertas: O Caso das Árvores Prolly

2025-07-01
Múltiplas Descobertas: O Caso das Árvores Prolly

Árvores Prolly, uma estrutura de dados inovadora crucial para o Dolt, não foram inventadas apenas uma vez, mas pelo menos quatro vezes de forma independente. De Avery Pennarun, em 2009, com o projeto bup (que antecede até mesmo a Noms), à cunhagem do termo pela Noms em 2015, às 'Árvores de Busca Merkle' da Inria em 2019, e às 'Árvores Merkle Definidas por Conteúdo' da Universidade DePaul em 2020, a mesma estrutura de dados fundamental surgiu repetidamente em diferentes contextos. Isso destaca o fenômeno comum de descobertas múltiplas na ciência e destaca o papel da demanda na inovação tecnológica. Os autores, da DoltHub, discutem esse fenômeno e suas implicações para a tecnologia futura, usando sua própria experiência com árvores Prolly como um estudo de caso.

Bloqueador de tradução do YouTube de código aberto

2025-07-01
Bloqueador de tradução do YouTube de código aberto

Este complemento do YouTube de código aberto impede a tradução automática no YouTube. Ele mantém os títulos e descrições dos vídeos no idioma original, define como padrão a faixa de áudio original (incluindo Shorts) e permite que você escolha o idioma da legenda (ou desativa-as se não estiverem disponíveis; legendas geradas automaticamente são sempre ignoradas), garantindo uma experiência de visualização autêntica.

Desenvolvimento

Pluto: Um dialeto Lua aprimorado

2025-07-01
Pluto: Um dialeto Lua aprimorado

Pluto é um dialeto poderoso do Lua, projetado para programação de propósito geral. Ele oferece desenvolvimento acelerado por meio de uma biblioteca padrão aprimorada e novos recursos de sintaxe, como instruções switch, operadores compostos e expressões ternárias. Embora amplamente compatível com Lua 5.4, um modo de compatibilidade resolve potenciais conflitos de novas palavras-chave. O Pluto executa bytecode Lua e a maioria dos recursos do Pluto geram bytecode compatível com Lua. Documentação abrangente, ferramentas e detalhes sobre melhorias estão disponíveis em seu site de código aberto. Experimente no playground interativo do navegador ou baixe binários pré-compilados.

Desenvolvimento

CLIs Rust Aprimoradas: Design Orientado a Tipos para Robustez e Manutenção

2025-07-01
CLIs Rust Aprimoradas: Design Orientado a Tipos para Robustez e Manutenção

Este artigo defende uma abordagem orientada a tipos para construir interfaces de linha de comando (CLIs) em Rust usando a crate clap. Em vez de depender da análise de strings, o autor defende a definição da interface CLI usando o sistema de tipos do Rust. Isso oferece várias vantagens principais: melhor manutenção e legibilidade do código, área de superfície de teste reduzida e melhor suporte de mock para testes unitários e versionamento semântico mais fácil. O artigo detalha os recursos derive e env do clap, mostrando como definir argumentos de linha de comando e variáveis de ambiente usando tipos, resultando em CLIs mais robustas e fáceis de manter.

Desenvolvimento

Hooks do Claude Code: Extensão de Funcionalidade com Comandos de Shell Personalizados

2025-07-01
Hooks do Claude Code: Extensão de Funcionalidade com Comandos de Shell Personalizados

O Claude Code introduz hooks, comandos de shell definidos pelo usuário que são executados em vários estágios de seu ciclo de vida. Isso permite controle determinístico sobre o comportamento do Claude Code, garantindo que ações como formatação automática de código, registro em log e verificações de permissões personalizadas sempre ocorram. Os hooks transformam sugestões em código confiável de nível de aplicativo, melhorando a funcionalidade e simplificando os fluxos de trabalho. Embora poderosos, os usuários devem priorizar a segurança e garantir que os comandos sejam seguros e confiáveis.

Desenvolvimento Comandos de Shell

Qualcomm de código aberto EUD: Depuração em circuito integrado via USB

2025-07-01
Qualcomm de código aberto EUD: Depuração em circuito integrado via USB

A Qualcomm lançou silenciosamente o código-fonte para sua interface de depuração USB embutida (EUD), permitindo que os desenvolvedores realizem a depuração SWD diretamente pela USB sem ferramentas JTAG externas. O EUD, integrado em quase todos os SoCs da Qualcomm desde ~2018, fornece acesso de depuração a CPUs e coprocessadores Hexagon. Embora o código-fonte inicial tivesse alguns problemas de compilação, a comunidade os corrigiu rapidamente. Atualmente, suporta chips como Snapdragon 845, 855 e 865, simplificando a depuração do U-Boot e do mundo seguro, mas o suporte de depuração do kernel é limitado e o suporte SMP está incompleto.

Desenvolvimento

arXivLabs: Colaboração da comunidade em recursos do arXiv

2025-07-01
arXivLabs: Colaboração da comunidade em recursos do arXiv

arXivLabs é uma estrutura que permite o desenvolvimento colaborativo e o compartilhamento de novos recursos do arXiv diretamente no site. Os participantes devem adotar os valores do arXiv de abertura, comunidade, excelência e privacidade de dados do usuário. Tem uma ideia para melhorar a comunidade arXiv? Saiba mais sobre o arXivLabs.

Desenvolvimento

Nimtable: O Painel de Controle para Apache Iceberg™

2025-07-01
Nimtable: O Painel de Controle para Apache Iceberg™

O Nimtable é uma plataforma leve e fácil de usar para monitorar, otimizar e governar seu data lakehouse baseado em Iceberg. Sua interface web simplifica a navegação em tabelas, execução de consultas, análise de distribuição de arquivos e otimização de layouts de armazenamento. Com suporte a vários catálogos (REST Catalog, AWS Glue, tabelas AWS S3 e PostgreSQL) e integração perfeita com armazenamento de objetos como S3, o Nimtable oferece consultas interativas, assistência de IA (incluindo resumos de tabelas gerados por IA e sugestões inteligentes), análise de distribuição de arquivos e recursos de otimização de tabelas (como compactação de arquivos e gerenciamento de expiração de snapshots).

Desenvolvimento Gerenciamento de Dados

Genéricos com Segurança de Tipos em C: Um Uso Inteligente de Unions

2025-07-01
Genéricos com Segurança de Tipos em C: Um Uso Inteligente de Unions

Este artigo apresenta uma técnica para implementar estruturas de dados genéricas com segurança de tipos em C, usando unions para associar informações de tipo a uma estrutura de dados genérica. O autor ilustra a abordagem com uma lista linkada, mostrando como macros e unions permitem a verificação de tipo em tempo de compilação, evitando a insegurança de tipo e o inchaço de código dos métodos genéricos tradicionais. São feitas comparações com abordagens `void*` e membros de array flexíveis, culminando em uma solução que fornece segurança de tipo em tempo de compilação, resultando em erros de compilação quando tipos incorretos são adicionados.

Desenvolvimento

Otimização de Compilador LLVM com Assistência de IA: Uma História de Serialização ASN.1

2025-07-01

Ao manter uma biblioteca Rust para serialização ASN.1 DER, o autor descobriu código ineficiente no cálculo do comprimento de inteiros. Ele experimentou com o Claude IA para otimizar o código e usou a ferramenta de verificação formal Alive2 para validar os resultados. Surpreendentemente, o Claude IA até ajudou a gerar um patch para uma otimização do compilador LLVM, que passou na revisão de código e foi finalmente submetido ao projeto LLVM. Isso demonstra o imenso potencial da IA no desenvolvimento de software, particularmente na otimização de compiladores, ao mesmo tempo em que destaca a importância da revisão manual ao usar ferramentas de IA.

Desenvolvimento

Engenharia Reversa do BotID da Vercel: Um Sistema de Proteção Contra Bots Surpreendentemente Básico?

2025-06-30

Esta publicação mergulha no sistema anti-bot recém-lançado da Vercel, BotID, focando em seu modo básico gratuito. O autor revela que os mecanismos de detecção atuais do modo básico são surpreendentemente rudimentares e facilmente contornados manipulando propriedades do navegador. Embora o BotID colete vários sinais, incluindo impressões digitais do navegador e informações da GPU, o processamento desses sinais é básico, falhando em identificar bots sofisticados. O autor especula que a Vercel está usando o modo básico para coletar silenciosamente dados para treinar modelos anti-bot mais robustos no futuro. O modo Deep Analysis pago, usando scripts anti-bot da Kasada, é significativamente mais complexo que o modo básico.

Desenvolvimento

TokenDagger: Implementação de Alta Performance do TikToken do OpenAI

2025-06-30
TokenDagger: Implementação de Alta Performance do TikToken do OpenAI

TokenDagger é uma alternativa de alto desempenho ao TikToken do OpenAI, otimizado para processamento de texto em larga escala. Benchmarks mostram que o TokenDagger atinge mais de 4x de aumento de velocidade na tokenização de código e um aumento de 2x na taxa de transferência em comparação com o TikToken. Utilizando um mecanismo de expressão regular PCRE2 otimizado e um algoritmo BPE simplificado para mitigar o impacto no desempenho de grandes vocabulários de tokens especiais, o TokenDagger fornece uma substituição direta. A instalação e os testes de desempenho são simples com alguns comandos simples.

Desenvolvimento

Ensō (Vampiro Oculto Keanu) em Beta Pública

2025-06-30
Ensō (Vampiro Oculto Keanu) em Beta Pública

A nova versão do Ensō, com nome de código "Vampiro Oculto Keanu", está disponível para testes públicos! Esta versão concentra-se em uma IU simplificada, acessibilidade aprimorada e privacidade aprimorada. Novos recursos incluem um "Modo Cafeteria" para ocultar texto, vários temas focados em acessibilidade e um mecanismo de renderização de texto refinado. Atualizações futuras incluirão suporte RTL e muito mais, mas esta versão melhora significativamente a experiência do usuário.

Desenvolvimento atualização da IU

Alias de Ponteiro C e Otimização do Compilador: Um Jogo de Segurança do Código-Fonte

2025-06-30
Alias de Ponteiro C e Otimização do Compilador: Um Jogo de Segurança do Código-Fonte

Este artigo aprofunda o impacto do aliasing de ponteiros na otimização de programas em C. Aliasing de ponteiros refere-se a dois ponteiros apontando para o mesmo objeto de memória. Os compiladores, durante a otimização de código, precisam realizar análise de alias para determinar se os ponteiros são aliases. Erros de julgamento podem levar a erros de programa ou degradação de desempenho. O artigo usa um exemplo de cálculo recíproco para ilustrar que, quando dois ponteiros podem ser aliases, o compilador não pode realizar certas otimizações, pois isso pode alterar o algoritmo do programa. O autor também discute mecanismos em C que auxiliam na análise de alias, como o qualificador de ponteiro restrict e o qualificador volatile, juntamente com técnicas avançadas de análise de alias, como análise de alias baseada em tipo e análise de alias baseada em fluxo. Finalmente, o autor propõe um novo modelo de análise de aliasing de ponteiros que considera o tempo de vida do ponteiro e o fluxo de informações, com o objetivo de melhorar a eficiência de otimização do compilador e a segurança do programa.

Desenvolvimento Aliasing de Ponteiros

Modelando Limites de Taxa de API como Desigualdades Diofantinas

2025-06-30

Este artigo explora uma abordagem matemática, usando desigualdades diofantinas, para resolver problemas de limitação de taxa de API. O autor usa um cenário com um limite de 10 solicitações por hora e três tentativas de repetição por tarefa como exemplo, mostrando como transformar o problema de agendamento de tarefas em um problema de viabilidade de inteiros. Ao analisar o padrão de repetição de tarefas e as janelas de tempo, o autor estabelece um modelo de desigualdade e usa Go para escrever um programa que determina se uma nova tarefa pode ser agendada com segurança sem exceder o limite de taxa. O artigo também menciona a otimização do algoritmo para reduzir a complexidade de tempo de O(n^2) para O(n*log(n)).

Compilando cruzado Raylib Lisp Bindings e jogos para Windows a partir do Linux

2025-06-30

Este artigo descreve o processo de compilação cruzada de código C e um programa SBCL Lisp para Windows a partir do Linux, usando Wine para executar um SBCL Windows em um Emacs baseado em Linux, e carregando arquivos .dll na imagem Lisp para produzir um executável .exe. O autor descreve a compilação cruzada de código C usando mingw-w64-toolchain, a configuração da biblioteca Raylib para compilação cruzada para gerar arquivos .dll, a instalação e uso do SBCL no Wine, o uso do vend para gerenciamento de dependências e, finalmente, o uso de sb-ext:save-lisp-and-die para criar o executável Windows.

Desenvolvimento

arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

2025-06-30
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

Tratamento de Erros em Rust: Evolução de Enums Monolíticos para Conjuntos de Erros Elegantes

2025-06-30

O tratamento de erros em Rust tem sido um ponto de discórdia. A abordagem tradicional de definir enums de erro massivos por módulo ou crate leva a código inchado e difícil de manter. Este artigo explora alternativas: representar erros individuais com structs e gerenciar conjuntos de erros usando ferramentas como o crate `error_set`. `error_set` simplifica a definição e conversão de enums de erro por meio de macros, suportando composição e relacionamentos de subconjuntos entre conjuntos de erros para um tratamento de erros mais limpo e eficiente. Embora ainda seja necessário trabalho extra para erros complexos que exigem informações adicionais, `error_set` fornece uma abordagem mais elegante e mantenedora para o tratamento de erros em Rust.

Desenvolvimento

Despacho de Eventos em Processo Rápido para Go

2025-06-30
Despacho de Eventos em Processo Rápido para Go

Este pacote Go oferece um despachador de eventos em processo de alta performance, ideal para desacoplar módulos e habilitar o tratamento assíncrono de eventos. Com velocidades de 4 a 10 vezes mais rápidas do que canais (processando milhões de eventos por segundo!), ele suporta operações tanto síncronas quanto assíncronas, com foco na simplicidade. Perfeito para desacoplar módulos intraprocessos, pub/sub leve e cenários de alto rendimento, mas não adequado para comunicação interprocessos, persistência de eventos ou roteamento avançado.

Desenvolvimento Despacho de Eventos

Escalonando Builds de Contêineres de Clientes com a API Depot

2025-06-30
Escalonando Builds de Contêineres de Clientes com a API Depot

Muitas plataformas SaaS precisam executar código em nome de seus clientes, apresentando desafios na construção de contêineres. Esta publicação demonstra a construção de ferramentas com a API Depot para criar ambientes de construção isolados para uma plataforma SaaS multilocatária. Usando um cliente Go, você pode criar projetos, gerenciar caches de projetos, recuperar métricas de compilação e logs. A API Depot utiliza Buf.build, oferecendo bibliotecas de clientes para várias linguagens, tornando a integração em infraestruturas existentes perfeita. O artigo detalha a criação, exclusão e redefinição de caches de projetos, a recuperação de métricas de compilação e detalhes de etapas, permitindo, em última análise, uma infraestrutura de contêineres de clientes escalonável e segura.

Dataclasses Python: `kw_only=True` para melhor manutenção e extensibilidade

2025-06-30

Os dataclasses do Python oferecem uma maneira conveniente de criar classes de dados, mas o método `__init__` padrão usa argumentos posicionais, o que pode levar a dificuldades de manutenção e extensão. Este artigo apresenta o parâmetro `kw_only=True`, que impõe o uso de argumentos de palavra-chave, evitando problemas causados por alterações na ordem dos argumentos e permitindo que subclasses adicionem campos obrigatórios de forma flexível. Embora esse parâmetro tenha sido introduzido no Python 3.10, o artigo também fornece uma solução para compatibilidade com versões anteriores.

Desenvolvimento

A Má Interpretação de Knuth: 'Otimização Prematura é a Raiz de Todo o Mal'

2025-06-30
A Má Interpretação de Knuth: 'Otimização Prematura é a Raiz de Todo o Mal'

Este artigo aprofunda o significado real da famosa frase de Donald Knuth: "A otimização prematura é a raiz de todo o mal". Ao analisar exemplos do artigo de Knuth sobre o uso de instruções goto e a implementação de multiconjuntos, o autor demonstra que a frase não desestimula completamente pequenas otimizações. Experimentos comparando diferentes implementações revelam que até mesmo otimizações menores (como a desdobra de laços) podem gerar ganhos de desempenho significativos para código crítico e funções de biblioteca usadas com frequência, dependendo dos resultados de benchmarking. O autor defende, em última análise, o uso de funções de biblioteca padrão bem otimizadas para evitar esforços de otimização desnecessários e aproveitar as capacidades de otimização de compiladores modernos.

Desenvolvimento

O Livro de Shaders: Um Guia Passo a Passo para Shaders de Fragmentos

2025-06-30
O Livro de Shaders: Um Guia Passo a Passo para Shaders de Fragmentos

O Livro de Shaders, escrito por Patricio Gonzalez Vivo e Jen Lowe, é um guia passo a passo para entender shaders de fragmentos. Ele aborda suavemente as complexidades deste tópico abstrato. O livro inclui biografias dos autores e agradecimentos a numerosos contribuidores e tradutores que tornaram possíveis as versões em vários idiomas.

Desenvolvimento

Contornando a Detecção de Máquina Virtual de Malware: Simulando uma ventoinha de CPU via SMBIOS personalizado

2025-06-30

Malwares frequentemente verificam a ausência de componentes de hardware normalmente não emulados em máquinas virtuais (como uma ventoinha de CPU) para evitar análise. Esta publicação detalha como contornar essa detecção modificando os dados SMBIOS da máquina virtual para simular uma ventoinha de CPU. O autor explica detalhadamente as etapas para ambientes Xen e QEMU/KVM, incluindo a obtenção de dados SMBIOS, a criação de um arquivo SMBIOS personalizado e a configuração da VM. A publicação também destaca a necessidade de lidar adicionalmente com os dados do SMBIOS Tipo 28 (sonda de temperatura) no Xen para uma decepção bem-sucedida do WMI.

Desenvolvimento

NativeJIT: Compilador JIT de Alto Desempenho para o Bing

2025-06-30
NativeJIT: Compilador JIT de Alto Desempenho para o Bing

NativeJIT é uma biblioteca open-source e multiplataforma para compilação just-in-time de alto desempenho de expressões que envolvem estruturas de dados C. Desenvolvida pela equipe do Bing para uso no mecanismo de busca Bing, ela é crucial para a pontuação de documentos com base em correspondências de palavras-chave e intenção do usuário. Leve e rápida, ela depende apenas do tempo de execução C++ padrão e roda em Linux, OSX e Windows. Seu código otimizado, particularmente sua alocação de registradores, permite o processamento eficiente de consultas em larga escala.

Desenvolvimento

Máquina de Desenvolvimento Econômica com Ampere Altra

2025-06-30
Máquina de Desenvolvimento Econômica com Ampere Altra

Precisando de uma máquina de desenvolvimento com suporte a tamanho de página de 64k, o autor construiu um sistema baseado em Ampere Altra. Ele escolheu uma placa-mãe AsrockRack ALTRA8BUD-1L2T, um processador Q80-30 usado (80 núcleos, 3,0 GHz), um cooler Arctic Freezer 4U-M e oito sticks de RAM SK Hynix HMA82GR7CJR8N-XN de 16 GB. Após algumas resoluções de problemas, o sistema inicializou com sucesso. Ele também selecionou um gabinete e uma fonte de alimentação adequados, adicionando armazenamento NVME e uma placa gráfica. O custo total foi de cerca de € 1800, um pouco acima do orçamento. Os planos futuros incluem a instalação do Fedora 42, a criação de VMs RHEL e CentOS Stream, experimentos com diferentes GPUs e uso como desktop.

Desenvolvimento Máquina de 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
1 2 49 50 51 53 55 56 57 214 215