1 pontos por GN⁺ 2025-08-04 | 1 comentários | Compartilhar no WhatsApp
  • O IOCCC28 deste ano foi retomado após 4 anos e recebeu numerosas entradas de código C de alta complexidade de desenvolvedores de todo o mundo
  • A reconstrução do site e da infraestrutura, a adoção do mkiocccentry toolkit e a melhoria do sistema de submissão elevaram muito a eficiência operacional
  • Embora o processo de julgamento tenha ficado ainda mais complexo e rigoroso do que antes, o período de avaliação foi bastante reduzido em relação ao normal
  • Embora a regra de tamanho do código tenha sido relaxada, vários trabalhos pequenos e de alta qualidade foram selecionados, o que sugere que mudanças futuras nas regras do concurso serão limitadas
  • Trabalhos vencedores interessantes e originais, técnicas de ofuscação e máquinas virtuais/emuladores experimentais foram apresentados, contribuindo para elevar o nível da programação em C

Visão geral do IOCCC28 e contexto de realização

  • O 28º International Obfuscated C Code Contest (IOCCC28), realizado em 2024, foi uma competição de código C criativo e de leitura difícil com participação de desenvolvedores do mundo todo, após um hiato de 4 anos
  • Durante esse período, o site oficial da IOCCC foi totalmente reconstruído em grande escala sob o nome de "Great Fork Merge", com mais de 6.168 commits
  • Em termos operacionais, foram aplicadas várias inovações, como a adoção do mkiocccentry toolkit, novo fluxo de cadastro e servidor de submissão, melhorando a eficiência de julgamento e a velocidade de divulgação do código
  • As inscrições foram aceitas de 5 de março de 2025 a 5 de junho de 2025, e o julgamento terminou em apenas "33 dias", com o código-fonte de todas as obras sendo publicado em cerca de 2 horas após o fim do concurso

Entradas e tendência de seleção

  • Como o número de entradas e a qualidade do IOCCC28 aumentaram bastante este ano, a dificuldade de seleção também subiu, e foram emitidos 23 vencedores, o maior número já registrado
  • "Embora a pausa de 4 anos tenha permitido a vinda de melhores entradas, no geral os participantes também mostraram progresso evidente em habilidades de ofuscação e programação em C"
  • Embora tenha sido aplicado um novo limite de tamanho de código (com aumento de cerca de 21%), mais da metade dos vencedores foi submetida com menos de 2/3 do limite total, e 10 delas abaixo de menos de metade do tamanho, mostrando eficiência e qualidade
  • Por isso, prevê-se que haja pouca alteração nas regras de tamanho de código nos próximos 10 anos

Regras de julgamento e planos futuros

  • As regras e diretrizes da IOCCC serão revisadas para ficarem ainda mais inovadoras e intuitivas, e os IOCCC Judges devem iniciar os preparativos para o IOCCC29, previsto para dezembro de 2025
  • Também há planos de preparar correções com base em Pull Request para o repositório GitHub de vencedores da IOCCC e para o repositório do mkiocccentry toolkit

Destaques e vencedores

  • Foram selecionados vencedores de diversos temas, com as seguintes obras e características principais:

    • ChatIOCCC: implementação de um mecanismo de inferência LLM de código aberto baseado em LLaMA 2 da Meta como o mecanismo de inferência LLM mais minimalista do mundo, oferecendo uma função de chatbot divertida
    • Eh: implementação de um código ofuscado de editor com acento UTF-8 que é mais prática que o ed(1)
    • One-liner de 135 bytes: código extremamente curto e ofuscado que executa várias saídas com base em valores hexadecimais inseridos
    • C Preprocessor Art: renderização de imagem executando o pré-processador entre milhares e centenas de milhares de vezes, com tempo de execução de script muito longo e experiência única
    • Z₃ Virtual Machine: máquina virtual baseada na terceira versão da Z-machine; a interpretação do código-fonte pode ser apreciada como um jogo
    • Ambiente virtual com emulador C64: máquina virtual onde é possível testar com segurança cenários potencialmente danosos, como fork bomb, exclusão de arquivos etc., incluindo o C64
    • Emulação do chip Intel 4004: reprodução artística que emula em nível de porta o circuito do primeiro microprocessador comercial do mundo lançado em 1971
    • Multilingual Puzzle: ofuscação inovadora para pessoas familiarizadas com pelo menos três linguagens (C, inglês e outras)

Participantes e recomendações futuras

  • A ofuscação semelhante a obras vencedoras anteriores recebe pontuação menor, e originalidade e acabamento são critérios principais de julgamento
  • Para participantes não premiados, recomenda-se tentar novamente com melhorias ou explorar abordagens diferentes
  • A publicação separada de obras não vencedoras também é bem-vinda

Guia de compilação e execução dos vencedores

  • Podem existir problemas de compatibilidade com alguns compiladores C; recomenda-se usar a versão mais recente do clang ou gcc
  • O FAQ e a documentação oficial orientam sobre como resolver problemas e enviar correções

Download dos vencedores do IOCCC28 de 2024

  • O conjunto completo dos vencedores é fornecido como arquivo compactado (2024.tar.bz2), e é possível aprender técnicas de ofuscação originais revisando a página detalhada de cada obra, o código-fonte e os comentários do autor

(Para links de download de vencedores e a descrição detalhada por vencedor acessíveis diretamente no conteúdo, consulte o site oficial)

1 comentários

 
GN⁺ 2025-08-04
Comentários no Hacker News
cc -Wno-implicit-int -Wno-implicit-function-declaration phase.c && ./a.out
  • Por causa do redesign, todos os links para entradas anteriores do IOCCC foram quebrados. Links que ficaram espalhados por décadas em sites como a Wikipédia passaram a bloquear sem redirecionamento, e agora é obrigatório usar um navegador com suporte a JavaScript para ver as entradas no Github
  • Para acessar em um ambiente sem JS, dá para clonar o repositório com git clone
  • Ao ver esta entrada, fui ler trabalhos antigos do IOCCC, e este one-liner de descompressão de imagem imprime a própria imagem do logo ao receber como argumento o valor de hash do código-fonte. É fascinante demais
  • Fiquei curioso sobre como esse truque de hash funciona, e há uma explicação nas notas. Aliás, o conteúdo das notas também é muito engraçado
    Está escrito: "Embora a concisão seja mais valorizada do que a obscuridade, este programa ainda atende claramente ao padrão de clareza característico do IOCCC"
  • Por uma coincidência realmente impressionante, o número de bits do formato de entrada quase coincide com o log2 da quantidade de avaliações de MD5 que uma GPU de cinco anos de idade consegue fazer em uma hora
  • Essa pessoa também é a criadora do jq
  • Foi escrito em 135 bytes! É um código quase de cientista maluco. Um nível realmente difícil de acreditar
  • As regras de entrada do IOCCC são ótimas. São normas muito específicas que mostram claramente como foram exploradas no passado
Rule 2

Rule 2 exige que a entrada satisfaça tanto a Rule 2a quanto a 2b  
É possível usar a ferramenta iocccsize(1) para verificar se o código passa por esta regra  
Basta passar o nome do arquivo como argumento, como em prog.c

Rule 2a  
O tamanho do código-fonte do programa não pode exceder 4993 bytes

Rule 2b  
Ao medir o tamanho do código com a ferramenta iocccsize(1), o valor de saída não pode exceder 2503

Para mais detalhes sobre isso, consulte o FAQ ou a Rule 17
  • Então isso quer dizer que é permitido colocar 2053 bytes de dados extras no nome do arquivo. É uma regra mais frouxa do que eu imaginava
  • 4993 bytes, fico curioso sobre como chegaram a um número tão específico
  • Queria que o underhanded-c.org voltasse a abrir
  • Fico pensando se existe argumento melhor para não usar C. Isso parece uma conclusão clara e séria
  • Dá para escrever código ofuscado assim em qualquer linguagem. C combina especialmente bem com isso, mas a maioria das entradas do IOCCC usa truques que podem ser aplicados a várias linguagens
  • Esta é uma das minhas entradas favoritas do IOCCC e também uma vencedora
    Ver persano.c de 2005
  • Se eu fosse programador, provavelmente meu trabalho pareceria para os outros uma cifra completamente sem sentido
  • Isto é realmente incrível
    Entrada macke de 2024
    Este programa é um emulador que executa um sistema Linux moderno inteiro com funcionalidade minimizada
  • Sou o autor. Este binário, com 1,6 MB, roda um Linux moderno. Usei todo tipo de técnica possível para reduzir ao máximo o tamanho. Ele também foi compilado para WebAssembly, então pode rodar dentro do navegador
  • Esta entrada me deixou bastante confuso