tag:linuxfr.org,2005:/users/renoLinuxFr.org : les contenus de reno2022-10-06T22:28:26+02:00/favicon.pngtag:linuxfr.org,2005:Diary/403982022-09-27T22:52:14+02:002022-09-27T22:52:14+02:00Rust dans Linux, ça démarre fort!Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p>Salut,</p>
<p>Alors que Rust n'est pas encore intégré au noyau Linux (<a href="https://www.zdnet.com/article/linus-torvalds-rust-may-make-it-into-the-next-linux-kernel-after-all/">c'est prévu pour la version 6.1</a>), il y a 2 modules tests qui sont <a href="https://lwn.net/Articles/907685/">en cours de développement</a>: un pilote NVM Express et un serveur de fichier 9P.<br>
L'intérêt du pilote NVM Express est de montrer qu'il atteint presque les même performances que celle du pilote C existant.</p>
<p>Plus ambitieuse encore, Asahi Lina est en train d'écrire un pilote en Rust(*) pour les GPU Apple M1/M2!</p>
<p>Bien sûr, c'est encore un peu en rodage: il y a encore des <a href="https://nitter.net/LinaAsahi/status/1567752082060619776">limitations</a>/<a href="https://nitter.net/LinaAsahi/status/1570119306461204481">problèmes</a> coté Rust, des méfiances/interrogations coté développeurs Linux, mais je trouve que ça démarre fort!</p>
<p>*: le pilote ne sera pas forcément intégralement en Rust</p>
<div><a href="https://linuxfr.org/users/reno/journaux/rust-dans-linux-ca-demarre-fort.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/128882/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/reno/journaux/rust-dans-linux-ca-demarre-fort#comments">ouvrir dans le navigateur</a>
</p>
renohttps://linuxfr.org/nodes/128882/comments.atomtag:linuxfr.org,2005:Diary/360822015-09-01T11:18:05+02:002015-09-01T11:18:05+02:00Les brevets logiciels toujours interdits en FranceLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p>En théorie les brevets logiciels sont interdits en France, en pratique des brevets logiciels ont été déposé, alors qui a raison?</p>
<p>Un jugement récent est décrit dans un <a href="http://www.lesnumeriques.com/mobilite/orange-deboute-sa-plainte-contre-free-pour-violation-brevet-n45001.html">article sur les Numériques</a>: Orange, qui avait déposé plainte contre Free pour violation de brevet, a été débouté de sa plainte et <strong>le tribunal a rappelé qu'il s'agissait à l'évidence d'un litige portant sur un "programme d'ordinateur". Or, il n'est pas possible de breveter un programme, ce dernier étant déjà couvert par le droit d'auteur.</strong> Cerise sur le gâteau: Orange a été condamné a payer 100000€ à Free.</p>
<p>Cette bonne nouvelle est quand même a prendre avec des pincettes car il n'est pas impossible qu'Orange fasse appel, mais il semble bien que déposer un brevet logiciel en France, c'est juste une perte de temps et d'argent!!</p><div><a href="https://linuxfr.org/users/reno/journaux/les-brevets-logiciels-toujours-interdits-en-france.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/106661/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/reno/journaux/les-brevets-logiciels-toujours-interdits-en-france#comments">ouvrir dans le navigateur</a>
</p>
renohttps://linuxfr.org/nodes/106661/comments.atomtag:linuxfr.org,2005:Diary/355782015-02-02T11:02:29+01:002015-02-02T11:02:29+01:00Raspberry Pi: la suiteLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p>Le Raspberry Pi 2 est annoncé sur <a href="http://arstechnica.com/information-technology/2015/02/raspberry-pi-2-arrives-with-quad-core-cpu-1gb-ram-same-35-price/">Ars Technica</a>: même prix (35$) mais quad-core ARMv7 à 900MHz (précédemment mono-core ARMv6 à 700MHz) et 1 Go de RAM, autres changements: 4 ports USB et slot micro-SD.</p>
<p>Le GPU reste le même, donc les efforts actuels pour 'libérer' le GPU restent utiles pour cette nouvelle version.</p>
<p>A mon avis, vu le prix et les capacités ça devrait se vendre comme des petits pain, prévision facile car ils ont déjà vendu 4.5 Millions de la version originale..<br>
```</p>
<pre><code></code></pre><div><a href="https://linuxfr.org/users/reno/journaux/raspberry-pi-la-suite.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/104679/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/reno/journaux/raspberry-pi-la-suite#comments">ouvrir dans le navigateur</a>
</p>
renohttps://linuxfr.org/nodes/104679/comments.atomtag:linuxfr.org,2005:Diary/341192013-07-15T15:08:31+02:002013-07-15T15:08:31+02:00Comment les jeux gratuits font payer leurs utilisateursLicence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p>Bon, c'est en Anglais mais voici un lien vers un article expliquant comment les jeux "gratuits" arrivent à faire payer leurs utilisateurs: <a href="http://www.schneier.com/blog/archives/2013/07/f2p_monetizatio.html">http://www.schneier.com/blog/archives/2013/07/f2p_monetizatio.html</a></p>
<p>TLDR: ces jeux utilisent principalement le fait qu'on est beaucoup plus prêt à payer pour conserver ce qu'on a plutôt que de payer pour acquérir de nouvelles choses.</p><div><a href="https://linuxfr.org/users/reno/journaux/comment-les-jeux-gratuits-font-payer-leurs-utilisateurs.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/99086/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/reno/journaux/comment-les-jeux-gratuits-font-payer-leurs-utilisateurs#comments">ouvrir dans le navigateur</a>
</p>
renohttps://linuxfr.org/nodes/99086/comments.atomtag:linuxfr.org,2005:Diary/340562013-06-28T12:00:42+02:002013-06-28T13:19:10+02:00Des nouvelles de Mir.Licence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p>Bonjour Nal,<br>
cette semaine a été riche en nouvelles sur Mir, j'ai donc penser que ce Vendredi, dernier jour de la semaine, serait le jour idéal pour résumer tout ça:</p>
<ul>
<li><p>Lundi, nous apprenons que <a href="http://www.phoronix.com/scan.php?page=news_item&px=MTM5NDQ">Xfce, LXDE, & GNOME fonctionnent sur Ubuntu XMir</a>, XMir étant la couche de compatibilité X de Mir (l'équivalent de XWayland), cela montre que Mir et XMir ont atteins une certaine maturité.</p></li>
<li><p>Mercredi, nous apprenons que Canonical compte embaucher encore <a href="http://www.phoronix.com/scan.php?page=news_item&px=MTM5NjM">des développeurs pour Mir et Unity </a>, bon ça fait un peu penser à la <a href="http://fr.wikipedia.org/wiki/Loi_de_Brooks">loi de Brooks</a>, mais ça montre qu'ils sont sérieux sur le sujet.</p></li>
<li>
<p>Jeudi, nous apprenons que </p>
<ol>
<li> KUbuntu va rester sur X et ne pas utiliser <a href="http://lwn.net/Articles/556517/">ni Mir, ni XMir</a>, surprenant après les nouvelles de Lundi (enfin pas tant que ça quand on suit les blogs des dev KDE).</li>
<li>Canonical va intégrer Mir par défaut en utilisant <a href="http://www.phoronix.com/scan.php?page=news_item&px=MTM5NzM">XMir dans Ubuntu 13.10</a>
</li>
</ol>
</li>
<li><p>Et aujourd'hui vendredi, un benchmark de <a href="http://www.phoronix.com/scan.php?page=article&item=ubuntu_xmir_benchmark&num=1">Phoronix</a> montre qu'XMir réduit les performances entre 10% et 50%(!!) sur les jeux par rapport à du X pur.<br>
Michael Larabel étant un trolleur maître, il termine son benchmark en se demandant quelles seront les performances d'XWayland et en rappelant que Keith Packard avait dit qu'il était possible qu'XWayland soit plus performant qu'X!</p></li>
</ul><p>Affaire à suivre..</p><div><a href="https://linuxfr.org/users/reno/journaux/des-nouvelles-de-mir.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/98894/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/reno/journaux/des-nouvelles-de-mir#comments">ouvrir dans le navigateur</a>
</p>
renohttps://linuxfr.org/nodes/98894/comments.atomtag:linuxfr.org,2005:News/339382013-03-05T11:00:23+01:002013-03-05T13:38:29+01:00Ruby 2.0 est sortiLicence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<div><p>Pour fêter ses 20 ans, Ruby arrive en version 2.0 !</p>
<p>Malgré ce changement de version majeur, il y a moins de différences entre Ruby 2.0 et 1.9 qu'entre Ruby 1.9 et 1.8.<br />
La compatibilité avec les logiciels 1.9 est quasiment assurée. Cerise sur le gâteau : cette nouvelle version est considérée comme stable et on y trouve un certain nombre de nouveautés et d'optimisations.</p>
<p>Pour rappel : Ruby est un langage de programmation orienté objets, à typage dynamique et qui s'est inspiré de Lisp, Perl, Smalltalk, Eiffel, etc. Sa principale caractéristique est de mettre en avant les besoins humains avant ceux informatiques, et notamment le fun et la productivité. </p>
<p><abbr title="Note des modérateurs">NdM</abbr> : merci à reno pour son journal et _jordan_ pour ses compléments pour approfondir, ainsi qu'à YLD, Marc Quinton, Nicolas Blanco, Barret Michel, Nÿco, Katyucha pour leur participation.</p></div><ul><li>lien nᵒ 1 : <a title="http://linuxfr.org/users/reno/journaux/ruby-2-0-est-sorti" hreflang="fr" href="https://linuxfr.org/redirect/85426">Journal à l'origine de la dépêche</a></li><li>lien nᵒ 2 : <a title="http://linuxfr.org/news/sortie-de-ruby-192" hreflang="fr" href="https://linuxfr.org/redirect/85443">journal de sortie ruby 1.9.2</a></li><li>lien nᵒ 3 : <a title="http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example/" hreflang="en" href="https://linuxfr.org/redirect/85444">nouveautés de ruby 2 par l'exemple</a></li><li>lien nᵒ 4 : <a title="http://www.ruby-lang.org/fr/news/2013/02/25/sortie-de-ruby-2-0-0-p0/" hreflang="fr" href="https://linuxfr.org/redirect/85445">Annonce officielle</a></li><li>lien nᵒ 5 : <a title="https://speakerdeck.com/shyouhei/whats-new-in-ruby-2-dot-0" hreflang="en" href="https://linuxfr.org/redirect/85446">What's new in ruby 2.0</a></li></ul><div><h2 id="sommaire">Sommaire</h2>
<ul><li>
<a href="#toc_0">Changements du langage</a>
<ul><li>
<a href="#toc_1">Paramètres par mot-clé</a>
</li>
<li>
<a href="#toc_2">UTF8</a>
</li>
<li>
<a href="#toc_3">Débogage</a>
</li>
<li>
<a href="#toc_4">Variables non utilisées</a>
</li>
<li>
<a href="#toc_5">Création de hash</a>
</li>
<li>
<a href="#toc_6">Chemin du dossier courant</a>
</li>
<li>
<a href="#toc_7">Création de tableaux de symboles</a>
</li>
<li>
<a href="#toc_8">Inclusion par précédence</a>
</li>
<li>
<a href="#toc_9">Onigmo : nouveau moteur d'expression régulière</a>
</li>
<li>
<a href="#toc_10">Refinements</a>
</li>
<li>
<a href="#toc_11"> Lazy Enumerator et Enumerable</a>
</li>
<li>
<a href="#toc_12">API de gestion asynchrone des exceptions</a>
</li>
</ul></li>
<li>
<a href="#toc_13">Optimisations des performances</a>
<ul><li>
<a href="#toc_14">Ramasse-miette</a>
</li>
<li>
<a href="#toc_15">Autres</a>
</li>
</ul></li>
<li>
<a href="#toc_16">Documentation</a>
</li>
<li>
<a href="#toc_17">Autres mises à jour notables</a>
</li>
</ul><h2 id="toc_0">Changements du langage</h2>
<h3 id="toc_1">Paramètres par mot-clé</h3>
<p>Le langage gère maintenant directement le passage de paramètres par mots clefs : c'était déjà possible avant, mais en utilisant un moyen détourné (via un Hash en paramètre).</p>
<p>Ci dessous un exemple de définition de méthode avec une valeur par défaut pour un argument "nommé".</p>
<pre>
<code class="ruby"><span class="c1"># Ruby 1.9 et précédents</span>
<span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">opts</span> <span class="o">=</span> <span class="p">{})</span>
<span class="n">opts</span> <span class="o">=</span> <span class="p">{</span><span class="n">fmt</span><span class="p">:</span> <span class="s1">'html'</span><span class="p">}</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">opts</span><span class="p">)</span>
<span class="n">r</span> <span class="o">=</span> <span class="no">Renderer</span><span class="o">.</span><span class="n">for</span><span class="p">(</span><span class="n">opts</span><span class="o">[</span><span class="ss">:fmt</span><span class="o">]</span><span class="p">)</span>
<span class="n">r</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">source</span><span class="p">)</span>
<span class="k">end</span>
</code>
</pre><pre>
<code class="ruby"><span class="c1"># Ruby 2</span>
<span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">fmt</span><span class="p">:</span> <span class="s1">'html'</span><span class="p">)</span>
<span class="n">r</span> <span class="o">=</span> <span class="no">Renderer</span><span class="o">.</span><span class="n">for</span><span class="p">(</span><span class="n">fmt</span><span class="p">)</span>
<span class="n">r</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">source</span><span class="p">)</span>
<span class="k">end</span>
</code>
</pre>
<p>A noter que le passage de paramètres par mots clefs utilise la syntaxe de Ruby 1.9 pour définir les Hash.</p>
<pre>
<code class="ruby"><span class="c1"># Ruby 1.8</span>
<span class="n">my_hash</span> <span class="o">=</span> <span class="p">{</span> <span class="ss">:key1</span> <span class="o">=></span> <span class="mi">1</span><span class="p">,</span> <span class="ss">:key2</span> <span class="o">=></span> <span class="mi">3</span> <span class="p">}</span>
</code>
</pre><pre>
<code class="ruby"><span class="c1"># Ruby 1.9</span>
<span class="n">my_hash</span> <span class="o">=</span> <span class="p">{</span> <span class="n">key1</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="n">key2</span><span class="p">:</span> <span class="mi">3</span> <span class="p">}</span>
</code>
</pre><h3 id="toc_2">UTF8</h3>
<p>Ruby 1.9 ayant introduit la prise en charge complète de l'UTF-8 au niveau des chaînes, Ruby 2.0 traite désormais les fichiers de code source dans cet encodage (ce qui peut poser des problèmes de compatibilité).</p>
<h3 id="toc_3">Débogage</h3>
<p>DTrace et SystemTap sont maintenant pris en charge pour instrumenter l'exécution des scripts.</p>
<h3 id="toc_4">Variables non utilisées</h3>
<p>Les variables commençant par <code>_</code> peuvent désormais être inutilisées dans vos sources sans causer de warning. C'est l'option <code>-w</code> qui permet d'activer cette fonction.</p>
<pre>
<code class="ruby"><span class="c1"># Ruby 1.9</span>
<span class="k">def</span> <span class="nf">foo</span>
<span class="n">_</span><span class="p">,</span> <span class="n">world</span> <span class="o">=</span> <span class="s1">'hello, world'</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">', '</span><span class="p">)</span>
<span class="n">world</span>
<span class="k">end</span>
<span class="c1"># => pas d'avertissement</span>
<span class="c1"># Ruby 2.0</span>
<span class="k">def</span> <span class="nf">hi</span>
<span class="n">_hello</span><span class="p">,</span> <span class="n">world</span> <span class="o">=</span> <span class="s1">'hello, world'</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">', '</span><span class="p">)</span>
<span class="n">world</span>
<span class="k">end</span>
<span class="c1"># => pas d'avertissement non plus.</span>
</code>
</pre><h3 id="toc_5">Création de hash</h3>
<p><code>to_Hash</code> permet de convertir une classe en hash. Cette méthode a été implémentée pour <code>nil</code>, <code>Struct</code> et <code>OpenStruct</code></p>
<pre>
<code class="ruby"><span class="c1"># Ruby 2.0:</span>
<span class="no">Car</span> <span class="o">=</span> <span class="no">Struct</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="ss">:make</span><span class="p">,</span> <span class="ss">:model</span><span class="p">,</span> <span class="ss">:year</span><span class="p">)</span> <span class="k">do</span>
<span class="k">def</span> <span class="nf">build</span>
<span class="c1">#...</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="n">car</span> <span class="o">=</span> <span class="no">Car</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s1">'Toyota'</span><span class="p">,</span> <span class="s1">'Prius'</span><span class="p">,</span> <span class="mi">2014</span><span class="p">)</span>
<span class="n">car</span><span class="o">.</span><span class="n">to_h</span> <span class="c1"># => {:make=>"Toyota", :model=>"Prius", :year=>2014}</span>
<span class="kp">nil</span><span class="o">.</span><span class="n">to_h</span> <span class="c1"># => {}</span>
</code>
</pre>
<p>Attention, cela n'a pas été implémenté pour les classes <code>Enumerable</code>/<code>Array</code></p>
<pre>
<code class="ruby"><span class="p">{</span><span class="n">hello</span><span class="p">:</span> <span class="s1">'world'</span><span class="p">}</span><span class="o">.</span><span class="n">map</span><span class="p">{</span><span class="o">|</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="o">|</span> <span class="o">[</span><span class="n">k</span><span class="o">.</span><span class="n">to_s</span><span class="p">,</span> <span class="n">v</span><span class="o">.</span><span class="n">upcase</span><span class="o">]</span><span class="p">}</span>
<span class="o">.</span><span class="n">to_h</span> <span class="c1"># => NoMethodError:</span>
<span class="c1"># undefined method `to_h' for [["hello", "WORLD"]]:Array</span>
</code>
</pre><h3 id="toc_6">Chemin du dossier courant</h3>
<p><code>__dir__</code> retourne le chemin absolu du dossier du fichier en cours d'exécution.</p>
<h3 id="toc_7">Création de tableaux de symboles</h3>
<p>%i et %I ont été ajoutés pour la création de tableaux de symboles avec une syntaxe minimale.</p>
<pre>
<code class="ruby"><span class="c1"># Ruby 1.9:</span>
<span class="no">KEYS</span> <span class="o">=</span> <span class="o">[</span><span class="ss">:foo</span><span class="p">,</span> <span class="ss">:bar</span><span class="p">,</span> <span class="ss">:baz</span><span class="o">]</span>
<span class="c1"># Ruby 2.0:</span>
<span class="no">KEYS</span> <span class="o">=</span> <span class="o">%</span><span class="n">i</span><span class="o">[</span><span class="n">foo</span> <span class="n">bar</span> <span class="n">baz</span><span class="o">]</span>
</code>
</pre>
<p>de la même manière que %w et %W servaient à la création simplifiée de listes de chaîne de caractères :</p>
<pre>
<code class="ruby"><span class="no">KEYS</span> <span class="o">=</span> <span class="sx">%w[foo bar baz]</span>
<span class="no">KEYS</span> <span class="o">=</span> <span class="o">[</span><span class="s2">"foo"</span><span class="p">,</span> <span class="s2">"bar"</span><span class="p">,</span> <span class="s2">"baz"</span><span class="o">]</span>
</code>
</pre><h3 id="toc_8">Inclusion par précédence</h3>
<p>Lorsqu'un module est inclus dans un autre, il se retrouve automatiquement ajouté après la définition de celui qui l'inclut. Cela oblige à pas mal de gymnastique lorsque l'on veut "wrapper" des méthodes du conteneur.</p>
<pre>
<code class="ruby"><span class="k">class</span> <span class="nc">Template</span>
<span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="n">erb</span><span class="p">)</span>
<span class="vi">@erb</span> <span class="o">=</span> <span class="n">erb</span>
<span class="k">end</span>
<span class="k">def</span> <span class="nf">render</span> <span class="n">values</span>
<span class="no">ERB</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="vi">@erb</span><span class="p">)</span><span class="o">.</span><span class="n">result</span><span class="p">(</span><span class="nb">binding</span><span class="p">)</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">module</span> <span class="nn">RenderProfiler</span>
<span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">included</span> <span class="n">base</span>
<span class="n">base</span><span class="o">.</span><span class="n">send</span> <span class="ss">:alias_method</span><span class="p">,</span> <span class="ss">:render_without_profiling</span><span class="p">,</span> <span class="ss">:render</span>
<span class="n">base</span><span class="o">.</span><span class="n">send</span> <span class="ss">:alias_method</span><span class="p">,</span> <span class="ss">:render</span><span class="p">,</span> <span class="ss">:render_with_profiling</span>
<span class="k">end</span>
<span class="k">def</span> <span class="nf">render_with_profiling</span> <span class="n">values</span>
<span class="n">start</span> <span class="o">=</span> <span class="no">Time</span><span class="o">.</span><span class="n">now</span>
<span class="n">render_without_profiling</span><span class="p">(</span><span class="n">values</span><span class="p">)</span><span class="o">.</span><span class="n">tap</span> <span class="p">{</span>
<span class="vg">$stderr</span><span class="o">.</span><span class="n">puts</span> <span class="s2">"Rendered in </span><span class="si">#{</span><span class="no">Time</span><span class="o">.</span><span class="n">now</span> <span class="o">-</span> <span class="n">start</span><span class="si">}</span><span class="s2">s."</span>
<span class="p">}</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">class</span> <span class="nc">Template</span>
<span class="kp">include</span> <span class="no">RenderProfiler</span>
<span class="k">end</span>
<span class="no">Template</span><span class="o">.</span><span class="n">ancestors</span>
<span class="c1">#=> [Template, RenderProfiler, Object, Kernel, BasicObject]</span>
</code>
</pre>
<p>Désormais il est possible d'inclure un module avant la défintion de son conteneur:</p>
<pre>
<code class="ruby"><span class="k">module</span> <span class="nn">RenderProfiler</span>
<span class="k">def</span> <span class="nf">render</span> <span class="n">values</span>
<span class="n">start</span> <span class="o">=</span> <span class="no">Time</span><span class="o">.</span><span class="n">now</span>
<span class="k">super</span><span class="p">(</span><span class="n">values</span><span class="p">)</span><span class="o">.</span><span class="n">tap</span> <span class="p">{</span>
<span class="vg">$stderr</span><span class="o">.</span><span class="n">puts</span> <span class="s2">"Rendered in </span><span class="si">#{</span><span class="no">Time</span><span class="o">.</span><span class="n">now</span> <span class="o">-</span> <span class="n">start</span><span class="si">}</span><span class="s2">s."</span>
<span class="p">}</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">class</span> <span class="nc">Template</span>
<span class="n">prepend</span> <span class="no">RenderProfiler</span>
<span class="k">end</span>
<span class="no">Template</span><span class="o">.</span><span class="n">ancestors</span>
<span class="c1">#=> [RenderProfiler, Template, Object, Kernel, BasicObject]</span>
</code>
</pre>
<p>Exemples ci-dessus issus du <a href="http://benhoskin.gs/2013/02/24/ruby-2-0-by-example?utm_source=rubyweekly&utm_medium=email">blog de Ben Hoskings</a></p>
<h3 id="toc_9">Onigmo : nouveau moteur d'expression régulière</h3>
<p><a href="https://github.com/k-takata/Onigmo">Onigmo</a> remplace Oniguruma comme moteur d'expressions régulières (c'est un fork). Il permet d'utiliser certaines fonctionnalités présentes dans <a href="http://perldoc.perl.org/perlre.html">perl</a> depuis la version 5.10.<br />
Notamment l'expression conditionnelle <code>(?(condition)yes-pattern|no-pattern)</code> qui vaut <code>yes-pattern</code> si la condition est vérifiée, <code>no-pattern</code> sinon.</p>
<h3 id="toc_10">Refinements</h3>
<p>Les versions précédentes de Ruby permettent déjà de redéfinir des méthodes ou d'étendre des classes existantes. Le défaut principal de cette fonction très puissante est que les modifications de classes existantes se retrouvent dans tout un projet ainsi que les librairies utilisées. Les refinements, introduits dans Ruby 2.0 en fonctionnalité expérimentale, permettent d'effectuer ces modifications de manière "cloisonnée".</p>
<p>Magnus Holm en a donné un bon exemple dans un <a href="http://timelessrepo.com/refinements-in-ruby">article à ce sujet</a> (en anglais)</p>
<pre>
<code class="ruby"><span class="k">module</span> <span class="nn">TimeExtensions</span>
<span class="n">refine</span> <span class="no">Fixnum</span> <span class="k">do</span>
<span class="k">def</span> <span class="nf">minutes</span><span class="p">;</span> <span class="nb">self</span> <span class="o">*</span> <span class="mi">60</span><span class="p">;</span> <span class="k">end</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">class</span> <span class="nc">MyApp</span>
<span class="n">using</span> <span class="no">TimeExtensions</span>
<span class="k">def</span> <span class="nf">initialize</span>
<span class="nb">p</span> <span class="mi">2</span><span class="o">.</span><span class="n">minutes</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="no">MyApp</span><span class="o">.</span><span class="n">new</span> <span class="c1"># => 120</span>
<span class="nb">p</span> <span class="mi">2</span><span class="o">.</span><span class="n">minutes</span> <span class="c1"># => NoMethodError</span>
</code>
</pre>
<p>Dans cet exemple, plutôt que d'ajouter la méthode <code>minutes</code> dans la classe <code>Fixnum</code>, il l'a ajouté en tant que «raffinement» dans le module <code>TimeExtensions</code>. L'intérêt est que la méthode minutes n'existe que dans le bloc contenant <code>using TimeExtensions</code></p>
<h3 id="toc_11"> Lazy Enumerator et Enumerable</h3>
<p>Enumerators et Enumerables sont maintenant disponibles en version lazy (optimisation visant à retarder une opération jusqu'au moment où son résultat est nécessaire, ou bien au moment où des ressources sont inoccupées ) :</p>
<p>Enumerable#lazy et Enumerator::Lazy permettent de gérer des suites potentiellement infinies (lazy streams)</p>
<p>A cela s'ajoutent Enumerator#size et Range#size pour déterminer la taille par évaluation retardée (lazy evaluation)</p>
<h3 id="toc_12">API de gestion asynchrone des exceptions</h3>
<p>Une nouvelle API de gestion asynchrone des exceptions fait son apparition dans cette version 2.0.</p>
<h2 id="toc_13">Optimisations des performances</h2>
<h3 id="toc_14">Ramasse-miette</h3>
<p>Le ramasse-miettes a été optimisé par la technique du "bitmap marking". Il devrait radicalement réduire la mémoire occupée par les programmes ruby tournant sur serveur web. <a href="www.narihiro.info/index.en.html">Narihiro Nakamura</a> (en anglais) y travaillait depuis 2008.</p>
<p>L'idée principale est de profiter de la non-duplication de structures égales lors des forks (voir <a href="http://fr.wikipedia.org/wiki/Copy-On-Write" title="Définition Wikipédia">Copy-On-Write</a>). En ruby, les valeurs sont divisées en deux parties : les données (RArray, RHash, RFile …) et un ensemble de flags. On appelle ces valeurs des RValue (Ruby Value).</p>
<p>Les ensembles de flags sont souvent identiques d'une RValue à une autre. Le système ne devrait donc pas avoir à les dupliquer. Seulement, l'un des flags <code>FL_MARK</code>, est régulièrement modifié par le garbage collector pour indiquer les RValue recyclables. Comme celui-ci change très souvent de valeur, l'ensemble de flags varie, obligeant le système à dupliquer tout l'ensemble.</p>
<p>Narihiro Nakamura a donc sorti FL_MARK de la structure en regroupant tous les FL_MARK dans une collection de bit mappés à la RValue (d'où le "bitmap marking"). Ainsi Ruby peut régulièrement modifier FL_MARK sans toucher à l'ensemble de flags de la RValue.</p>
<p>Dès lors, le système n'a pas besoin de dupliquer les ensembles de <em>flags</em> lorsqu'ils sont parfaitement égaux pour deux RValue différentes. Vous l'aurez peut-être compris, ceci est valable lors des appels de <em>fork</em> qui, dans les systèmes UNIX, ne dupliquent pas la mémoire tant qu'elle est identique aux deux processus.</p>
<p>Pour plus d'informations à ce sujet, je vous invite à lire cet <a href="http://patshaughnessy.net/2012/3/23/why-you-should-be-excited-about-garbage-collection-in-ruby-2-0">article</a> très intéressant (en anglais).</p>
<h3 id="toc_15">Autres</h3>
<p>D'autres optimisations ont été faites pour améliorer la vitesse de démarrage notamment sur <code>Kernel#require</code>, les calculs sur des nombres à virgule flottante et sur la machine virtuelle. Cela profite déjà grandement au framework web <a href="http://fr.wikipedia.org/wiki/Ruby on Rails" title="Définition Wikipédia">Ruby on Rails</a>.</p>
<h2 id="toc_16">Documentation</h2>
<p>D'après le site <a href="http://www.ruby-lang.org/fr">ruby-lang.org</a> : « Un effort important à également été produit pour améliorer la documentation, ce qui a été une demande régulière de la part de la communauté. Le volume de documentation rdoc pour les modules et les méthodes a ainsi notablement augmenté : 75% de la 2.0.0 est couvert, tandis que la 1.9.3 plafonnait vers les 60%. Par ailleurs, vous pouvez retrouver une description de la syntaxe ruby en appelant : »</p>
<pre>
<code class="sh"><span class="nv">$ </span>ri ruby:syntax
</code>
</pre>
<p>L'ouvrage de référence sur Ruby (le <a href="http://pragprog.com/book/ruby4/programming-ruby-1-9-2-0?utm_source=rubyweekly&utm_medium=email">"pickaxe"</a>) sort, lui, dans une nouvelle édition qui couvre désormais Ruby 2.0.</p>
<h2 id="toc_17">Autres mises à jour notables</h2>
<p>La <a href="http://rubyweekly.us1.list-manage.com/track/click?u=0618f6a79d6bb9675f313ceb2&id=a8b6aae57a&e=09fa53f0f6">version 2.0.0 de RubyGems et la version 1.3 de Bundler</a> accompagnent la sortie de Ruby 2.0, elles ajoutent la gestion de cette dernière, tout en restant compatible avec les 1.9.x.</p>
<p>De même, l'équipe de <em>Ruby on Rails</em> sort une <a href="http://weblog.rubyonrails.org/2013/2/27/Rails-3-2-13-rc1-has-been-released/?utm_source=rubyweekly&utm_medium=email">version 3.2.13-rc1</a> compatible Ruby 2.0 ainsi qu'une <a href="http://rubyweekly.us1.list-manage.com/track/click?u=0618f6a79d6bb9675f313ceb2&id=7228c96e3d&e=09fa53f0f6">version 4 en bêta</a> pour qui Ruby 2 sera l'environnement de prédilection.</p></div><div><a href="https://linuxfr.org/news/ruby-2-0-est-sorti.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/97540/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/ruby-2-0-est-sorti#comments">ouvrir dans le navigateur</a>
</p>
reno_jordan_YLDMarc Quintonbaud123Nicolas BlancobarmicNÿcoKatyuchahttps://linuxfr.org/nodes/97540/comments.atomtag:linuxfr.org,2005:Diary/337012013-02-27T17:27:21+01:002013-02-27T22:41:15+01:00Ruby 2.0 est sortiLicence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p>N'ayant pas vu post sur le sujet, je me suis dit que ça valait la peine de faire au moins un journal sur le sujet, même si, contrairement à ce que le changement de numéro pourrait laisser croire, il y a moins de différence entre Ruby 2.0 et 1.9 qu'entre Ruby 1.9 et 1.8 et la compatibilité est censée être meilleure, il y a quand même beaucoup de nouveautés.</p>
<p>Une sélection arbitraire de ma part des nouveautés :</p>
<ul><li>le langage gère maintenant directement le passage de paramètre par mot clef : c'était déjà possible à faire avant, mais avec un hack.</li>
<li>l'encodage est maintenant par défaut l'UTF-8.</li>
<li>une prise en charge de DTrace et SystemTap pour instrumenter l'exécution des scripts.</li>
<li>des améliorations en performance pour l'exécution et pour le GC <em>(garbage collector)</em>.</li>
</ul><p>Pour voir une liste plus complète des nouveautés :<br /><a href="http://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is-released/">http://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is-released/</a><br /><a href="http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example">http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example</a><br /><a href="https://speakerdeck.com/shyouhei/whats-new-in-ruby-2-dot-0">https://speakerdeck.com/shyouhei/whats-new-in-ruby-2-dot-0</a></p><div><a href="https://linuxfr.org/users/reno/journaux/ruby-2-0-est-sorti.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/97539/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/reno/journaux/ruby-2-0-est-sorti#comments">ouvrir dans le navigateur</a>
</p>
renohttps://linuxfr.org/nodes/97539/comments.atomtag:linuxfr.org,2005:Diary/336872013-02-22T13:13:55+01:002013-02-22T13:13:55+01:00Ubuntu Tablet va utiliser SurfaceFlingerLicence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p>Ubuntu pour tablet va utiliser <a href="http://www.phoronix.com/scan.php?page=news_item&px=MTMwODg">SurfaceFlinger</a> pour l'affichage graphique.<br /><a href="http://stackoverflow.com/questions/5699107/android-surfaceflinger">SurfaceFlinger</a> est un composant d'Android, dont le rôle est d'allouer les buffers graphique et faire la composition du résultat pour l'affichage.</p>
<p>Donc, coté sous-système graphique, on a donc sous Linux:<br />
1. X: le protocole/serveur graphique utilisé pour les bureaux sur les PC, pour le protocole X11 traditionnel est très bien documenté, mais dès qu'on veut comprendre les méthodes "modernes" DRI2, XRender, là la doc est difficile a trouver: je pense qu'une des meilleurs présentation sur DRI2, c'est la <a href="http://www.phoronix.com/scan.php?page=news_item&px=MTMwNjc">présentation de KP</a> qui explique ses limitations et le remplacement prévu par <s>DRI3000,DRINext</s>DRI3, ce qui est quand même un comble!<br />
2. SurfaceFlinger: le compositeur d'Android, j'avoue m'y être peu intéressé, j'ignore quels sont ces points forts et ses limitations.<br />
3. Wayland: prévu pour remplacer X, assez bien documenté, même s'il y a des aspects où ça pourrait être <a href="http://linuxfr.org/users/reno/journaux/mon-erreur-sur-weston-le-serveur-de-wayland">améliorer</a>. <br />
4. DirectFB: bon alors là, coté documentation/tutoriel c'est n'importe quoi, d'ailleurs les discussions sur ce sujet sont assez drôles: le brouillard quasi-complet..</p>
<p>Quelqu'un aurait-il des informations sur les différences entre SurfaceFlinger, Wayland et DirectFB?<br />
Leurs conceptions semblent assez similaire..</p><div><a href="https://linuxfr.org/users/reno/journaux/ubuntu-tablet-va-utiliser-surfaceflinger.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/97488/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/reno/journaux/ubuntu-tablet-va-utiliser-surfaceflinger#comments">ouvrir dans le navigateur</a>
</p>
renohttps://linuxfr.org/nodes/97488/comments.atomtag:linuxfr.org,2005:Diary/335522013-01-09T14:45:57+01:002013-01-09T14:45:57+01:00Une revue d'HaikuLicence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p>Pour ceux qui ont aimé BeOS, vous vous posez peut-être la question 'où en est Haiku?' (Haiku étant la réécriture opensource de BeOS).</p>
<p>Il y a un article d'Ars Technica faisant une revue de l'Alpha4 d'Haiku:<br /><a href="http://arstechnica.com/gadgets/2013/01/not-quite-poetry-in-motion-ars-reviews-the-haiku-alpha-4-os/">http://arstechnica.com/gadgets/2013/01/not-quite-poetry-in-motion-ars-reviews-the-haiku-alpha-4-os/</a></p>
<p>On peut résumer la revue de la façon suivante:<br />
1) Haiku a gardé la vitesse de réponse et la légèreté de BeOS.</p>
<p>2) la compatibilité matérielle est encore très problématique: seul un PC sur trois testé était compatible et encore partiellement (pilote VESA pour la carte graphique).</p>
<p>3) comme sur BeOS le manque d'application est un problème, mais les développeurs d'Haiku ont créer un navigateur web moderne WebPositive basé sur WebKit.</p>
<p>4) la conclusion de l'article étant qu'Haiku paraît intéressant principalement pour les environnements très limité en performance, par exemple le Raspberry Pi.</p>
<p>Personnellement, je trouve que le point (1) est une très bonne nouvelle pour le monde Linux: le code étant libre, s'il y a toujours des cas où BeOS/Haiku est plus performant que les distributions Linux (j'ai pu observer que c'était le cas à l'époque, à voir maintenant..), on peut maintenant comparer dans le détail avec les bureaux Linux et étudier les points à améliorer.</p><div><a href="https://linuxfr.org/users/reno/journaux/une-revue-d-haiku.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/97021/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/reno/journaux/une-revue-d-haiku#comments">ouvrir dans le navigateur</a>
</p>
renohttps://linuxfr.org/nodes/97021/comments.atomtag:linuxfr.org,2005:Diary/335232013-01-02T13:26:41+01:002013-01-02T13:26:41+01:00Pour les masosLicence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p>qui ont envie de se gâcher le début d'année, je leur conseille de lire cette <a href="http://seekingalpha.com/article/1062291-will-patent-office-eliminate-vringo-s-right-to-future-royalties-from-google">article (en Anglais)</a> sur la situation des brevets aux US.</p>
<p>Pour résumer en un mot pour les autres: <strong>une absurdité totale</strong> :-(</p>
<p>Bonne année quand même!</p><div><a href="https://linuxfr.org/users/reno/journaux/pour-les-masos.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/96927/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/reno/journaux/pour-les-masos#comments">ouvrir dans le navigateur</a>
</p>
renohttps://linuxfr.org/nodes/96927/comments.atomtag:linuxfr.org,2005:Diary/332512012-10-15T14:22:03+02:002012-10-22T01:14:06+02:00Le Raspberry Pi passe à 512 Mio de RAMLicence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p>Le Raspberry Pi “Model B” passe à 512 Mio de RAM, sans augmentation de prix (35 $ US).</p>
<p>Le lien ici : <a href="http://www.raspberrypi.org/archives/2180">http://www.raspberrypi.org/archives/2180</a></p>
<p>Je me demande quelles autres améliorations on peut souhaiter ? Peut‐être des accès disques & réseau plus performants ?</p><div><a href="https://linuxfr.org/users/reno/journaux/le-raspberry-pi-passe-a-512-mio-de-ram.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/96005/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/reno/journaux/le-raspberry-pi-passe-a-512-mio-de-ram#comments">ouvrir dans le navigateur</a>
</p>
renohttps://linuxfr.org/nodes/96005/comments.atomtag:linuxfr.org,2005:Diary/332092012-10-05T14:04:02+02:002012-10-05T14:53:38+02:00Mon erreur sur Weston (le serveur de Wayland)Licence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p>Salut nal,<br />
je ne sais pas si cela aurait mieux valu un post dans le forum ou pas de post du tout, mais bon voilà: j'ai écris plusieurs message sur W2 (Wayland&Weston) où j'indiquais que l'architecture (décoration gérée par le client) ne me semblait pas fameuse car déplacer/redimensionner des fenêtres pouvait être saccadé si l'application est lente à répondre, or c'est faux pour le déplacement des fenêtres avec Weston!</p>
<p>En fait, les décorations sont bien gérées par le client, mais une fois que le client détecte qu'on a cliqué sur la barre des titres, il dit à Weston de mettre l'application en "mode de déplacement" et c'est le serveur Weston qui va ensuite déplacer la fenêtre de manière autonome quand l'utilisateur bouge la souris jusqu'à ce que l'utilisateur relâche la souris.<br />
Donc pas de communication serveur <--> client durant le déplacement d'une fenêtre, ça devrait être très fluide (même en distant) !</p>
<p>Le redimensionnement d'une fenêtre peut, lui, être saccadé si l'application est lente à répondre, mais notons que ça ne concerne que Weston pas Wayland, les dev de KDE prévoient par exemple d'utiliser une gestion des décorations côté serveur pas côté client.</p>
<p>Désolé si j'ai pu induire quelqu'un en erreur, mon excuse est que Weston est très peu documenté.</p><div><a href="https://linuxfr.org/users/reno/journaux/mon-erreur-sur-weston-le-serveur-de-wayland.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/95866/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/reno/journaux/mon-erreur-sur-weston-le-serveur-de-wayland#comments">ouvrir dans le navigateur</a>
</p>
renohttps://linuxfr.org/nodes/95866/comments.atomtag:linuxfr.org,2005:Diary/325512012-05-04T23:16:53+02:002012-05-04T23:16:53+02:00Réduire la latence des connections TCP, enfinLicence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p>La plupart des interactions avec les sites web se font avec des échanges très court: un paquet pour la requête, un ou deux paquets pour la réponse, comme l'échange est très court, l'ouverture de la connexion avant l'échange ajoute une latence très importante.<br />
Il n'est pas si simple d'éviter cette durée de connexion sans réduire la sécurité (il faut valider l'adresse de l'émetteur, autrement on est vulnérable à l'usurpation d'adresse source: T/TCP n'est pas utilisé à cause de ce problème), ni utiliser trop de ressource sur le serveur (maintenir des sessions TCP ouverte en permanence avec l'option keep-alive doit être restreint autrement cela consomme trop de ressources sur les serveurs).</p>
<p>L'alternative "évidente", que j'attendais depuis longtemps, est l'utilisation d'une connexion anticipée pour récupérer une clef cryptographique afin de pouvoir réutiliser cette clef ensuite: cela permet d'avoir des "pseudo connexions" permettant un échange rapide avec peu d'utilisation de ressource sur le serveur, et bonne nouvelle Google travaille dessus!</p>
<p>Ceci est détaillé de manière très claire (comme d'habitude) sur le blog de Stephan Bortzmeyer: <a href="http://www.bortzmeyer.org/tcp-ouverture-rapide.html">http://www.bortzmeyer.org/tcp-ouverture-rapide.html</a></p><div><a href="https://linuxfr.org/users/reno/journaux/reduire-la-latence-des-connections-tcp-enfin.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/94018/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/reno/journaux/reduire-la-latence-des-connections-tcp-enfin#comments">ouvrir dans le navigateur</a>
</p>
renohttps://linuxfr.org/nodes/94018/comments.atomtag:linuxfr.org,2005:Diary/324872012-04-20T17:17:25+02:002012-04-20T17:17:25+02:00Une démo bluffante de DirectFBLicence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p>DirectFB 1.6 prévu pour Janvier 2012 est en retard, mais les développeurs viennent de sortir une vidéo montrant ce dont DirectFB sera capable et c'est plutôt <a href="http://directfb.org/index.php?path=Main%2FNews">impressionnant</a> (même si le matériel utilisé pour la démo est un <em>gros</em> PC car il n'y a pas d'accélération matérielle).</p>
<p>La page contenant les vidéos à télécharger: <a href="http://directfb.org/index.php?path=Main%2FDownloads&page=6">http://directfb.org/index.php?path=Main%2FDownloads&page=6</a></p><div><a href="https://linuxfr.org/users/reno/journaux/une-demo-bluffante-de-directfb.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/90371/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/reno/journaux/une-demo-bluffante-de-directfb#comments">ouvrir dans le navigateur</a>
</p>
renohttps://linuxfr.org/nodes/90371/comments.atomtag:linuxfr.org,2005:Diary/319842011-12-22T18:10:49+01:002011-12-22T18:10:49+01:00Le moteur de VLC passe de GPLv2 à LGPLv2.1Licence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p>Je ne résiste pas a préparer un Vendredi spécialement trollifère en annonçant que les développeurs VLC viennent d'annoncer qu'ils ont terminé le changement de licence du "moteur VLC", celui-ci passant de la <a href="http://www.videolan.org/press/lgpl-libvlc.html">GPLv2 (et suivante) à la LGPLv2.1</a>.<br />
Le lecteur VLC restant lui sous GPLv2.</p>
<p>Pour rappel les licences GPLv2 et LGPLv2.1 ont été choisie pour diverses raisons mais principalement à cause de la <a href="http://www.videolan.org/press/2007-1.html">clause anti-tivoïsation de la GPLv3</a>.</p>
<p>Joyeux Noël et paix sur terre à tous ;-)</p><div><a href="https://linuxfr.org/users/reno/journaux/le-moteur-de-vlc-passe-de-gplv2-%C3%A0-lgplv21.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/88749/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/reno/journaux/le-moteur-de-vlc-passe-de-gplv2-%C3%A0-lgplv21#comments">ouvrir dans le navigateur</a>
</p>
renohttps://linuxfr.org/nodes/88749/comments.atom