- OxCaml es un conjunto de extensiones en rápida evolución para OCaml que añade extensiones orientadas al rendimiento; también es el compilador de producción de Jane Street y un espacio para experimentar con mejoras para OCaml
- Apunta a un diseño que permita controlar el comportamiento del programa que determina el rendimiento de forma segura, conveniente y predecible, haciendo que la complejidad recaiga solo en el código que la necesita
- Todos los programas válidos de OCaml también son válidos en OxCaml, por lo que busca sentirse más como una evolución de OCaml que como un lenguaje nuevo
- Las extensiones se dividen en concurrencia con exclusión estática de data races, disposición de memoria y acceso a SIMD, control de asignación, y funciones de conveniencia como parámetros polimórficos, include functor, labeled tuples e immutable arrays
- Es open source, pero no promete estabilidad ni compatibilidad hacia atrás para las extensiones, y ofrece un conjunto modificado de herramientas de OCaml que incluye gestión de paquetes compatible con dune y opam, LSP, formateador y generador de documentación
Objetivos de OxCaml y principios de diseño
- OxCaml es un conjunto de extensiones en rápida evolución para el lenguaje de programación OCaml
- Se usa como compilador de producción en Jane Street
- También es un espacio de experimentación para mejorar OCaml con miras a la programación orientada al rendimiento
- Con el tiempo, esperan contribuir algunas extensiones a OCaml upstream
- El objetivo central de diseño es controlar el comportamiento del programa que es importante para el rendimiento de forma segura, conveniente y predecible
- La seguridad se considera una característica importante para la productividad del programador y para desplegar código correcto
- La conveniencia se enfoca en ofrecer control sin requerir anotaciones excesivas
- Incluso con un sistema de tipos ampliado, se busca mantener la inferencia de tipos de OCaml
- La previsibilidad se centra en mantener y mejorar la facilidad para entender las características de rendimiento con solo mirar el código OCaml
- Los detalles clave de rendimiento se hacen visibles explícitamente a nivel de tipos
- Sigue un enfoque pay-as-you-go, ofreciendo más capacidad de optimización sin imponer complejidad adicional al código que no usa esa capacidad
- Todos los programas válidos de OCaml también son válidos en OxCaml
- OxCaml busca sentirse no tanto como un lenguaje nuevo, sino como una mejor versión evolucionada de OCaml
- Intenta preservar la sensibilidad de diseño original de OCaml, así como su seguridad, facilidad y productividad
Áreas de extensión y condiciones de uso
- Las extensiones de OxCaml se dividen en varias áreas centradas en el control del rendimiento y la conveniencia del lenguaje
- Fearless concurrency: excluye estáticamente los data races mediante adiciones al sistema de tipos
- Layouts: permite al programador especificar la disposición de los datos en memoria y acceder de forma nativa a extensiones SIMD del procesador
- Control over allocation: ofrece herramientas para controlar las asignaciones, reducir la presión sobre el GC y hacer los programas más eficientes en caché y deterministas
- Quality of life: también incluye extensiones útiles para tareas cotidianas
- Parámetros polimórficos
- Include functor
- Labeled tuples
- Immutable arrays
- OxCaml es open source y está abierto a usuarios experimentales
- En particular, esperan que investigadores y experimentadores prueben el sistema y aporten retroalimentación
- Las extensiones de OxCaml tienen un carácter fuertemente experimental, por lo que no prometen estabilidad ni compatibilidad hacia atrás
- Sin embargo, sí mantienen compatibilidad hacia atrás con OCaml
- Para facilitar su uso, ofrece un conjunto modificado de herramientas estándar de OCaml
- Gestión de paquetes compatible con dune y opam
- Integración con editores mediante servidor LSP
- Formateo de código fuente
- Generación de documentación
- Las bibliotecas y herramientas open source de Jane Street se publican en dos formas
- La versión para OCaml upstream se publica con las extensiones de OxCaml eliminadas
- La versión para OxCaml aprovecha activamente las extensiones
- Como no todas las extensiones pueden eliminarse, algunas bibliotecas se ofrecen solo para OxCaml
- Cuando las extensiones necesarias se integren en upstream, planean publicar una versión compatible con OCaml de esas bibliotecas
Aún no hay comentarios.