The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NOMBRE

perlsource - Guía del árbol de código fuente de Perl

DESCRIPCIÓN

En este documento se describe el contenido del árbol de código fuente de Perl. En él encontrará toda la información necesaria para «hackear» el núcleo de Perl.

ORIENTACIÓN

El árbol de código fuente de Perl es frondoso. Contiene cosas como:

Código C

La mayor parte del código C y los archivos de encabezado se encuentran en el directorio raíz del árbol de código fuente. Hay algunos directorios específicos de la plataforma que contienen código C. Además, algunos de los módulos distribuidos con Perl incluyen código C o XS.

En perlinterp encontrará más información sobre los archivos que integran el intérprete de Perl y detalles sobre el funcionamiento del intérprete.

Módulos integrados en el núcleo

Los módulos distribuidos como parte del núcleo de Perl se encuentran en cuatro subdirectorios. Dos de estos directorios contienen módulos integrados en el núcleo y los otros dos contienen módulos que además se publican en CPAN. Los módulos que se pueden publicar en CPAN se denominan módulos de «evolución dual».

  • lib/

    Este directorio contiene módulos programados en Perl puro que solo se publican como parte del núcleo. A diferencia de otros módulos del núcleo, este directorio contiene todos los módulos y sus pruebas.

  • ext/

    Este directorio contiene módulos que usan XS y que solo se publican como parte del núcleo. Estos módulos suelen tener un archivo Makefile.PL y su estructura es similar a la del típico módulo de CPAN.

  • dist/

    Este directorio contiene módulos de evolución dual en los que la versión canónica es la del código fuente de la rama blead. Tenga en cuenta que es posible que algunos de los módulos de este directorio aún no se hayan publicado por separado en CPAN.

  • cpan/

    Este directorio contiene módulos de evolución dual en los que el módulo de CPAN es la versión canónica. No debe aplicar parches a estos módulos directamente. Los cambios realizados en estos módulos deben enviarse al mantenedor del módulo de CPAN. Cuando se hayan aplicado y publicado estos cambios, la nueva versión del módulo se incorporará al núcleo.

Para algunos módulos de evolución dual aún no se ha determinado si la versión canónica es la de CPAN o la del código fuente de la rama blead. Mientras no se determine, estos módulos deben estar en cpan/.

Pruebas

Existe un completo conjunto de pruebas del núcleo de Perl. Si agrega pruebas nuevas (o módulos nuevos con pruebas), es posible que tenga que actualizar el archivo t/TEST para que se ejecuten.

  • Pruebas de módulos

    Las pruebas de los módulos del núcleo del directorio lib/ se encuentran junto al módulo correspondiente. Por ejemplo, tenemos lib/strict.pm y lib/strict.t.

    Las pruebas de los módulos de ext/ y los módulos de evolución dual están en los subdirectorios t/ de cada módulo, como en una distribución de CPAN estándar.

  • t/base/

    Pruebas de funcionalidad básica de Perl. Incluyen pruebas de if, operaciones básicas de lectura y escritura, expresiones regulares sencillas, etc. Son las primeras que se ejecutan del conjunto de pruebas; si no se supera alguna de estas pruebas, significa que hay un problema grave.

  • t/cmd/

    Pruebas de estructuras de control básicas, if/else, while, subrutinas, etc.

  • t/comp/

    Pruebas de problemas básicos relacionados con la manera en que Perl se analiza y compila.

  • t/io/

    Pruebas de funciones de E/S predefinidas, incluidos los argumentos de línea de comandos.

  • t/mro/

    Pruebas de las implementaciones de orden de resolución de métodos de perl (vea mro).

  • t/op/

    Pruebas de funciones integradas de perl que no se corresponden con ninguno de los demás directorios.

  • t/re/

    Pruebas de funciones o comportamientos relacionados con expresiones regulares (antes estaban en t/op).

  • t/run/

    Pruebas de las características de funcionamiento de perl, incluidos los códigos de salida y el control de las variables de entorno PERL*.

  • t/uni/

    Pruebas de compatibilidad básica con Unicode.

  • t/win32/

    Pruebas específicas de Windows.

  • t/porting/

    Pruebas que detectan diversos errores comunes en el árbol de código fuente. Por ejemplo, comprueban que todas las personas que figuran en el registro de git tienen una entrada correspondiente en el archivo AUTHORS.

  • t/lib/

    Antiguo directorio de las pruebas de módulos. No debe colocar nada aquí. Aún quedan cosas que deben moverse a otra parte. ¿Se anima a moverlas? Se lo agradeceremos...

  • t/x2p

    Conjuntos de pruebas del conversor s2p.

Documentación

Toda la documentación principal para usuarios finales se encuentra en pod/. En general, los módulos individuales de lib/, ext/, dist/ y cpan/ tienen su propia documentación, ya sea en el archivo Módulo.pm o en un archivo Módulo.pod adjunto.

Por último, la documentación para programadores del núcleo de Perl se encuentra en el directorio Porting/.

Herramientas y documentación para «hackear»

El directorio Porting contiene un conjunto de fragmentos de código y documentación que pueden servir de ayuda a los mantenedores de Perl. Algunos elementos destacados son:

  • check*

    Scripts que detectarán en el código fuente cosas como infracciones de ANSI C, problemas de codificación de POD, etc.

  • Maintainers, Maintainers.pl y Maintainers.pm

    En estos archivos se indica quién mantiene cada módulo. Ejecute perl Porting/Maintainers -M Nombre::Módulo para obtener más información sobre un módulo de evolución dual.

  • podtidy

    Ordena un archivo pod. Tras aplicar un parche a un archivo pod, es recomendable ejecutar este programa.

Sistema de compilación

El sistema de compilación de Perl empieza por el script Configure del directorio raíz.

Las partes del sistema de compilación que son específicas de la plataforma se encuentran en directorios específicos de plataforma, como win32/, vms/, etc.

El script Configure se encarga de generar un archivo Makefile.

Perl usa un sistema de compilación denominado metaconfig. El mantenimiento de este sistema se realiza por separado del mantenimiento del núcleo de Perl.

El sistema metaconfig tiene su propio repositorio git. Consulte el archivo README (en http://perl5.git.perl.org/metaconfig.git/) para obtener información detallada.

El directorio Cross contiene varios archivos relacionados con la compilación multiplataforma de Perl. Puede ver más detalles en Cross/README.

AUTHORS

En este archivo figuran todas las personas que han contribuido a Perl. Si envía un parche, debe agregar su nombre a este archivo como parte del parche.

MANIFEST

El archivo MANIFEST del directorio raíz del árbol de código fuente contiene una lista de todos los archivos incluidos en el núcleo de Perl, así como una breve descripción de cada archivo.

Puede ver una descripción general de todos los archivos con el siguiente comando:

  % perl -lne 'print if /^[^\/]+\.[ch]\s+/' MANIFEST

TRADUCTORES

  • Joaquín Ferrero (Tech Lead)

  • Enrique Nell (Language Lead)