- 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
Fico curioso para saber com que tecnologia o GeekNews funciona também kkk
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
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
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
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é
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
Como operador de um site feito com o código open source de Arc, a pessoa diz torcer muito pelo uso de Clarc
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 LispApontamento 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."
sincedeve 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ívelCuriosidade 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
Uma avaliação positiva de que Common Lisp é muito mais prático do que Racket, e de que o SBCL parece quase mágico