IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Perl 5.10 : Quoi de neuf ? [Infos]


Sujet :

Langage Perl

  1. #1
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut Perl 5.10 : Quoi de neuf ?
    Ce slide résume ce qui se prépare pour Perl 5.10 en matière de regex. Comme vous pouvez le lire, un bon coup de balai et des regex plus lisibles et plus optimisées (au prix d'un peu plus de concept à retenir si l'on veut faire plein usage de ces nouvelles possibilités d'optimisations).

    Certaines des nouveautés devraient plaire à tout le monde comme les captures nommés, la nouvelle syntaxe pour les références arrière, l'opérateur Keep...
    D'autres ne seront utilisées que par les amateurs de regex (les verbes par exemple, qui permettent des optimisations redoutables) et d'autres étendent sérieusement les capacités d'expression des regex de Perl (la nouvelle syntaxe de rappel des sous-motifs...), ce qui devrait encourager les Perlistes avancés à rester en Perl pur et standard pour leur besoin en matière de parsing.

    En sous main le moteur de regex a été grandement amélioré, il ne devrait plus être possible de le casser avec une regex trop mal conçue (ce n'était déjà pas très facile), et les alternatives devraient être traitées plus efficacement grâce à l'intégration du concept de Trie dans le moteur. Par ailleurs le moteur de regex est maintenant complètement pluggable, ce qui devrait autoriser des choses intéressantes, implémentées de façon propre.

    N'hésitez pas à poser des questions si vous ne comprenez pas certaines parties du slide.

    NB : Tout ceci n'est pas hypothétique, c'est déjà disponible en 5.9 (version de développement de Perl5).

    --
    Jedaï

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut Nouveaux modules dans le CORE
    Time::Piece devrait permettre de faire des opérations basiques de manipulation de date et temps. Loin d'être aussi puissant et complet qu'une distribution comme DateTime, Time::Piece présente l'avantage de remplacer localtime et gmtime sans qu'il n'y paraisse par des variantes retournant un objet en contexte scalaire (qui agit en contexte de string comme agirait localtime), ces objets retournés peuvent être additionnés, soustrait l'un à l'autre, comparés, ils disposent de nombreux accesseurs permettant d'obtenir les mêmes informations que localtime sous une forme plus humaine.

    Term::UI facilite la création d'un prompt minimaliste qui valide sa réponse, la chomp()e, ... Très pratique, voir indispensable si on en juge par le nombre de tel code qu'on trouve dans les questions sur ce forum.

    CPANPLUS est le successeur autoproclamé de CPAN, il offre tout ce que CPAN offrait mais gère mieux les dépendances, Module::Build, ...

    L'inclusion de Inline est une très bonne nouvelle car ce module est tout simplement fantastique pour transformer rapidement une fonction cruciale de son application en C (et ainsi multiplier par 40 la vitesse de votre module... ) ou en C++. Il permet également de créer rapidement une interface avec une librairie dans un des langages supportés par Inline (et Inline en supporte beaucoup, encore que seul Inline::C sera inclus dans le CORE bien sûr).


    Module::Build
    est un module pur perl pour installer des modules (et les compiler, les tester etc entretemps), une alternative au traditionnel ExtUtils::MakeMaker qui présente entre autres désavantages qu'il nécessite d'avoir un "make" sur son système. Module::Build est plus autonome, et de conception plus moderne, ce qui lui permet d'éviter certains des problèmes de compatibilité arrière de son concurrent. Il est possible/probable(?) qu'une majorité de modules Perl passent à Module::Build à terme.

    Archive::Extract prend en charge la plupart des formats d'archive standard (non-propriétaires, soit zip, gzip, bzip2, tar...). Ce module utilise Compress::Zlib. Une autre interface pour la zlib est fournie : IO::Zlib (qui vient compléter les modules IO déjà dans le CORE). A noter qu'avec Archive::Tar vient le sympathique ptar, un tar en pur perl, pratique pour les utilisateurs de Windows.

    Digest::SHA offre une fonction de hachage plus robuste que MD5 (qui est maintenant considéré comme relativement insuffisant même pour une sécurité peu élevé).

    File::Fetch est un module intéressant pour qui ne veut pas se soucier de ce que le fichier qu'il veut récupérer est en locale ou sur internet (file, http, ftp et rsync pris en charge, peut-être...).

    Module::CoreList donne la liste des modules présents dans le CORE d'une version donnée, ou à partir de quelle version un module est entré dans le CORE, toutes informations utiles pour garder ses applications compatibles avec sa cible présumée.

    Params::Check représente un bon module de validation d'arguments. (surtout inclus parce qu'il est nécessaire à CPANPLUS, néanmoins à cheval donné on ne regarde pas les dents... ).


    Module::Load::Conditional
    aide à vérifier si un module (ou une version suffisante) est bien présent sur votre système et à le charger le cas échéant. Module::Load et Module::Loaded sont dans la même veine.

    IPC::Cmd facilite juste le lancement d'une instruction système et la récupération de ses diverses sorties et sorties d'erreur.

    Object::Accessor rend aisé la création d'accesseurs sur un objet (et pas une classe...).

    Module::Pluggable est un framework pour créer des modules auxquels on pourra facilement rajouter des plugins.

    Hash::Util::FieldHash est un module qui permet d'utiliser proprement des références en tant que clés d'un hash, il facilitera la mise en place d'objets dits "retournés" (inside-out objects, un modèle objet en Perl qui assure une encapsulation complète des champs d'une classe, ainsi que divers avantages supplémentaires).

    Locale::Maketext::Simple est un simple prérequis de CPANPLUS, la plupart des utilisateurs vraiment intéressé par la localisation de leur module/application ferait mieux de se tourner vers son grand frère Locale::Maketext::Lexicon.

    Math::BigInt::FastCalc : calcul plus rapide pour les entiers de taille arbitraires.

    --
    Jedaï

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 563
    Points : 2 003
    Points
    2 003
    Par défaut
    Jedai, si tu trouves mon post inaproprié ou pas à sa place, tu peux le sucrer, no problemo

    Je suis admin d'un jeu qui m'a pris 3 ans à développer. On y trouve un peu de C mais beaucoup beaucoup de code écrit en Perl (environ 45.000 lignes).

    Ecrit au début en Perl 5.6.1, il tourne actuellement en 5.8.7 sous Linux et ma seule appréhension majeure sur les futures évolutions de Perl, c'est que l'utilisation des "vieux" scripts ne soit plus faisable. Dans mon Camel book de la version 5, j'ai plusieurs pages de mises en garde sur la non portabilité de certains (trop) vieux scripts.

    Ma plus grosse crainte, c'est de me retrouver un jour, alors que j'installe un nouveau système Linux (sur lequel Perl fait partie intégrante puisque certains outils d'admin sont écrits en Perl), avec mes 30 et quelques scripts Perl qui refusent de faire le boulot qu'ils faisaient jusqu'alors trés bien et sans buguer.

    PS : mon code comporte bcp de RegExps qui vont de la recherche de patterns, de transformation ou de substitution de chaînes de caractères, gestion de l'aléatoire, emploi de goto dans un trés gros script, etc.

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Il est assez peu probable que tu aies des problèmes, en effet Perl reste très compatible avec ses versions précédentes. La plupart (toutes les volontaires en tout cas) des incompatibilités viennent d'une utilisation abusive des 'bugs' d'une version particulière, si tu as codé proprement et sans chercher l'exploit, il n'y a pas de raison que ton code arrête de fonctionner. Il y a encore des codes prévu pour Perl4 qui tournent aujourd'hui sur des versions récentes de Perl avec des modifications mineures.
    Un autre indice qui peut te mettre sur la voie d'un problème potentiel est l'apparition de warnings 'deprecated', en effet même lorsque les développeurs jugent qu'une fonctionnalité est définitivement un échec, ils préviennent des années à l'avance avant de la supprimer et souvent elle est disponible sous forme de module du CPAN (par exemple Class:: PseudoHash pour les pseudohashes, à noter que si vous avez utilisé le pragma 'field' ceci ne vous concerne pas, l'implémentation de 'field' sera juste changée en sous main) après la suppression définitive.

    (Cette préservation de la compatibilité à tout prix pose évidemment d'autres problèmes pour faire évoluer le langage, Perl6 est la réponse à ces problèmes)

    --
    Jedaï

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 818
    Points : 499 183
    Points
    499 183
    Par défaut
    avez vous une idée de la prochaine sortie de perl 5.9 ou perl 5.10 avec activestateperl ?

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par djibril Voir le message
    avez vous une idée de la prochaine sortie de perl 5.9 ou perl 5.10 avec activestateperl ?
    Jan Dubois d'ActiveState a annoncé la première béta d'ActivePerl 5.10.0 Build 1000. Elle est basée sur les sources de Perl 5.10RC1 :

    David "Sniper" Rigaudiere

    ActiveState is pleased to announce ActivePerl 5.10.0 Build 1000 Beta,
    a beta release of the complete, ready-to-install Perl distribution for
    Windows, Mac OS X, Linux, Solaris, and AIX.

    This build is based on the first release candidate of the Perl 5.10
    source code. Since Perl 5.10 is not yet complete, this build
    is designated as a Beta and will be followed by a final build once
    Perl 5.10 is officially released.

    Please use this beta build to try out new features in Perl 5.10 and to
    test source level compatibility of your existing Perl code under this
    new release (note that Perl 5.10 is not binary compatible to earlier
    releases).

    For detailed information or to download this beta release, see:

    http://www.activestate.com/Products/..._download.plex

    New in ActivePerl 5.10.0 Build 1000 Beta
    ========================================

    Some exciting new features to look for:

    * The new switch statement and smart-match operator

    The new smart-matching operator ~~ compares two expressions with each
    other; the exact nature of the match is being determined by the types of
    both expressions: matching a string and hash will return if the hash
    contains a key equal to the string; matching a regular expression
    against an array will return if any element of the array matched
    successfully against the regexp etc.

    The new switch statement will smart-match a single expression repeatedly
    against a list of other expression until one matches. For example:

    given($foo) {
    when ("foo") {
    say '$foo is the string "foo"';
    }
    when ([1,3,5,7,9]) {
    say '$foo is an odd digit';
    continue; # Fall through
    }
    when ($_ < 100) {
    say '$foo is numerically less than 100';
    }
    default {
    die q(I don't know what to do with $foo);
    }
    }

    * Defined-or operator

    The new defined-or operator // allows you to write

    $a // $b

    instead of repeating the first argument as in

    defined $a ? $a : $b

    Also the statement

    $c //= $d;

    can now be used instead of

    $c = $d unless defined $c;

    * Many improvements to the regular expression engine, including:

    The regular expression engine is no longer recursive, meaning that
    patterns that used to overflow the stack will either die with useful
    explanations, or run to completion, which, since they were able to blow
    the stack before, will likely take a very long time to happen.

    - It is now possible to write recursive patterns that are easy to read
    (for a regular expression), and are executed in an efficient manner.

    - It is now possible to name capturing parenthesis in a pattern and
    refer to the captured contents by name. The naming syntax is
    (?<NAME>....). It's possible to backreference to a named buffer with
    the \k<NAME> syntax. After the match the named capture groups are
    accessible via the %+ hash:

    my $value = "foo 42";
    if ($value =~ /^(?<name>\w+) \s* (?<number>\d+)$/x) {
    say "Name $+{name} and Number $+{number}";
    }

    - possessive quantifiers
    - backtracking control verbs
    - relative backreferences

    Other new features include:

    * new say() function
    * lexical $_ variable
    * _ prototype
    * UNITCHECK blocks
    * state variables
    * stacked filetest operators
    * byte-order modifiers for pack() and unpack()

    * Many bug fixes
    * Additional core modules
    * Extended documentation

    Download ActivePerl 5.10.0 Build 1000 Beta now:

    http://www.activestate.com/Products/..._download.plex

    Getting Started
    ===============

    Whether you're a first-time user or a long-time fan, our free resources
    will help you get the most from ActivePerl.

    Mailing list archives:

    http://aspn.activestate.com/ASPN/Mai...ded/ActivePerl

    Feedback
    ========

    Everyone is encouraged to participate in making Perl an even better
    language.

    For bugs related to ActiveState use:

    http://bugs.activestate.com/enter_bu...l&version=1000

    For bugs related directly to Perl please use the 'perlbug' utility.

    Enjoy!

  7. #7
    Membre éclairé
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Points : 803
    Points
    803
    Par défaut [Annonce] Perl 5.10.0
    La nouvelle version de Perl, la 5.10, a été lancée aujourd'hui, en l'honneur du vingtième anniversaire de Perl.

    http://grokbase.com/topic/2007/12/18...7E5xxKRmOXxIBY

Discussions similaires

  1. [OS] Leopard: Quand et quoi de neuf ?
    Par vbrabant dans le forum Apple
    Réponses: 86
    Dernier message: 31/10/2007, 12h14
  2. [Together] Nouveau Borland Together 2007 : Quoi de neuf ?
    Par Marc Lussac dans le forum Autres
    Réponses: 0
    Dernier message: 19/10/2007, 02h11
  3. Ruby2 : Quoi de neuf ?
    Par kedare dans le forum Ruby
    Réponses: 4
    Dernier message: 13/04/2007, 16h20
  4. [langage] PERL , initiale de quoi ?
    Par frees3x dans le forum Langage
    Réponses: 9
    Dernier message: 23/10/2006, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo