AccueilActualités informatiqueLangage de programmation : Elixir 1.13 introduit la recompilation sémantique

Langage de programmation : Elixir 1.13 introduit la recompilation sémantique

La version 1.13 du langage de programmation fonctionnel Elixir est sortie. Alors que les nouvelles versions présentent généralement des nouveautés dans l’API centrale, l’équipe d’Elixir s’est cette fois concentrée sur les améliorations de l’outillage, selon l’annonce faite dans le billet de blog. De nouvelles fonctions, telles que la recompilation sémantique, devraient profiter directement aux développeurs dans les projets en cours, mais aussi rendre l’utilisation d’Elixir plus efficace à long terme.

Sommaire

Avant de déclencher une recompilation, Elixir et son compilateur n’avaient jusqu’à présent pas suivi de près les sections d’un fichier qui avaient été modifiées. Cela conduisait dans de nombreux cas à une recompilation complète de l’ensemble du projet. C’était surtout le cas pour les modifications dans les fichiers mix.exs, config/config.exs, src/* et mix.lock. Avec l’introduction de la recompilation sémantique, il n’est plus nécessaire de recompiler entièrement que si les développeurs modifient les options de compilation dans mix.exs ou si la configuration pour le projet en cours est modifiée dans config/config.exs. Les modifications de la taille d’un fichier, par exemple à la suite d’un changement de branche, ne déclenchent plus de compilation. De même, lorsque des dépendances sont mises à jour ou supprimées, seuls les fichiers directement concernés sont recompilés.

D’autres nouveautés, issues de suggestions de la communauté, concernent l’outil mix xrefqui analyse les relations entre les fichiers. En analysant les dépendances de compilation et d’exécution entre les fichiers, les développeurs peuvent comprendre plus facilement ce qui doit être recompilé à chaque fois qu’un fichier est modifié. Par exemple, pour repérer toutes les dépendances de temps de compilation qui entraînent des dépendances transitives supplémentaires, on peut utiliser l’outil mix xref graph--label dans Elixir 1.13 à compile-connected à définir.

Lire aussi

Elixir peut être étendu de manière flexible en cas de besoin. Les sigils offrent entre autres la possibilité d’intégrer des snippets d’autres langages de programmation dans le code source. Jusqu’à présent, il n’était toutefois pas possible de les utiliser comme le code Elixir avec mix format ne sont pas formatés. La version 1.13 permet désormais l’utilisation de plug-ins pour mix format qui permet d’utiliser le formateur via Mix.Tasks.Format qui permet de formater également de nouveaux fichiers et sigles. Un plug-in individuel pour Markdown ressemblerait par exemple à ceci :

defmodule MixMarkdownFormatter do
  @behaviour Mix.Tasks.Format

  def features(_opts) do
    [sigils: [:M], extensions: [".md", ".markdown"]]
  end

  def format(contents, opts) do
    # logic that formats markdown
  end
end

N’importe quelle application peut ainsi accéder aux options avancées de formatage de code :

# .formatter.exs
[
  # Define the desired plugins
  plugins: [MixMarkdownFormatter],
  # Remember to update the inputs list to include the new extensions
  inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}", "posts/*.{md,markdown}"]
]

Les personnes intéressées trouveront un aperçu plus détaillé de toutes les nouveautés de la version 1.13 sur le blog d’Elixir ainsi que dans les notes de mise à jour sur GitHub.

Elixir est un langage de programmation fonctionnel qui se concentre sur la création de programmes évolutifs, robustes et parallèles. Il utilise la machine virtuelle Erlang, qui a été testée et développée au fil des décennies, car le compilateur Elixir génère un bytecode compatible avec Erlang. La syntaxe de base s’inspire de Ruby et peut être étendue via des macros. Depuis la version 1.0 parue en 2014, un grand écosystème de bibliothèques ainsi qu’un vaste support d’outils se sont développés grâce à une communauté ouverte et active. Elixir est disponible sous la licence Apache License 2.0 sur GitHub.

Lire aussi

Plus d'articles