3 puntos por GN⁺ 2025-05-27 | 2 comentarios | Compartir por WhatsApp
  • 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

 
ilotoki0804 2025-05-30

Me pregunto con qué tecnología funciona GeekNews jajaja

 
GN⁺ 2025-05-27
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

    • Una observación en tono de broma: al final un sistema Lisp termina siendo el representante emblemático de "Worse is better"
    • Se destaca la ironía de que la plataforma funcione sobre la menor cantidad posible de tecnología y que la operación de HN dependa de la intervención humana, con una comprensión instintiva de que "tener más tecnología no necesariamente ayuda a todos"
    • HN tiene pocas funciones, pero eso lleva a preguntarse si de verdad necesitamos más; se valora positivamente que justamente por tener menos sea más minimalista, recordando la idea de "less is more"
    • Se piensa que ayuda mucho que HN no necesite generar ingresos
    • Se menciona la cita de Antoine de Saint-Exupéry: la perfección no se alcanza cuando ya no hay nada que agregar, sino cuando ya no queda nada por quitar
  • 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

    • Justamente ese tipo de cosa es donde Lisp brilla más
  • 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

    • Comentario de que MzScheme era la parte central (sin GUI) de PLT Scheme, hoy Racket, y que siempre dio curiosidad que, según registros antiguos de la lista de correo, pg había empezado a desarrollar Arc sobre Scheme48 antes de mudarse a PLT
    • Se preguntan si están dando una vuelta completa por todas las implementaciones de Lisp, comparándolo con una divertida "versión rara del barco de Teseo"
    • También surge la duda de si MzScheme, PLT Scheme y Racket no son en la práctica casi lo mismo
  • 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é

    • Se recuerda que Hacker News, antes Startup News, en la práctica funciona como el departamento de marketing de Y Combinator, una de las firmas de inversión más exitosas del mundo, y que Paul Graham, fundador de HN y autor original, hoy como mínimo es multimillonario; aun así, se destaca que sigan buscando autosuficiencia financiera y aceptando donaciones
  • 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

    • Se comenta que los CPU modernos son tan rápidos que incluso 4chan llegó a manejar 4 millones de usuarios con un solo servidor y 10 mil líneas de código PHP espagueti de hace 10 años; con una calidad de código mínimamente aceptable, profiling y optimización, es posible manejar muchísimo tráfico con una fracción muy pequeña de los núcleos de CPU, y que los cuellos de botella suelen estar más bien en disco y network I/O; además, HN solo sirve texto, así que es relativamente más fácil
    • Comentario ingenioso: cada vez que un desarrollador se da cuenta de lo inflado y lento que es el software moderno, un ángel gana sus alas
    • Asombro ante el hecho de que HN realmente corría en un solo proceso, un solo núcleo y un solo servidor, con enlace a una discusión relacionada en HN
    • Consejo práctico de que, si se aprovechan bien los CPU modernos, se puede sostener mucho throughput antes de tener que escalar horizontalmente
    • Se comparten varias discusiones antiguas: enlace1, enlace2, enlace3, enlace4
  • Como operador de un sitio web hecho con el código open source de Arc, alguien dice que desea desesperadamente poder usar Clarc

    • Le preguntan cuál es ese sitio
  • 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

    • Otra persona comparte que la comunidad de Racket siempre le pareció muy amable y que siempre le corrigieron bien todos los bugs que reportó
  • 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."

    • Explican que "since" debe usarse con un punto en el tiempo, mientras que "a few months" expresa una duración, por eso suena extraño; "since a few months ago" o "as of a few months ago" sonarían más naturales, y además analizan que el primer párrafo mezcla tiempos verbales, lo que hace que resalte aún más
  • 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

    • Responden que ambos desarrolladores dejaron el proyecto hace ya mucho tiempo
  • Valoración positiva de que Common Lisp es mucho más práctico que Racket y de que SBCL se siente casi como magia