Paradigma | Multiparadigma |
---|---|
Familia | Perl |
Diseñado por | Larry pared |
Revelador | Comunidad Raku |
Apareció por primera vez | 25 de diciembre de 2015 ( 25 de diciembre de 2015 ) |
Versión estable | 6.d 'Diwali' [2] / 24 de octubre de 2020 ( 24/10/2020 ) |
Disciplina de mecanografía | Dinámico , gradual |
Sistema operativo | Multiplataforma |
Licencia | GNU Público General o Artístico 2 |
Extensiones de nombre de archivo | .raku, .rakumod, .rakudoc, .t, .rakutest [3] |
Sitio web | raku.org |
Implementaciones principales | |
Rakudo | |
Influenciado por | |
Perl , Ruby , Smalltalk , Haskell , [4] JavaScript | |
Influenciado | |
Perl , [5] Haskell , [5] AntLang |
Raku es un miembro de la familia de lenguajes de programación Perl . [6] Anteriormente llamado Perl 6 , fue renombrado en octubre de 2019. [7] [8] Raku introduce elementos de muchos lenguajes modernos e históricos. La compatibilidad con Perl no era un objetivo, aunque un modo de compatibilidad es parte de la especificación. El proceso de diseño de Raku comenzó en 2000.
En Perl 6, decidimos que sería mejor arreglar el lenguaje que arreglar al usuario.
—Larry Wall [9]
El proceso de diseño de Raku fue anunciado por primera vez el 19 de julio de 2000, en el cuarto día de la Conferencia Perl de ese año , [10] por Larry Wall en su charla State of the Onion 2000. [11] En ese momento, los objetivos principales eran eliminar las "verrugas históricas" del lenguaje; "las cosas fáciles deberían seguir siendo fáciles, las difíciles deberían volverse más fáciles y las imposibles deberían volverse difíciles"; y una limpieza general del diseño interno y las interfaces de programación de aplicaciones (API). El proceso comenzó con una serie de Solicitudes de comentarios (RFC). Este proceso estaba abierto a todos los contribuyentes y no dejó ningún aspecto del lenguaje cerrado al cambio. [12]
Una vez completado el proceso de RFC, Wall revisó y clasificó cada una de las 361 solicitudes recibidas. Luego comenzó el proceso de escribir varios "Apocalipsis", utilizando el significado original del término, "revelador". [13] Si bien el objetivo original era escribir un Apocalipsis para cada capítulo de Programming Perl , se hizo evidente que, a medida que se escribía cada Apocalipsis, los Apocalipsis anteriores se invalidaban por cambios posteriores. Por esta razón, se publicó un conjunto de Sinopsis, cada una de las cuales relata el contenido de un Apocalipsis, pero con cualquier cambio posterior reflejado en actualizaciones. Hoy, la especificación Raku se administra a través de la suite de pruebas "roast", [14] mientras que las Sinopsis se mantienen como una referencia histórica. [15]
También existe una serie de exégesis escritas por Damian Conway que explican el contenido de cada Apocalipsis en términos de uso práctico. Cada exégesis consta de ejemplos de código junto con una discusión del uso y las implicaciones de los ejemplos. [16]
En la actualidad, se utilizan tres métodos principales de comunicación en el desarrollo de Raku. El primero es el canal de chat por Internet (IRC) de Raku en Libera Chat . El segundo es un conjunto de listas de correo . [17] El tercero es el repositorio de código fuente de Git alojado en GitHub . [18]
El objetivo principal que Wall sugirió en su discurso inicial fue la eliminación de los defectos históricos, entre los que se incluían la confusión en torno al uso de sigilos para los contenedores, la ambigüedad entre las select
funciones y el impacto sintáctico de los identificadores de archivos de palabras simples . Había muchos otros problemas que los programadores de Perl habían discutido sobre cómo solucionar durante años, y Wall los abordó explícitamente en su discurso. [ cita requerida ]
Una consecuencia de estos objetivos era que Perl 6 no sería compatible con el código base de Perl existente. Esto significaba que parte del código que un compilador de Perl 5 interpretara correctamente no sería aceptado por un compilador de Perl 6. Dado que la compatibilidad con versiones anteriores es un objetivo común cuando se mejora el software, los cambios importantes en Perl 6 tuvieron que indicarse explícitamente. La distinción entre Perl 5 y Perl 6 se hizo tan grande que, finalmente, Perl 6 pasó a llamarse Raku.
La mascota del lenguaje es "Camelia, el insecto Raku". [1] Su nombre es un guiño a la mascota del camello asociada con Perl , y su forma, en la tradición amante de los juegos de palabras de la comunidad Perl, es un juego de palabras con " software bug ". Los diseños en espiral incrustados en sus alas similares a las de una mariposa se asemejan a los caracteres "P6", el apodo favorito para Perl 6, y la ubicación descentrada de los ojos es un juego de palabras intencional con "Wall-eyed". [19]
Uno de los objetivos detrás del diseño vivo y colorido del logotipo era desalentar la misoginia en la comunidad y que fuera una oportunidad para que aquellos de "persuasión masculina" mostraran su lado sensible. [20]
A partir de 2017 [actualizar], solo la implementación de Rakudo se encuentra en desarrollo activo. Ninguna implementación será designada como la implementación oficial de Raku; más bien, "Raku es cualquier cosa que pase el conjunto de pruebas oficial". [21]
Rakudo Perl 6 [22] [23] apunta a una serie de máquinas virtuales, como MoarVM , la máquina virtual Java y JavaScript . MoarVM es una máquina virtual creada especialmente para Rakudo [24] y la cadena de herramientas del compilador NQP. [25] Hay una capa entre Raku y las máquinas virtuales llamada Not Quite Perl 6 (NQP), que implementa las reglas de Raku para analizar Raku, y un árbol de sintaxis abstracta y una generación de código específico del backend . Grandes porciones de Rakudo están escritas en Raku, o en su subconjunto NQP. Rakudo no es una implementación completamente autohospedada , ni hay planes concretos en este momento para hacer de Rakudo un compilador de arranque .
Pugs fue una implementación inicial de Perl 6 escrita en Haskell , liderada por Audrey Tang . Pugs solía ser la implementación más avanzada de Perl 6, pero desde mediados de 2007, se encuentra mayormente inactiva (con actualizaciones realizadas solo para seguir la versión actual del Glasgow Haskell Compiler (GHC)). A partir de noviembre de 2014, Pugs no recibió mantenimiento. [26]
En 2007, v6-MiniPerl6 ("mp6") y su reimplementación, v6-KindaPerl6 ("kp6") fueron escritos como un medio para arrancar el STD de Perl-6.0.0, usando Perl 5. El STD es una gramática completa para Perl 6 y está escrito en Perl 6. En teoría, cualquier cosa capaz de analizar el STD y generar código ejecutable es un sistema de arranque adecuado para Perl 6. kp6 está compilado actualmente por mp6 y puede funcionar con múltiples backends. [27] [28] mp6 y kp6 no son implementaciones completas de Perl 6 y están diseñados solo para implementar el conjunto de características mínimas requeridas para arrancar un compilador completo de Perl 6.
Yapsi era un compilador y entorno de ejecución de Perl 6 escrito en Perl 6. Como resultado, requería un intérprete de Perl 6 existente, como una de las versiones de Rakudo Star, para ejecutarse. [29]
Niecza, otro gran esfuerzo de implementación de Perl 6, se centró en la optimización y la investigación de la implementación eficiente. Su objetivo es la Infraestructura de lenguaje común . [30]
La especificación Raku solicita que los módulos se identifiquen por nombre, versión y autoridad. [31] Es posible cargar solo una versión específica de un módulo, o incluso dos módulos del mismo nombre que difieren en versión o autoridad. Para mayor comodidad, se proporciona un alias con un nombre corto.
CPAN , el sistema de distribución de módulos de Perl, aún no maneja módulos Raku. En su lugar, se utiliza un prototipo de sistema de módulos. [32]
Además, en 2009 se publicó un libro dedicado a una de las primeras máquinas virtuales de Perl 6, Parrot.
"Perl" es una familia de lenguajes, "Raku" (antes conocido como "Perl 6") es parte de la familia, pero es un lenguaje independiente que tiene su propio equipo de desarrollo. Su existencia no tiene un impacto significativo en el desarrollo continuo de "Perl".
{{cite web}}
: CS1 maint: nombres numéricos: lista de autores ( enlace )