Acerca del servicio
TraducidoEscribo código probado en batalla en Chez Scheme para equipos que necesitan velocidad nativa real, no un intérprete que solo se ve bien en demostraciones. En los últimos nueve años he entregado compiladores, herramientas de tiempo de ejecución y servicios de larga duración en Chez Scheme, incluido trabajo directamente bajo el backend de Racket donde Chez Scheme lleva la carga principal. Si tienes un núcleo numérico, un analizador, un motor de reglas o un pipeline de datos que es demasiado lento en un lenguaje de scripting, lo portaré a Chez Scheme y lo haré funcionar casi tan rápido como C escrito a mano.
Cada día utilizo toda la superficie R6RS: estructura de biblioteca limpia, importaciones de fase, tipos de registro adecuados, jerarquías de condiciones y E/S portátil. Me siento cómodo en lo profundo del sistema de macros: escribo transformaciones higiénicas con syntax-rules y transformadores de syntax-case completos, construyo pequeños DSLs incrustados y desenredo macros desordenadas para que se expandan de manera predecible y se compilen rápidamente. Cuando el rendimiento importa, leo el código de máquina que genera Chez Scheme, ajusto los niveles de optimización, reduzco las asignaciones, aplico especializaciones de flonum y fixnum, y llamo a primitivas inseguras solo donde se puede demostrar que son correctas.
La incrustación y la interoperabilidad son una gran parte de mi trabajo. Vinculo Chez Scheme a C y Rust a través de su interfaz de función extranjera, hago de Scheme una capa de scripting dentro de un gran anfitrión, y empaqueto archivos de arranque y código objeto para que el despliegue sea un solo artefacto. También manejo hilos, gestión de recursos al estilo de custodios, manejo de señales y apagado ordenado para servicios que necesitan vivir durante meses.
Un resultado típico: un módulo o servicio funcional y medido, una suite de pruebas legible, scripts de construcción y un documento corto que describe la arquitectura y los puntos de extensión. Perfilo antes y después, por lo que las aceleraciones se miden, no se reclaman. Envíame código lento o una especificación aproximada, y diré honestamente si Chez Scheme encaja aquí y qué ganancia real es posible.
Cada día utilizo toda la superficie R6RS: estructura de biblioteca limpia, importaciones de fase, tipos de registro adecuados, jerarquías de condiciones y E/S portátil. Me siento cómodo en lo profundo del sistema de macros: escribo transformaciones higiénicas con syntax-rules y transformadores de syntax-case completos, construyo pequeños DSLs incrustados y desenredo macros desordenadas para que se expandan de manera predecible y se compilen rápidamente. Cuando el rendimiento importa, leo el código de máquina que genera Chez Scheme, ajusto los niveles de optimización, reduzco las asignaciones, aplico especializaciones de flonum y fixnum, y llamo a primitivas inseguras solo donde se puede demostrar que son correctas.
La incrustación y la interoperabilidad son una gran parte de mi trabajo. Vinculo Chez Scheme a C y Rust a través de su interfaz de función extranjera, hago de Scheme una capa de scripting dentro de un gran anfitrión, y empaqueto archivos de arranque y código objeto para que el despliegue sea un solo artefacto. También manejo hilos, gestión de recursos al estilo de custodios, manejo de señales y apagado ordenado para servicios que necesitan vivir durante meses.
Un resultado típico: un módulo o servicio funcional y medido, una suite de pruebas legible, scripts de construcción y un documento corto que describe la arquitectura y los puntos de extensión. Perfilo antes y después, por lo que las aceleraciones se miden, no se reclaman. Envíame código lento o una especificación aproximada, y diré honestamente si Chez Scheme encaja aquí y qué ganancia real es posible.