[couverture de Linux Magazine 75]

Perles de Mongueurs (16)

Article publié dans Linux Magazine 75, septembre 2005.

[+ del.icio.us] [+ Developers Zone] [+ Bookmarks.fr] [Digg this] [+ My Yahoo!]

Toutes les perles de ce mois sont de Sébastien Aperghis-Tramoni, Marseille.pm (<sebastien@aperghis.net>).

Chercher sur le CPAN

There is more than one way to do it.

Cette maxime bien connue s'applique sans surprise également au CPAN, le Comprehensive Perl Archive Network, cœur de la communauté Perl. Explorons donc les différentes manières de chercher (et de trouver) des informations sur le CPAN.

Search CPAN - http://search.cpan.org/

C'est le plus ancien, le plus connu et évidemment le plus utilisé. Développé par Graham Barr, et mis en place par Robert Spier et Ask Bjørn Hansen, il dispose depuis peu d'un serveur miroir en Europe afin de répartir la charge d'utilisation. Le code qui fait tourner Search CPAN se nomme TUCS (The Ultimate CPAN Search) et n'est malheureusement pas disponible.

Il comporte un moteur de recherche (moyennement efficace), ainsi qu'un accès aux distributions par catégorie, par nom de distribution ou par nom d'auteur. Il offre aussi la liste des distributions récemment déposées sur le CPAN.

Les distributions disposent d'une URL permanente de la forme http://search.cpan.org/dist/Class-DBI/, d'où on peut accéder aux sources actuelles et antérieures de la distribution, ainsi qu'à la documentation agréablement mise en forme. Sont aussi affichés les résumés d'informations de CPAN Testers et CPAN Ratings ainsi que les liens vers les pages détaillées correspondantes, et enfin les liens vers CPAN Forum, vers le gestionnaire de bugs RT du CPAN et vers le répertoire des archives de l'auteur sur BackPAN (http://backpan.perl.org/).

Particularité de ce site, deux outils d'examen des sources sont disponibles, un grep et un diff.

Le répertoire d'un auteur est quant à lui accessible par une URL de la forme http://search.cpan.org/~autrijus/ pour, par exemple, le répertoire (très fourni) d'Autrijus Tang.

CPAN Suggest - http://cpantools.com/

CPAN Suggest n'est qu'une interface à Search CPAN inspirée de Google Suggest et adaptée pour le CPAN. Cela permet de chercher et de trouver plus rapidement des modules, les suggestions s'affinant au fur et à mesure de la frappe.

CPAN Search Lite - http://kobesearch.cpan.org/ ou http://cpan.uwinnipeg.ca/

Cet autre site a été développé par Randy Kobes pour répondre au besoin de disposer d'un moteur de recherche dont les sources soient disponibles. Comme sur Search CPAN, un moteur de recherche limité et des index (catégories, noms d'auteur, noms de module, noms de distribution) permettent de chercher les modules et distributions. La page des distributions récemment déposées sur le CPAN dispose en plus d'un flux RSS pour ceux qui aiment être tenus au courant.

Là aussi, les distributions sont accessibles par une URL permanente de type http://kobesearch.cpan.org/dist/CPAN-Search-Lite. La présentation est similaire à celle de Search CPAN, mais présente quelques différences, notamment en offrant les liens directs vers les modules requis par une distribution et des liens vers les dépôts de paquets PPM pour les utilisateurs d'ActivePerl. La documentation est aussi disponible et mise en forme, quoiqu'avec une présentation pour le moment un peu moins agréable. En contre-partie les sources des programmes sont disponibles depuis peu avec une coloration syntaxique bien utile.

Et ici également le répertoire d'un auteur est accessible par une URL telle que http://cpan.uwinnipeg.ca/~rkobes/. Toutefois, et contrairement à Search CPAN, seule la dernière version de chaque distribution est disponible sur CPAN Search Lite car il s'appuie sur un miroir de type Mini-CPAN alors que Search CPAN est un miroir complet.

Randy Kobes a de plus récemment doté CPAN Search Lite d'une nouvelle fonctionnalité, l'installation des distributions via PAR::WebStart. Vous l'aurez deviné, PAR::WebStart est l'équivalent pour Perl de Java WebStart, mais en utilisant des archives PAR.

Dernier point sympathique, l'interface de CPAN Search Lite est disponible en plusieurs langues, pour le moment anglais, français, espagnol, allemand, portugais et italien, bientôt en russe, bulgare et moldave, pourquoi pas dans d'autres langues encore demain.

Tout ceci fait de CPAN Search Lite la base idéale pour créer un serveur local de recherche et de documentation, par exemple à l'échelle d'une université ou d'une entreprise.

Gonzui - http://cpansearch.bulknews.net/

Principalement développé par Satoru Takabayashi, et mis en place par Tatsuhiko Miyagawa pour les modules du CPAN, Gonzui est un moteur de recherche spécifique au code source. Son but est d'offrir aux développeurs de logiciels libres un moyen rapide et efficace pour trouver des morceaux de code au sein d'archives aussi variées que celles disponibles sur le CPAN. Écrit en Ruby, il supporte déjà plusieurs langages dont Perl, C, JavaScript, Python, Ruby, PHP et OCaml, le support d'autres langages étant en cours de test.

Contrairement aux autres sites présentés ici qui sont plutôt axés sur la documentation et les métainformations des distributions, Gonzui n'offre qu'une fonction de recherche de code, mais l'affichage des résultats est assez impressionnant, offrant un code source avec coloration de syntaxe et surlignement automatique de code. Depuis qu'il a été rendu public, il s'avère ainsi très utile aux mainteneurs de Perl pour déterminer si certaines parties obscures de l'API sont ou non utilisées, et ainsi enclencher la tronçonneuse quand c'est possible.

CPAN Forum - http://www.cpanforum.com/

Disponible depuis février 2005, CPAN Forum a été développé par Gabor Szabo afin d'offrir un espace de dialogue par le biais d'un forum web entre l'auteur d'un module et ses utilisateurs quand ils ne disposent pas d'une liste de diffusion.

Suivant la tradition des URL permanentes, la page d'une distribution est accessible, vous l'aurez deviné, à http://www.cpanforum.com/dist/WWW-Mechanize pour le module WWW::Mechanize par exemple. Cette page comprend les liens vers Search CPAN, CPAN Search Lite, RT CPAN, CPAN Ratings et CPAN Testers.

On peut s'inscrire sur le site et demander à être prévenu dès qu'un message est ajouté à l'un des forums, typiquement pour surveiller les modules qu'on a écrits ou qu'on utilise intensivement. Sont aussi disponibles un flux RSS par distribution et un flux RSS global qui donnent les 10 derniers messages postés.

AnnoCPAN - http://www.annocpan.org/

Nouvel arrivé (le site a été rendu public fin juin), AnnoCPAN est un site ambitieux développé par Ivan Tubert-Brohman qui permet aux utilisateurs d'annoter en ligne la documentation des modules du CPAN, avec une gestion assez avancée des versions. Cela ressemble un peu à la documentation en ligne de MySQL et PostgreSQL par exemple, mais en permettant une annotation au paragraphe plutôt qu'au chapitre. Une autre différence par rapport à ces deux sites est que les annotations peuvent aussi être supprimées si l'auteur intègre les remarques à la documentation ou corrige les points signalés, évitant ainsi une pollution par accumulation de notes obsolètes.

Respectant la tradition des autres sites web relatifs au CPAN, les distributions sont ici aussi accessibles par des URL de la forme http://www.annocpan.org/dist/Class-DBI/, qui outre les liens habituels, permettent de visualiser la documentation annotée pour chaque version disponible. Idem pour les URL d'auteurs, http://www.annocpan.org/~saper/, qui offrent en plus un flux RSS permettant de connaître les dernières notes ajoutées à la documentation d'un module de cet auteur. Un autre flux RSS global est disponible sur la page principale.

Les nouvelles de la communauté Perl

Google Summer of Code

Le Google Summer of Code (l'été de programmation de Google) est un programme destiné à ouvrir des étudiants au monde des logiciels libres, en offrant un prix de 4 500 USD à tout étudiant qui pourrait compléter un projet avant la fin de l'été.

Pour encadrer tout ceci, Google fait participer plusieurs organisations du logiciel libre telles que l'Apache Software Foundation, la Gnome Foundation, KDE, OpenOffice.org, Samba... et la Perl Foundation.

Celle-ci a lancé un appel à projets, dont huit ont été retenus. Parmi ceux-ci, saluons le projet du mongueur français Alexandre Buisse d'écrire un garbage collector plus efficace pour la machine virtuelle Parrot, dont il a rapidement présenté les grandes lignes lors d'une présentation éclair aux Journées Perl 2005.

Nommé GMC pour Generational Mark & Compact, son projet de garbage collector se base sur le GC actuellement intégré à Parrot ainsi que sur celui qu'avait commencé à programmer Leopold Tötsch. Alexandre sera d'ailleurs supervisé par Leopold pour ce projet.

Pour résumer, Alexandre compte implanter un algorithme générationnel à mark-and-sweep permettant la copie, et qui soit de plus compatible avec les threads. Le principe de cet algorithme est de classer les objets en fonction de leur âge : plus un objet a une adresse mémoire basse, plus il est vieux. On classe ensuite les objets en générations qui forment une liste chaînée d'objets. Ainsi, on pourra collecter d'abord les objets les plus jeunes qui, statistiquement, ont une plus courte durée de vie.

En posant l'hypothèse (vraie tant qu'on reste dans un langage fonctionnel) que les pointeurs vont tous des nouveaux objets vers les anciens, on peut alors les marquer en une seule passe, en partant des plus récents, à la manière d'un crible d'Ératosthène. Dès qu'une génération a été analysée, tous les objets non-marqués peuvent être détruits et les autres viennent combler les "trous" ainsi créés.

Il y a bien sûr d'autres subtilités à prendre en compte car cette hypothèse peut être violée dans certains cas qu'il faut donc prendre en compte et il faut également pouvoir collecter les objets qui se pointent mutuellement. Alexandre a néanmoins ses idées là-dessus et a déjà commencé à publier des documents détaillés sur le fonctionnement et l'implémentation de GMC.

À vous !

Envoyez vos perles à perles@mongueurs.net, elles seront peut-être publiées dans un prochain numéro de Linux Magazine.

[IE7, par Dean Edwards] [Validation du HTML] [Validation du CSS]