Accueil🇫🇷Chercher

Pugs

Pugs était une mise en œuvre expérimentale de Perl 6 en langage Haskell, et utilisant les spécificités les plus avancées de GHC. Selon le dorsal de génération et d'exécution de code, Pugs peut être considéré soit comme un compilateur, soit comme un interprète. Audrey Tang, sa principale contributrice, s'étant retirée en 2012, Pugs a été supplanté par Rakudo Perl mais a été crucial pour l'évolution de Perl 6.

Les développeurs de Pugs se désignent comme lambda camels (chameaux lambda) pour marquer leur double appartenance : le chameau est la mascotte du langage Perl, et le lambda (λ) est une référence au lambda calcul qui est à la base de la programmation fonctionnelle.

La distribution Pugs contient du code source de diverses origines et donc sous différentes licences open source : la licence artistique 2.0b5, la licence du Glasgow Haskell Compiler , la GPL 2, la LGPL 2.1 et la licence MIT.

Conformément à la tradition du monde Perl, Pugs tourne sur de nombreuses plates-formes logicielles dont Unix, Mac OS X et Windows.

Vue d'ensemble

Le projet Pugs a pour but de bootstrapper Perl 6 en mettant en œuvre la totalité de la spécification de Perl 6, détaillée à Synopses. Il est écrit en Haskell et utilise les fonctionnalités les plus récentes du Glasgow Haskell Compiler.
Ainsi la mise en œuvre de la mémoire transactionnelle logicielle pour la programmation concurrente qui permet d'exploiter au mieux les architectures multi cœur ou multiprocesseurs.
Ou les types algébriques de données généralisés.

Pugs inclut deux exécutables principaux :

  • pugs est l'interprète avec un shell interactif ;
  • pugscc peut compiler des programmes Perl 6 en code Haskell, en code Perl 5, en JavaScript, ou en assembleur imcc destinĂ© Ă  ĂŞtre interprĂ©tĂ© par la machine virtuelle Parrot.

Numéros de version

Les numéros de version de Pugs convergent vers 2 × π (cela rappelle TeX et METAFONT, qui utilisent un système similaire); Chaque chiffre significatif de la version mineure représente une étape franchie avec succès. Les étapes anticipées sont :

  • 6.0 : Version initiale
  • 6.2 : EntrĂ©es-sorties et structures de contrĂ´le; variables mutables, affectation.
  • 6.28 : classes et traits.
  • 6.283 : Règles et Grammaires.
  • 6.2831 : Système de types et Ă©dition de liens.
  • 6.28318 : Macros.
  • 6.283185 : Port de Pugs vers Perl 6, si nĂ©cessaire.

La version actuelle de Pugs est la 6.2.13.11.

Compatibilité avec Perl 5

Depuis la version 6.2.6, Pugs peut inclure la machine virtuelle Perl 5 et donc utiliser les modules CPAN. Le JAPH ci-dessous montre l'utilisation de Perl DBI, un module populaire, pour gérer une base de données SQLite :

#!/usr/bin/pugs
use v6;
use perl5:DBI;
my $dbh = DBI.connect('dbi:SQLite:dbname=test.db');
$dbh.do("CREATE TABLE Test (Project, Pumpking)");
my $sth = $dbh.prepare("INSERT INTO Test VALUES (?, ?)");
$sth.execute(<PGE Patrick>);
$sth.execute(<Pugs Audrey>);
$sth.execute(<Parrot Leo>);
my $res = $dbh.selectall_hashref('SELECT * FROM Test', 'Pumpking');
# Just another Pugs hacker
say "Just another $res<Audrey><Project> hacker";

Modèle de développement

Pugs est un projet open source très productif. Démarré en 2005, ses progrès ont été rapides pour les raisons suivantes :

  • Pugs' utilise le système de typage statique de Haskell. Cela signifie qu'une palette plus large de bugs est dĂ©tectĂ©e au moment de la compilation. Dans la tradition des langages fonctionnels, quelques lignes de Haskell peuvent accomplir beaucoup de travail. Haskell est très adaptĂ© Ă  l'analyse d'un langage grâce Ă  la bibliothèque Parsec, un analyseur monadique combinatoire Ă©crit entièrement en Haskell. Les choses deviennent difficiles quand le code fonctionnel doit interagir avec le monde rĂ©el (entrĂ©es/sorties et environnement dĂ©pendant du temps). Pour cela, Pugs utilise intensivement les monades, qui sont des containers qui encapsulent les effets de bord dans un monde par ailleurs purement fonctionnel. C’est-Ă -dire sans effets de bord et indĂ©pendant de l'ordre d'exĂ©cution des paramètres d'une fonction.
  • Le dĂ©veloppement est pilotĂ© par les tests, un principe de la programmation extrĂŞme dont le but est d'Ă©crire les jeux de test si possible avant mĂŞme que le code Ă  tester soit Ă©crit. L'Ă©tat du projet est alors apparent simplement en regardant quelle proportion de tests rĂ©ussit. Cela rend plus facile de dĂ©tecter les rĂ©gressions. On espĂ©rait originellement que l'important jeu de test de Pugs formerait la base du jeu de test de Perl 6 mais il semble que Pugs lui-mĂŞme sera la première mise en Ĺ“uvre de Perl 6.
  • Audrey Tang distribue gĂ©nĂ©reusement le bit de commit, spĂ©cialement aux personnes dĂ©sireuses d'Ă©crire des tests. Le dĂ©veloppement de Pugs utilise un dĂ©pĂ´t Subversion. Grâce Ă  cela, Pugs a accumulĂ© une bibliothèque de tests considĂ©rable.
  • L'enthousiasme d'Audrey est communicatif et ses communications relativement frĂ©quentes. Son journal (lien ci-dessous) a attirĂ© plusieurs personnes vers le projet, sĂ©duites par la vitesse de dĂ©veloppement du projet. Cela contraste avec la rĂ©putation que s'Ă©tait attirĂ© Perl 6, projet commencĂ© en l'an 2000, dont l'avancement avant Pugs Ă©tait très lent. Il faut pourtant noter les retombĂ©es pourtant nombreuses dans la prochaine versions mineure 5.10 de Perl 5, et les modules Perl6:: de CPAN mettant en Ĺ“uvre des fonctionnalitĂ©s de Perl 6 dans Perl 5. La communication Ă  court terme pour Pugs se fait sur le canal IRC #perl6 Freenode.

Voir aussi

  • Fondation Perl : La fondation chargĂ©e de la promotion et du dĂ©veloppement de Perl.

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.