3 pontos por GN⁺ 2025-05-27 | 2 comentários | Compartilhar no WhatsApp
  • Hacker News era anteriormente implementado em Arc, uma linguagem da família Lisp, mas nos últimos meses passou para SBCL (Steel Bank Common Lisp)
  • O principal objetivo dessa mudança foi melhorar o desempenho e viabilizar suporte a múltiplos núcleos
  • Com o desenvolvimento do Lilt, um conversor de Arc para JS, e do Clarc, um conversor de Arc para Common Lisp, a estrutura ficou mais sistematizada
  • Tornar público o código-fonte do Clarc é relativamente simples, mas abrir toda a base de código do HN é difícil por motivos de segurança
  • Com a nova arquitetura, o HN fez uma transição suave, melhorando a experiência do usuário

Visão geral

  • O Hacker News foi originalmente desenvolvido em Arc, uma linguagem da família Lisp criada por Paul Graham
  • O Arc era implementado sobre Racket, mas nos últimos meses foi migrado para SBCL (Steel Bank Common Lisp)
  • O motivo foi melhorar o desempenho

Desempenho e mudanças de funcionalidade

  • Melhorias de desempenho já podem ser percebidas no uso real, incluindo o fim da paginação em alguns casos
  • Antes, threads longas de comentários precisavam de paginação, mas agora tudo é carregado de uma vez
  • Essa mudança foi possível com a adoção do Clarc
  • O Clarc permite que o HN rode de forma estável em ambientes multicore
  • O desenvolvimento do Clarc vem acontecendo há vários anos e recentemente se aproximou da fase final

Forma de implementação e arquitetura

  • Existem o Lilt, que converte Arc para JS, e o Clarc, que converte Arc para Common Lisp
  • A estrutura subjacente da implementação anterior de Arc foi redesenhada, dividindo o Arc em várias camadas de desenvolvimento
    • O arc0 é escrito na linguagem do sistema (Racket, JS, CL)
    • O arc1 é escrito sobre o arc0, e o arc2 sobre o arc1
    • Na camada superior (arc2) é implementada toda a funcionalidade, enquanto as camadas inferiores são minimizadas
  • Graças a essa estrutura, ficou mais fácil reimplementar o Arc em diferentes runtimes

Questões relacionadas à abertura do código-fonte

  • Tornar o Clarc (implementação de Arc em Common Lisp) open source é relativamente simples
    • Isso é possível ao portar releases existentes do Arc para o Clarc
    • Um app de exemplo inicial do HN já está incluído, sem partes específicas do HN ou do YC
  • Porém, toda a base de código do HN embute vários mecanismos de segurança para evitar abuso
    • Se o código fosse aberto, haveria o risco de neutralizar esses mecanismos
    • Separar as partes relacionadas à segurança daria muito trabalho

2 comentários

 
ilotoki0804 2025-05-30

Fico curioso para saber com que tecnologia o GeekNews funciona também kkk

 
GN⁺ 2025-05-27
Comentários do Hacker News
  • A ideia de que o Hacker News é um exemplo perfeito da filosofia "Worse is better" aplicada à engenharia social; no fim dos anos 90, o Slashdot tinha muito mais recursos e era mais rico em funcionalidades, mas o sucesso do HN seria resultado de um foco extremamente concentrado e de um sistema de moderação forte

    • Uma observação bem-humorada de que finalmente um sistema Lisp virou o principal representante de "Worse is better"
    • Destaque para a ironia de operar a plataforma sobre o mínimo possível de tecnologia e depender da intervenção humana na operação do HN, com a percepção instintiva de que “ter mais tecnologia nem sempre ajuda todo mundo”
    • O HN tem poucos recursos, mas isso leva à dúvida sobre se realmente precisamos de mais funcionalidades; uma avaliação positiva de que, graças a isso, ele acaba sendo mais minimalista, lembrando a ideia de que "less is more"
    • A opinião de que ajuda muito o fato de o HN não precisar gerar lucro
    • Menção à famosa frase de Antoine de Saint-Exupéry de que a perfeição é alcançada não quando não há mais nada a acrescentar, mas quando não há mais nada a remover
  • O Hacker News não foi totalmente reescrito em Common Lisp; o que aconteceu foi a reimplementação do runtime de Arc em Common Lisp

    • Admiração pelo fato de que esse tipo de coisa é exatamente aquilo em que Lisp é melhor
  • Arc foi implementado sobre Racket, e o contexto compartilhado é que ele começou originalmente em MzScheme (primeiro o núcleo do PLT Scheme, depois renomeado para Racket) e foi portado para Racket graças à contribuição de um desenvolvedor chamado kogir

    • Comentário de que MzScheme era a parte central (sem GUI) do PLT Scheme (hoje Racket), e que sempre houve curiosidade porque, pelos registros antigos de pg em mailing lists, o desenvolvimento de Arc começou sobre Scheme48 antes de migrar para PLT
    • A dúvida divertida sobre se estamos dando uma volta completa por todas as implementações de Lisp, descrita como uma versão estranha do navio de Teseu
    • A pergunta sobre se MzScheme, PLT Scheme e Racket não seriam, na prática, a mesma coisa
  • A impressão de que Dang também contribui para a base de código, e de que provavelmente existem outras pessoas que se dedicam ao HN há muito tempo; o relato de que a comunidade do HN é a comunidade de internet que permaneceu por mais tempo e de forma mais agradável para essa pessoa, a ponto de querer ajudar Dang de alguma forma ou ao menos pagar um café

    • O lembrete de que o Hacker News (antes Startup News) funciona, na prática, como o departamento de marketing da Y Combinator, uma das firmas de investimento mais bem-sucedidas do mundo, e de que Paul Graham, fundador do HN e autor original, hoje é pelo menos bilionário; mesmo assim, o site continua buscando autossuficiência financeira e também aceita doações
  • Ao ver a explicação de que Clarc é muito mais rápido e tem melhor suporte a multicore, houve surpresa ao descobrir que o HN antes rodava inteiramente em single-core

    • A observação de que CPUs modernas são tão rápidas que até o 4chan chegou a atender 4 milhões de usuários com 10 mil linhas de código PHP espaguete de 10 anos atrás em um único servidor; com um mínimo de qualidade de código, profiling e otimização, é possível lidar com tráfego enorme usando apenas uma fração muito pequena dos núcleos da CPU, e os gargalos normalmente estão em disco e I/O de rede; servir apenas texto, como o HN faz, torna isso relativamente fácil
    • O comentário espirituoso de que toda vez que um desenvolvedor percebe o quanto o software moderno é inchado e lento, um anjo ganha asas
    • Choque ao saber que o HN realmente rodava em um processo, um núcleo e um servidor, com link para uma discussão relacionada no HN
    • O conselho prático de que, usando bem CPUs modernas, é possível alcançar desempenho excelente e suportar bastante throughput antes mesmo de precisar fazer scale-out
    • Fornecimento de vários links para discussões antigas: link1, link2, link3, link4
  • Como operador de um site feito com o código open source de Arc, a pessoa diz torcer muito pelo uso de Clarc

    • A pergunta sobre qual é esse site
  • Admiração por sbcl (Steel Bank Common Lisp) como algo realmente pronto para produção, junto da especulação de que o pessoal de Racket talvez não corrigisse bugs por não considerar o uso de Arc em produção; a avaliação de que não conhecem outros projetos em produção usando Racket, e o compartilhamento de apreço pelo Armed Bear (por causa do forte ecossistema de bibliotecas da JVM), junto com o link para Armed Bear Common Lisp

    • Relato de experiência de que a comunidade de Racket sempre foi muito gentil e corrigia bem todos os bugs solicitados
  • Apontamento de estranheza linguística na frase "HN runs on top of SBCL since a few months", com a sugestão de que o inglês correto seria "HN has been running on top of SBCL for a few months now."

    • Explicação de que since deve ser usado com um ponto no tempo, enquanto "a few months" indica duração, então a frase soa estranha; "since a few months ago" ou "as of a few months ago" seriam mais naturais, e também há uma mistura de tempos verbais no primeiro parágrafo, o que torna isso ainda mais perceptível
  • Curiosidade sobre se Paul Graham ou Robert Morris ainda participam do desenvolvimento; a pessoa diz ter percorrido o artigo inteiro sem encontrar essa informação e demonstra interesse em ver o que Arc acrescenta ao CL (Common Lisp), incluindo o link para arclanguage.org

    • Resposta de que os dois desenvolvedores já deixaram o projeto há muito tempo
  • Uma avaliação positiva de que Common Lisp é muito mais prático do que Racket, e de que o SBCL parece quase mágico