- Hacker News antes estaba implementado en Arc, un lenguaje de la familia Lisp, pero en los últimos meses se migró a SBCL(Steel Bank Common Lisp)
- El objetivo principal de esta transición es mejorar el rendimiento y habilitar la posibilidad de soporte multinúcleo
- Con el desarrollo de Lilt, un convertidor de Arc a JS, y Clarc, un convertidor de Arc a Common Lisp, la estructura quedó más organizada
- Publicar el código fuente de Clarc es relativamente sencillo, pero liberar toda la base de código de HN es difícil por motivos de seguridad
- Con la nueva arquitectura, HN hizo una transición fluida y mejoró la experiencia de usuario
Resumen
- Hacker News fue desarrollado originalmente en Arc, un lenguaje de la familia Lisp creado por Paul Graham
- Arc estaba implementado sobre Racket, pero en los últimos meses se migró a SBCL(Steel Bank Common Lisp)
- La razón fue mejorar el rendimiento
Cambios de rendimiento y funcionalidad
- Se confirmó una mejora de rendimiento en el uso real, incluyendo la eliminación de la paginación en algunos casos
- Antes, los hilos de comentarios largos requerían paginación, pero ahora cambiaron a un modelo en el que todo se carga de una sola vez
- Este cambio fue posible gracias a la adopción de Clarc
- Clarc permite que HN funcione sin problemas en un entorno multinúcleo
- El desarrollo de Clarc ha avanzado durante varios años y recientemente se acerca a su etapa final
Método de implementación y estructura
- Existen Lilt, que convierte Arc a JS, y Clarc, que convierte Arc a Common Lisp
- Se rediseñó la estructura subyacente de la implementación existente de Arc para desarrollar Arc en varias capas
- arc0 está escrito en el lenguaje del sistema (Racket, JS, CL)
- arc1 está escrito sobre arc0, y arc2 sobre arc1
- En la capa superior (arc2) se implementa toda la funcionalidad, mientras que las capas inferiores se mantienen al mínimo
- Gracias a esta estructura, resulta más fácil reimplementar Arc en distintos entornos de ejecución
Temas relacionados con la publicación del código fuente
- La publicación como código abierto de Clarc (la implementación de Arc en Common Lisp) es relativamente sencilla
- Sería posible portando las versiones existentes de Arc a Clarc
- Ya se incluye una app de ejemplo inicial de HN, sin partes específicas de HN o de YC
- Sin embargo, toda la base de código de HN incluye varios mecanismos de seguridad integrados para evitar abusos
- Si el código se hiciera público, existiría el riesgo de que esa protección quedara inutilizada
- Separar las partes relacionadas con seguridad implica una carga importante
2 comentarios
Me pregunto con qué tecnología funciona GeekNews jajaja
Opinión de Hacker News
Hacker News parece un ejemplo perfecto de la filosofía de "Worse is better" aplicada a la ingeniería social; a fines de los 90, Slashdot tenía muchas más funciones y era más rico en características, pero se valora que el éxito de HN vino de un enfoque extremadamente concentrado y un sistema de moderación fuerte
Aclaran que Hacker News no fue reescrito por completo en Common Lisp, sino que lo que se reimplementó en Common Lisp fue el runtime de Arc
Se comparte el contexto de que Arc fue implementado sobre Racket, y que originalmente comenzó en MzScheme (al principio el núcleo de PLT Scheme, luego renombrado como Racket) antes de pasar a Racket gracias a la contribución de un desarrollador llamado kogir
Parece que Dang también contribuye al codebase, y además seguramente hay otras personas que han dedicado mucho tiempo a HN; alguien cuenta que la comunidad de HN es la comunidad de internet que más tiempo y más gratamente le ha acompañado, y que incluso como simple participante le gustaría ayudar a Dang de alguna manera o al menos invitarle un café
Al leer que Clarc es mucho más rápido y tiene mejor soporte multicore, varios expresan sorpresa al descubrir que HN antes corría completamente en un solo núcleo
Como operador de un sitio web hecho con el código open source de Arc, alguien dice que desea desesperadamente poder usar Clarc
Admiración por sbcl (Steel Bank Common Lisp) como algo realmente apto para producción; especulan que quizá en el mundo de Racket no corregían bugs porque no consideraban el uso de Arc en producción, y comentan que no conocen otros proyectos de Racket usados en producción; también comparten aprecio por Armed Bear, especialmente por el potente ecosistema de bibliotecas de JVM, junto con un enlace a Armed Bear Common Lisp
Se señala una rareza lingüística en la frase "HN runs on top of SBCL since a few months" y se propone como inglés correcto: "HN has been running on top of SBCL for a few months now."
Hay curiosidad sobre si Paul Graham o Robert Morris todavía participan en el desarrollo; alguien dice que revisó todo el artículo pero no encontró mención, y también expresa interés por ver qué aporta Arc encima de CL (Common Lisp), compartiendo el enlace arclanguage.org
Valoración positiva de que Common Lisp es mucho más práctico que Racket y de que SBCL se siente casi como magia