Après un an et demi de développement, le projet Hachoir a abouti à une version 1.0 grâce à l'effort commun d'une trentaine de contributeurs. Ce projet est constitué d'une base de connaissance des 70 formats de fichiers les plus courants et d'une suite d'outils exploitant ces informations.
Hachoir est tolérant aux erreurs, ce qui permet de traiter des fichiers corrompus et/ou tronqués ; il est rapide parce qu'il ne lit que les informations nécessaires. Il est donc possible d'identifier le codec correspondant à un fichier vidéo dès que les premiers kilo-octets ont été téléchargés, ou d'accéder aux données stockées dans un fichier plus gros que la mémoire. Un cas d'utilisation est l'extraction des fichiers d'une archive (gzip, bz2, etc.) tronquée quand les outils standards refusent de la traiter.
De nombreux composants sont disponibles, notamment hachoir-metadata, dédié à l'extraction des méta-données (nom de l'auteur, durée d'une musique, taux de compression d'une image, etc) et servant d'alternative au programme file pour identifier le type d'un fichier; et hachoir-subfile, dédié à la récupération de fichiers depuis une partition disque corrompue ou une image de la mémoire.
Sortie de la version 2.5 du langage Tom
Après neuf mois de gestation depuis la dernière version, la version 2.5 du langage Tom vient de sortir, apportant son lot d'innovations.
Tom est un langage de programmation développé au sein de l'INRIA et qui ajoute des capacités de réécriture à des langages de programmation impératifs (actuellement Java, C et OCaml). Concrètement, cela signifie que Tom permet de décrire des transformations de structures de données par un mécanisme de filtrage (pattern-matching) puissant et de spécifier comment ces transformations s'appliquent à l'aide d'un langage de stratégie.
Ce style de programmation est particulièrement adapté à la manipulation d'arbres, comme des arbres XML par exemple, mais aussi des arbres représentant des programmes (cf. la dépêche de jeudi concernant CFE). Ces arbres peuvent être des structures de données du langage hôte (on pourrait par exemple fournir une description à Tom des arbres générés par CFE), ou simplement des termes algébriques à la Caml, pour lesquels Tom fournit une implémentation efficace en Java.
Il est activement utilisé par des équipes de recherche ainsi que des industriels pour :
La documentation est exhaustive et à jour. Le compilateur est stable et mature. Il est accompagné des outils indispensables à son utilisation : greffon pour Eclipse, mode pour vim et tâche ant. Le tout est publié sous licences libres (GPL, APL et BSD).
Tom est un langage de programmation développé au sein de l'INRIA et qui ajoute des capacités de réécriture à des langages de programmation impératifs (actuellement Java, C et OCaml). Concrètement, cela signifie que Tom permet de décrire des transformations de structures de données par un mécanisme de filtrage (pattern-matching) puissant et de spécifier comment ces transformations s'appliquent à l'aide d'un langage de stratégie.
Ce style de programmation est particulièrement adapté à la manipulation d'arbres, comme des arbres XML par exemple, mais aussi des arbres représentant des programmes (cf. la dépêche de jeudi concernant CFE). Ces arbres peuvent être des structures de données du langage hôte (on pourrait par exemple fournir une description à Tom des arbres générés par CFE), ou simplement des termes algébriques à la Caml, pour lesquels Tom fournit une implémentation efficace en Java.
Il est activement utilisé par des équipes de recherche ainsi que des industriels pour :
- développer des compilateurs (comme le compilateur Tom lui-même) ;
- transformer à la volée du bytecode Java ;
- le développement d'un assistant à la démonstration ;
- la traduction de requêtes vers des bases de connaissance.
La documentation est exhaustive et à jour. Le compilateur est stable et mature. Il est accompagné des outils indispensables à son utilisation : greffon pour Eclipse, mode pour vim et tâche ant. Le tout est publié sous licences libres (GPL, APL et BSD).