1 pontos por GN⁺ 2025-05-30 | Ainda não há comentários. | Compartilhar no WhatsApp
  • O Compiler Explorer vem mudando seu método de armazenamento desde 2012 para manter links compartilhados vivos por muito tempo, mas o fim do goo.gl tornou urgente preservar os links antigos godbolt.org/g/abc123
  • No início, todo o estado do compilador ficava na URL; em 2014, foi adicionado o serviço de encurtamento de URL do Google; e, em 2016, após o Stack Overflow proibir URLs encurtadas, foi criado o link alternativo godbolt.org/g/abc123
  • Desde 2018, com o limite de tamanho de URL se tornando um problema maior, o estado passou a ser salvo como documentos JSON no S3, e um sistema próprio com DynamoDB gerencia o mapeamento entre hash curto e caminho completo
  • Quando o Google encerrar os links do goo.gl em agosto de 2025, ficará difícil resolver os links antigos baseados nisso, então cerca de 12.000 links g encontrados na web pública e em logs, junto com seus destinos de redirecionamento, estão sendo reunidos em um banco próprio
  • Usuários que ainda tenham links antigos do Compiler Explorer podem ajudar visitando-os agora, o que pode colocá-los na lista de preservação; conhecimento compartilhado que precisa durar muito tempo fica mais seguro quando se possui diretamente a infraestrutura crítica

Mudanças na forma de salvar links do Compiler Explorer

  • Em 2012, o Compiler Explorer armazenava todo o estado dentro da própria URL
  • Codificar todo o estado do compilador na URL deixava o endereço longo demais e difícil de lidar, então em março de 2014 foi adicionado suporte ao encurtador goo.gl do Google
  • Na época, os links curtos tinham o formato goo.gl/abc123; ao clicar, redirecionavam para a URL completa do Compiler Explorer, onde o estado era decodificado a partir da própria URL

O link alternativo após a proibição do Stack Overflow

  • Em 2016, o Stack Overflow proibiu serviços de encurtamento de links por poderem esconder o destino real
  • Essa medida também afetou os links do Compiler Explorer, e naquele momento não havia intenção de armazenar diretamente os dados dos usuários
  • A solução alternativa foi continuar usando o goo.gl, mas apresentar ao usuário links no formato godbolt.org/g/abc123
    • abc123 era o ID único do goo.gl
    • Acesso a /g/abc123 redirecionava para goo.gl/abc123
    • O goo.gl então redirecionava novamente para a URL completa do godbolt.org com o estado embutido
  • Depois disso, a API do Google passou a ser usada para evitar várias etapas na cadeia de redirecionamentos

Migração para armazenamento próprio em 2018

  • Em 2018, o limite de tamanho da URL virou um problema ainda maior, e os dados já estavam sendo comprimidos dentro da URL
  • O Compiler Explorer mudou para uma estrutura que salva o estado diretamente
    • Faz hash da entrada
    • Salva o estado como documento JSON no S3
    • Oferece a forma curta do hash como URL godbolt.org/z/hashbit
    • Usa o DynamoDB para armazenar o mapeamento entre o hash curto e o caminho completo
  • Também verifica se o hash curto do link contém palavras ofensivas
    • Se surgir uma palavra ofensiva, informações extras são adicionadas de propósito ao documento para gerar outro hash
    • Esse comportamento levou ao bug #1297

O problema de preservação criado pelo fim do goo.gl

  • O Compiler Explorer ainda oferece suporte aos links godbolt.org/g/abc123
  • O Google disse que links existentes continuariam redirecionando para o destino pretendido, mas o goo.gl se tornou somente leitura há alguns anos e está com encerramento final previsto para agosto de 2025
  • Depois disso, não será mais possível resolver links baseados no goo.gl
  • Os links goo.gl em si não podem ser resolvidos pelo lado do Compiler Explorer, mas os links godbolt.org/g/abc123 podem ser preservados em um banco de dados próprio

Coleta de links antigos e banco de dados próprio

  • Nos últimos dias, links antigos e suas URLs de destino vêm sendo coletados de várias fontes públicas
  • Até agora, foram encontrados cerca de 12.000 links
    • API de busca na web do Google
    • API do GitHub
    • Logs da própria web
    • Dump de dados do Stack Overflow no archive.org
    • Lista de páginas da web arquivadas pelo Archive.org
  • Internamente, foi feita uma mudança para priorizar o banco próprio em vez do goo.gl
  • Novos links g que ainda não estão no banco também estão sendo monitorados
  • Localmente existe um banco sqlite, e em produção é usado o Dynamo

Como os usuários podem ajudar

  • Se você guardou links antigos godbolt.org/g/abc123, visitar cada um deles agora ajuda
  • Ao visitar o link, ele fica registrado nos logs da web e pode ser adicionado ao banco depois
  • Caso contrário, esse link pode deixar de funcionar após agosto de 2025
  • Esse caso mostra o risco de depender de serviços de terceiros para infraestrutura importante
  • Para cumprir a promessa de uma “URL que dure para sempre”, é preciso possuir diretamente toda a stack

Ainda não há comentários.

Ainda não há comentários.