URL: https://linuxfr.org/news/elixir-phoenix-et-membrane Title: Elixir, Phoenix et Membrane Authors: Bruno Michel Davy Defaud et ZeroHeure Date: 2018年07月29日T16:00:03+02:00 License: CC By-SA Tags: elixir, phoenix et membrane Score: 47 Elixir est un langage de programmation dont la version 1.7 vient de sortir. Il est notamment utilisé par deux cadriciels : Phoenix pour le Web et Membrane Framework pour la diffusion multimédia. Ces trois projets sont présentés dans la seconde partie de la dépêche. ---- [Site officiel d’Elixir](https://elixir-lang.org/) [Annonce d’Elixir 1.7](https://elixir-lang.org/blog/2018/07/25/elixir-v1-7-0-released/) [Site officiel de Phoenix](https://phoenixframework.org/) [Annonce de Phoenix 1.3](https://phoenixframework.org/blog/phoenix-1-3-0-released) [Site officiel de Membrane Framework](https://www.membraneframework.org/) [Mini documentaire sur Elixir, par Honeypot](http://doc.honeypot.io/elixir-documentary-2018/) ---- # Elixir Elixir est un langage de programmation fonctionnelle et dynamique. Il s’appuie sur la machine virtuelle d’Erlang, avec une syntaxe inspirée de Ruby et pas mal de bonnes idées prises d’autres langages (les _docstrings_ de Python par exemple). Elixir profite de la machine virtuelle d’Erlang, connue pour ses aspects distribués, sa résistance aux erreurs et sa faible latence. En particulier, il reprend les processus légers (l’équivalent des _goroutines_ de Go) : ```elixir current_process = self() # Crée un nouveau processus léger d’Elixir spawn_link(fn -> send current_process, {:msg, "Hello world!"} end) # Attend jusqu’à la réception d’un message receive do {:msg, contents} -> IO.puts contents end ``` Un autre point fort d’Elixir est son outillage, avec notamment _[mix](https://hexdocs.pm/mix/)_, l’outil de construction, _[hex](https://hex.pm/)_, le gestionnaire de paquets, et _[iex](https://hexdocs.pm/iex/)_, la console interactive. [ExUnit](https://hexdocs.pm/ex_unit/), le cadriciel de test, profite des macros d’Elixir, qui permettent d’écrire des DSL, pour avoir des tests concis avec des rapports d’erreur compréhensibles : ```elixir defmodule SampleTest do use ExUnit.Case, async: true test "test the truth" do assert "fox jumps over the lazy dog" == "brown fox jumps over the dog" end end ```  # Phoenix Phoenix est un cadriciel Web, l’équivalent de Ruby on Rails pour Elixir. Par rapport à Rails, il a abandonné le côté magique tout en ayant quand même réussi à garder le sentiment de productivité que l’on peut avoir en développant avec. En particulier, Ecto, la bibliothèque de persistance des données, est souvent vue comme plus solide qu’ActiveRecord. Enfin, Phoenix bénéficie d’Elixir et de la plate‐forme Erlang : ses temps de réponse pour des pages avec peu d’interactions avec la base de données sont généralement sous la milliseconde, là où on est plutôt à quelques dizaines de millisecondes avec Rails. # Membrane Framework Membrane Framework sert à construire des applications côté serveur pour les flux multimédias. Il met l’accent sur la fiabilité et la concurrence, et ce n’est donc pas très étonnant qu’il soit développé en Elixir (avec un peu de C, toutefois). Membrane Framework se compare à [[GStreamer]]. D’après les dires de leurs développeurs, ils ne cherchent pas à couvrir tous les cas et formats que GStreamer peut couvrir et préfèrent se concentrer sur la qualité. _**N. D. A. :** J’ai déjà utilisé un peu Elixir et Phoenix, mais je ne fais que relayer des informations lues sur le site officiel de Membrane Framework car le projet me semble intéressant. Si des lecteurs ont un avis plus éclairé, je les encourage à le faire partager dans les commentaires._