URL: https://linuxfr.org/news/premiere-sortie-d-elixir-embarquez-naviguez Title: Première sortie d’Élixir : embarquez, naviguez ! Authors: ZeroHeure Davy Defaud, Benoît Sibaud, palm123 et Nicolas Casanova Date: 2017年06月15日T14:35:31+02:00 License: CC By-SA Tags: python, elixir, lxr, noyau_linux et opengrok Score: 34 Ça fait quelques années que [Free-Electrons](http://free-electrons.com) propose de naviguer dans le code source de notre bien‐aimé noyau. [Le vénérable _Linux Cross Reference_ (LXR)](https://fr.wikipedia.org/wiki/LXR_Cross_Referencer) ayant un peu de mal quand le vent et les grosses vagues se lèvent, ils ont cherché autre chose : [_OpenGrok_](https://opengrok.github.io/OpenGrok/), la dernière version 2.2 de LXR... Une petite plongée dans le code plus tard, Mikael Bouillot, secouant sa crinière, a décidé de coder un outil simple et léger, sans bases de données superflues : Elixir — comme [le langage](https://fr.wikipedia.org/wiki/Elixir_(langage)), oui, mais c’est codé en Python. ---- [Annonce de sortie](http://free-electrons.com/blog/elixir/) [Dépôt Elixir sur GitHub](https://github.com/free-electrons/elixir) [Naviguez dans le noyau !](http://elixir.free-electrons.com/linux/latest/source) [OpenGrok](https://opengrok.github.io/OpenGrok/) ["Source code reading" related sites](http://www.gnu.org/software/global/links.html) ---- LXR a été créé en 1994 pour naviguer aisément dans le code source du noyau Linux. La sortie est en HTML avec tous les liens qu’il faut. Au début, LXR n’utilisait pas de base de données SQL, ce qui avait l’avantage d’être [simple et rapide](http://free-electrons.com/blog/new-lxr/). Free-Electron a choisi d’utiliser la version LXR 0.3.1 (stable et sans SQL) pendant trèèèès longtemps. # Alors pourquoi créer un nouveau moteur ? LXR 0.3.1 c’est un peu vieux et limité... Depuis 1999 le Web a changé, le noyau avec ses arbres et son historique de développement sont beaucoup, beaucoup, beaucoup, beaucoup, beaucoup plus gros, Linus a développé Git, etc., et Free-Electrons voulait étendre son service vers d’autres projets tout en l’améliorant ([Web adaptatif (_responsive design_)](https://fr.wikipedia.org/wiki/Site_web_adaptatif)). Tout ça devant demeurer simple, rapide et léger. L’arlésienne, quoi ! Il y a une autre raison : Free-Electrons voulait vraiment beaucoup améliorer son service ! Il s’agissait de fournir les dernières révisions tout en conservant des références non modifiables (_immutable_), c’est‐à‐dire que quiconque plaçait un lien vers ces jolis petits bouts de code en C serait assuré de le retrouver quelques siècles plus tard (soyons visionnaires). _Il s’agissait, près de l’herbage D’un champ de choux verts et pommés Un champ de rêve en vérité Qui excitait sa convoitise Et qu’un vieux berger protégeait. Les bergers sont d’une bêtise !_ (interlude) # Deux grandes idées : 1. Comme dans LXR 0.3, fuir comme la peste les moteurs de bases de données relationnelles et rester frugal avec un stockage en listes de paires clefs‐valeurs ; 2. Utiliser le modèle de données de Git pour éviter d’indexer de multiples versions identiques d’un fichier. Indexer les _blobs_ de Git suffit puisqu’ils sont partagés entre les révisions. Et tout ça reste assez simple, deux petits scripts en Python se répartissent le boulot d’indexer et produire les pages à la demande, [Ctags](https://en.wikipedia.org/wiki/Ctags) fournissant les identifiants. --- L’interlude poétique est extrait d’une fable de [Jean‐Pierre Rosnay](https://fr.wikipedia.org/wiki/Jean-Pierre_Rosnay) : [_La chèvre et le chou_](http://www.poesie.net/enfantjp.htm).