Le Tcl Core Team est heureux d'annoncer la sortie de la version 8.6 du langage de script Tcl et de la bibliothèque d'interface graphique Tk. C'est la première version stable de la branche Tcl/Tk 8.6 dont le développement a commencé en mars 2008.
Parmi les nouveautés pour Tcl, le support officiel de la programmation orientée objets dans le noyau, l'évaluation stackless, les coroutines, une interface commune d'accès aux bases de données SQL dans le noyau, la gestion des exceptions, les canaux virtuels, le support de la compression zlib dans le noyau.
Parmi les nouveautés pour Tk, le support du format PNG, un nouveau sélecteur de fonte, le déplacement absolu des objets dans le widget canvas et les textes obliques.
À noter un changement d’infrastructure : le développement de Tcl/Tk n'est plus hébergé sur Sourceforge avec CVS mais sur un site spécifique avec le gestionnaire Fossil développé par D. Richard Hipp (le créateur de SQLite). Il en est de même pour les deux bibliothèques standards (Tcllib et Tklib).
Les principales nouveautés et améliorations de Tcl 8.6
- La Programmation Orientée Objets : après environ une décennie de tergiversation et une dizaine d'extensions différentes, Tcl est enfin doté d'un système objet dans le noyau. Il est basé sur les classes et comprend des fonctionnalités telles que les méta-classes, les filtres, les slots et les mixins.
- L'évaluation stackless :
l'évaluation de plusieurs niveaux d'appel de procédures imbriquées n'est plus implémentée au niveau de la pile du langage C. Cette révision importante de l'implémentation interne de Tcl appelée NRE (Non-Recursive-Evaluation-Engine) augmente la profondeur de récursion et permet la récursion terminale (
tailcall
). Incidemment, apparaissent les nouvelles commandescoroutine
,yield
etyieldto
s'orientant vers la continuation et la programmation concurrente. - La gestion des exceptions :
la gestion des exceptions via les commandes
try/trap/finally
ainsi quethrow
. Ajouté à cela une grande quantité de code de retour d'erreur (-errorcode
) permettant une gestion plus fine des erreurs et des exceptions. - TDBC (Tcl DataBase Connectivity) :
il s'agit d'une interface commune avec les SGBD SQL. Sont inclus les pilotes pour MySQL, PostgreSQL, SQLite et ODBC. Le package
sqlite3/tdbc::sqlite3
inclus avec Tcl fournit un moteur de base de données prêt à l'emploi. - La compression zlib dans le noyau avec la commande
zlib
pour gérer la compression de données et de flux. - Les nouvelles commandes
lmap
etdict map
permettent un traitement plus compact des collections de données. - Le support IPv6 en tant que client et serveur avec la commande
socket
. - Les nouvelles commandes
chan push
etchan pop
pour les canaux virtuels. - Améliorations supplémentaires : certaines commandes acceptent zéro argument sans renvoyer une erreur, la version par défaut de Tcl devient la version avec thread, la gestion des fichiers temporaires avec
file tempfile
, améliorations du tri des listes (lsort -stride
), filtrage de dictionnaire (dict filter
), encodage et décodage de séquences binaires (binary encode/decode
) et un contrôle plus fin du chargement des bibliothèques avec la commandeload -global
et-lazy
.
Les principales nouveautés et améliorations de Tk 8.6
- Le support du format PNG (lecture/écriture) avec contrôle du canal alpha (transparence)
- La commande
tk busy
qui permet de suspendre l'interactivité d'une fenêtre si besoin. - Un nouveau sélecteur de fonte
tk fontchooser
qui fournit une interface portable au sélecteur de fonte de la plate-forme, qu'il soit modal ou non. - Une nouvelle option
-angle $degrees
avec$canvas create text
pour afficher du texte selon un angle donné dans le widget canvas. - Le déplacement absolu d'objets dans le widget canvas avec la commande
$canvas moveto
. - Le déplacement de noeuds avec
$canvas imove
et$canvas rchars
. - Le nom des couleurs Tk ont été redéfinis pour suivre les standards du Web.
- Changement de la gestion de l'événement
<MouseWheel>
qui est actif dès que la souris est sur une fenêtre. - Améliorations supplémentaires : plus d'interaction avec le window manager, le widget spinbox devient thémable (
ttk::spinbox
) et support de la compression LZW avec le format GIF.
Aller plus loin
- L'annonce sur comp.lang.tcl (151 clics)
- La liste détaillée des changements (76 clics)
- Le site officiel (280 clics)
- La page Wikipedia de Tcl (185 clics)
- La précédente dépêche de Tcl/Tk 8.5 sur Linuxfr (62 clics)
# Waouh…
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 5.
Tcl/Tk, c'est vraiment le genre de truc qui m'apparaît comme une technologie du siècle dernier. Et les informations relatives à cette nouvelle version ne font que renforcer cette impression :
Quatre ans donc pour sortir une version mineure. C'est vachement dynamique comme développement.
Avec à peine quoi, seize ans de retard ?
[^] # Re: Waouh…
Posté par zul (site web personnel) . Évalué à 8.
La numérotation ça ne veut pas dire grand chose. Il y'a quand même un paquet de modifications importantes, même si évidemment ça ne révolutionne pas le monde des langages de programmation. Mais un modèle objet + une réécriture du modèle d'exécution + une gestion des exceptions, ce n'est pas "mineur", même si ça reste très 20e siècle :D On peut noter qu'il y 'a encore un paquet de langages "modernes" qui ne sont pas foutu de faire du TCO. L'approche concurrente parait consistante avec le reste du modèle TCL.
Après, à savoir si les personnes qui développent 'activement' en tcl sont vraiment intéressé par un modèle objet, j'ai quelques doutes (dans ceux que je connais en tout cas).
[^] # Re: Waouh…
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 2.
Oui, les nouveautés de Tcl mériteraient un numéro majeur dans le cadre d'une numérotation standard.
[^] # Re: Waouh…
Posté par claudex . Évalué à 4.
C'est quoi une numérotation standard ?
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Waouh…
Posté par God . Évalué à 1.
Quelque chose comme ça peut être : Semantic Versionning ?
[^] # Re: Waouh…
Posté par wismerhill . Évalué à 3.
Ben justement, le point 9 de cette page indique que la version majeure n'est incrémentée que si des changements incompatibles ont été introduits. Et il ne me semble pas que ce soit le cas ici, donc n'incrémenter que la version mineure est logique.
[^] # Re: Waouh…
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 3.
En effet. Ce versionnement sémantique est centré sur la notion d'API et non sur les fonctionnalités. Au temps pour moi.
[^] # Re: Waouh…
Posté par Thierry Thomas (site web personnel, Mastodon) . Évalué à 5.
La question serait plutôt de savoir s'il va se trouver quelqu'un pour démarrer un nouveau projet en TCL/TK, ou s'il ne s'agit que de maintenir des projets existants ?
[^] # Pas sans intérêt
Posté par Arthur Accroc . Évalué à 9.
Je ne sais pas si Tcl ou Tk peuvent être pertinents pour un projet important.
D’un autre côté, si c’est pour se faire vite fait un petit utilitaire avec interface graphique sans consacrer trop de temps à le maintenir ensuite, Tk peut être intéressant par rapport à des bibliothèques graphiques dont les évolutions majeures fréquentes obligeraient à retravailler régulièrement la partie graphique du programme.
Imagine un programme que tu aurais écrit en 2000. Tu aurais donc utilisé Qtk 1.2, Qt 2 ou Tk 8.3. Le boulot pour le maintenir fonctionnel ensuite en suivant les évolutions des bibliothèques n’aurait pas été le même suivant ton choix…
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Pas sans intérêt
Posté par Sytoka Modon (site web personnel) . Évalué à 4.
En 2000, j'avais déjà basculé un programme de tcl/tk vers perl/tk et je ferais aujourd'hui la même chose. Tk est une super bibliothèque, c'est Tcl le problème, je dois être hermétique à la beauté de ce langage mais je passais un temps fou à comprendre le moindre truc dedans qui déconnais.
[^] # Tcl
Posté par Arthur Accroc . Évalué à 3. Dernière modification le 30 décembre 2012 à 02:08.
Une fois, j’ai touché à du Tcl.
Je ne m’en souviens plus en détails et je n’ai pas eu l’envie de remplacer mon langage de prédilection par lui, mais j’en garde l’impression d’une conception assez élégante, qui permet avec une base de langage plutôt minimaliste une expression quasiment aussi riche que d’autres langages de script bien plus lourds et une prise en main assez rapide.
C’est vrai que compte tenu de sa conception, le débogage n’est peut-être pas évident…
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Pas sans intérêt
Posté par fravashyo . Évalué à 3.
sous windows ça ne se voit pas trop, mais sous Linux ça ressemble quand même à un programme des années 70 :
http://tk-happy.sourceforge.net/
« I approve of any development that makes it more difficult for governments and criminals to monopolize the use of force. » Eric Raymond
[^] # Quelles années ?
Posté par Arthur Accroc . Évalué à 4. Dernière modification le 31 décembre 2012 à 12:12.
N’exagérons rien, ou alors montre-nous le programme des années 70 qui ressemble à Tk.
Non, parce que pour autant que je sache, dans les années 70, il n’y avait pas d’interfaces graphiques sauf chez Xerox et ça ressemblait à ça.
Dans les années 80, les interfaces graphiques ressemblaient plutôt à ça.
La mode du look pseudo 3D avec ombrage, autant que je me souvienne, ça date plutôt d’environ 1990 (peut-être quelques années avant pour Motif, mais je ne l’ai pas vu à l’époque et je n’ai même pas trouvé la date de sortie de sa première version sur Wikipédia ou sur son site).
(Édition : j’ai essayé d’inclure les images directement… sans succès ; alors, j’ai remplacé par des liens.)
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Quelles années ?
Posté par Maclag . Évalué à 4.
L'idée reste la même.
Quand on tombe sur un truc comme ça sous Linux, on se demande si l'appli n'a pas déjà 10 ans depuis la dernière maintenance.
[^] # Re: Quelles années ?
Posté par fravashyo . Évalué à 1.
exactement, l'exagération faisait partie de l'ironie. J'aurais dû parler de préhistoire, ça aurait peut-être mieux été compris. Dommage parce que sous Windows on ne voit apparemment pas la différence avec un autre type d'appli (en Qt par exemple, sauf pour certains effets bien entendu)
« I approve of any development that makes it more difficult for governments and criminals to monopolize the use of force. » Eric Raymond
[^] # Re: Pas sans intérêt
Posté par Sytoka Modon (site web personnel) . Évalué à 3.
Je me fiche un peu du look pour mes programmes… Je parle ici de la facilité et de la qualité de l'API. Si Tk était plus utilisé, pas de doute que l'aspect visuel serait amélioré !
[^] # Re: Waouh…
Posté par Maclag . Évalué à 4.
Rappelons tout de même que Tk est pratiquement l'outil pour créer des interfaces graphiques par défaut dans pas mal de langages.
Je pense par exemple à OCaml et à R: certes, il existe d'autres bindings (comme ça se dit en Français au passage, "binding"??), mais quand on ne va pas plus loin que le bout de son nez (on est pressé et/ou peu de temps à passer là-dessus), c'est le choix n°1 sans s'embêter, et c'est toujours bien maintenu.
Du coup, oui, ce langage est toujours d'actualité, y compris pour des petits projets.
Après, c'est moche sous Linux, oui, bon, yaka/faukon arrange ça.
[^] # Re: Waouh…
Posté par Thierry Thomas (site web personnel, Mastodon) . Évalué à 1.
« interface » ?
[^] # Re: Waouh…
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à -3.
Oh, j'oubliais :
Pfiou, c'est moderne ça, on se croirait en Perl, dans le genre langage avec dix ans de retard par rapport à IPv6…
[^] # Re: Waouh…
Posté par EdB . Évalué à 9.
Bah il sont toujours en avance sur le déploiement à grande échelle de IPv6 !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.