<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Sylvestre&#39;s blog</title>
  <link>http://100.109.194.79:1313/blog/</link>
  <description>Blog de Sylvestre Ledru — archive statique (2004-2022)</description>
  <language>fr-fr</language>
  <atom:link href="http://100.109.194.79:1313/blog/" rel="self" type="application/rss+xml" />
  
  
  <item>
    <title>An update on rust/coreutils</title>
    <link>http://100.109.194.79:1313/blog/2022/01/29/an-update-on-rust-coreutils</link>
    <guid isPermaLink="false">893@http://100.109.194.79:1313/blog/</guid>
    <pubDate>Sat, 29 Jan 2022 12:50:00 &#43;0000</pubDate>
    <dc:creator>sylvestre</dc:creator>
    <category>Développement</category><category>Linux</category><category>Debian</category>
    <description>&lt;p&gt;TLDR: we are making progress on the Rust implementation of the GNU coreutils.&lt;/p&gt;
&lt;p&gt;Well, it is an understatement to say &lt;a href=&#34;https://sylvestre.ledru.info/blog/2021/03/09/debian-running-on-rust-coreutils&#34;&gt;my previous blog post&lt;/a&gt; interested many people. Many articles, blog posts and some podcasts talked about it! As we pushed &lt;a href=&#34;https://crates.io/crates/coreutils&#34;&gt;coreutils 0.0.12&lt;/a&gt; a few days ago and getting closer to the 10 000 stars on github, it is now time to give an update!&lt;/p&gt;
&lt;p&gt;This has brought a lot of new contributors to this project. Instead of 30 to 60 patches per month, we jumped to 400 to 472 patches every month. Similarly, we saw an increase in the number of contributors (20 to 50 per month from 3 to 8). Two new maintainers (Michael Debertol &amp;amp; Terts Diepraam) stepped in and have been doing a much better job than myself as reviewers now! As a silly metric, according to github, we had &lt;span class=&#34;num js-traffic-total clones&#34;&gt;5 561 clones of the repository over the last 2 weeks!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The new contributors focused on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Performances. Now, some binaries are significantly faster than GNU (ex: &lt;a href=&#34;https://github.com/uutils/coreutils/pull/2712#issuecomment-946264620&#34;&gt;head&lt;/a&gt;, &lt;a href=&#34;https://github.com/uutils/coreutils/pull/2111#issue-622623570&#34;&gt;cut&lt;/a&gt;, etc)&lt;/li&gt;
&lt;li&gt;Adding missing binaries or options (see below)&lt;/li&gt;
&lt;li&gt;Improve the testsuite: we grew the overall code coverage &lt;a href=&#34;https://app.codecov.io/gh/uutils/coreutils&#34;&gt;from 55% to 75%&lt;/a&gt; (in general, we consider that a 80% code coverage on a project is excellent).&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Refactoring the code to simplify the maintenance. Examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Using the same code for &lt;a href=&#34;https://github.com/uutils/coreutils/pull/2570&#34;&gt;permissions for chgrp and chown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Managing error the same way in the various binaries - (Kudos to Jeffrey Finkelstein for the huge work)&lt;/li&gt;
&lt;li&gt;Improving the GNU compatibility (thanks to Jan Verbeek, &lt;span class=&#34;p-name vcard-fullname d-block overflow-hidden&#34;&gt;&lt;span class=&#34;p-name vcard-fullname d-block overflow-hidden&#34;&gt;Jan Scheer, &lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;p-nickname vcard-username d-block&#34;&gt;kimono-koans &lt;/span&gt; and many others)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/uutils/coreutils/commit/55a47f6fc0363b314c5ba41e44fb27a2f5a69031&#34;&gt;Move to&lt;/a&gt; &lt;a href=&#34;https://epage.github.io/blog/2021/12/clap3/&#34;&gt;clap 3&lt;/a&gt;. Upgrade by Terts which unblocks us on various problems.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Closing the gap with GNU&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As far as I know, we are only missing &lt;code&gt;stty (change and print terminal line settings)&lt;/code&gt; as a program.&lt;/p&gt;
&lt;p&gt;Thanks to some heroes, &lt;a href=&#34;https://github.com/uutils/coreutils/pull/2547&#34;&gt;basenc&lt;/a&gt;, &lt;a href=&#34;https://github.com/uutils/coreutils/pull/2300&#34;&gt;pr&lt;/a&gt;, &lt;a href=&#34;https://github.com/uutils/coreutils/pull/2075&#34;&gt;chcon&lt;/a&gt; and &lt;a href=&#34;https://github.com/uutils/coreutils/pull/2574&#34;&gt;runcon&lt;/a&gt; have been implemented. For example, for the two last programs, Koutheir Attouchi wrote new crates to &lt;a href=&#34;https://crates.io/crates/selinux&#34;&gt;manage SELinux properly&lt;/a&gt;. This crate has been used for some other utilities like cp, ls or id.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Leveraging the GNU testsuite to test this implementation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Because the GNU testsuite is excellent, we now have a proper CI using it to run the tests. It is pretty long on the Github action CI (almost two hours to run it) but it is an amazing improvement to the way we work. It was a joint work from a bunch of folks (James Robson, Roy Ivy III, etc). To achieve this, we also made it easier to run the GNU testsuite locally with the Rust implementation but also to ignore some tests or adjust some error messages (see &lt;a href=&#34;https://github.com/uutils/coreutils/blob/master/util/build-gnu.sh&#34;&gt;build-gnu.sh&lt;/a&gt; and &lt;a href=&#34;https://github.com/uutils/coreutils/blob/master/util/run-gnu-test.sh&#34;&gt;run-gnu-test.sh&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Following a suggestion of Brian G, a colleague at Mozilla (he did the same for some Firefox major change), we are now collecting the history of fail/pass/error &lt;a href=&#34;https://github.com/uutils/coreutils-tracking&#34;&gt;into a separate repository&lt;/a&gt; and generating a daily graph showing the evolution of regression. &lt;img style=&#34;max-width: 100%;&#34; src=&#34;https://github.com/uutils/coreutils-tracking/raw/main/gnu-results.png?raw=true&#34; alt=&#34;Evolution over time&#34; /&gt; At this date, we have, with GNU/Coreutils 9.0:&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Total&lt;/td&gt;
&lt;td&gt;611 tests&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pass&lt;/td&gt;
&lt;td&gt;214&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skip&lt;/td&gt;
&lt;td&gt;84&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fail&lt;/td&gt;
&lt;td&gt;298&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Error&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;We are now automatically identifying new passing tests and regressions in the CI.&lt;/p&gt;
&lt;p&gt;For example: &lt;code&gt;&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Warning: Congrats! The gnu test tests/chmod/c-option is now passing!&lt;br /&gt;
&amp;lt;br /&amp;gt;Warning: Congrats! The gnu test tests/chmod/silent is now passing!&lt;br /&gt;
&amp;lt;br /&amp;gt;Warning: Congrats! The gnu test tests/chmod/umask-x is now passing!&lt;br /&gt;
&amp;lt;br /&amp;gt;Error: GNU test failed: tests/du/long-from-unreadable. tests/du/long-from-unreadable is passing on &#39;master&#39;. Maybe you have to rebase?&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;br /&amp;gt;Warning: Changes from master: PASS +4 / FAIL +0 / ERROR -4 / SKIP +0 &lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This is also &lt;span style=&#34;font-weight: 400;&#34;&gt;beneficial&lt;/span&gt; to GNU as, by implementing some options, Michael Debertol noticed some incorrect behaviors (&lt;a href=&#34;https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49239&#34;&gt;with sort&lt;/a&gt; and &lt;a href=&#34;https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49925&#34;&gt;cat&lt;/a&gt;) or an uninitialized variable (with &lt;a href=&#34;https://debbugs.gnu.org/cgi/bugreport.cgi?bug=50070&#34;&gt;chmod&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; Documentations&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Every day, we are generating the user documentation and of the internal coreutils.&lt;/p&gt;
&lt;p&gt;User documentation: &lt;a href=&#34;https://uutils.github.io/coreutils-docs/user/&#34;&gt;https://uutils.github.io/coreutils-docs/user/&lt;/a&gt; Example: &lt;a href=&#34;https://uutils.github.io/coreutils-docs/user/utils/ls.html&#34;&gt;ls&lt;/a&gt; or &lt;a href=&#34;https://uutils.github.io/coreutils-docs/user/utils/cp.html&#34;&gt;cp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The internal documentation can be seen on:&lt;a href=&#34;https://uutils.github.io/coreutils-docs/dev/uucore/index.html&#34;&gt; &lt;/a&gt;&lt;a href=&#34;https://uutils.github.io/coreutils-docs/dev/uucore/&#34;&gt;&lt;a href=&#34;https://uutils.github.io/coreutils-docs/dev/uucore/&#34; class=&#34;linebreak&#34;&gt;https://uutils.github.io/coreutils-docs/dev/uucore/&lt;/a&gt;&lt;/a&gt; &lt;br /&gt;For example, the backup style is documented here: &lt;a href=&#34;https://uutils.github.io/coreutils-docs/dev/uucore/backup_control/index.html&#34;&gt;https://uutils.github.io/coreutils-docs/dev/uucore/backup_control/index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;More?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Besides my work on Debian/Ubuntu, I have also noticed that more and more operating systems are starting to look at this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Brew is proposing coreutils (with the latest version) &lt;a href=&#34;https://github.com/Homebrew/homebrew-core/pull/93404 &#34;&gt;https://github.com/Homebrew/homebrew-core/pull/93404 &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sandro is working to be able to run NixOS on Rust/Coreutils. See &lt;a href=&#34;https://github.com/NixOS/nixpkgs/pull/116274&#34;&gt;https://github.com/NixOS/nixpkgs/pull/116274&lt;/a&gt; for the interesting discussions there.&lt;/li&gt;
&lt;li&gt;Apertis (Linux distro for the automotive industry) has forked my Debian patches to make it the default coreutils &lt;a href=&#34;https://gitlab.apertis.org/pkg/rust-coreutils/-/tree/apertis/v2023dev1/debian&#34;&gt;https://gitlab.apertis.org/pkg/rust-coreutils/-/tree/apertis/v2023dev1/debian &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;I also noticed an &lt;a href=&#34;https://github.com/uutils/coreutils/pull/2550&#34;&gt;interest from Redox OS&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In parallel, &lt;a href=&#34;https://github.com/uutils/findutils/&#34;&gt;https://github.com/uutils/findutils/,&lt;/a&gt; a rust dropped-in replacement for find, is getting more attention lately! Here, the graph showing the evolution of the program using the &lt;a href=&#34;https://github.com/tavianator/bfs.git&#34;&gt;BFS testsuite&lt;/a&gt; (much better than GNU&#39;s).&lt;/p&gt;
&lt;p&gt;&lt;img style=&#34;max-width: 100%;&#34; src=&#34;https://github.com/uutils/findutils-tracking/raw/main/bfs-results.png?raw=true&#34; alt=&#34;Evolution over time - BFS testsuite&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is next?&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;stty needs to be implemented&lt;/li&gt;
&lt;li&gt;Improve the GNU compatibility on key programs and reduce the gap&lt;/li&gt;
&lt;li&gt;Investigate how to reduce the size of the binaries&lt;/li&gt;
&lt;li&gt;Allow Debian and Ubuntu to switch by default without tricky manipulation&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;How to help?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I have been maintaining a l&lt;a href=&#34;https://github.com/uutils/coreutils/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22&#34;&gt;ist of good first bugs&lt;/a&gt; for new comers in the repo!&lt;/p&gt;
&lt;p&gt;Don&#39;t hesitate to contribute, it is much easier than it seems and a terrific way to learn Rust!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</description>
    <content:encoded><![CDATA[<p>TLDR: we are making progress on the Rust implementation of the GNU coreutils.</p>
<p>Well, it is an understatement to say <a href="https://sylvestre.ledru.info/blog/2021/03/09/debian-running-on-rust-coreutils">my previous blog post</a> interested many people. Many articles, blog posts and some podcasts talked about it! As we pushed <a href="https://crates.io/crates/coreutils">coreutils 0.0.12</a> a few days ago and getting closer to the 10 000 stars on github, it is now time to give an update!</p>
<p>This has brought a lot of new contributors to this project. Instead of 30 to 60 patches per month, we jumped to 400 to 472 patches every month. Similarly, we saw an increase in the number of contributors (20 to 50 per month from 3 to 8). Two new maintainers (Michael Debertol &amp; Terts Diepraam) stepped in and have been doing a much better job than myself as reviewers now! As a silly metric, according to github, we had <span class="num js-traffic-total clones">5 561 clones of the repository over the last 2 weeks!</span></p>
<p>The new contributors focused on:</p>
<ul>
<li>Performances. Now, some binaries are significantly faster than GNU (ex: <a href="https://github.com/uutils/coreutils/pull/2712#issuecomment-946264620">head</a>, <a href="https://github.com/uutils/coreutils/pull/2111#issue-622623570">cut</a>, etc)</li>
<li>Adding missing binaries or options (see below)</li>
<li>Improve the testsuite: we grew the overall code coverage <a href="https://app.codecov.io/gh/uutils/coreutils">from 55% to 75%</a> (in general, we consider that a 80% code coverage on a project is excellent).</li>
<li><p>Refactoring the code to simplify the maintenance. Examples:</p>
<ul>
<li>Using the same code for <a href="https://github.com/uutils/coreutils/pull/2570">permissions for chgrp and chown</a></li>
<li>Managing error the same way in the various binaries - (Kudos to Jeffrey Finkelstein for the huge work)</li>
<li>Improving the GNU compatibility (thanks to Jan Verbeek, <span class="p-name vcard-fullname d-block overflow-hidden"><span class="p-name vcard-fullname d-block overflow-hidden">Jan Scheer, </span></span><span class="p-nickname vcard-username d-block">kimono-koans </span> and many others)</li>
<li><a href="https://github.com/uutils/coreutils/commit/55a47f6fc0363b314c5ba41e44fb27a2f5a69031">Move to</a> <a href="https://epage.github.io/blog/2021/12/clap3/">clap 3</a>. Upgrade by Terts which unblocks us on various problems.</li>
</ul>
</li>
<li>...</li>
</ul>
<p><strong>Closing the gap with GNU</strong></p>
<p>As far as I know, we are only missing <code>stty (change and print terminal line settings)</code> as a program.</p>
<p>Thanks to some heroes, <a href="https://github.com/uutils/coreutils/pull/2547">basenc</a>, <a href="https://github.com/uutils/coreutils/pull/2300">pr</a>, <a href="https://github.com/uutils/coreutils/pull/2075">chcon</a> and <a href="https://github.com/uutils/coreutils/pull/2574">runcon</a> have been implemented. For example, for the two last programs, Koutheir Attouchi wrote new crates to <a href="https://crates.io/crates/selinux">manage SELinux properly</a>. This crate has been used for some other utilities like cp, ls or id.</p>
<p><strong>Leveraging the GNU testsuite to test this implementation</strong></p>
<p>Because the GNU testsuite is excellent, we now have a proper CI using it to run the tests. It is pretty long on the Github action CI (almost two hours to run it) but it is an amazing improvement to the way we work. It was a joint work from a bunch of folks (James Robson, Roy Ivy III, etc). To achieve this, we also made it easier to run the GNU testsuite locally with the Rust implementation but also to ignore some tests or adjust some error messages (see <a href="https://github.com/uutils/coreutils/blob/master/util/build-gnu.sh">build-gnu.sh</a> and <a href="https://github.com/uutils/coreutils/blob/master/util/run-gnu-test.sh">run-gnu-test.sh</a>).</p>
<p>Following a suggestion of Brian G, a colleague at Mozilla (he did the same for some Firefox major change), we are now collecting the history of fail/pass/error <a href="https://github.com/uutils/coreutils-tracking">into a separate repository</a> and generating a daily graph showing the evolution of regression. <img style="max-width: 100%;" src="https://github.com/uutils/coreutils-tracking/raw/main/gnu-results.png?raw=true" alt="Evolution over time" /> At this date, we have, with GNU/Coreutils 9.0:</p>
<table>
<tbody>
<tr>
<td>Total</td>
<td>611 tests</td>
</tr>
<tr>
<td>Pass</td>
<td>214</td>
</tr>
<tr>
<td>Skip</td>
<td>84</td>
</tr>
<tr>
<td>Fail</td>
<td>298</td>
</tr>
<tr>
<td>Error</td>
<td>15</td>
</tr>
</tbody>
</table>
<p>We are now automatically identifying new passing tests and regressions in the CI.</p>
<p>For example: <code><br />
</code></p>
<p><code>Warning: Congrats! The gnu test tests/chmod/c-option is now passing!<br />
&lt;br /&gt;Warning: Congrats! The gnu test tests/chmod/silent is now passing!<br />
&lt;br /&gt;Warning: Congrats! The gnu test tests/chmod/umask-x is now passing!<br />
&lt;br /&gt;Error: GNU test failed: tests/du/long-from-unreadable. tests/du/long-from-unreadable is passing on 'master'. Maybe you have to rebase?<br />
[...]<br />
&lt;br /&gt;Warning: Changes from master: PASS +4 / FAIL +0 / ERROR -4 / SKIP +0 <br />
</code></p>
<p><code></code></p>
<p>This is also <span style="font-weight: 400;">beneficial</span> to GNU as, by implementing some options, Michael Debertol noticed some incorrect behaviors (<a href="https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49239">with sort</a> and <a href="https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49925">cat</a>) or an uninitialized variable (with <a href="https://debbugs.gnu.org/cgi/bugreport.cgi?bug=50070">chmod</a>).</p>
<p><strong> Documentations</strong></p>
<p>Every day, we are generating the user documentation and of the internal coreutils.</p>
<p>User documentation: <a href="https://uutils.github.io/coreutils-docs/user/">https://uutils.github.io/coreutils-docs/user/</a> Example: <a href="https://uutils.github.io/coreutils-docs/user/utils/ls.html">ls</a> or <a href="https://uutils.github.io/coreutils-docs/user/utils/cp.html">cp</a></p>
<p>The internal documentation can be seen on:<a href="https://uutils.github.io/coreutils-docs/dev/uucore/index.html"> </a><a href="https://uutils.github.io/coreutils-docs/dev/uucore/"><a href="https://uutils.github.io/coreutils-docs/dev/uucore/" class="linebreak">https://uutils.github.io/coreutils-docs/dev/uucore/</a></a> <br />For example, the backup style is documented here: <a href="https://uutils.github.io/coreutils-docs/dev/uucore/backup_control/index.html">https://uutils.github.io/coreutils-docs/dev/uucore/backup_control/index.html</a></p>
<p><strong>More?</strong></p>
<p>Besides my work on Debian/Ubuntu, I have also noticed that more and more operating systems are starting to look at this:</p>
<ul>
<li>Brew is proposing coreutils (with the latest version) <a href="https://github.com/Homebrew/homebrew-core/pull/93404 ">https://github.com/Homebrew/homebrew-core/pull/93404 </a></li>
<li>Sandro is working to be able to run NixOS on Rust/Coreutils. See <a href="https://github.com/NixOS/nixpkgs/pull/116274">https://github.com/NixOS/nixpkgs/pull/116274</a> for the interesting discussions there.</li>
<li>Apertis (Linux distro for the automotive industry) has forked my Debian patches to make it the default coreutils <a href="https://gitlab.apertis.org/pkg/rust-coreutils/-/tree/apertis/v2023dev1/debian">https://gitlab.apertis.org/pkg/rust-coreutils/-/tree/apertis/v2023dev1/debian </a></li>
<li>I also noticed an <a href="https://github.com/uutils/coreutils/pull/2550">interest from Redox OS</a>.</li>
</ul>
<p>In parallel, <a href="https://github.com/uutils/findutils/">https://github.com/uutils/findutils/,</a> a rust dropped-in replacement for find, is getting more attention lately! Here, the graph showing the evolution of the program using the <a href="https://github.com/tavianator/bfs.git">BFS testsuite</a> (much better than GNU's).</p>
<p><img style="max-width: 100%;" src="https://github.com/uutils/findutils-tracking/raw/main/bfs-results.png?raw=true" alt="Evolution over time - BFS testsuite" /></p>
<p><strong>What is next?</strong></p>
<ol>
<li>stty needs to be implemented</li>
<li>Improve the GNU compatibility on key programs and reduce the gap</li>
<li>Investigate how to reduce the size of the binaries</li>
<li>Allow Debian and Ubuntu to switch by default without tricky manipulation</li>
</ol>
<p><strong>How to help?</strong></p>
<p>I have been maintaining a l<a href="https://github.com/uutils/coreutils/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22">ist of good first bugs</a> for new comers in the repo!</p>
<p>Don't hesitate to contribute, it is much easier than it seems and a terrific way to learn Rust!</p>
<p> </p>
]]></content:encoded>
  </item>
  
  <item>
    <title>Debian running on Rust coreutils</title>
    <link>http://100.109.194.79:1313/blog/2021/03/09/debian-running-on-rust-coreutils</link>
    <guid isPermaLink="false">892@http://100.109.194.79:1313/blog/</guid>
    <pubDate>Tue, 09 Mar 2021 08:11:00 &#43;0000</pubDate>
    <dc:creator>sylvestre</dc:creator>
    <category>Développement</category><category>Linux</category><category>Debian</category>
    <description>&lt;p&gt;tldr: Rust/coreutils ( &lt;a href=&#34;https://github.com/uutils/coreutils/&#34; class=&#34;linebreak&#34;&gt;https://github.com/uutils/coreutils/&lt;/a&gt; ) is now &lt;a href=&#34;https://tracker.debian.org/pkg/rust-coreutils&#34;&gt;available in Debian&lt;/a&gt;, good enough to boot a Debian with GNOME, install the top 1000 packages, build Firefox, the Linux Kernel and LLVM/Clang. Even if I wrote more than 100 patches to achieve that, it will probably be a bumpy ride for many other use cases.&lt;br /&gt;It is also a terrific project to learn Rust. See the &lt;a href=&#34;https://github.com/uutils/coreutils/issues?q=is%3Aissue+is%3Aopen+label%3A%22Good+first+bug%22&#34;&gt;list of good first bugs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Even if I see Rust code every day at Mozilla, I was looking for an actual personal project (i.e. this isn&#39;t a Mozilla project) to learn Rust during the various COVID lockdowns.&lt;/p&gt;
&lt;p&gt;I started contributing to&lt;a href=&#34;https://github.com/uutils/coreutils&#34;&gt; the alternative Coreutils developed in Rust&lt;/a&gt;. The project aims at proposing a drop-in replacement of the&lt;a href=&#34;https://git.savannah.gnu.org/cgit/coreutils.git&#34;&gt; C-based GNU Coreutils&lt;/a&gt;, and I wanted to evaluate if this could be used to run a regular Debian. Similar to what I have done with&lt;a href=&#34;https://clang.debian.net/&#34;&gt; clang.debian.net&lt;/a&gt; a few years ago (rebuilding the Debian archive using clang instead of gcc).&lt;/p&gt;
&lt;p&gt;I expect that most of the readers know what is the Coreutils. It is a set of programs performing &lt;em&gt;simple&lt;/em&gt; operations (copy/move file, change permissions/ownership, etc). Even if some commands are from the 70s, they are at the base of Linux, Unix and macOS. While different implementations can be found, they are trying to remain compatible in terms of arguments, options, etc. This implementation of Coreutils isn’t different!&lt;/p&gt;
&lt;p&gt;If you want to learn more about the history of Unix, I recommend this great&lt;a href=&#34;https://corecursive.com/brian-kernighan-unix-bell-labs1/&#34;&gt; Corecursive podcast with Brian Kernighan&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While a lot of people contributed to this project, much was left to be done:&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;missing programs to be implemented. See &lt;a href=&#34;https://github.com/uutils/coreutils#utilities&#34;&gt;https://github.com/uutils/coreutils#utilities&lt;/a&gt; &lt;/li&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;missing options in the various programs&lt;br /&gt;&lt;/li&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;code not following latest Rust best practices&lt;/li&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;lack of consistency in the code base (ex: functions with too many arguments)&lt;/li&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;lack of tests/low &lt;a href=&#34;https://app.codecov.io/gh/uutils/coreutils&#34;&gt;code coverage&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;Lots of failures when running the GNU Coreutils testsuite (141 tests pass on 613) - Some trivial to fix, some others harder… A good way to start on a Rust project!&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To start easy, I defined 4 goals for this work:&lt;/p&gt;
&lt;ol&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;Package Coreutils in Debian/Ubuntu&lt;/li&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;Boot a Debian system with a Rust-based coreutils&lt;/li&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;Install the top 1000 packages in Debian - including GNOME&lt;/li&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;Build Firefox, the Linux Kernel and LLV/Clang&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;h2 class=&#34;evo_auto_anchor_header&#34; id=&#34;packaging-of-coreutils-in-debian&#34;&gt;&lt;strong&gt;Packaging of Coreutils in Debian&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Packaging in Debian isn&#39;t a trivial or even simple task. It requires uploading independently all the dependencies in the archive. Rust, with its new ecosystem and small crates, is making this task significantly harder.&lt;/p&gt;
&lt;p&gt;The package is called rust-coreutils -&lt;a href=&#34;https://tracker.debian.org/pkg/rust-coreutils&#34;&gt; https://tracker.debian.org/pkg/rust-coreutils&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For Debian/Ubuntu users, to have an idea of the complexity of packaging such applications, just run &lt;br /&gt;&lt;code&gt;debtree --build-dep rust-coreutils | dot -Tsvg &amp;gt; coreutils.svg&lt;/code&gt; (should be around 1M).&lt;/p&gt;
&lt;p&gt;Since it isn&#39;t production ready, the rust-coreutils is installable in parallel with coreutils. This package does NOT replace the GNU/coreutils files (yet?), the new files are installed in &lt;code&gt;/usr/lib/cargo/bin/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;They can be used with:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;export PATH=/usr/lib/cargo/bin/:$PATH&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Or, uglier, overriding the files with the new ones.&lt;/p&gt;


&lt;h2 class=&#34;evo_auto_anchor_header&#34; id=&#34;booting-debian-with-rust-coreutils&#34;&gt;&lt;strong&gt;Booting Debian with rust-coreutils&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;To achieve this, because I knew I would likely break the image a few times, I created a new project to quickly install a full Debian with PXE and preseed.&lt;/p&gt;
&lt;p&gt;The project is available here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/opencollab/qemu-debian-install-pxe-preseed/&#34;&gt;https://github.com/opencollab/qemu-debian-install-pxe-preseed/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A script to create the full qemu image: &lt;code&gt;build_qemu_debian_image.sh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;A second script to boot on the newly created image: &lt;code&gt;boot.sh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Then, building and installing coreutils on the system (yeah, it is ugly - don’t do that at home):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt install rust-coreutils&lt;br /&gt;
cd /usr/lib/cargo/bin/&lt;br /&gt;
for f in *; do&lt;br /&gt;
     cp -f $f /usr/bin/&lt;br /&gt;
done&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;First surprise, unlike the old init.d init system, as systemd is not relying on a series of scripts (it is mostly written in C), replacing the coreutils did not have an impact. Therefore, I didn&#39;t experience any issue during the boot process&lt;/p&gt;


&lt;h2 class=&#34;evo_auto_anchor_header&#34; id=&#34;installing-the-most-popular-debian-packages&#34;&gt;&lt;strong&gt;Installing the most popular Debian packages&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Debian packages rely a lot on post-install scripts (stored in &lt;code&gt;/var/lib/dpkg/info/*&lt;/code&gt;) to finalize and configure packages. They are (almost?) all using &lt;code&gt;/bin/sh&lt;/code&gt; (or &lt;code&gt;/bin/bash)&lt;/code&gt; to perform these actions. They intensively call coreutils applications.&lt;/p&gt;
&lt;p&gt;For example, in &lt;code&gt;/var/lib/dpkg/info/exim4-base.postinst&lt;/code&gt;, we can find:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;install -d -oDebian-exim -gadm -m2750 /var/log/exim4&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;With an ugly script, we can test the installations of the&lt;a href=&#34;https://popcon.debian.org/main/by_inst&#34;&gt; 1000 most popular packages&lt;/a&gt; one by one.&lt;/p&gt;
&lt;p&gt;Running this, some classes of issues in Rust/coreutils could be easily identified.&lt;/p&gt;


&lt;h3 class=&#34;evo_auto_anchor_header&#34; id=&#34;implementing-missing-options&#34;&gt;&lt;strong&gt;Implementing missing options&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;A significant number of problems could be easily identified as a lack of support for some options.&lt;/p&gt;
&lt;p&gt;Here is a list of most of the fixes I had to implement to make this plan work:&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;Implement ln --relative:&lt;a href=&#34;https://github.com/uutils/coreutils/pull/1540&#34;&gt; https://github.com/uutils/coreutils/pull/1540&lt;br /&gt;&lt;/a&gt;&lt;code&gt;update-initramfs: Generating /boot/initrd.img-4.19.0-12-amd64&lt;br /&gt;
ln: error: Unrecognized option: &#39;r&#39;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;Implement cp --archive:&lt;a href=&#34;https://github.com/uutils/coreutils/pull/1580&#34;&gt; https://github.com/uutils/coreutils/pull/1580&lt;br /&gt;&lt;/a&gt;&lt;code&gt;cp: error: Option &#39;archive&#39; not yet implemented.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;Implement cp --no-dereference:&lt;a href=&#34;https://github.com/uutils/coreutils/pull/1528&#34;&gt; https://github.com/uutils/coreutils/pull/1528&lt;br /&gt;&lt;/a&gt;&lt;code&gt;cp: error: Option &#39;dereference&#39; not yet implemented.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;Implement &lt;code&gt;sync -fs&lt;/code&gt;:&lt;a href=&#34;https://github.com/uutils/coreutils/pull/1639&#34;&gt; https://github.com/uutils/coreutils/pull/1639&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;Implement &lt;code&gt;install --owner &amp;amp; --group&lt;/code&gt;:&lt;a href=&#34;https://github.com/uutils/coreutils/pull/1641&#34;&gt; https://github.com/uutils/coreutils/pull/1641&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;Implement &lt;code&gt;mktemp -t&lt;/code&gt; &lt;a href=&#34;https://github.com/uutils/coreutils/pull/1677&#34;&gt; https://github.com/uutils/coreutils/pull/1677&lt;/a&gt;&lt;/li&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;...&lt;/li&gt;
&lt;/ul&gt;


&lt;h3 class=&#34;evo_auto_anchor_header&#34; id=&#34;different-behavior&#34;&gt;&lt;strong&gt;Different behavior&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Most of the programs behaved as expected. Here is a list of differences:&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;install doesn&#39;t support using /dev/null as source file&lt;br /&gt;&lt;code&gt;Setting up libreoffice-common (1:6.1.5-3+deb10u6) ...&lt;br /&gt;
install: error: install: cannot install ‘/dev/null’ to ‘/etc/apparmor.d/local/usr.lib.libreoffice.program.oosplash’: the source path is not an existing regular file&lt;/code&gt; A limitation of rust itself &lt;a href=&#34;https://github.com/rust-lang/rust/issues/79390&#34;&gt;https://github.com/rust-lang/rust/issues/79390&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;&lt;code&gt;mkdir --parent &lt;/code&gt; is sometime used (instead of --parents) -&lt;a href=&#34;https://github.com/uutils/coreutils/commit/dbc716546b352c8b81af1952915137049ed12239&#34;&gt; https://github.com/uutils/coreutils/commit/dbc716546b352c8b81af1952915137049ed12239&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;&#34;install foo.txt bar.txt&#34; didn&#39;t work -&lt;a href=&#34;https://github.com/uutils/coreutils/pull/1644&#34;&gt; https://github.com/uutils/coreutils/pull/1644&lt;br /&gt;&lt;/a&gt;&lt;code&gt; install: error: target ‘bar.txt’ is not a directory&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;&lt;code&gt;install -d&lt;/code&gt; won&#39;t fail if a directory already exists -&lt;a href=&#34;https://github.com/uutils/coreutils/pull/1643&#34;&gt; https://github.com/uutils/coreutils/pull/1643&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;&lt;code&gt;ls non-existing-file&lt;/code&gt; wasn&#39;t returning an error code. &#34;if ls&#34; was used by&lt;a href=&#34;https://sources.debian.org/src/plymouth/0.9.4-1.1/debian/local/plymouth.hook/?hl=19#L113&#34;&gt; some scripts&lt;/a&gt; -&lt;a href=&#34;https://github.com/uutils/coreutils/pull/1654&#34;&gt; https://github.com/uutils/coreutils/pull/1654&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;One of the issue was that &lt;code&gt;install -d /tmp/foo&lt;/code&gt; could not be executed twice (while the second run with the gnu version wouldn&#39;t trigger an error if already existing) -&lt;a href=&#34;https://github.com/uutils/coreutils/pull/1641&#34;&gt; https://github.com/uutils/coreutils/pull/1641&lt;/a&gt;&lt;/li&gt;
&lt;li style=&#34;font-weight: 400;&#34; aria-level=&#34;1&#34;&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class=&#34;evo_auto_anchor_header&#34; id=&#34;compile-firefox-clang-and-the-linux-kernel&#34;&gt;&lt;strong&gt;Compile Firefox, Clang and the Linux Kernel&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Build systems can vary significantly one from the other.&lt;/p&gt;
&lt;p&gt;To verify their usage of coreutils, I built these three major projects&lt;/p&gt;

&lt;h3 class=&#34;evo_auto_anchor_header&#34; id=&#34;firefox&#34;&gt;Firefox&lt;/h3&gt;
&lt;p&gt;As Firefox relies mostly on Python as a build system, it went smoothly. I didn’t encounter any issue.&lt;/p&gt;
&lt;p&gt;The only unrelated issue that I noticed working on it was &lt;a href=&#34;https://github.com/uutils/coreutils/pull/1716&#34;&gt;apt-key was broken&lt;/a&gt; because the script relied on a buggy option of mktemp.&lt;/p&gt;

&lt;h3 class=&#34;evo_auto_anchor_header&#34; id=&#34;linux-kernel&#34;&gt;Linux Kernel&lt;/h3&gt;
&lt;p&gt;I identified only two issues compared to GNU Coreutils: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The chown command on a non-existing symlink target doesn’t fail on the GNU version, the Rust one was triggering an error.&lt;br /&gt;&lt;a href=&#34;https://github.com/uutils/coreutils/pull/1694&#34;&gt;https://github.com/uutils/coreutils/pull/1694&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Linux kernel &lt;br /&gt;&lt;code&gt;ln -fsn ../../x86/boot/bzImage ./arch/x86_64/boot/bzImage&lt;br /&gt;
ln: error: Unrecognized option: &#39;n&#39;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class=&#34;evo_auto_anchor_header&#34; id=&#34;llvm-clang&#34;&gt;LLVM/Clang&lt;/h3&gt;
&lt;p&gt;The llvm toolchain relies on Cmake. Just like for Firefox, I didn’t face any issue.&lt;/p&gt;

&lt;h2 class=&#34;evo_auto_anchor_header&#34; id=&#34;comparing-with-gnu-coreutils-using-its-testsuite&#34;&gt;Comparing with GNU coreutils using its testsuite&lt;/h2&gt;
&lt;p&gt;Recently, James Robson added a new test to run the GNU testsuite on the Rust/coreutils.&lt;br /&gt; &lt;code&gt;&lt;br /&gt;
 # TOTAL: 611&lt;br /&gt;
 # PASS:  144&lt;br /&gt;
 # SKIP:  86&lt;br /&gt;
 # XFAIL: 0&lt;br /&gt;
 # FAIL:  342&lt;br /&gt;
 # XPASS: 0&lt;br /&gt;
 # ERROR: 39&lt;br /&gt;
&lt;/code&gt;compared to 546 test passing with the GNU version. Even if a bunch of errors are just different outputs, it demonstrates that there is still a long road ahead.&lt;/p&gt;

&lt;h2 class=&#34;evo_auto_anchor_header&#34; id=&#34;next-steps-contribute&#34;&gt;&lt;strong&gt;Next steps &amp;amp; contribute&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;First, we will need more motivated contributors to work on this project. Many features remain to be implemented, optimizations to be done (e.g. decreasing the memory usage), etc.&lt;br /&gt;I started to create a list of good first bugs for newcomers:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/uutils/coreutils/issues?q=is%3Aissue+is%3Aopen+label%3A%22Good+first+bug%22&#34;&gt;https://github.com/uutils/coreutils/issues?q=is%3Aissue+is%3Aopen+label%3A%22Good+first+bug%22&lt;/a&gt; &lt;br /&gt;I will update this list of there is some interest for this project.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Helping improve the support of the GNU coreutils testsuite would be a huge step while being a great way to learn Rust!&lt;/p&gt;
&lt;p&gt;Then, once it is in a better state, we will be able to make it a reliable alternative in Debian/Ubuntu to the GNU/Coreutils.&lt;/p&gt;
&lt;p&gt;This might be also interesting for other folks who prefer a BSD license over a GPL.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
</description>
    <content:encoded><![CDATA[<p>tldr: Rust/coreutils ( <a href="https://github.com/uutils/coreutils/" class="linebreak">https://github.com/uutils/coreutils/</a> ) is now <a href="https://tracker.debian.org/pkg/rust-coreutils">available in Debian</a>, good enough to boot a Debian with GNOME, install the top 1000 packages, build Firefox, the Linux Kernel and LLVM/Clang. Even if I wrote more than 100 patches to achieve that, it will probably be a bumpy ride for many other use cases.<br />It is also a terrific project to learn Rust. See the <a href="https://github.com/uutils/coreutils/issues?q=is%3Aissue+is%3Aopen+label%3A%22Good+first+bug%22">list of good first bugs</a>.</p>
<p> </p>
<p>Even if I see Rust code every day at Mozilla, I was looking for an actual personal project (i.e. this isn't a Mozilla project) to learn Rust during the various COVID lockdowns.</p>
<p>I started contributing to<a href="https://github.com/uutils/coreutils"> the alternative Coreutils developed in Rust</a>. The project aims at proposing a drop-in replacement of the<a href="https://git.savannah.gnu.org/cgit/coreutils.git"> C-based GNU Coreutils</a>, and I wanted to evaluate if this could be used to run a regular Debian. Similar to what I have done with<a href="https://clang.debian.net/"> clang.debian.net</a> a few years ago (rebuilding the Debian archive using clang instead of gcc).</p>
<p>I expect that most of the readers know what is the Coreutils. It is a set of programs performing <em>simple</em> operations (copy/move file, change permissions/ownership, etc). Even if some commands are from the 70s, they are at the base of Linux, Unix and macOS. While different implementations can be found, they are trying to remain compatible in terms of arguments, options, etc. This implementation of Coreutils isn’t different!</p>
<p>If you want to learn more about the history of Unix, I recommend this great<a href="https://corecursive.com/brian-kernighan-unix-bell-labs1/"> Corecursive podcast with Brian Kernighan</a>.</p>
<p>While a lot of people contributed to this project, much was left to be done:</p>
<ul>
<li style="font-weight: 400;" aria-level="1">missing programs to be implemented. See <a href="https://github.com/uutils/coreutils#utilities">https://github.com/uutils/coreutils#utilities</a> </li>
<li style="font-weight: 400;" aria-level="1">missing options in the various programs<br /></li>
<li style="font-weight: 400;" aria-level="1">code not following latest Rust best practices</li>
<li style="font-weight: 400;" aria-level="1">lack of consistency in the code base (ex: functions with too many arguments)</li>
<li style="font-weight: 400;" aria-level="1">lack of tests/low <a href="https://app.codecov.io/gh/uutils/coreutils">code coverage</a><br /></li>
<li style="font-weight: 400;" aria-level="1">Lots of failures when running the GNU Coreutils testsuite (141 tests pass on 613) - Some trivial to fix, some others harder… A good way to start on a Rust project!<br /><br /></li>
</ul>
<p>To start easy, I defined 4 goals for this work:</p>
<ol>
<li style="font-weight: 400;" aria-level="1">Package Coreutils in Debian/Ubuntu</li>
<li style="font-weight: 400;" aria-level="1">Boot a Debian system with a Rust-based coreutils</li>
<li style="font-weight: 400;" aria-level="1">Install the top 1000 packages in Debian - including GNOME</li>
<li style="font-weight: 400;" aria-level="1">Build Firefox, the Linux Kernel and LLV/Clang<br /></li>
</ol>


<h2 class="evo_auto_anchor_header" id="packaging-of-coreutils-in-debian"><strong>Packaging of Coreutils in Debian</strong></h2>
<p>Packaging in Debian isn't a trivial or even simple task. It requires uploading independently all the dependencies in the archive. Rust, with its new ecosystem and small crates, is making this task significantly harder.</p>
<p>The package is called rust-coreutils -<a href="https://tracker.debian.org/pkg/rust-coreutils"> https://tracker.debian.org/pkg/rust-coreutils</a></p>
<p>For Debian/Ubuntu users, to have an idea of the complexity of packaging such applications, just run <br /><code>debtree --build-dep rust-coreutils | dot -Tsvg &gt; coreutils.svg</code> (should be around 1M).</p>
<p>Since it isn't production ready, the rust-coreutils is installable in parallel with coreutils. This package does NOT replace the GNU/coreutils files (yet?), the new files are installed in <code>/usr/lib/cargo/bin/</code>.</p>
<p>They can be used with:</p>
<p><code>export PATH=/usr/lib/cargo/bin/:$PATH</code></p>
<p>Or, uglier, overriding the files with the new ones.</p>


<h2 class="evo_auto_anchor_header" id="booting-debian-with-rust-coreutils"><strong>Booting Debian with rust-coreutils</strong></h2>
<p>To achieve this, because I knew I would likely break the image a few times, I created a new project to quickly install a full Debian with PXE and preseed.</p>
<p>The project is available here:</p>
<p><a href="https://github.com/opencollab/qemu-debian-install-pxe-preseed/">https://github.com/opencollab/qemu-debian-install-pxe-preseed/</a></p>
<p>A script to create the full qemu image: <code>build_qemu_debian_image.sh</code></p>
<p>A second script to boot on the newly created image: <code>boot.sh</code></p>
<p>Then, building and installing coreutils on the system (yeah, it is ugly - don’t do that at home):</p>
<p><code>apt install rust-coreutils<br />
cd /usr/lib/cargo/bin/<br />
for f in *; do<br />
     cp -f $f /usr/bin/<br />
done<br />
</code></p>
<p>First surprise, unlike the old init.d init system, as systemd is not relying on a series of scripts (it is mostly written in C), replacing the coreutils did not have an impact. Therefore, I didn't experience any issue during the boot process</p>


<h2 class="evo_auto_anchor_header" id="installing-the-most-popular-debian-packages"><strong>Installing the most popular Debian packages</strong></h2>
<p>Debian packages rely a lot on post-install scripts (stored in <code>/var/lib/dpkg/info/*</code>) to finalize and configure packages. They are (almost?) all using <code>/bin/sh</code> (or <code>/bin/bash)</code> to perform these actions. They intensively call coreutils applications.</p>
<p>For example, in <code>/var/lib/dpkg/info/exim4-base.postinst</code>, we can find:</p>
<p><code>install -d -oDebian-exim -gadm -m2750 /var/log/exim4</code></p>
<p>With an ugly script, we can test the installations of the<a href="https://popcon.debian.org/main/by_inst"> 1000 most popular packages</a> one by one.</p>
<p>Running this, some classes of issues in Rust/coreutils could be easily identified.</p>


<h3 class="evo_auto_anchor_header" id="implementing-missing-options"><strong>Implementing missing options</strong></h3>
<p>A significant number of problems could be easily identified as a lack of support for some options.</p>
<p>Here is a list of most of the fixes I had to implement to make this plan work:</p>
<ul>
<li style="font-weight: 400;" aria-level="1">Implement ln --relative:<a href="https://github.com/uutils/coreutils/pull/1540"> https://github.com/uutils/coreutils/pull/1540<br /></a><code>update-initramfs: Generating /boot/initrd.img-4.19.0-12-amd64<br />
ln: error: Unrecognized option: 'r'</code><br /><br /></li>
</ul>
<ul>
<li style="font-weight: 400;" aria-level="1">Implement cp --archive:<a href="https://github.com/uutils/coreutils/pull/1580"> https://github.com/uutils/coreutils/pull/1580<br /></a><code>cp: error: Option 'archive' not yet implemented.</code><br /><br /></li>
</ul>
<ul>
<li style="font-weight: 400;" aria-level="1">Implement cp --no-dereference:<a href="https://github.com/uutils/coreutils/pull/1528"> https://github.com/uutils/coreutils/pull/1528<br /></a><code>cp: error: Option 'dereference' not yet implemented.</code><br /><br /></li>
<li style="font-weight: 400;" aria-level="1">Implement <code>sync -fs</code>:<a href="https://github.com/uutils/coreutils/pull/1639"> https://github.com/uutils/coreutils/pull/1639</a></li>
</ul>
<ul>
<li style="font-weight: 400;" aria-level="1">Implement <code>install --owner &amp; --group</code>:<a href="https://github.com/uutils/coreutils/pull/1641"> https://github.com/uutils/coreutils/pull/1641</a></li>
</ul>
<ul>
<li style="font-weight: 400;" aria-level="1">Implement <code>mktemp -t</code> <a href="https://github.com/uutils/coreutils/pull/1677"> https://github.com/uutils/coreutils/pull/1677</a></li>
<li style="font-weight: 400;" aria-level="1">...</li>
</ul>


<h3 class="evo_auto_anchor_header" id="different-behavior"><strong>Different behavior</strong></h3>
<p>Most of the programs behaved as expected. Here is a list of differences:</p>
<ul>
<li style="font-weight: 400;" aria-level="1">install doesn't support using /dev/null as source file<br /><code>Setting up libreoffice-common (1:6.1.5-3+deb10u6) ...<br />
install: error: install: cannot install ‘/dev/null’ to ‘/etc/apparmor.d/local/usr.lib.libreoffice.program.oosplash’: the source path is not an existing regular file</code> A limitation of rust itself <a href="https://github.com/rust-lang/rust/issues/79390">https://github.com/rust-lang/rust/issues/79390</a> </li>
</ul>
<ul>
<li style="font-weight: 400;" aria-level="1"><code>mkdir --parent </code> is sometime used (instead of --parents) -<a href="https://github.com/uutils/coreutils/commit/dbc716546b352c8b81af1952915137049ed12239"> https://github.com/uutils/coreutils/commit/dbc716546b352c8b81af1952915137049ed12239</a></li>
</ul>
<ul>
<li style="font-weight: 400;" aria-level="1">"install foo.txt bar.txt" didn't work -<a href="https://github.com/uutils/coreutils/pull/1644"> https://github.com/uutils/coreutils/pull/1644<br /></a><code> install: error: target ‘bar.txt’ is not a directory</code></li>
</ul>
<ul>
<li style="font-weight: 400;" aria-level="1"><code>install -d</code> won't fail if a directory already exists -<a href="https://github.com/uutils/coreutils/pull/1643"> https://github.com/uutils/coreutils/pull/1643</a></li>
</ul>
<ul>
<li style="font-weight: 400;" aria-level="1"><code>ls non-existing-file</code> wasn't returning an error code. "if ls" was used by<a href="https://sources.debian.org/src/plymouth/0.9.4-1.1/debian/local/plymouth.hook/?hl=19#L113"> some scripts</a> -<a href="https://github.com/uutils/coreutils/pull/1654"> https://github.com/uutils/coreutils/pull/1654</a></li>
</ul>
<ul>
<li style="font-weight: 400;" aria-level="1">One of the issue was that <code>install -d /tmp/foo</code> could not be executed twice (while the second run with the gnu version wouldn't trigger an error if already existing) -<a href="https://github.com/uutils/coreutils/pull/1641"> https://github.com/uutils/coreutils/pull/1641</a></li>
<li style="font-weight: 400;" aria-level="1">...</li>
</ul>

<h2 class="evo_auto_anchor_header" id="compile-firefox-clang-and-the-linux-kernel"><strong>Compile Firefox, Clang and the Linux Kernel</strong></h2>
<p>Build systems can vary significantly one from the other.</p>
<p>To verify their usage of coreutils, I built these three major projects</p>

<h3 class="evo_auto_anchor_header" id="firefox">Firefox</h3>
<p>As Firefox relies mostly on Python as a build system, it went smoothly. I didn’t encounter any issue.</p>
<p>The only unrelated issue that I noticed working on it was <a href="https://github.com/uutils/coreutils/pull/1716">apt-key was broken</a> because the script relied on a buggy option of mktemp.</p>

<h3 class="evo_auto_anchor_header" id="linux-kernel">Linux Kernel</h3>
<p>I identified only two issues compared to GNU Coreutils: </p>
<ul>
<li>The chown command on a non-existing symlink target doesn’t fail on the GNU version, the Rust one was triggering an error.<br /><a href="https://github.com/uutils/coreutils/pull/1694">https://github.com/uutils/coreutils/pull/1694</a><br /></li>
<li>Linux kernel <br /><code>ln -fsn ../../x86/boot/bzImage ./arch/x86_64/boot/bzImage<br />
ln: error: Unrecognized option: 'n'</code></li>
</ul>

<h3 class="evo_auto_anchor_header" id="llvm-clang">LLVM/Clang</h3>
<p>The llvm toolchain relies on Cmake. Just like for Firefox, I didn’t face any issue.</p>

<h2 class="evo_auto_anchor_header" id="comparing-with-gnu-coreutils-using-its-testsuite">Comparing with GNU coreutils using its testsuite</h2>
<p>Recently, James Robson added a new test to run the GNU testsuite on the Rust/coreutils.<br /> <code><br />
 # TOTAL: 611<br />
 # PASS:  144<br />
 # SKIP:  86<br />
 # XFAIL: 0<br />
 # FAIL:  342<br />
 # XPASS: 0<br />
 # ERROR: 39<br />
</code>compared to 546 test passing with the GNU version. Even if a bunch of errors are just different outputs, it demonstrates that there is still a long road ahead.</p>

<h2 class="evo_auto_anchor_header" id="next-steps-contribute"><strong>Next steps &amp; contribute</strong></h2>
<p>First, we will need more motivated contributors to work on this project. Many features remain to be implemented, optimizations to be done (e.g. decreasing the memory usage), etc.<br />I started to create a list of good first bugs for newcomers:</p>
<p><a href="https://github.com/uutils/coreutils/issues?q=is%3Aissue+is%3Aopen+label%3A%22Good+first+bug%22">https://github.com/uutils/coreutils/issues?q=is%3Aissue+is%3Aopen+label%3A%22Good+first+bug%22</a> <br />I will update this list of there is some interest for this project.<br /></p>
<p>Helping improve the support of the GNU coreutils testsuite would be a huge step while being a great way to learn Rust!</p>
<p>Then, once it is in a better state, we will be able to make it a reliable alternative in Debian/Ubuntu to the GNU/Coreutils.</p>
<p>This might be also interesting for other folks who prefer a BSD license over a GPL.</p>
<p><br /><br /></p>
]]></content:encoded>
  </item>
  
  <item>
    <title>Debian rebuild with clang 10 &#43; some patches</title>
    <link>http://100.109.194.79:1313/blog/2020/06/02/debian-rebuild-with-clang-10-some-patches</link>
    <guid isPermaLink="false">891@http://100.109.194.79:1313/blog/</guid>
    <pubDate>Tue, 02 Jun 2020 23:45:00 &#43;0000</pubDate>
    <dc:creator>sylvestre</dc:creator>
    <category>Debian</category><category>LLVM/Clang</category>
    <description>&lt;p&gt;Because of the lock-down in France and thanks to Lucas, I have been able to make some progress rebuilding Debian with clang instead of gcc.&lt;/p&gt;
&lt;h2 class=&#34;evo_auto_anchor_header&#34; id=&#34;tldr&#34;&gt;TLDR&lt;/h2&gt;
&lt;p&gt;Instead of patching clang itself, I used a different approach this time: patching Debian tools or implementing some workaround to mitigate an issue.&lt;br /&gt;
The percentage of packages failing drop from 4.5% to &lt;strong&gt;3.6%&lt;/strong&gt; (1400 packages to 1110 - on a total of 31014).&lt;/p&gt;
&lt;p&gt;I focused on two classes of issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href=&#34;https://bugreports.qt.io/browse/QTBUG-68139&#34;&gt;qmake bug&lt;/a&gt; - 250 issues - &lt;a href=&#34;https://clang.debian.net/status.php?version=9.0.1&amp;amp;key=FAILED_PARSE_DEFAULT&#34; class=&#34;linebreak&#34;&gt;https://clang.debian.net/status.php?version=9.0.1&amp;amp;key=FAILED_PARSE_DEFAULT&lt;/a&gt;&lt;br /&gt;
Basically, Qmake refuses to build a package when gcc&#39;s binary is replaced by clang&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Different symbols generated in the libraries - 137 issues - &lt;a href=&#34;https://clang.debian.net/status.php?version=9.0.1&amp;amp;key=CHANGE_SYM_LIB&#34; class=&#34;linebreak&#34;&gt;https://clang.debian.net/status.php?version=9.0.1&amp;amp;key=CHANGE_SYM_LIB&lt;/a&gt;&lt;br /&gt;
Clang and gcc differ in term of symbols generated in the libraries. While there isn&#39;t any impact on the execution or linking, the Debian tooling doesn&#39;t have the capability to manage the two cases.&lt;br /&gt;
For more details, see &lt;a href=&#34;https://bugs.llvm.org/show_bug.cgi?id=30441&#34; class=&#34;linebreak&#34;&gt;https://bugs.llvm.org/show_bug.cgi?id=30441&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://bugs.llvm.org/show_bug.cgi?id=45322&#34; class=&#34;linebreak&#34;&gt;https://bugs.llvm.org/show_bug.cgi?id=45322&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class=&#34;evo_auto_anchor_header&#34; id=&#34;qmake&#34;&gt;Qmake&lt;/h2&gt;
&lt;p&gt;As I have no intention to merge the patch upstream, I used a very dirty workaround. I overwrote the g++ qmake file by clang&#39;s:&lt;br /&gt;
&lt;a href=&#34;https://salsa.debian.org/lucas/collab-qa-tools/-/blob/master/modes/clang10#L44-47&#34; class=&#34;linebreak&#34;&gt;https://salsa.debian.org/lucas/collab-qa-tools/-/blob/master/modes/clang10#L44-47&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I dropped the number of this failure to 0, making some packages build flawlessly (example: qtcreator, chessx, fwbuilder, etc).&lt;/p&gt;
&lt;p&gt;However, some packages are still failing later and therefore increasing the number of failures in some other categories like &lt;a href=&#34;https://clang.debian.net/status.php?version=10&amp;amp;key=LINK_ERROR&#34;&gt;link error&lt;/a&gt;. For example, qtads fails because of &lt;a href=&#34;https://clang.debian.net/status.php?version=10&amp;amp;key=ORDERED-COMP-PTR-ZERO&#34;&gt;&lt;code class=&#34;codespan&#34;&gt;ordered comparison between pointer and zero&lt;/code&gt;&lt;/a&gt; or oscar fails on a &lt;a href=&#34;https://clang.debian.net/status.php?version=10&amp;amp;key=DEPRECATED_COPY&#34;&gt;&lt;code class=&#34;codespan&#34;&gt;-Werror,-Wdeprecated-copy&lt;/code&gt; error&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Breaking the build later also highlighted some new classes of issues which didn&#39;t occur with clang &amp;lt; 10.&lt;br /&gt;
For example, warnings related to &lt;a href=&#34;https://clang.debian.net/status.php?version=10&amp;amp;key=RANGE_LOOP&#34;&gt;C++ range loop&lt;/a&gt; or &lt;a href=&#34;https://clang.debian.net/status.php?version=10&amp;amp;key=IMPL_INT_FLOAT&#34;&gt;implicit int float conversion&lt;/a&gt; (I &lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=1577236&#34;&gt;fixed a bunch of them&lt;/a&gt; in Firefox) .&lt;/p&gt;
&lt;h2 class=&#34;evo_auto_anchor_header&#34; id=&#34;symbol-differences&#34;&gt;Symbol differences&lt;/h2&gt;
&lt;p&gt;Historically, symbol management for C++ in Debian has been a pain. Russ Allbery wrote a &lt;a href=&#34;https://www.eyrie.org/~eagle/journal/2012-01/008.html&#34;&gt;blog post in 2012&lt;/a&gt; explaining the situation. AFAIK, it hasn&#39;t changed much.&lt;br /&gt;
Once more, I took the dirty approach: if there new or missing symbols, don&#39;t fail the build.&lt;br /&gt;
The rational is the following: Packages in the Debian archive are supposed to build without any issue. If there is new or missing symbols, it is probably clang generating a different library but this library is very likely working as expected (and usable by a program compiled with g++ or clang). It is purely a different approach taken by the compiler developer.&lt;/p&gt;
&lt;p&gt;In order to mitigate this issue, before the build starts, I am modifying dpkg-gensymbols to &lt;a href=&#34;https://salsa.debian.org/lucas/collab-qa-tools/-/blob/master/modes/clang10#L60-61&#34;&gt;transform the error into a warning&lt;/a&gt;.&lt;br /&gt;
So, the typical Debian error &lt;code class=&#34;codespan&#34;&gt;some new symbols appeared in the symbols file&lt;/code&gt; or &lt;code class=&#34;codespan&#34;&gt;some symbols or patterns disappeared in the symbols file&lt;/code&gt; will NOT fail the build.&lt;/p&gt;
&lt;p&gt;Unsurprisingly, all but one package (&lt;a href=&#34;https://clang.debian.net/logs/2020-05-01-10/libktorrent_2.1.1-2_unstable_clang10.log&#34;&gt;libktorrent&lt;/a&gt;) build.&lt;/p&gt;
&lt;p&gt;Even if I am pessimistic, I reported a &lt;a href=&#34; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=961469&#34;&gt;bug on dpkg-dev&lt;/a&gt; to evaluate if we could improve dpkg-gensymbol not to fail on these cases.&lt;/p&gt;
&lt;h2 class=&#34;evo_auto_anchor_header&#34; id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;p&gt;The next offender is &lt;a href=&#34; https://clang.debian.net/status.php?version=10&amp;amp;key=FILE_NOT_FOUND&#34;&gt;&lt;code class=&#34;codespan&#34;&gt;Imake.tmpl:2243:10: fatal error: &#39; X11 .rules&#39; file not found&lt;/code&gt;&lt;/a&gt; with more than an hundred occurrences, &lt;a href=&#34;https://bugs.freedesktop.org/show_bug.cgi?id=45509&#34;&gt;reported upstream&lt;/a&gt; quite sometime ago.&lt;/p&gt;
&lt;p&gt;Then, the big issues are going to be much harder to fix as they are real issues/warnings (with -Werror) in the code of the packages. Example: &lt;a href=&#34;https://clang.debian.net/status.php?version=10&amp;amp;key=CXX11_NARROWING&#34;&gt;-Wc++11-narrowing&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://clang.debian.net/status.php?version=10&amp;amp;key=SPACE_LITERAL&#34;&gt;Wreserved-user-defined-literal&lt;/a&gt;... The list is long.&lt;br /&gt;
I will probably work on that when llvm/clang 11 are in RC phase.&lt;/p&gt;
&lt;h2 class=&#34;evo_auto_anchor_header&#34; id=&#34;for-maintainers-upstream&#34;&gt;For maintainers &amp;amp; upstream&lt;/h2&gt;
&lt;p&gt;Maintainer of Debian/Ubuntu packages? I am providing a list of failing packages per maintainer: &lt;a href=&#34;https://clang.debian.net/maintainers.php&#34; class=&#34;linebreak&#34;&gt;https://clang.debian.net/maintainers.php&lt;/a&gt;&lt;br /&gt;
For upstream, it is also easy to test with clang. Usually, &lt;code&gt;apt install clang &amp;amp;&amp;amp; CC=clang CXX=clang++ &amp;lt;build step&amp;gt;&lt;/code&gt; is good enough.&lt;/p&gt;
&lt;h2 class=&#34;evo_auto_anchor_header&#34; id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;With these two changes, I have been able to &lt;strong&gt;fix about 290 packages&lt;/strong&gt;. I think I will be able to get that down a bit more but we will soon reach a plateau as many warnings/issues will have to fix in the C/C++ code itself.&lt;/p&gt;
</description>
    <content:encoded><![CDATA[<p>Because of the lock-down in France and thanks to Lucas, I have been able to make some progress rebuilding Debian with clang instead of gcc.</p>
<h2 class="evo_auto_anchor_header" id="tldr">TLDR</h2>
<p>Instead of patching clang itself, I used a different approach this time: patching Debian tools or implementing some workaround to mitigate an issue.<br />
The percentage of packages failing drop from 4.5% to <strong>3.6%</strong> (1400 packages to 1110 - on a total of 31014).</p>
<p>I focused on two classes of issues:</p>
<ul>
<li>The <a href="https://bugreports.qt.io/browse/QTBUG-68139">qmake bug</a> - 250 issues - <a href="https://clang.debian.net/status.php?version=9.0.1&amp;key=FAILED_PARSE_DEFAULT" class="linebreak">https://clang.debian.net/status.php?version=9.0.1&amp;key=FAILED_PARSE_DEFAULT</a><br />
Basically, Qmake refuses to build a package when gcc's binary is replaced by clang</li>
</ul>
<ul>
<li>Different symbols generated in the libraries - 137 issues - <a href="https://clang.debian.net/status.php?version=9.0.1&amp;key=CHANGE_SYM_LIB" class="linebreak">https://clang.debian.net/status.php?version=9.0.1&amp;key=CHANGE_SYM_LIB</a><br />
Clang and gcc differ in term of symbols generated in the libraries. While there isn't any impact on the execution or linking, the Debian tooling doesn't have the capability to manage the two cases.<br />
For more details, see <a href="https://bugs.llvm.org/show_bug.cgi?id=30441" class="linebreak">https://bugs.llvm.org/show_bug.cgi?id=30441</a> &amp; <a href="https://bugs.llvm.org/show_bug.cgi?id=45322" class="linebreak">https://bugs.llvm.org/show_bug.cgi?id=45322</a>.</li>
</ul>
<h2 class="evo_auto_anchor_header" id="qmake">Qmake</h2>
<p>As I have no intention to merge the patch upstream, I used a very dirty workaround. I overwrote the g++ qmake file by clang's:<br />
<a href="https://salsa.debian.org/lucas/collab-qa-tools/-/blob/master/modes/clang10#L44-47" class="linebreak">https://salsa.debian.org/lucas/collab-qa-tools/-/blob/master/modes/clang10#L44-47</a></p>
<p>I dropped the number of this failure to 0, making some packages build flawlessly (example: qtcreator, chessx, fwbuilder, etc).</p>
<p>However, some packages are still failing later and therefore increasing the number of failures in some other categories like <a href="https://clang.debian.net/status.php?version=10&amp;key=LINK_ERROR">link error</a>. For example, qtads fails because of <a href="https://clang.debian.net/status.php?version=10&amp;key=ORDERED-COMP-PTR-ZERO"><code class="codespan">ordered comparison between pointer and zero</code></a> or oscar fails on a <a href="https://clang.debian.net/status.php?version=10&amp;key=DEPRECATED_COPY"><code class="codespan">-Werror,-Wdeprecated-copy</code> error</a>.</p>
<p>Breaking the build later also highlighted some new classes of issues which didn't occur with clang &lt; 10.<br />
For example, warnings related to <a href="https://clang.debian.net/status.php?version=10&amp;key=RANGE_LOOP">C++ range loop</a> or <a href="https://clang.debian.net/status.php?version=10&amp;key=IMPL_INT_FLOAT">implicit int float conversion</a> (I <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1577236">fixed a bunch of them</a> in Firefox) .</p>
<h2 class="evo_auto_anchor_header" id="symbol-differences">Symbol differences</h2>
<p>Historically, symbol management for C++ in Debian has been a pain. Russ Allbery wrote a <a href="https://www.eyrie.org/~eagle/journal/2012-01/008.html">blog post in 2012</a> explaining the situation. AFAIK, it hasn't changed much.<br />
Once more, I took the dirty approach: if there new or missing symbols, don't fail the build.<br />
The rational is the following: Packages in the Debian archive are supposed to build without any issue. If there is new or missing symbols, it is probably clang generating a different library but this library is very likely working as expected (and usable by a program compiled with g++ or clang). It is purely a different approach taken by the compiler developer.</p>
<p>In order to mitigate this issue, before the build starts, I am modifying dpkg-gensymbols to <a href="https://salsa.debian.org/lucas/collab-qa-tools/-/blob/master/modes/clang10#L60-61">transform the error into a warning</a>.<br />
So, the typical Debian error <code class="codespan">some new symbols appeared in the symbols file</code> or <code class="codespan">some symbols or patterns disappeared in the symbols file</code> will NOT fail the build.</p>
<p>Unsurprisingly, all but one package (<a href="https://clang.debian.net/logs/2020-05-01-10/libktorrent_2.1.1-2_unstable_clang10.log">libktorrent</a>) build.</p>
<p>Even if I am pessimistic, I reported a <a href=" https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=961469">bug on dpkg-dev</a> to evaluate if we could improve dpkg-gensymbol not to fail on these cases.</p>
<h2 class="evo_auto_anchor_header" id="next-steps">Next steps</h2>
<p>The next offender is <a href=" https://clang.debian.net/status.php?version=10&amp;key=FILE_NOT_FOUND"><code class="codespan">Imake.tmpl:2243:10: fatal error: ' X11 .rules' file not found</code></a> with more than an hundred occurrences, <a href="https://bugs.freedesktop.org/show_bug.cgi?id=45509">reported upstream</a> quite sometime ago.</p>
<p>Then, the big issues are going to be much harder to fix as they are real issues/warnings (with -Werror) in the code of the packages. Example: <a href="https://clang.debian.net/status.php?version=10&amp;key=CXX11_NARROWING">-Wc++11-narrowing</a> &amp; <a href="https://clang.debian.net/status.php?version=10&amp;key=SPACE_LITERAL">Wreserved-user-defined-literal</a>... The list is long.<br />
I will probably work on that when llvm/clang 11 are in RC phase.</p>
<h2 class="evo_auto_anchor_header" id="for-maintainers-upstream">For maintainers &amp; upstream</h2>
<p>Maintainer of Debian/Ubuntu packages? I am providing a list of failing packages per maintainer: <a href="https://clang.debian.net/maintainers.php" class="linebreak">https://clang.debian.net/maintainers.php</a><br />
For upstream, it is also easy to test with clang. Usually, <code>apt install clang &amp;&amp; CC=clang CXX=clang++ &lt;build step&gt;</code> is good enough.</p>
<h2 class="evo_auto_anchor_header" id="conclusion">Conclusion</h2>
<p>With these two changes, I have been able to <strong>fix about 290 packages</strong>. I think I will be able to get that down a bit more but we will soon reach a plateau as many warnings/issues will have to fix in the C/C++ code itself.</p>
]]></content:encoded>
  </item>
  
  <item>
    <title>Some clang rebuild results (8.0.1, 9.0.1 &amp;amp; 10rc2)</title>
    <link>http://100.109.194.79:1313/blog/2020/03/22/some-clang-rebuild-results</link>
    <guid isPermaLink="false">890@http://100.109.194.79:1313/blog/</guid>
    <pubDate>Sun, 22 Mar 2020 23:31:00 &#43;0000</pubDate>
    <dc:creator>sylvestre</dc:creator>
    <category>Debian</category><category>LLVM/Clang</category>
    <description>&lt;p&gt;As part of the LLVM release cycle, I am continuing rebuilding the Debian archive with clang instead of gcc to evaluate potential regressions.&lt;/p&gt;
&lt;p&gt;Processed results are available on the website: &lt;a href=&#34;https://clang.debian.net/status.php&#34; class=&#34;linebreak&#34;&gt;https://clang.debian.net/status.php&lt;/a&gt; - Now includes some fancy graphs to show the evolution&lt;br /&gt;
Raw logs are published on github: &lt;a href=&#34;https://github.com/opencollab/clang.debian.net/tree/master/logs&#34; class=&#34;linebreak&#34;&gt;https://github.com/opencollab/clang.debian.net/tree/master/logs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Since my last blog post on the subject (August 2017), Clang is more and more present in the tech ecosystem. It is now the compiler used to build Firefox and Chrome upstream binaries on all the supported architectures/operating systems. More architectures are supported, it has a new linker (&lt;a href=&#34;http://blog.llvm.org/2015/11/new-elf-linker-from-llvm-project.html&#34;&gt;lld&lt;/a&gt;), a new hybrid IR (&lt;a href=&#34;https://mlir.llvm.org/&#34;&gt;MLIR&lt;/a&gt;), a lot of &lt;a href=&#34;https://clang.llvm.org/extra/clang-tidy/checks/list.html&#34;&gt;checkers in clang-tidy&lt;/a&gt;, &lt;a href=&#34;http://blog.llvm.org/2019/09/closing-gap-cross-language-lto-between.html&#34;&gt;cross-language linking with Rust&lt;/a&gt;, etc.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 class=&#34;evo_auto_anchor_header&#34; id=&#34;results&#34;&gt;Results&lt;/h2&gt;
&lt;p&gt;Now, about Debian results, we rebuilt using &lt;a href=&#34;https://clang.debian.net/status.php?version=8.0.1&#34;&gt;8.0.1&lt;/a&gt;, &lt;a href=&#34;https://clang.debian.net/status.php?version=9.0.1&#34;&gt;9.0.1&lt;/a&gt; and &lt;a href=&#34;https://clang.debian.net/status.php?version=10rc2&#34;&gt;10.0rc2&lt;/a&gt;. Results are pretty similar to what we had with previous versions: between 4 to 5% of packages are failing when gcc is replaced by clang.&lt;br /&gt;
[image:3]&lt;/p&gt;
&lt;p&gt;Even if most of the software are still using gcc as compiler, we can see that clang has a positive effect on code quality. With many different kinds of errors and warnings found clang over the years, we noticed a steady decline of the number of errors. For example, the number of &lt;a href=&#34;https://clang.debian.net/status.php?version=10rc2&amp;amp;key=WRONG_MAIN_DECLARATION&#34;&gt;incorrect C/C++ main declarations&lt;/a&gt; has been decreasing years after years:&lt;br /&gt;
[image:4]&lt;/p&gt;
&lt;h3 class=&#34;evo_auto_anchor_header&#34; id=&#34;errors-found&#34;&gt;Errors found&lt;/h3&gt;
&lt;p&gt;The biggest offender is still the &lt;a href=&#34;https://clang.debian.net/status.php?version=9.0.1&amp;amp;key=FAILED_PARSE_DEFAULT&#34;&gt;qmake changes&lt;/a&gt; which doesn&#39;t allow the used workaround (replacing /usr/bin/gcc by /usr/bin/clang) - about 250 errors. Most of these packages would probably compile fine with clang. More on the &lt;a href=&#34;https://bugreports.qt.io/browse/QTBUG-68139&#34;&gt;Qt bug tracker&lt;/a&gt;. The workaround proposed in the bug isn&#39;t applicable for us as we use the dropped-in replacement of the compiler.&lt;/p&gt;
&lt;p&gt;The second error is still some &lt;a href=&#34;https://clang.debian.net/status.php?version=8.0.1&amp;amp;key=CHANGE_SYM_LIB&#34;&gt;differences in symbol generation&lt;/a&gt;. Unlike gcc, it seems that clang doesn&#39;t generate some symbols (or adds some). As a bunch of Debian packages are checking the list of symbols in the library (for ABI management), the build fails on purpose. For example, with &lt;a href=&#34;https://clang.debian.net/logs/2020-02-24-8.0.1/libcec_4.0.4+dfsg1-4_unstable_clang8.0.1.log&#34;&gt;libcec&lt;/a&gt;, the symbol &lt;code&gt;_ZN10P8PLATFORM14CConditionImplD1Ev@Base 3.1.0&lt;/code&gt; isn&#39;t generated anymore. I am not expecting this to be a big deal: the generated libraries probably works most of the time. More on &lt;a href=&#34;https://www.eyrie.org/~eagle/journal/2012-01/008.html&#34;&gt;C++ symbol management&lt;/a&gt; in Debian.&lt;br /&gt;
I reported this bug upstream a while back: &lt;a href=&#34;https://bugs.llvm.org/show_bug.cgi?id=30441&#34; class=&#34;linebreak&#34;&gt;https://bugs.llvm.org/show_bug.cgi?id=30441&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#34;evo_auto_anchor_header&#34; id=&#34;current-status&#34;&gt;Current status&lt;/h2&gt;
&lt;p&gt;As previously said in a &lt;a href=&#34;http://sylvestre.ledru.info/blog/2017/08/24/rebuild-of-debian-using-clang-2&#34;&gt;blog post&lt;/a&gt;, I don&#39;t think there is a strong intensive to go away from gcc for most of the Linux distributions. The big reason for BSD was the license (even if the move to the Apache 2 license &lt;a href=&#34;http://lists.llvm.org/pipermail/llvm-dev/2018-October/126992.html&#34;&gt;wasn&#39;t received positively&lt;/a&gt; by some of them).&lt;br /&gt;
While the LLVM/clang ecosystem clearly won the tooling battle, as a C/C++ compiler, gcc is still an excellent compiler which supports more architecture and more languages.&lt;br /&gt;
In term of new warnings and checks, as the clang community moved the efforts in clang-tidy (which requires more complex tooling), out of the box, gcc provides a better experience (as example, see the Firefox meta bug to build with -Werror with the default warnings using &lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=1514781&#34;&gt;gcc 9&lt;/a&gt;, &lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=1611519&#34;&gt;gcc 10&lt;/a&gt; and &lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=1427842&#34;&gt;clang trunk&lt;/a&gt; for example).&lt;/p&gt;
&lt;h2 class=&#34;evo_auto_anchor_header&#34; id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;p&gt;I see some potential next steps to decrease the number of failure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Workaround the Qt/Qmake issue&lt;/li&gt;
&lt;li&gt;Fix the objective-c header include issues (&lt;code&gt;echo &#34;#include &amp;lt;objc/objc.h&amp;gt;&#34; &amp;gt; foo.m &amp;amp;&amp;amp; clang -c foo.m&lt;/code&gt; is currently failing)&lt;/li&gt;
&lt;li&gt;Identify why clang generates more/less symbols that gcc in the library and try to fix that&lt;/li&gt;
&lt;li&gt;Rebuild the archive with clang-7 - Seems that I have some data problem&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Many thanks to &lt;a href=&#34;https://members.loria.fr/lnussbaum/&#34;&gt;Lucas Nussbaum&lt;/a&gt; for the rebuilds.&lt;/p&gt;
</description>
    <content:encoded><![CDATA[<p>As part of the LLVM release cycle, I am continuing rebuilding the Debian archive with clang instead of gcc to evaluate potential regressions.</p>
<p>Processed results are available on the website: <a href="https://clang.debian.net/status.php" class="linebreak">https://clang.debian.net/status.php</a> - Now includes some fancy graphs to show the evolution<br />
Raw logs are published on github: <a href="https://github.com/opencollab/clang.debian.net/tree/master/logs" class="linebreak">https://github.com/opencollab/clang.debian.net/tree/master/logs</a></p>
<p>Since my last blog post on the subject (August 2017), Clang is more and more present in the tech ecosystem. It is now the compiler used to build Firefox and Chrome upstream binaries on all the supported architectures/operating systems. More architectures are supported, it has a new linker (<a href="http://blog.llvm.org/2015/11/new-elf-linker-from-llvm-project.html">lld</a>), a new hybrid IR (<a href="https://mlir.llvm.org/">MLIR</a>), a lot of <a href="https://clang.llvm.org/extra/clang-tidy/checks/list.html">checkers in clang-tidy</a>, <a href="http://blog.llvm.org/2019/09/closing-gap-cross-language-lto-between.html">cross-language linking with Rust</a>, etc.</p>
<hr />
<h2 class="evo_auto_anchor_header" id="results">Results</h2>
<p>Now, about Debian results, we rebuilt using <a href="https://clang.debian.net/status.php?version=8.0.1">8.0.1</a>, <a href="https://clang.debian.net/status.php?version=9.0.1">9.0.1</a> and <a href="https://clang.debian.net/status.php?version=10rc2">10.0rc2</a>. Results are pretty similar to what we had with previous versions: between 4 to 5% of packages are failing when gcc is replaced by clang.<br />
[image:3]</p>
<p>Even if most of the software are still using gcc as compiler, we can see that clang has a positive effect on code quality. With many different kinds of errors and warnings found clang over the years, we noticed a steady decline of the number of errors. For example, the number of <a href="https://clang.debian.net/status.php?version=10rc2&amp;key=WRONG_MAIN_DECLARATION">incorrect C/C++ main declarations</a> has been decreasing years after years:<br />
[image:4]</p>
<h3 class="evo_auto_anchor_header" id="errors-found">Errors found</h3>
<p>The biggest offender is still the <a href="https://clang.debian.net/status.php?version=9.0.1&amp;key=FAILED_PARSE_DEFAULT">qmake changes</a> which doesn't allow the used workaround (replacing /usr/bin/gcc by /usr/bin/clang) - about 250 errors. Most of these packages would probably compile fine with clang. More on the <a href="https://bugreports.qt.io/browse/QTBUG-68139">Qt bug tracker</a>. The workaround proposed in the bug isn't applicable for us as we use the dropped-in replacement of the compiler.</p>
<p>The second error is still some <a href="https://clang.debian.net/status.php?version=8.0.1&amp;key=CHANGE_SYM_LIB">differences in symbol generation</a>. Unlike gcc, it seems that clang doesn't generate some symbols (or adds some). As a bunch of Debian packages are checking the list of symbols in the library (for ABI management), the build fails on purpose. For example, with <a href="https://clang.debian.net/logs/2020-02-24-8.0.1/libcec_4.0.4+dfsg1-4_unstable_clang8.0.1.log">libcec</a>, the symbol <code>_ZN10P8PLATFORM14CConditionImplD1Ev@Base 3.1.0</code> isn't generated anymore. I am not expecting this to be a big deal: the generated libraries probably works most of the time. More on <a href="https://www.eyrie.org/~eagle/journal/2012-01/008.html">C++ symbol management</a> in Debian.<br />
I reported this bug upstream a while back: <a href="https://bugs.llvm.org/show_bug.cgi?id=30441" class="linebreak">https://bugs.llvm.org/show_bug.cgi?id=30441</a></p>
<h2 class="evo_auto_anchor_header" id="current-status">Current status</h2>
<p>As previously said in a <a href="http://sylvestre.ledru.info/blog/2017/08/24/rebuild-of-debian-using-clang-2">blog post</a>, I don't think there is a strong intensive to go away from gcc for most of the Linux distributions. The big reason for BSD was the license (even if the move to the Apache 2 license <a href="http://lists.llvm.org/pipermail/llvm-dev/2018-October/126992.html">wasn't received positively</a> by some of them).<br />
While the LLVM/clang ecosystem clearly won the tooling battle, as a C/C++ compiler, gcc is still an excellent compiler which supports more architecture and more languages.<br />
In term of new warnings and checks, as the clang community moved the efforts in clang-tidy (which requires more complex tooling), out of the box, gcc provides a better experience (as example, see the Firefox meta bug to build with -Werror with the default warnings using <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1514781">gcc 9</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1611519">gcc 10</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1427842">clang trunk</a> for example).</p>
<h2 class="evo_auto_anchor_header" id="next-steps">Next steps</h2>
<p>I see some potential next steps to decrease the number of failure:</p>
<ul>
<li>Workaround the Qt/Qmake issue</li>
<li>Fix the objective-c header include issues (<code>echo "#include &lt;objc/objc.h&gt;" &gt; foo.m &amp;&amp; clang -c foo.m</code> is currently failing)</li>
<li>Identify why clang generates more/less symbols that gcc in the library and try to fix that</li>
<li>Rebuild the archive with clang-7 - Seems that I have some data problem</li>
</ul>
<p>Many thanks to <a href="https://members.loria.fr/lnussbaum/">Lucas Nussbaum</a> for the rebuilds.</p>
]]></content:encoded>
  </item>
  
  <item>
    <title>Rebuild of Debian using Clang 3.9, 4.0 and 5.0</title>
    <link>http://100.109.194.79:1313/blog/2017/08/24/rebuild-of-debian-using-clang-2</link>
    <guid isPermaLink="false">856@http://100.109.194.79:1313/blog/</guid>
    <pubDate>Thu, 24 Aug 2017 00:09:00 &#43;0000</pubDate>
    <dc:creator>sylvestre</dc:creator>
    <category>Debian</category><category>LLVM/Clang</category>
    <description>&lt;p&gt;tldr: The percentage of failure is decreasing, Clang support is improving but there is a long way to go.&lt;/p&gt;

&lt;p&gt;The goal of this initiative is to rebuild Debian using Clang as a compiler instead of gcc. I have been doing this analysis for the last 6 years.&lt;/p&gt;

&lt;p&gt;Recently, we rebuilt the archive of the Debian archive with Clang 3.9.1 (July 6th), 4.0.1 (July 6th) and 5.0 rc2 (August 20th).&lt;/p&gt;

&lt;p&gt;For various reasons, we didn&#39;t perform a rebuild since June 2016 with version 3.8. Therefor, we took the opportunity to do three over the last month.&lt;/p&gt;

&lt;p&gt;Now, the 3.9 &amp;amp; 4.0 results are impacted by a build failure when building all haskell packages (the -no-pie option in Clang doesn&#39;t exist - I &lt;a href=&#34;https://reviews.llvm.org/rL308268&#34;&gt;introduced it in clang 5.0&lt;/a&gt;). Fixing this issue with 5.0 removed more than 860 failures.&lt;/p&gt;

&lt;p&gt;Also, for the same versions, a Qt compiler detection is considering that Clang is not a C++11 compiler because clang++, by default, defines __cplusplus as 199711L (-std=c++11 has to be added to define a correct __cplusplus). See &lt;a href=&#34;https://bugreports.qt.io/browse/QTBUG-62535&#34; class=&#34;linebreak&#34;&gt;https://bugreports.qt.io/browse/QTBUG-62535&lt;/a&gt; for more information. Some discussions happened on the upstream mailing list about &lt;a href=&#34;http://lists.llvm.org/pipermail/cfe-dev/2017-February/052820.html&#34;&gt;changing the default C++ dialect&lt;/a&gt;.&lt;br /&gt;
For example, with 4.0, this is causing 132 errors. With 5.0, probably thanks to a new Qt version, roughly the same number of packages are failing but because gcc just triggers a warning with the &#34;nodiscard&#34; attribute being incorrectly used when &lt;a href=&#34;http://clang.debian.net/status.php?version=5.0&amp;amp;key=NO_DISCARD_ATTRIBUTE&#34;&gt;clang triggers an error&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In parallel, ignoring the haskell build failures, the numbers sightly increased since last year even if the overall percentage decreased (new packages being uploaded in the archive).&lt;/p&gt;
&lt;table border=&#34;1&#34;&gt;
&lt;tr&gt;&lt;td&gt;Version&lt;/td&gt;&lt;td&gt;Build failures&lt;/td&gt;&lt;td&gt;Ignoring haskell pkgs&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3.8&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1367 / 5.6%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3.9&lt;/td&gt;&lt;td&gt;2274 / 8.1%&lt;/td&gt;&lt;td&gt;1618 / 5.8%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4.0&lt;/td&gt;&lt;td&gt;2311 / 8.3%&lt;/td&gt;&lt;td&gt;1655 / 5.9%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5.0&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1445 / 5.1%&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;In parallel, new warnings and errors showed up in Clang.&lt;br /&gt;
This is causing a new set of build failures (especially with the usage of -Werror).&lt;/p&gt;

&lt;p&gt;As few examples:&lt;br /&gt;
* Starting with 4.0, clang triggers an error &lt;a href=&#34;http://clang.debian.net/status.php?version=4.0.1&amp;amp;key=ORDERED-COMP-PTR-ZERO&#34;&gt;ordered comparison between pointer and zero (&#39;char *&#39; and &#39;int&#39;)&lt;/a&gt;.&lt;br /&gt;
* Similarly, with this version, -Wmain introduces a new warning which will trigger a warning when a &lt;a href=&#34;http://clang.debian.net/status.php?version=4.0.1&amp;amp;key=BOOL_LIT&#34;&gt;bool literal is returned from main&lt;/a&gt;.&lt;br /&gt;
* clang also introduced a new warning called &lt;a href=&#34;http://clang.debian.net/status.php?version=4.0.1&amp;amp;key=PACKED_NUMBER&#34;&gt;-Waddress-of-packed-member&lt;/a&gt; causing 5 new errors.&lt;br /&gt;
* With the same version, clang can trigger a new error when &lt;a href=&#34;http://clang.debian.net/status.php?version=5.0&amp;amp;key=AUTO_FUNC_NOT_ALLOWED&#34;&gt;auto is used in function return type&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now, as a conclusion, having Debian being built with clang by default is still a long shot.&lt;br /&gt;
First, when Clang became usable for a general audience, gcc was lagging in term of warning and error detections. Now, gcc is in a much better position than it was, decreasing the interest to have clang replacing gcc. In parallel, most of the efforts in term of warnings &lt;br /&gt;
and mistake detections are currently done under the &lt;a href=&#34;http://clang.llvm.org/extra/clang-tidy/checks/list.html&#34;&gt;clang tidy umbrella&lt;/a&gt;, making them less intrusive as part of this initiative (but harder to use and to deploy).&lt;br /&gt;
As an example, the &lt;a href=&#34;https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=e5f01cbafce70120afe8f73df099dcc2796adcd7&#34;&gt;gcc warning -Wmisleading-indentation&lt;/a&gt; has been implemented under a &lt;a href=&#34;http://clang.llvm.org/extra/clang-tidy/checks/readability-misleading-indentation.html&#34;&gt;clang-tidy checker&lt;/a&gt;.&lt;br /&gt;
Second, the very permissive license of clang has been a key factor for some operating systems to switch like the PS4, Mac OS X or FreeBSD. With Debian, the community is generally happy with the GPL.&lt;br /&gt;
Third, the performances are similar enough that it is not worth the work, except for some projects with very special needs.&lt;/p&gt;

&lt;p&gt;Last, despite that it is much easier to contribute to llvm/clang than gcc (not copyright assignment or actual review system for example), this isn&#39;t a big differentiator for most of the projects.&lt;/p&gt;

&lt;p&gt;Of course, I will continue to run and analysis these rebuilds as this is a great source of information for clang upstream developers to improve the compatibility with gcc and understand some impacts. However, until there is a big game changer, I will stop pursuing the goal of having Debian switching to clang instead of gcc. I will stop effort on the debile project (which was aiming to rebuild in the background packages).&lt;/p&gt;
</description>
    <content:encoded><![CDATA[<p>tldr: The percentage of failure is decreasing, Clang support is improving but there is a long way to go.</p>

<p>The goal of this initiative is to rebuild Debian using Clang as a compiler instead of gcc. I have been doing this analysis for the last 6 years.</p>

<p>Recently, we rebuilt the archive of the Debian archive with Clang 3.9.1 (July 6th), 4.0.1 (July 6th) and 5.0 rc2 (August 20th).</p>

<p>For various reasons, we didn't perform a rebuild since June 2016 with version 3.8. Therefor, we took the opportunity to do three over the last month.</p>

<p>Now, the 3.9 &amp; 4.0 results are impacted by a build failure when building all haskell packages (the -no-pie option in Clang doesn't exist - I <a href="https://reviews.llvm.org/rL308268">introduced it in clang 5.0</a>). Fixing this issue with 5.0 removed more than 860 failures.</p>

<p>Also, for the same versions, a Qt compiler detection is considering that Clang is not a C++11 compiler because clang++, by default, defines __cplusplus as 199711L (-std=c++11 has to be added to define a correct __cplusplus). See <a href="https://bugreports.qt.io/browse/QTBUG-62535" class="linebreak">https://bugreports.qt.io/browse/QTBUG-62535</a> for more information. Some discussions happened on the upstream mailing list about <a href="http://lists.llvm.org/pipermail/cfe-dev/2017-February/052820.html">changing the default C++ dialect</a>.<br />
For example, with 4.0, this is causing 132 errors. With 5.0, probably thanks to a new Qt version, roughly the same number of packages are failing but because gcc just triggers a warning with the "nodiscard" attribute being incorrectly used when <a href="http://clang.debian.net/status.php?version=5.0&amp;key=NO_DISCARD_ATTRIBUTE">clang triggers an error</a>.</p>

<p>In parallel, ignoring the haskell build failures, the numbers sightly increased since last year even if the overall percentage decreased (new packages being uploaded in the archive).</p>
<table border="1">
<tr><td>Version</td><td>Build failures</td><td>Ignoring haskell pkgs</td></tr>
<tr><td>3.8</td><td></td><td>1367 / 5.6%</td></tr>
<tr><td>3.9</td><td>2274 / 8.1%</td><td>1618 / 5.8%</td></tr>
<tr><td>4.0</td><td>2311 / 8.3%</td><td>1655 / 5.9%</td></tr>
<tr><td>5.0</td><td></td><td>1445 / 5.1%</td></tr>
</table>

<p>In parallel, new warnings and errors showed up in Clang.<br />
This is causing a new set of build failures (especially with the usage of -Werror).</p>

<p>As few examples:<br />
* Starting with 4.0, clang triggers an error <a href="http://clang.debian.net/status.php?version=4.0.1&amp;key=ORDERED-COMP-PTR-ZERO">ordered comparison between pointer and zero ('char *' and 'int')</a>.<br />
* Similarly, with this version, -Wmain introduces a new warning which will trigger a warning when a <a href="http://clang.debian.net/status.php?version=4.0.1&amp;key=BOOL_LIT">bool literal is returned from main</a>.<br />
* clang also introduced a new warning called <a href="http://clang.debian.net/status.php?version=4.0.1&amp;key=PACKED_NUMBER">-Waddress-of-packed-member</a> causing 5 new errors.<br />
* With the same version, clang can trigger a new error when <a href="http://clang.debian.net/status.php?version=5.0&amp;key=AUTO_FUNC_NOT_ALLOWED">auto is used in function return type</a>.</p>

<p>Now, as a conclusion, having Debian being built with clang by default is still a long shot.<br />
First, when Clang became usable for a general audience, gcc was lagging in term of warning and error detections. Now, gcc is in a much better position than it was, decreasing the interest to have clang replacing gcc. In parallel, most of the efforts in term of warnings <br />
and mistake detections are currently done under the <a href="http://clang.llvm.org/extra/clang-tidy/checks/list.html">clang tidy umbrella</a>, making them less intrusive as part of this initiative (but harder to use and to deploy).<br />
As an example, the <a href="https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=e5f01cbafce70120afe8f73df099dcc2796adcd7">gcc warning -Wmisleading-indentation</a> has been implemented under a <a href="http://clang.llvm.org/extra/clang-tidy/checks/readability-misleading-indentation.html">clang-tidy checker</a>.<br />
Second, the very permissive license of clang has been a key factor for some operating systems to switch like the PS4, Mac OS X or FreeBSD. With Debian, the community is generally happy with the GPL.<br />
Third, the performances are similar enough that it is not worth the work, except for some projects with very special needs.</p>

<p>Last, despite that it is much easier to contribute to llvm/clang than gcc (not copyright assignment or actual review system for example), this isn't a big differentiator for most of the projects.</p>

<p>Of course, I will continue to run and analysis these rebuilds as this is a great source of information for clang upstream developers to improve the compatibility with gcc and understand some impacts. However, until there is a big game changer, I will stop pursuing the goal of having Debian switching to clang instead of gcc. I will stop effort on the debile project (which was aiming to rebuild in the background packages).</p>
]]></content:encoded>
  </item>
  
  <item>
    <title>Rebuild of Debian using Clang 3.5.0</title>
    <link>http://100.109.194.79:1313/blog/2014/09/11/rebuild-of-debian-using-clang-3-5</link>
    <guid isPermaLink="false">855@http://100.109.194.79:1313/blog/</guid>
    <pubDate>Thu, 11 Sep 2014 14:17:00 &#43;0000</pubDate>
    <dc:creator>sylvestre</dc:creator>
    <category>Debian</category><category>LLVM/Clang</category>
    <description>&lt;p&gt;Clang 3.5.0 has just been released. A new rebuild has been done highlight the progress to get Debian built with clang.&lt;/p&gt;

&lt;p&gt;tl;dr: Great progress. We decreased from 9.5% to 5.7% of failures. Full results are available on &lt;a href=&#34;http://clang.debian.net&#34;&gt;http://clang.debian.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At time of the rebuild with 3.4.2, we had 2040 packages failing to build with clang. With 3.5.0, this dropped to 1261 packages.&lt;/p&gt;
&lt;h2&gt;Fixes&lt;/h2&gt;
&lt;p&gt;With Arthur Marble and Alexander Ovchinnikov, both GSoC students, we worked on various ways to decrease the number of errors.&lt;/p&gt;
&lt;h3&gt;Upstream fixes&lt;/h3&gt;
&lt;p&gt;First, the most obvious way, we fixed programming bugs/mistakes in upstream sources. Basically, we took categories of failure and fixed issues one after the other. We started with simple bugs like &lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=WRONG_MAIN_DECLARATION&#34;&gt;&#39;Wrong main declaration&#39;&lt;/a&gt;, &lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=FUNCTION_RETURNS_VALUE&#34;&gt;&#39;non-void function should return a value&#39;&lt;/a&gt; or &lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=NO_RETURN&#34;&gt;&#39;Void function should not return a value&#39;&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
They are trivial to fix. We continued with harder fixes like &lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=UNDEF_REF&#34;&gt;&#39; Undefined reference&#39;&lt;/a&gt; or &lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=NON-POD&#34;&gt;&#39;Variable length array for a non POD (plain old data) element&#39;&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
So, besides these one, we worked on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=NOT_ALLOWED_HERE&#34;&gt;No support of nested C function&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=WRONG_DEFAULT_DECLARATION&#34;&gt;Wrong C++ default declaration in a method&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=NON-POD&#34;&gt;Variable length array for a non POD (plain old data) element&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=TAUTOLOGICAL-COMPARE&#34;&gt;Tautological comparison&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=CONFLICTING_TYPE&#34;&gt;Conflicting types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=DEFAULT_CONSTRUCTOR&#34;&gt;Changes of default constructor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=SOMETIMES_UNINITIALIZED&#34;&gt;Potential usage of an uninitialized variable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=OLD_GNU_FIELD_DESIGNATOR&#34;&gt;Use of old GNU field designator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=UNDEF_REF&#34;&gt;Missing symbols at link time (inline in C99)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;and others&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt; In total, we reported &lt;a href=&#34;https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=clang-ftbfs;users=pkg-llvm-team@lists.alioth.debian.org;archive=both;&#34;&gt;295 bugs with patches&lt;/a&gt;. 85 of them have been fixed (meaning that the Debian maintainer uploaded a new version with the fix). &lt;br /&gt;&lt;br /&gt;In parallel, I think that the switch by FreeBSD and Mac OS X to Clang also helped to fix various issues by upstreams.&lt;/p&gt;
&lt;h3&gt;Hacking in clang&lt;/h3&gt;
&lt;p&gt;As a parallel approach, we started to implement a suggestion from Linus Torvalds and a few others. Instead of trying to fix all upstream, where we can, we tried to update clang to improve the gcc compatibility.&lt;br /&gt;
&lt;br /&gt;
gcc has many flags to disable or enable optimizations. Some of them are legacy, others have no sense in clang, etc. Instead of failing in clang with an error, we create a new category of warnings (showing &lt;em&gt;optimization flag &#39;%0&#39; is not supported&lt;/em&gt;) and moved all relevant flags into it. Some examples, &lt;a href=&#34;http://reviews.llvm.org/rL212805&#34;&gt;r212805&lt;/a&gt;, &lt;a href=&#34;http://reviews.llvm.org/rL213365&#34;&gt;r213365&lt;/a&gt;, &lt;a href=&#34;http://reviews.llvm.org/rL214906&#34;&gt;r214906&lt;/a&gt; or &lt;a href=&#34;http://reviews.llvm.org/rL214907&#34;&gt;r214907&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
We also updated clang to silent some useless arguments like &lt;em&gt;-finput-charset=UTF-8&lt;/em&gt; (&lt;a href=&#34;http://reviews.llvm.org/rL212110&#34;&gt;r212110&lt;/a&gt;), clang being UTF-8 compliant. &lt;br /&gt;
&lt;br /&gt;
Finally, we worked on the &lt;em&gt;forwarding&lt;/em&gt; of linker flags. Clang and gcc have a very different behavior: when gcc does not know an argument, it is going to forward the argument to the linker. Clang, in this case, is going to reject the argument and fail with an error. In clang, we have to explicitly declare which arguments are going to be transfer to the linker. Of course, the correct way to pass arguments to the linker is to use &lt;em&gt;-Xlinker&lt;/em&gt; or &lt;em&gt;-Wl&lt;/em&gt; but the Debian rebuild proved that these shortcuts are used. Two of these arguments are now forwarded:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;-z keyword - &lt;a href=&#34;http://reviews.llvm.org/rL213198&#34;&gt;r213198&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;-u Force symbol to be entered in the output file as an undefined symbol - &lt;a href=&#34;http://reviews.llvm.org/rL211756&#34;&gt;r211756&lt;/a&gt;. This one fixed most of the haskell build failures. It fixed the most common issue that we had (701 occurrences but this does not mean that all these packages build fine now, some haskell-based package are failing later in the process)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;New errors&lt;/h2&gt;
&lt;p&gt;Just like in other releases, new warnings are added in clang. With (bad) usage of -Werror by upstream software, this causes new build failures:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=ABSOLUTE_VALUE_ERROR&#34;&gt;Absolute value error&lt;/a&gt; - 6 occurences&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=TAUTOLOGICAL-POINTER-COMPARE&#34;&gt;Tautological pointer comparison&lt;/a&gt; - 10 occurences&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also took the opportunity to add some further categorizations in the list of errors. Some examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=HEADER_GUARD&#34;&gt;Header guard failure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=UNKNOWN_UNEXPECTED_DIRECTIVE&#34;&gt;Unknown/unexpected directive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=NOT_FUNCTION_OR_FUNCTION_POINTER&#34;&gt;Object is not a function or function pointer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Next steps&lt;/h2&gt;
&lt;p&gt;The Debile project being close to ready with Clément Schreiner&#39;s GSoC, we will now have an automatic and transparent way to rebuild packages using clang.&lt;/p&gt;


&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;As stated, we can see a huge drop in term of number of failures over time:&lt;/p&gt;
&lt;div class=&#34;image_block&#34;&gt;&lt;img alt=&#34;&#34; src=&#34;https://sylvestre.ledru.info/blog/media/blogs/sylvestre/evolution-clang-sept-2014.png?mtime=1410087335&#34; width=&#34;703&#34; height=&#34;456&#34; /&gt;&lt;/div&gt;

&lt;p&gt;Hopefully, Clang getting better and better, more and more projects adopting it as the default compiler or as a base for plugin/extension developments, this percentage will continue to decrease.&lt;br /&gt;
Having some kind of &lt;a href=&#34;https://wiki.debian.org/ReleaseGoals/clang-secondary-compiler&#34;&gt;release goal with clang&lt;/a&gt; for Jessie+1 can now be considered as potentially reachable.&lt;/p&gt;



&lt;h2&gt;Want to help?&lt;/h2&gt;
&lt;p&gt;There are several things which can be done to help:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;mailto:sylvestre@debian.org&#34;&gt;Point me&lt;/a&gt; common error patterns in the &lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=NO_CAT&amp;amp;sort=true&#34;&gt;Not categorized&lt;/a&gt; list of errors to create new categories&lt;/li&gt;
&lt;li&gt;Report and fix packages&lt;/li&gt;
&lt;li&gt;As an upstream, integrate clang as part of your continuous integration system&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hack on &lt;a href=&#34;http://anonscm.debian.org/viewvc/collab-qa/collab-qa-tools/bin/&#34;&gt;cqa-scanlogs&lt;/a&gt;, the error detection tool to detect error patterns (example: &lt;a href=&#34;http://clang.debian.net/status.php?version=3.5.0&amp;amp;key=NO_CAT&amp;amp;sort=true&#34;&gt;Undetected error&lt;/a&gt;). This tool is used also for the regular rebuilds of the archive.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improve &lt;a href=&#34;https://github.com/opencollab/clang.debian.net&#34;&gt;clang.debian.net&lt;/a&gt; website&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Acknowledgments&lt;/h2&gt;
&lt;p&gt;Thanks to David Suarez for the rebuilds of the archive, Arthur Marble and Alexander Ovchinnikov for their GSoC works and Nicolas Sévelin-Radiguet for the few fixes.&lt;/p&gt;
</description>
    <content:encoded><![CDATA[<p>Clang 3.5.0 has just been released. A new rebuild has been done highlight the progress to get Debian built with clang.</p>

<p>tl;dr: Great progress. We decreased from 9.5% to 5.7% of failures. Full results are available on <a href="http://clang.debian.net">http://clang.debian.net</a></p>

<p>At time of the rebuild with 3.4.2, we had 2040 packages failing to build with clang. With 3.5.0, this dropped to 1261 packages.</p>
<h2>Fixes</h2>
<p>With Arthur Marble and Alexander Ovchinnikov, both GSoC students, we worked on various ways to decrease the number of errors.</p>
<h3>Upstream fixes</h3>
<p>First, the most obvious way, we fixed programming bugs/mistakes in upstream sources. Basically, we took categories of failure and fixed issues one after the other. We started with simple bugs like <a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=WRONG_MAIN_DECLARATION">'Wrong main declaration'</a>, <a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=FUNCTION_RETURNS_VALUE">'non-void function should return a value'</a> or <a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=NO_RETURN">'Void function should not return a value'</a>.<br />
<br />
They are trivial to fix. We continued with harder fixes like <a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=UNDEF_REF">' Undefined reference'</a> or <a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=NON-POD">'Variable length array for a non POD (plain old data) element'</a>.<br />
<br />
So, besides these one, we worked on:</p>
<ul>
<li><a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=NOT_ALLOWED_HERE">No support of nested C function</a></li>
<li><a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=WRONG_DEFAULT_DECLARATION">Wrong C++ default declaration in a method</a></li>
<li><a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=NON-POD">Variable length array for a non POD (plain old data) element</a></li>
<li><a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=TAUTOLOGICAL-COMPARE">Tautological comparison</a></li>
<li><a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=CONFLICTING_TYPE">Conflicting types</a></li>
<li><a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=DEFAULT_CONSTRUCTOR">Changes of default constructor</a></li>
<li><a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=SOMETIMES_UNINITIALIZED">Potential usage of an uninitialized variable</a></li>
<li><a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=OLD_GNU_FIELD_DESIGNATOR">Use of old GNU field designator</a></li>
<li><a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=UNDEF_REF">Missing symbols at link time (inline in C99)</a></li>
<li>and others</li>
</ul>
<p><br /> In total, we reported <a href="https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=clang-ftbfs;users=pkg-llvm-team@lists.alioth.debian.org;archive=both;">295 bugs with patches</a>. 85 of them have been fixed (meaning that the Debian maintainer uploaded a new version with the fix). <br /><br />In parallel, I think that the switch by FreeBSD and Mac OS X to Clang also helped to fix various issues by upstreams.</p>
<h3>Hacking in clang</h3>
<p>As a parallel approach, we started to implement a suggestion from Linus Torvalds and a few others. Instead of trying to fix all upstream, where we can, we tried to update clang to improve the gcc compatibility.<br />
<br />
gcc has many flags to disable or enable optimizations. Some of them are legacy, others have no sense in clang, etc. Instead of failing in clang with an error, we create a new category of warnings (showing <em>optimization flag '%0' is not supported</em>) and moved all relevant flags into it. Some examples, <a href="http://reviews.llvm.org/rL212805">r212805</a>, <a href="http://reviews.llvm.org/rL213365">r213365</a>, <a href="http://reviews.llvm.org/rL214906">r214906</a> or <a href="http://reviews.llvm.org/rL214907">r214907</a><br />
<br />
We also updated clang to silent some useless arguments like <em>-finput-charset=UTF-8</em> (<a href="http://reviews.llvm.org/rL212110">r212110</a>), clang being UTF-8 compliant. <br />
<br />
Finally, we worked on the <em>forwarding</em> of linker flags. Clang and gcc have a very different behavior: when gcc does not know an argument, it is going to forward the argument to the linker. Clang, in this case, is going to reject the argument and fail with an error. In clang, we have to explicitly declare which arguments are going to be transfer to the linker. Of course, the correct way to pass arguments to the linker is to use <em>-Xlinker</em> or <em>-Wl</em> but the Debian rebuild proved that these shortcuts are used. Two of these arguments are now forwarded:</p>
<ul>
<li>-z keyword - <a href="http://reviews.llvm.org/rL213198">r213198</a></li>
<li>-u Force symbol to be entered in the output file as an undefined symbol - <a href="http://reviews.llvm.org/rL211756">r211756</a>. This one fixed most of the haskell build failures. It fixed the most common issue that we had (701 occurrences but this does not mean that all these packages build fine now, some haskell-based package are failing later in the process)</li>
</ul>

<h2>New errors</h2>
<p>Just like in other releases, new warnings are added in clang. With (bad) usage of -Werror by upstream software, this causes new build failures:</p>
<ul>
<li><a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=ABSOLUTE_VALUE_ERROR">Absolute value error</a> - 6 occurences</li>
<li><a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=TAUTOLOGICAL-POINTER-COMPARE">Tautological pointer comparison</a> - 10 occurences</li>
</ul>
<p>I also took the opportunity to add some further categorizations in the list of errors. Some examples:</p>
<ul>
<li><a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=HEADER_GUARD">Header guard failure</a></li>
<li><a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=UNKNOWN_UNEXPECTED_DIRECTIVE">Unknown/unexpected directive</a></li>
<li><a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=NOT_FUNCTION_OR_FUNCTION_POINTER">Object is not a function or function pointer</a></li>
</ul>
<h2>Next steps</h2>
<p>The Debile project being close to ready with Clément Schreiner's GSoC, we will now have an automatic and transparent way to rebuild packages using clang.</p>


<h2>Conclusion</h2>

<p>As stated, we can see a huge drop in term of number of failures over time:</p>
<div class="image_block"><img alt="" src="https://sylvestre.ledru.info/blog/media/blogs/sylvestre/evolution-clang-sept-2014.png?mtime=1410087335" width="703" height="456" /></div>

<p>Hopefully, Clang getting better and better, more and more projects adopting it as the default compiler or as a base for plugin/extension developments, this percentage will continue to decrease.<br />
Having some kind of <a href="https://wiki.debian.org/ReleaseGoals/clang-secondary-compiler">release goal with clang</a> for Jessie+1 can now be considered as potentially reachable.</p>



<h2>Want to help?</h2>
<p>There are several things which can be done to help:</p>
<ul>
<li><a href="mailto:sylvestre@debian.org">Point me</a> common error patterns in the <a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=NO_CAT&amp;sort=true">Not categorized</a> list of errors to create new categories</li>
<li>Report and fix packages</li>
<li>As an upstream, integrate clang as part of your continuous integration system</li>
<li><p>Hack on <a href="http://anonscm.debian.org/viewvc/collab-qa/collab-qa-tools/bin/">cqa-scanlogs</a>, the error detection tool to detect error patterns (example: <a href="http://clang.debian.net/status.php?version=3.5.0&amp;key=NO_CAT&amp;sort=true">Undetected error</a>). This tool is used also for the regular rebuilds of the archive.</p>
</li>
<li>
<p>Improve <a href="https://github.com/opencollab/clang.debian.net">clang.debian.net</a> website</p>
</li>
</ul>

<h2>Acknowledgments</h2>
<p>Thanks to David Suarez for the rebuilds of the archive, Arthur Marble and Alexander Ovchinnikov for their GSoC works and Nicolas Sévelin-Radiguet for the few fixes.</p>
]]></content:encoded>
  </item>
  
  <item>
    <title>clang 3.4, 3.5 and 3.6 are now coinstallable in Debian</title>
    <link>http://100.109.194.79:1313/blog/2014/08/11/clang-3-4-3-5</link>
    <guid isPermaLink="false">853@http://100.109.194.79:1313/blog/</guid>
    <pubDate>Mon, 11 Aug 2014 07:47:00 &#43;0000</pubDate>
    <dc:creator>sylvestre</dc:creator>
    <category>Debian</category><category>LLVM/Clang</category>
    <description>&lt;p&gt;Clang is finally co installable on Debian. 3.4, 3.5 and the current trunk (snapshot) can be installed together.&lt;/p&gt;

&lt;p&gt;So, just like gcc, the different version can be called with clang-3.4, clang-3.5 or clang-3.6. &lt;/p&gt;

&lt;p&gt;/usr/bin/clang, /usr/bin/clang++, /usr/bin/scan-build and /usr/bin/scan-view are now handled through the &lt;a href=&#34;https://tracker.debian.org/pkg/llvm-defaults&#34;&gt;llvm-defaults package&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;llvm-defaults is also now managing clang-check, clang-tblgen, c-index-test, clang-apply-replacements, clang-tidy, pp-trace and clang-query.&lt;/p&gt;

&lt;p&gt;Changes are also available on &lt;a href=&#34;http://llvm.org/apt/&#34;&gt;llvm.org/apt/&lt;/a&gt;. &lt;br /&gt;
The next step will be to manage also llvm-defaults on llvm.org/apt to simplify the transition for people using these packages.&lt;/p&gt;

&lt;p&gt;So, with:&lt;/p&gt;
&lt;pre&gt;
# /etc/apt/sources.list
deb &lt;a href=&#34;http://llvm.org/apt/unstable/&#34; class=&#34;linebreak&#34;&gt;http://llvm.org/apt/unstable/&lt;/a&gt; llvm-toolchain main
deb &lt;a href=&#34;http://llvm.org/apt/unstable/&#34; class=&#34;linebreak&#34;&gt;http://llvm.org/apt/unstable/&lt;/a&gt; llvm-toolchain-3.4 main
deb &lt;a href=&#34;http://llvm.org/apt/unstable/&#34; class=&#34;linebreak&#34;&gt;http://llvm.org/apt/unstable/&lt;/a&gt; llvm-toolchain-3.5 main
&lt;/pre&gt;

&lt;pre&gt;
$ apt-get install clang-3.4 clang-3.5 clang-3.6

$ clang-3.4 --version
Debian clang version 3.4.2 (branches/release_34) (based on LLVM 3.4.2)
Target: x86_64-pc-linux-gnu
Thread model: posix


$ clang-3.5 --version
Debian clang version 3.5.0-+rc2-1~exp1 (tags/RELEASE_350/rc2) (based on LLVM 3.5.0)
Target: x86_64-pc-linux-gnu
Thread model: posix


$ clang-3.6 --version
Debian clang version 3.6.0-svn214990-1~exp1 (trunk) (based on LLVM 3.6.0)
Target: x86_64-pc-linux-gnu
Thread model: posix

&lt;/pre&gt;
</description>
    <content:encoded><![CDATA[<p>Clang is finally co installable on Debian. 3.4, 3.5 and the current trunk (snapshot) can be installed together.</p>

<p>So, just like gcc, the different version can be called with clang-3.4, clang-3.5 or clang-3.6. </p>

<p>/usr/bin/clang, /usr/bin/clang++, /usr/bin/scan-build and /usr/bin/scan-view are now handled through the <a href="https://tracker.debian.org/pkg/llvm-defaults">llvm-defaults package</a>.</p>

<p>llvm-defaults is also now managing clang-check, clang-tblgen, c-index-test, clang-apply-replacements, clang-tidy, pp-trace and clang-query.</p>

<p>Changes are also available on <a href="http://llvm.org/apt/">llvm.org/apt/</a>. <br />
The next step will be to manage also llvm-defaults on llvm.org/apt to simplify the transition for people using these packages.</p>

<p>So, with:</p>
<pre>
# /etc/apt/sources.list
deb <a href="http://llvm.org/apt/unstable/" class="linebreak">http://llvm.org/apt/unstable/</a> llvm-toolchain main
deb <a href="http://llvm.org/apt/unstable/" class="linebreak">http://llvm.org/apt/unstable/</a> llvm-toolchain-3.4 main
deb <a href="http://llvm.org/apt/unstable/" class="linebreak">http://llvm.org/apt/unstable/</a> llvm-toolchain-3.5 main
</pre>

<pre>
$ apt-get install clang-3.4 clang-3.5 clang-3.6

$ clang-3.4 --version
Debian clang version 3.4.2 (branches/release_34) (based on LLVM 3.4.2)
Target: x86_64-pc-linux-gnu
Thread model: posix


$ clang-3.5 --version
Debian clang version 3.5.0-+rc2-1~exp1 (tags/RELEASE_350/rc2) (based on LLVM 3.5.0)
Target: x86_64-pc-linux-gnu
Thread model: posix


$ clang-3.6 --version
Debian clang version 3.6.0-svn214990-1~exp1 (trunk) (based on LLVM 3.6.0)
Target: x86_64-pc-linux-gnu
Thread model: posix

</pre>
]]></content:encoded>
  </item>
  
  <item>
    <title>Debian Twitter accounts are back</title>
    <link>http://100.109.194.79:1313/blog/2014/08/07/debian-twitter-accounts-are-back</link>
    <guid isPermaLink="false">854@http://100.109.194.79:1313/blog/</guid>
    <pubDate>Thu, 07 Aug 2014 21:46:00 &#43;0000</pubDate>
    <dc:creator>sylvestre</dc:creator>
    <category>Debian</category>
    <description>&lt;p&gt;After some downtime due to the identi.ca changes, the Debian Twitter accounts are now back.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&#34;https://twitter.com/DebianBug&#34;&gt;Debian Bug&lt;/a&gt;: Lists all bugs reported - High traffic&lt;/li&gt;
  &lt;li&gt;&lt;a href=&#34;https://twitter.com/DebianUpload&#34;&gt;Debian Upload&lt;/a&gt;: Reports all new upload - High traffic&lt;/li&gt;
  &lt;li&gt;&lt;a href=&#34;https://twitter.com/DebianNew&#34;&gt;Debian New&lt;/a&gt;: Reports packages in the NEW queue&lt;/li&gt;
  &lt;li&gt;&lt;a href=&#34;https://twitter.com/DebianRemove&#34;&gt;Debian Remove&lt;/a&gt;: Reports packages removed from the archive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;New Twitter feed ideas are welcome.&lt;/p&gt;
</description>
    <content:encoded><![CDATA[<p>After some downtime due to the identi.ca changes, the Debian Twitter accounts are now back.</p>

<ul>
  <li><a href="https://twitter.com/DebianBug">Debian Bug</a>: Lists all bugs reported - High traffic</li>
  <li><a href="https://twitter.com/DebianUpload">Debian Upload</a>: Reports all new upload - High traffic</li>
  <li><a href="https://twitter.com/DebianNew">Debian New</a>: Reports packages in the NEW queue</li>
  <li><a href="https://twitter.com/DebianRemove">Debian Remove</a>: Reports packages removed from the archive</li>
</ul>

<p>New Twitter feed ideas are welcome.</p>
]]></content:encoded>
  </item>
  
  <item>
    <title>Auto-comment on the Release Management flags</title>
    <link>http://100.109.194.79:1313/blog/2014/07/23/auto-comment-on-the-release-mgmt-flags</link>
    <guid isPermaLink="false">851@http://100.109.194.79:1313/blog/</guid>
    <pubDate>Wed, 23 Jul 2014 12:03:00 &#43;0000</pubDate>
    <dc:creator>sylvestre</dc:creator>
    <category>Mozilla</category>
    <description>&lt;p&gt;Implemented in &lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=853108&#34;&gt;bug 853108&lt;/a&gt; by the bmo team, using the tracking flags will automatically updated the comment field with some templates.&lt;br /&gt;
The goal is to reduce back and forth in Bugzilla on bug tracking. We also hope that is going to improve our response time.&lt;/p&gt;


&lt;p&gt;For example, for the tracking requests (&lt;em&gt;tracking-firefoxNN&lt;/em&gt;, &lt;em&gt;tracking-firefox-esrNN&lt;/em&gt; or &lt;em&gt;blocking-b2g&lt;/em&gt;), the user will see the text added into the Bugzilla comment field:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[Tracking Requested - why for this release]:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;With this change, we hope to simplify the decision process for the release team.&lt;/p&gt;

&lt;p&gt;For the &lt;em&gt;relnotes-*&lt;/em&gt; flags:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
Release Note Request (optional, but appreciated)&lt;br /&gt;
[Why is this notable]:&lt;br /&gt;
[Suggested wording]:&lt;br /&gt;
[Links (documentation, blog post, etc)]:&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
This change aims to simplify the process of release notes writing. In some cases, it can be hard for release manager to translate a bug into a new feature description.&lt;/p&gt;


&lt;p&gt;Flags on which this option is enabled are:&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;relnote-firefox&lt;/li&gt;
   &lt;li&gt;relnote-b2g&lt;/li&gt;
   &lt;li&gt;tracking-firefoxNN&lt;/li&gt;
   &lt;li&gt;tracking-firefox-esrNN&lt;/li&gt;
  &lt;li&gt;blocking-b2g&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally, we reported &lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=1041964&#34;&gt;bug 1041964&lt;/a&gt; to discuss about a potential auto-focus on the comment area.&lt;/p&gt;
</description>
    <content:encoded><![CDATA[<p>Implemented in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=853108">bug 853108</a> by the bmo team, using the tracking flags will automatically updated the comment field with some templates.<br />
The goal is to reduce back and forth in Bugzilla on bug tracking. We also hope that is going to improve our response time.</p>


<p>For example, for the tracking requests (<em>tracking-firefoxNN</em>, <em>tracking-firefox-esrNN</em> or <em>blocking-b2g</em>), the user will see the text added into the Bugzilla comment field:</p>

<p><code>[Tracking Requested - why for this release]:</code></p>

<p>With this change, we hope to simplify the decision process for the release team.</p>

<p>For the <em>relnotes-*</em> flags:<br />
<code><br />
Release Note Request (optional, but appreciated)<br />
[Why is this notable]:<br />
[Suggested wording]:<br />
[Links (documentation, blog post, etc)]:<br />
</code><br />
This change aims to simplify the process of release notes writing. In some cases, it can be hard for release manager to translate a bug into a new feature description.</p>


<p>Flags on which this option is enabled are:</p>
<ul>
   <li>relnote-firefox</li>
   <li>relnote-b2g</li>
   <li>tracking-firefoxNN</li>
   <li>tracking-firefox-esrNN</li>
  <li>blocking-b2g</li>
</ul>

<p>Finally, we reported <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1041964">bug 1041964</a> to discuss about a potential auto-focus on the comment area.</p>
]]></content:encoded>
  </item>
  
  <item>
    <title>Changes Firefox 30 beta6 to beta7</title>
    <link>http://100.109.194.79:1313/blog/2014/05/27/changes-firefox-30-beta6-to-beta7</link>
    <guid isPermaLink="false">848@http://100.109.194.79:1313/blog/</guid>
    <pubDate>Tue, 27 May 2014 14:43:00 &#43;0000</pubDate>
    <dc:creator>sylvestre</dc:creator>
    <category>Mozilla</category>
    <description>&lt;ul&gt;
&lt;li&gt;31 changesets&lt;/li&gt;
&lt;li&gt;49 files changed&lt;/li&gt;
&lt;li&gt;435 insertions&lt;/li&gt;
&lt;li&gt;305 deletions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;
&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Extension&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Occurrences&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;js&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;jsm&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;java&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;cpp&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;html&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;h&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&#34;http://www.tellmewhatis.com/xml&#34;&gt;xml&lt;/a&gt;&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ini&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;sh&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;json&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;css&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Module&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Occurrences&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dom&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;toolkit&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mobile&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;layout&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;browser&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;js&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;content&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;services&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;hal&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;build&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;List of changesets:&lt;br /&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ben Turner&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1003766&#34;&gt;Bug 1003766&lt;/a&gt;, StopSyncLoopRunnable::Cancel should call base class Cancel. r=mrbkap, a=lsblakk. - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/7d980d9af355&#34;&gt;7d980d9af355&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Boris Zbarsky&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/976920&#34;&gt;Bug 976920&lt;/a&gt; - Mostly back out &lt;a href=&#34;http://bugzilla.mozilla.org/932322&#34;&gt;Bug 932322&lt;/a&gt; for now; only define the unforgeable properties on the window object itself. r=jst, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/1c26f6798184&#34;&gt;1c26f6798184&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Drew Willcoxon&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/998303&#34;&gt;Bug 998303&lt;/a&gt; - browser/base/content/test/general/browser_urlbar_search_healthreport.js attempts to connect to &lt;a href=&#34;http://www.google.com&#34; class=&#34;linebreak&#34;&gt;www.google.com&lt;/a&gt;. r=mak, a=test-only - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/2b437d292f56&#34;&gt;2b437d292f56&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Nathan Froyd&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1010322&#34;&gt;Bug 1010322&lt;/a&gt; - Change toolkit/mozapps/extensions/test/browser/ tests to point at actual http servers. r=jmaher, a=test-only - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/8438a548150d&#34;&gt;8438a548150d&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ben Turner&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/999274&#34;&gt;Bug 999274&lt;/a&gt; - Wait for the last runnable before calling ShutdownScriptLoader. r=sicking, a=abillings - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/50428e91f0bc&#34;&gt;50428e91f0bc&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Daniel Holbert&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1000185&#34;&gt;Bug 1000185&lt;/a&gt; - Part 1: Perform synchronous SMIL sample after registering with refresh driver, not before, for consistency. r=birtles, a=abillings - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/542f83ec6345&#34;&gt;542f83ec6345&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Daniel Holbert&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1000185&#34;&gt;Bug 1000185&lt;/a&gt; - Part 2: Add a bool to keep track of whether nsSMILAnimationController instances are registered with a refresh driver. r=birtles, a=abillings - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/cb78c3777143&#34;&gt;cb78c3777143&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Marco Bonardo&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/992901&#34;&gt;Bug 992901&lt;/a&gt; - Not all bookmarks are saved in the backup JSON or HTML. r=mano a=sylvestre - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/3fb029a11c05&#34;&gt;3fb029a11c05&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Jim Chen&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/993261&#34;&gt;Bug 993261&lt;/a&gt; - Remove legacy code for redirecting key events to URL bar. r=lucasr, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/869aefb78e22&#34;&gt;869aefb78e22&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Alexandre Lissy&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1000337&#34;&gt;Bug 1000337&lt;/a&gt; - Make NotificationStorage cache origin-aware. r=mhenretty, a=abillings - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/d520b0344613&#34;&gt;d520b0344613&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Dão Gottwald&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/987859&#34;&gt;Bug 987859&lt;/a&gt; - TabsToolbar margin needs to be dropped when entering fullscreen mode rather than when the sizemode attribute changes, which is too late. r=gijs, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/2925e9a0a33d&#34;&gt;2925e9a0a33d&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Benjamin Smedberg&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/959356&#34;&gt;Bug 959356&lt;/a&gt; - Fix the spelling and type of the isWow64 measurement. r=rnewman, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/ff1925aa6f85&#34;&gt;ff1925aa6f85&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Marco Bonardo&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/997030&#34;&gt;Bug 997030&lt;/a&gt; - Don&#39;t encodeURI twice in bookmarks.html. r=mano a=sylvestre - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/05baa07365d9&#34;&gt;05baa07365d9&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Lukas Blakk&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;updating EARLY_BETA_OR_EARLIER a=release-mgmt - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/77795a696555&#34;&gt;77795a696555&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Matteo Ferretti&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/980714&#34;&gt;Bug 980714&lt;/a&gt; - Remove blinking caret in panel text. r=gozala, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/4363817b56ca&#34;&gt;4363817b56ca&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Randell Jesup&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/921622&#34;&gt;Bug 921622&lt;/a&gt; - AudioStream rework. r=padenot, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/eaa2b716ce89&#34;&gt;eaa2b716ce89&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ryan VanderMeulen&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Backed out changeset eaa2b716ce89 (&lt;a href=&#34;http://bugzilla.mozilla.org/921622&#34;&gt;Bug 921622&lt;/a&gt;) for mochitest-1 asserts. - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/b7913b826440&#34;&gt;b7913b826440&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Blair McBride&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1012526&#34;&gt;Bug 1012526&lt;/a&gt; - UITour.jsm only registers with UITelemetry when it&#39;s lazily imported on-demand. r=mconley a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/b19932497b46&#34;&gt;b19932497b46&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Randell Jesup&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/921622&#34;&gt;Bug 921622&lt;/a&gt; - AudioStream rework. r=padenot, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/3090db8c413f&#34;&gt;3090db8c413f&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mats Palmgren&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1007065&#34;&gt;Bug 1007065&lt;/a&gt; - Don&#39;t apply the special -moz-hidden-unscrollable clipping on nsTextControlFrame since it always has an anonymous scroll frame that deals with overflow. r=roc, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/36df173cb6a2&#34;&gt;36df173cb6a2&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Margaret Leibovic&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1009473&#34;&gt;Bug 1009473&lt;/a&gt; - Remove padding around list item images. r=lucasr, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/841a1b085b5b&#34;&gt;841a1b085b5b&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Margaret Leibovic&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1009473&#34;&gt;Bug 1009473&lt;/a&gt; - Use lighter gray for item descriptions. r=lucasr, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/82c33d14844a&#34;&gt;82c33d14844a&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Asaf Romano&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1003839&#34;&gt;Bug 1003839&lt;/a&gt; - Live bookmark is still created despite cancelling the subscription. r=mak, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/9b9c4281ccb2&#34;&gt;9b9c4281ccb2&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Nicolas B. Pierron&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1013922&#34;&gt;Bug 1013922&lt;/a&gt; - Avoid flattenning strings after each concatenation. r=jorendorff, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/af6bb6bacb0e&#34;&gt;af6bb6bacb0e&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Myk Melez&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/991394&#34;&gt;Bug 991394&lt;/a&gt; - Actually rename profiles.ini sections when removing profile. r=mfinkle, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/eac674ed7cfe&#34;&gt;eac674ed7cfe&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ted Mielczarek&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1011859&#34;&gt;Bug 1011859&lt;/a&gt; - Order gamepad axes properly. r=jimm, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/0bcc74404878&#34;&gt;0bcc74404878&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Benjamin Bouvier&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1010747&#34;&gt;Bug 1010747&lt;/a&gt; - Part 1: Cleanups and factor out float32 specialization for unary instructions returning int32. r=jandem, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/586ed41fa2d1&#34;&gt;586ed41fa2d1&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Benjamin Bouvier&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1010747&#34;&gt;Bug 1010747&lt;/a&gt; - Part 2: Implement Ceil (floating-point) -&gt; int32 in Ion. r=sunfish, r=mjrosenb, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/80950d72bd71&#34;&gt;80950d72bd71&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Benjamin Bouvier&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1010747&#34;&gt;Bug 1010747&lt;/a&gt; - Part 3: Factor out floating-point conversion to int32 and bailout code. r=sunfish, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/0db12290df12&#34;&gt;0db12290df12&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ryan VanderMeulen&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Backed out changesets 0db12290df12, 80950d72bd71, and 586ed41fa2d1 (&lt;a href=&#34;http://bugzilla.mozilla.org/1010747&#34;&gt;Bug 1010747&lt;/a&gt;) for landing without approval. - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/a89aa1e3e367&#34;&gt;a89aa1e3e367&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Benjamin Bouvier&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1010747&#34;&gt;Bug 1010747&lt;/a&gt; - Don&#39;t inline Ceil when input is a FP value and output is an Int32. r=jandem, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/d3f2e54cf39c&#34;&gt;d3f2e54cf39c&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;p&gt;Previous changelogs:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;http://sylvestre.ledru.info/blog/2014/05/07/changes-firefox-30-beta1-to-beta2&#39;&gt;Firefox 30 beta 1 to beta 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#39;http://sylvestre.ledru.info/blog/2014/05/12/changes-firefox-30-beta2-to-beta3&#39;&gt;Firefox 30 beta 2 to beta 3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#39;http://sylvestre.ledru.info/blog/2014/05/14/changes-firefox-30-beta3-to-beta4&#39;&gt;Firefox 30 beta 3 to beta 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#39;http://sylvestre.ledru.info/blog/2014/05/20/changes-firefox-30-beta4-to-beta5&#39;&gt;Firefox 30 beta 4 to beta 5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#39;http://sylvestre.ledru.info/blog/2014/05/23/changes-firefox-30-beta5-to-beta6&#39;&gt;Firefox 30 beta 5 to beta 6&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;/p&gt;&lt;/p&gt;
</description>
    <content:encoded><![CDATA[<ul>
<li>31 changesets</li>
<li>49 files changed</li>
<li>435 insertions</li>
<li>305 deletions</li>
</ul>

<p><br />
<table><tr><td><strong>Extension</strong></td><td><strong>Occurrences</strong></td></tr>
<tr><td>js</td><td>10</td></tr>
<tr><td>jsm</td><td>7</td></tr>
<tr><td>java</td><td>7</td></tr>
<tr><td>cpp</td><td>7</td></tr>
<tr><td>html</td><td>6</td></tr>
<tr><td>h</td><td>4</td></tr>
<tr><td><a href="http://www.tellmewhatis.com/xml">xml</a></td><td>3</td></tr>
<tr><td>ini</td><td>2</td></tr>
<tr><td>sh</td><td>1</td></tr>
<tr><td>json</td><td>1</td></tr>
<tr><td>css</td><td>1</td></tr>
</table><br />
</p>
<p><br />
<table><tr><td><strong>Module</strong></td><td><strong>Occurrences</strong></td></tr>
<tr><td>dom</td><td>11</td></tr>
<tr><td>toolkit</td><td>10</td></tr>
<tr><td>mobile</td><td>10</td></tr>
<tr><td>layout</td><td>5</td></tr>
<tr><td>browser</td><td>4</td></tr>
<tr><td>js</td><td>3</td></tr>
<tr><td>content</td><td>2</td></tr>
<tr><td>services</td><td>1</td></tr>
<tr><td>hal</td><td>1</td></tr>
<tr><td>build</td><td>1</td></tr>
</table><br />
</p>
<p>List of changesets:<br />
<table>
<tr><td><strong>Ben Turner</strong></td><td><a href="http://bugzilla.mozilla.org/1003766">Bug 1003766</a>, StopSyncLoopRunnable::Cancel should call base class Cancel. r=mrbkap, a=lsblakk. - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/7d980d9af355">7d980d9af355</a></td></tr>
<tr><td><strong>Boris Zbarsky</strong></td><td><a href="http://bugzilla.mozilla.org/976920">Bug 976920</a> - Mostly back out <a href="http://bugzilla.mozilla.org/932322">Bug 932322</a> for now; only define the unforgeable properties on the window object itself. r=jst, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/1c26f6798184">1c26f6798184</a></td></tr>
<tr><td><strong>Drew Willcoxon</strong></td><td><a href="http://bugzilla.mozilla.org/998303">Bug 998303</a> - browser/base/content/test/general/browser_urlbar_search_healthreport.js attempts to connect to <a href="http://www.google.com" class="linebreak">www.google.com</a>. r=mak, a=test-only - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/2b437d292f56">2b437d292f56</a></td></tr>
<tr><td><strong>Nathan Froyd</strong></td><td><a href="http://bugzilla.mozilla.org/1010322">Bug 1010322</a> - Change toolkit/mozapps/extensions/test/browser/ tests to point at actual http servers. r=jmaher, a=test-only - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/8438a548150d">8438a548150d</a></td></tr>
<tr><td><strong>Ben Turner</strong></td><td><a href="http://bugzilla.mozilla.org/999274">Bug 999274</a> - Wait for the last runnable before calling ShutdownScriptLoader. r=sicking, a=abillings - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/50428e91f0bc">50428e91f0bc</a></td></tr>
<tr><td><strong>Daniel Holbert</strong></td><td><a href="http://bugzilla.mozilla.org/1000185">Bug 1000185</a> - Part 1: Perform synchronous SMIL sample after registering with refresh driver, not before, for consistency. r=birtles, a=abillings - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/542f83ec6345">542f83ec6345</a></td></tr>
<tr><td><strong>Daniel Holbert</strong></td><td><a href="http://bugzilla.mozilla.org/1000185">Bug 1000185</a> - Part 2: Add a bool to keep track of whether nsSMILAnimationController instances are registered with a refresh driver. r=birtles, a=abillings - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/cb78c3777143">cb78c3777143</a></td></tr>
<tr><td><strong>Marco Bonardo</strong></td><td><a href="http://bugzilla.mozilla.org/992901">Bug 992901</a> - Not all bookmarks are saved in the backup JSON or HTML. r=mano a=sylvestre - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/3fb029a11c05">3fb029a11c05</a></td></tr>
<tr><td><strong>Jim Chen</strong></td><td><a href="http://bugzilla.mozilla.org/993261">Bug 993261</a> - Remove legacy code for redirecting key events to URL bar. r=lucasr, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/869aefb78e22">869aefb78e22</a></td></tr>
<tr><td><strong>Alexandre Lissy</strong></td><td><a href="http://bugzilla.mozilla.org/1000337">Bug 1000337</a> - Make NotificationStorage cache origin-aware. r=mhenretty, a=abillings - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/d520b0344613">d520b0344613</a></td></tr>
<tr><td><strong>Dão Gottwald</strong></td><td><a href="http://bugzilla.mozilla.org/987859">Bug 987859</a> - TabsToolbar margin needs to be dropped when entering fullscreen mode rather than when the sizemode attribute changes, which is too late. r=gijs, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/2925e9a0a33d">2925e9a0a33d</a></td></tr>
<tr><td><strong>Benjamin Smedberg</strong></td><td><a href="http://bugzilla.mozilla.org/959356">Bug 959356</a> - Fix the spelling and type of the isWow64 measurement. r=rnewman, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/ff1925aa6f85">ff1925aa6f85</a></td></tr>
<tr><td><strong>Marco Bonardo</strong></td><td><a href="http://bugzilla.mozilla.org/997030">Bug 997030</a> - Don't encodeURI twice in bookmarks.html. r=mano a=sylvestre - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/05baa07365d9">05baa07365d9</a></td></tr>
<tr><td><strong>Lukas Blakk</strong></td><td>updating EARLY_BETA_OR_EARLIER a=release-mgmt - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/77795a696555">77795a696555</a></td></tr>
<tr><td><strong>Matteo Ferretti</strong></td><td><a href="http://bugzilla.mozilla.org/980714">Bug 980714</a> - Remove blinking caret in panel text. r=gozala, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/4363817b56ca">4363817b56ca</a></td></tr>
<tr><td><strong>Randell Jesup</strong></td><td><a href="http://bugzilla.mozilla.org/921622">Bug 921622</a> - AudioStream rework. r=padenot, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/eaa2b716ce89">eaa2b716ce89</a></td></tr>
<tr><td><strong>Ryan VanderMeulen</strong></td><td>Backed out changeset eaa2b716ce89 (<a href="http://bugzilla.mozilla.org/921622">Bug 921622</a>) for mochitest-1 asserts. - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/b7913b826440">b7913b826440</a></td></tr>
<tr><td><strong>Blair McBride</strong></td><td><a href="http://bugzilla.mozilla.org/1012526">Bug 1012526</a> - UITour.jsm only registers with UITelemetry when it's lazily imported on-demand. r=mconley a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/b19932497b46">b19932497b46</a></td></tr>
<tr><td><strong>Randell Jesup</strong></td><td><a href="http://bugzilla.mozilla.org/921622">Bug 921622</a> - AudioStream rework. r=padenot, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/3090db8c413f">3090db8c413f</a></td></tr>
<tr><td><strong>Mats Palmgren</strong></td><td><a href="http://bugzilla.mozilla.org/1007065">Bug 1007065</a> - Don't apply the special -moz-hidden-unscrollable clipping on nsTextControlFrame since it always has an anonymous scroll frame that deals with overflow. r=roc, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/36df173cb6a2">36df173cb6a2</a></td></tr>
<tr><td><strong>Margaret Leibovic</strong></td><td><a href="http://bugzilla.mozilla.org/1009473">Bug 1009473</a> - Remove padding around list item images. r=lucasr, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/841a1b085b5b">841a1b085b5b</a></td></tr>
<tr><td><strong>Margaret Leibovic</strong></td><td><a href="http://bugzilla.mozilla.org/1009473">Bug 1009473</a> - Use lighter gray for item descriptions. r=lucasr, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/82c33d14844a">82c33d14844a</a></td></tr>
<tr><td><strong>Asaf Romano</strong></td><td><a href="http://bugzilla.mozilla.org/1003839">Bug 1003839</a> - Live bookmark is still created despite cancelling the subscription. r=mak, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/9b9c4281ccb2">9b9c4281ccb2</a></td></tr>
<tr><td><strong>Nicolas B. Pierron</strong></td><td><a href="http://bugzilla.mozilla.org/1013922">Bug 1013922</a> - Avoid flattenning strings after each concatenation. r=jorendorff, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/af6bb6bacb0e">af6bb6bacb0e</a></td></tr>
<tr><td><strong>Myk Melez</strong></td><td><a href="http://bugzilla.mozilla.org/991394">Bug 991394</a> - Actually rename profiles.ini sections when removing profile. r=mfinkle, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/eac674ed7cfe">eac674ed7cfe</a></td></tr>
<tr><td><strong>Ted Mielczarek</strong></td><td><a href="http://bugzilla.mozilla.org/1011859">Bug 1011859</a> - Order gamepad axes properly. r=jimm, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/0bcc74404878">0bcc74404878</a></td></tr>
<tr><td><strong>Benjamin Bouvier</strong></td><td><a href="http://bugzilla.mozilla.org/1010747">Bug 1010747</a> - Part 1: Cleanups and factor out float32 specialization for unary instructions returning int32. r=jandem, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/586ed41fa2d1">586ed41fa2d1</a></td></tr>
<tr><td><strong>Benjamin Bouvier</strong></td><td><a href="http://bugzilla.mozilla.org/1010747">Bug 1010747</a> - Part 2: Implement Ceil (floating-point) -> int32 in Ion. r=sunfish, r=mjrosenb, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/80950d72bd71">80950d72bd71</a></td></tr>
<tr><td><strong>Benjamin Bouvier</strong></td><td><a href="http://bugzilla.mozilla.org/1010747">Bug 1010747</a> - Part 3: Factor out floating-point conversion to int32 and bailout code. r=sunfish, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/0db12290df12">0db12290df12</a></td></tr>
<tr><td><strong>Ryan VanderMeulen</strong></td><td>Backed out changesets 0db12290df12, 80950d72bd71, and 586ed41fa2d1 (<a href="http://bugzilla.mozilla.org/1010747">Bug 1010747</a>) for landing without approval. - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/a89aa1e3e367">a89aa1e3e367</a></td></tr>
<tr><td><strong>Benjamin Bouvier</strong></td><td><a href="http://bugzilla.mozilla.org/1010747">Bug 1010747</a> - Don't inline Ceil when input is a FP value and output is an Int32. r=jandem, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/d3f2e54cf39c">d3f2e54cf39c</a></td></tr>
</table><br />
<p>Previous changelogs:<br />
<ul>
<li><a href='http://sylvestre.ledru.info/blog/2014/05/07/changes-firefox-30-beta1-to-beta2'>Firefox 30 beta 1 to beta 2</a></li>
<li><a href='http://sylvestre.ledru.info/blog/2014/05/12/changes-firefox-30-beta2-to-beta3'>Firefox 30 beta 2 to beta 3</a></li>
<li><a href='http://sylvestre.ledru.info/blog/2014/05/14/changes-firefox-30-beta3-to-beta4'>Firefox 30 beta 3 to beta 4</a></li>
<li><a href='http://sylvestre.ledru.info/blog/2014/05/20/changes-firefox-30-beta4-to-beta5'>Firefox 30 beta 4 to beta 5</a></li>
<li><a href='http://sylvestre.ledru.info/blog/2014/05/23/changes-firefox-30-beta5-to-beta6'>Firefox 30 beta 5 to beta 6</a></li>
</ul><br />
</p></p>
]]></content:encoded>
  </item>
  
  <item>
    <title>Changes Firefox 30 beta5 to beta6</title>
    <link>http://100.109.194.79:1313/blog/2014/05/23/changes-firefox-30-beta5-to-beta6</link>
    <guid isPermaLink="false">847@http://100.109.194.79:1313/blog/</guid>
    <pubDate>Fri, 23 May 2014 10:58:00 &#43;0000</pubDate>
    <dc:creator>sylvestre</dc:creator>
    <category>Mozilla</category>
    <description>&lt;ul&gt;
&lt;li&gt;30 changesets&lt;/li&gt;
&lt;li&gt;77 files changed&lt;/li&gt;
&lt;li&gt;788 insertions&lt;/li&gt;
&lt;li&gt;643 deletions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;
&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Extension&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Occurrences&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;cpp&lt;/td&gt;&lt;td&gt;39&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;h&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;js&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;css&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mm&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&#34;http://www.tellmewhatis.com/xml&#34;&gt;xml&lt;/a&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;webidl&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mozbuild&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;m4&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;jsm&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;java&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ini&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;html&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;cc&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Module&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Occurrences&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;js&lt;/td&gt;&lt;td&gt;22&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;content&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;browser&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;editor&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dom&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;services&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;widget&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;layout&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;gfx&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;embedding&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;build&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;testing&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mobile&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;media&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;List of changesets:&lt;table&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Benjamin Smedberg&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1007389&#34;&gt;Bug 1007389&lt;/a&gt; - Implement plugin whitelist round 2. r=gfritzsche, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/859a8098cd8d&#34;&gt;859a8098cd8d&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Olli Pettay&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1009624&#34;&gt;Bug 1009624&lt;/a&gt; - Startup crash in nsXULPrototypeDocument::GetCompilationGlobal(). r=bholley, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/28cb773f6e23&#34;&gt;28cb773f6e23&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Gijs Kruitbosch&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/998523&#34;&gt;Bug 998523&lt;/a&gt; - updateUI after logout. r=markh, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/dfcd5c18e0a8&#34;&gt;dfcd5c18e0a8&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Steven Michaud&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/995603&#34;&gt;Bug 995603&lt;/a&gt; - Ensure mouse-enter/exit events are sent to plugins as appropriate. r=mstange,masayuki a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/70f056b3a700&#34;&gt;70f056b3a700&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ehsan Akhgari&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1007940&#34;&gt;Bug 1007940&lt;/a&gt; - Improve the performance of editor initialization; r=bzbarsky a=sylvestre - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/d3ccc8465e4b&#34;&gt;d3ccc8465e4b&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Dan Gohman&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/993174&#34;&gt;Bug 993174&lt;/a&gt; - SpiderMonkey: Fix missing declarations under --disable-unified-compilation. r=mrosenberg, a=NPOTB - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/46fdf6041673&#34;&gt;46fdf6041673&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Jared Wein&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/985509&#34;&gt;Bug 985509&lt;/a&gt; - Edit Bookmark panel button doesn&#39;t have an open state. r=mconley, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/54f0d0bea5e6&#34;&gt;54f0d0bea5e6&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mark Hammond&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1006943&#34;&gt;Bug 1006943&lt;/a&gt; - Non-sensitive FxA log info is included with sync logs. r=rnewman, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/107fdcd0b146&#34;&gt;107fdcd0b146&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mark Hammond&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/961471&#34;&gt;Bug 961471&lt;/a&gt; - Ensure the initial sync prefs pane writes the sync preferences. r=ttaubert, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/09a9c1859b6b&#34;&gt;09a9c1859b6b&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Karl Tomlinson&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/991533&#34;&gt;Bug 991533&lt;/a&gt; - Limit AudioBuffer channel counts and sample rate range. r=padenot, r=ehsan, r=bz, a=abillings - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/ece051d029de&#34;&gt;ece051d029de&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Karl Tomlinson&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/990868&#34;&gt;Bug 990868&lt;/a&gt; - Limit ChannelMergerNode output channel count. r=padenot, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/20143f06748b&#34;&gt;20143f06748b&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Joel Maher&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1004671&#34;&gt;Bug 1004671&lt;/a&gt; - SpecialPowers observer isn&#39;t robust enough in OOP. r=ted, a=test-only - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/b01e7d87ef31&#34;&gt;b01e7d87ef31&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tim Nguyen&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/998687&#34;&gt;Bug 998687&lt;/a&gt; - Wrong Edit bookmark open state styling on Windows 7. r=jaws, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/ebf5c0367290&#34;&gt;ebf5c0367290&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mike Conley&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1008183&#34;&gt;Bug 1008183&lt;/a&gt; - Show a private browsing indicator on Windows in fullscreen mode if tabs are in the titlebar. r=jaws, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/e17059d22a5b&#34;&gt;e17059d22a5b&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Bobby Holley&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1005552&#34;&gt;Bug 1005552&lt;/a&gt; - Stop binding marquee event handlers. r=bz, a=abillings - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/e09ccb39a409&#34;&gt;e09ccb39a409&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Douglas Crosher&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/988789&#34;&gt;Bug 988789&lt;/a&gt; - Ionmonkey: Rework the instruction cache flushing. r=luke, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/7d6a74b90622&#34;&gt;7d6a74b90622&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Boris Zbarsky&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/976920&#34;&gt;Bug 976920&lt;/a&gt; - Mostly back out &lt;a href=&#34;http://bugzilla.mozilla.org/932322&#34;&gt;Bug 932322&lt;/a&gt; for now; only define the unforgeable properties on the window object itself. r=jst, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/d5fb33c4194e&#34;&gt;d5fb33c4194e&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Margaret Leibovic&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1010268&#34;&gt;Bug 1010268&lt;/a&gt; - Don&#39;t adjust default panel check for &#34;Add panel&#34; item. r=liuche, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/e1174b7947c9&#34;&gt;e1174b7947c9&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Douglas Crosher&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1001569&#34;&gt;Bug 1001569&lt;/a&gt; - Yarr ARM: Free Segments using js_delete to match their allocation with js_new. r=jorendorff, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/18d40554e01f&#34;&gt;18d40554e01f&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Masayuki Nakano&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1008244&#34;&gt;Bug 1008244&lt;/a&gt; - Don&#39;t consume Enter key at keypress event when &amp;lt;select size=1&amp;gt; has focus but its dropdown list is closed. r=smaug, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/ba6d1a086b1a&#34;&gt;ba6d1a086b1a&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mike Hommey&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1005449&#34;&gt;Bug 1005449&lt;/a&gt; - Use CPU_ARCH for unknown target_arch in gyp. r=mshal, f=landry, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/4b8b6909705c&#34;&gt;4b8b6909705c&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Bobby Holley&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1010577&#34;&gt;Bug 1010577&lt;/a&gt; - Shim window.controllers (with a warning) in RELEASE_BUILDs (without string changes). r=bz, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/8104a9e1bfaf&#34;&gt;8104a9e1bfaf&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Boris Zbarsky&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1004458&#34;&gt;Bug 1004458&lt;/a&gt; - Maintain modal state on outer windows only instead of relying on forwarding from inner to outer. r=peterv, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/4ffac6a8ab14&#34;&gt;4ffac6a8ab14&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Chris Lord&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/983169&#34;&gt;Bug 983169&lt;/a&gt; - Fix up TiledLayerHost rendering method. r=BenWa, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/35fe7342d5aa&#34;&gt;35fe7342d5aa&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Chris Lord&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/983169&#34;&gt;Bug 983169&lt;/a&gt; - Fix handling of tile resolution in TiledContentClient. r=bas, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/fd3adb4a2d16&#34;&gt;fd3adb4a2d16&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Andrea Marchesini&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1006027&#34;&gt;Bug 1006027&lt;/a&gt; - ConsoleAPI uses timestamps in msecs. r=bz, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/5608c1796eee&#34;&gt;5608c1796eee&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mike Hommey&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1011797&#34;&gt;Bug 1011797&lt;/a&gt; - Add GNU/kFreeBSD to the list of ECMAScript i18n API supported platforms. r=mshal, a=NPOTB - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/ddae11a4c731&#34;&gt;ddae11a4c731&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mike Hommey&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1012180&#34;&gt;Bug 1012180&lt;/a&gt; - Fix build/gyp.mozbuild for GNU/kFreeBSD. r=mshal, a=NPOTB - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/e8aaa68f8cb8&#34;&gt;e8aaa68f8cb8&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mike Hommey&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1012232&#34;&gt;Bug 1012232&lt;/a&gt; - Only use the perf opcode on mips arches that support it. r=jesup, a=NPOTB - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/26ba0b7f24ef&#34;&gt;26ba0b7f24ef&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ryan VanderMeulen&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Backed out changeset d5fb33c4194e (&lt;a href=&#34;http://bugzilla.mozilla.org/976920&#34;&gt;Bug 976920&lt;/a&gt;) for suspicion of causing mochitest-bc leaks. - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/8b801635d8ce&#34;&gt;8b801635d8ce&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Previous changelogs:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;http://sylvestre.ledru.info/blog/2014/05/07/changes-firefox-30-beta1-to-beta2&#39;&gt;Firefox 30 beta 1 to beta 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#39;http://sylvestre.ledru.info/blog/2014/05/12/changes-firefox-30-beta2-to-beta3&#39;&gt;Firefox 30 beta 2 to beta 3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#39;http://sylvestre.ledru.info/blog/2014/05/14/changes-firefox-30-beta3-to-beta4&#39;&gt;Firefox 30 beta 3 to beta 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#39;http://sylvestre.ledru.info/blog/2014/05/20/changes-firefox-30-beta4-to-beta5&#39;&gt;Firefox 30 beta 4 to beta 5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;/p&gt;
</description>
    <content:encoded><![CDATA[<ul>
<li>30 changesets</li>
<li>77 files changed</li>
<li>788 insertions</li>
<li>643 deletions</li>
</ul>

<p><br />
<table><tr><td><strong>Extension</strong></td><td><strong>Occurrences</strong></td></tr>
<tr><td>cpp</td><td>39</td></tr>
<tr><td>h</td><td>15</td></tr>
<tr><td>js</td><td>8</td></tr>
<tr><td>css</td><td>4</td></tr>
<tr><td>mm</td><td>2</td></tr>
<tr><td><a href="http://www.tellmewhatis.com/xml">xml</a></td><td>1</td></tr>
<tr><td>webidl</td><td>1</td></tr>
<tr><td>mozbuild</td><td>1</td></tr>
<tr><td>m4</td><td>1</td></tr>
<tr><td>jsm</td><td>1</td></tr>
<tr><td>java</td><td>1</td></tr>
<tr><td>ini</td><td>1</td></tr>
<tr><td>html</td><td>1</td></tr>
<tr><td>cc</td><td>1</td></tr>
</table><br />
</p>
<p><br />
<table><tr><td><strong>Module</strong></td><td><strong>Occurrences</strong></td></tr>
<tr><td>js</td><td>22</td></tr>
<tr><td>content</td><td>13</td></tr>
<tr><td>browser</td><td>9</td></tr>
<tr><td>editor</td><td>6</td></tr>
<tr><td>dom</td><td>6</td></tr>
<tr><td>services</td><td>4</td></tr>
<tr><td>widget</td><td>3</td></tr>
<tr><td>layout</td><td>3</td></tr>
<tr><td>gfx</td><td>3</td></tr>
<tr><td>embedding</td><td>3</td></tr>
<tr><td>build</td><td>2</td></tr>
<tr><td>testing</td><td>1</td></tr>
<tr><td>mobile</td><td>1</td></tr>
<tr><td>media</td><td>1</td></tr>
</table><br />
</p>
<p>List of changesets:<table>
<tr><td><strong>Benjamin Smedberg</strong></td><td><a href="http://bugzilla.mozilla.org/1007389">Bug 1007389</a> - Implement plugin whitelist round 2. r=gfritzsche, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/859a8098cd8d">859a8098cd8d</a></td></tr>
<tr><td><strong>Olli Pettay</strong></td><td><a href="http://bugzilla.mozilla.org/1009624">Bug 1009624</a> - Startup crash in nsXULPrototypeDocument::GetCompilationGlobal(). r=bholley, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/28cb773f6e23">28cb773f6e23</a></td></tr>
<tr><td><strong>Gijs Kruitbosch</strong></td><td><a href="http://bugzilla.mozilla.org/998523">Bug 998523</a> - updateUI after logout. r=markh, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/dfcd5c18e0a8">dfcd5c18e0a8</a></td></tr>
<tr><td><strong>Steven Michaud</strong></td><td><a href="http://bugzilla.mozilla.org/995603">Bug 995603</a> - Ensure mouse-enter/exit events are sent to plugins as appropriate. r=mstange,masayuki a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/70f056b3a700">70f056b3a700</a></td></tr>
<tr><td><strong>Ehsan Akhgari</strong></td><td><a href="http://bugzilla.mozilla.org/1007940">Bug 1007940</a> - Improve the performance of editor initialization; r=bzbarsky a=sylvestre - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/d3ccc8465e4b">d3ccc8465e4b</a></td></tr>
<tr><td><strong>Dan Gohman</strong></td><td><a href="http://bugzilla.mozilla.org/993174">Bug 993174</a> - SpiderMonkey: Fix missing declarations under --disable-unified-compilation. r=mrosenberg, a=NPOTB - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/46fdf6041673">46fdf6041673</a></td></tr>
<tr><td><strong>Jared Wein</strong></td><td><a href="http://bugzilla.mozilla.org/985509">Bug 985509</a> - Edit Bookmark panel button doesn't have an open state. r=mconley, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/54f0d0bea5e6">54f0d0bea5e6</a></td></tr>
<tr><td><strong>Mark Hammond</strong></td><td><a href="http://bugzilla.mozilla.org/1006943">Bug 1006943</a> - Non-sensitive FxA log info is included with sync logs. r=rnewman, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/107fdcd0b146">107fdcd0b146</a></td></tr>
<tr><td><strong>Mark Hammond</strong></td><td><a href="http://bugzilla.mozilla.org/961471">Bug 961471</a> - Ensure the initial sync prefs pane writes the sync preferences. r=ttaubert, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/09a9c1859b6b">09a9c1859b6b</a></td></tr>
<tr><td><strong>Karl Tomlinson</strong></td><td><a href="http://bugzilla.mozilla.org/991533">Bug 991533</a> - Limit AudioBuffer channel counts and sample rate range. r=padenot, r=ehsan, r=bz, a=abillings - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/ece051d029de">ece051d029de</a></td></tr>
<tr><td><strong>Karl Tomlinson</strong></td><td><a href="http://bugzilla.mozilla.org/990868">Bug 990868</a> - Limit ChannelMergerNode output channel count. r=padenot, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/20143f06748b">20143f06748b</a></td></tr>
<tr><td><strong>Joel Maher</strong></td><td><a href="http://bugzilla.mozilla.org/1004671">Bug 1004671</a> - SpecialPowers observer isn't robust enough in OOP. r=ted, a=test-only - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/b01e7d87ef31">b01e7d87ef31</a></td></tr>
<tr><td><strong>Tim Nguyen</strong></td><td><a href="http://bugzilla.mozilla.org/998687">Bug 998687</a> - Wrong Edit bookmark open state styling on Windows 7. r=jaws, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/ebf5c0367290">ebf5c0367290</a></td></tr>
<tr><td><strong>Mike Conley</strong></td><td><a href="http://bugzilla.mozilla.org/1008183">Bug 1008183</a> - Show a private browsing indicator on Windows in fullscreen mode if tabs are in the titlebar. r=jaws, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/e17059d22a5b">e17059d22a5b</a></td></tr>
<tr><td><strong>Bobby Holley</strong></td><td><a href="http://bugzilla.mozilla.org/1005552">Bug 1005552</a> - Stop binding marquee event handlers. r=bz, a=abillings - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/e09ccb39a409">e09ccb39a409</a></td></tr>
<tr><td><strong>Douglas Crosher</strong></td><td><a href="http://bugzilla.mozilla.org/988789">Bug 988789</a> - Ionmonkey: Rework the instruction cache flushing. r=luke, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/7d6a74b90622">7d6a74b90622</a></td></tr>
<tr><td><strong>Boris Zbarsky</strong></td><td><a href="http://bugzilla.mozilla.org/976920">Bug 976920</a> - Mostly back out <a href="http://bugzilla.mozilla.org/932322">Bug 932322</a> for now; only define the unforgeable properties on the window object itself. r=jst, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/d5fb33c4194e">d5fb33c4194e</a></td></tr>
<tr><td><strong>Margaret Leibovic</strong></td><td><a href="http://bugzilla.mozilla.org/1010268">Bug 1010268</a> - Don't adjust default panel check for "Add panel" item. r=liuche, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/e1174b7947c9">e1174b7947c9</a></td></tr>
<tr><td><strong>Douglas Crosher</strong></td><td><a href="http://bugzilla.mozilla.org/1001569">Bug 1001569</a> - Yarr ARM: Free Segments using js_delete to match their allocation with js_new. r=jorendorff, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/18d40554e01f">18d40554e01f</a></td></tr>
<tr><td><strong>Masayuki Nakano</strong></td><td><a href="http://bugzilla.mozilla.org/1008244">Bug 1008244</a> - Don't consume Enter key at keypress event when &lt;select size=1&gt; has focus but its dropdown list is closed. r=smaug, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/ba6d1a086b1a">ba6d1a086b1a</a></td></tr>
<tr><td><strong>Mike Hommey</strong></td><td><a href="http://bugzilla.mozilla.org/1005449">Bug 1005449</a> - Use CPU_ARCH for unknown target_arch in gyp. r=mshal, f=landry, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/4b8b6909705c">4b8b6909705c</a></td></tr>
<tr><td><strong>Bobby Holley</strong></td><td><a href="http://bugzilla.mozilla.org/1010577">Bug 1010577</a> - Shim window.controllers (with a warning) in RELEASE_BUILDs (without string changes). r=bz, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/8104a9e1bfaf">8104a9e1bfaf</a></td></tr>
<tr><td><strong>Boris Zbarsky</strong></td><td><a href="http://bugzilla.mozilla.org/1004458">Bug 1004458</a> - Maintain modal state on outer windows only instead of relying on forwarding from inner to outer. r=peterv, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/4ffac6a8ab14">4ffac6a8ab14</a></td></tr>
<tr><td><strong>Chris Lord</strong></td><td><a href="http://bugzilla.mozilla.org/983169">Bug 983169</a> - Fix up TiledLayerHost rendering method. r=BenWa, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/35fe7342d5aa">35fe7342d5aa</a></td></tr>
<tr><td><strong>Chris Lord</strong></td><td><a href="http://bugzilla.mozilla.org/983169">Bug 983169</a> - Fix handling of tile resolution in TiledContentClient. r=bas, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/fd3adb4a2d16">fd3adb4a2d16</a></td></tr>
<tr><td><strong>Andrea Marchesini</strong></td><td><a href="http://bugzilla.mozilla.org/1006027">Bug 1006027</a> - ConsoleAPI uses timestamps in msecs. r=bz, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/5608c1796eee">5608c1796eee</a></td></tr>
<tr><td><strong>Mike Hommey</strong></td><td><a href="http://bugzilla.mozilla.org/1011797">Bug 1011797</a> - Add GNU/kFreeBSD to the list of ECMAScript i18n API supported platforms. r=mshal, a=NPOTB - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/ddae11a4c731">ddae11a4c731</a></td></tr>
<tr><td><strong>Mike Hommey</strong></td><td><a href="http://bugzilla.mozilla.org/1012180">Bug 1012180</a> - Fix build/gyp.mozbuild for GNU/kFreeBSD. r=mshal, a=NPOTB - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/e8aaa68f8cb8">e8aaa68f8cb8</a></td></tr>
<tr><td><strong>Mike Hommey</strong></td><td><a href="http://bugzilla.mozilla.org/1012232">Bug 1012232</a> - Only use the perf opcode on mips arches that support it. r=jesup, a=NPOTB - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/26ba0b7f24ef">26ba0b7f24ef</a></td></tr>
<tr><td><strong>Ryan VanderMeulen</strong></td><td>Backed out changeset d5fb33c4194e (<a href="http://bugzilla.mozilla.org/976920">Bug 976920</a>) for suspicion of causing mochitest-bc leaks. - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/8b801635d8ce">8b801635d8ce</a></td></tr>
</table><br />
</p>
<p>Previous changelogs:<br />
<ul>
<li><a href='http://sylvestre.ledru.info/blog/2014/05/07/changes-firefox-30-beta1-to-beta2'>Firefox 30 beta 1 to beta 2</a></li>
<li><a href='http://sylvestre.ledru.info/blog/2014/05/12/changes-firefox-30-beta2-to-beta3'>Firefox 30 beta 2 to beta 3</a></li>
<li><a href='http://sylvestre.ledru.info/blog/2014/05/14/changes-firefox-30-beta3-to-beta4'>Firefox 30 beta 3 to beta 4</a></li>
<li><a href='http://sylvestre.ledru.info/blog/2014/05/20/changes-firefox-30-beta4-to-beta5'>Firefox 30 beta 4 to beta 5</a></li>
</ul><br />
</p>
]]></content:encoded>
  </item>
  
  <item>
    <title>Changes Firefox 30 beta4 to beta5</title>
    <link>http://100.109.194.79:1313/blog/2014/05/20/changes-firefox-30-beta4-to-beta5</link>
    <guid isPermaLink="false">845@http://100.109.194.79:1313/blog/</guid>
    <pubDate>Tue, 20 May 2014 19:13:00 &#43;0000</pubDate>
    <dc:creator>sylvestre</dc:creator>
    <category>Mozilla</category>
    <description>&lt;ul&gt;
&lt;li&gt;37 changesets&lt;/li&gt;
&lt;li&gt;97 files changed&lt;/li&gt;
&lt;li&gt;791 insertions&lt;/li&gt;
&lt;li&gt;323 deletions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;
&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Extension&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Occurrences&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;cpp&lt;/td&gt;&lt;td&gt;21&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;html&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;js&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;h&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;css&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;list&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ini&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;webidl&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;py&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mozbuild&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mn&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;jsm&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;xul&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&#34;http://www.tellmewhatis.com/xml&#34;&gt;xml&lt;/a&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mm&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;gypi&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;build&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Module&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Occurrences&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;layout&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;browser&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;gfx&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dom&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;content&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;toolkit&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;media&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;testing&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;netwerk&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;widget&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mozglue&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;modules&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mobile&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;js&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ipc&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;docshell&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;build&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;List of changesets:&lt;br /&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Margaret Leibovic&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/999760&#34;&gt;Bug 999760&lt;/a&gt; - Fix mistake in uplift. a=bustage - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/ea7fa7d12c15&#34;&gt;ea7fa7d12c15&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Matt Woodrow&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1003707&#34;&gt;Bug 1003707&lt;/a&gt; - Pass surfaces sizes in to CreateSourceSurfaceFromNativeSurface instead of trying to extract it from cairo. r=Bas, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/956578072396&#34;&gt;956578072396&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;JW Wang&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1004669&#34;&gt;Bug 1004669&lt;/a&gt; - Fix leaks in MediaTaskQueue::Dispatch(). r=cpearce, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/662c516a1858&#34;&gt;662c516a1858&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;David Major&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1002748&#34;&gt;Bug 1002748&lt;/a&gt; - Blocklist libinject.dll. r=bsmedberg, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/b334e79cf04f&#34;&gt;b334e79cf04f&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;David Major&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/988311&#34;&gt;Bug 988311&lt;/a&gt; - Blocklist rf-firefox-22.dll. r=bsmedberg, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/79e75d908e1d&#34;&gt;79e75d908e1d&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Chris Peterson&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/757726&#34;&gt;Bug 757726&lt;/a&gt; - Part 7 - Reenable navigator.plugins enumeration. r=bsmedberg, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/a7b30030153c&#34;&gt;a7b30030153c&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mark Hammond&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/999518&#34;&gt;Bug 999518&lt;/a&gt; - Don&#39;t hit the production FxA server during mochitests. r=froydnj, a=test-only - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/2c4e64ce090e&#34;&gt;2c4e64ce090e&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Dão Gottwald&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1007229&#34;&gt;Bug 1007229&lt;/a&gt; - Background tabs need to use the CaptionText color when using a high contrast theme on Windows 8/8.1. r=Gijs, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/ee16a6a74667&#34;&gt;ee16a6a74667&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Gijs Kruitbosch&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1004255&#34;&gt;Bug 1004255&lt;/a&gt; - Adjust flex so that inner panelUI-contents sizes correctly. r=mconley, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/68037a299c56&#34;&gt;68037a299c56&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tim Taubert&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/966098&#34;&gt;Bug 966098&lt;/a&gt; - Handle inactive/no windows case for &#34;sync started&#34; notification r=markh a=sylvestre - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/937f11ea90b2&#34;&gt;937f11ea90b2&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Neil Deakin&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/994194&#34;&gt;Bug 994194&lt;/a&gt;, don&#39;t set height of panels when they are on the toolbar, prevents scrollbars from appearing, r=mconley, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/9bd4a69ee2e0&#34;&gt;9bd4a69ee2e0&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tim Taubert&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/495123&#34;&gt;Bug 495123&lt;/a&gt; - Save an empty window state if it&#39;s the last window closed and there were no others closed in series before r=smacleod a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/f29ab60028d4&#34;&gt;f29ab60028d4&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Giovanni Sferro&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/982189&#34;&gt;Bug 982189&lt;/a&gt; - Fix Input type=&#34;number&#34; immutability. r=jst, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/dcd4cf44e61b&#34;&gt;dcd4cf44e61b&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Andrea Marchesini&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1000947&#34;&gt;Bug 1000947&lt;/a&gt; - Console::Methods must not throw exceptions. r=bz, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/e295406432eb&#34;&gt;e295406432eb&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Bob Owen&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/973837&#34;&gt;Bug 973837&lt;/a&gt; - Don&#39;t allow view-source in &amp;lt;object&amp;gt;s. r=johns, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/acb6d71ba45d&#34;&gt;acb6d71ba45d&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Bob Owen&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/973837&#34;&gt;Bug 973837&lt;/a&gt; - Check that view-source is not allowed for &amp;lt;object&amp;gt;s. r=johns, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/ff4da156e917&#34;&gt;ff4da156e917&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Andrea Marchesini&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1004814&#34;&gt;Bug 1004814&lt;/a&gt; - console.time/timeEnd work in workers. r=bz, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/aa9bc2b880a1&#34;&gt;aa9bc2b880a1&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Stephen Pohl&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/989769&#34;&gt;Bug 989769&lt;/a&gt; - Allow for vertical scrolls to interrupt horizontal swipes on OSX. r=smichaud, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/a713e6bd540d&#34;&gt;a713e6bd540d&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Chris Pearce&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1008785&#34;&gt;Bug 1008785&lt;/a&gt; - Ensure the last video frame end time is correct on Android MP4 playback. r=kinetik, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/e9cfd7705824&#34;&gt;e9cfd7705824&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Matt Woodrow&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1008610&#34;&gt;Bug 1008610&lt;/a&gt; - Convert right xlib surface into a SourceSurface. r=Bas, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/1c2c267a019f&#34;&gt;1c2c267a019f&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Gijs Kruitbosch&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1000051&#34;&gt;Bug 1000051&lt;/a&gt; - Fix hidpi close icon size. r=dao, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/504c3281b663&#34;&gt;504c3281b663&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Gijs Kruitbosch&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1008559&#34;&gt;Bug 1008559&lt;/a&gt; - setLocationAttributes, as called from buildArea, should remove anchor attribute if set. r=mconley, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/b927870d378d&#34;&gt;b927870d378d&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Jonathan Kew&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1001233&#34;&gt;Bug 1001233&lt;/a&gt; - Convert bullet frame&#39;s margin to the block frame&#39;s writing mode when positioning bullet. r=smontagu, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/542398357372&#34;&gt;542398357372&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Gijs Kruitbosch&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1009529&#34;&gt;Bug 1009529&lt;/a&gt; - Treat null features as &#39;&#39; features in window.open calls. r=bz, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/41a1653a0199&#34;&gt;41a1653a0199&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mark Hammond&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/966579&#34;&gt;Bug 966579&lt;/a&gt; - Tweaks to mutation observer usage for fix intermittent chat orange. r=mixedpuppy, a=test-only - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/c3db2214834e&#34;&gt;c3db2214834e&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Randell Jesup&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/981780&#34;&gt;Bug 981780&lt;/a&gt; - Fix --disable-webrtc. r=glandium, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/83f031a76d0a&#34;&gt;83f031a76d0a&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Landry Breuil&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/981780&#34;&gt;Bug 981780&lt;/a&gt; - Disable some dom/media webrtc tests if webrtc isnt enabled. r=drno, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/3f803365277a&#34;&gt;3f803365277a&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mark Hammond&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/916497&#34;&gt;Bug 916497&lt;/a&gt; - PageThumbs no longer expires thumbnails being tested to fix intermittent oranges. r=adw, a=test-only - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/c5f7b330dd3a&#34;&gt;c5f7b330dd3a&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tim Nguyen&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/983978&#34;&gt;Bug 983978&lt;/a&gt; - download-glow.png should be blue on Windows and Linux. r=Gijs, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/c3bcd563e6ce&#34;&gt;c3bcd563e6ce&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Gijs Kruitbosch&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/986866&#34;&gt;Bug 986866&lt;/a&gt;, &lt;a href=&#34;http://bugzilla.mozilla.org/1008647&#34;&gt;Bug 1008647&lt;/a&gt; - duplicate the &#39;show all bookmarks&#39; item, r=mak, ui-r=shorlander, a=sylvestre - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/d087200dd934&#34;&gt;d087200dd934&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Marty Rosenberg&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/995542&#34;&gt;Bug 995542&lt;/a&gt; - Add extra consumers of the congruence-head when we split it from the class. r=sstangl, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/9e2975cd6792&#34;&gt;9e2975cd6792&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Bob Owen&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/996280&#34;&gt;Bug 996280&lt;/a&gt; - Use the docshell&#39;s sandbox flags if we can&#39;t get the active document in IsSandboxedFrom(). r=smaug, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/68b0fb01bfdc&#34;&gt;68b0fb01bfdc&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;David Major&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1000364&#34;&gt;Bug 1000364&lt;/a&gt; - Drop nonqueued messages for QuickTime&#39;s QTNSHIDDEN class. r=jimm, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/19554eb3bed1&#34;&gt;19554eb3bed1&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Gijs Kruitbosch&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1008402&#34;&gt;Bug 1008402&lt;/a&gt; - Linux downloads button icon loses lwtheme color if using dark lwtheme (bright text). r=mconley, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/792de35e26c0&#34;&gt;792de35e26c0&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Arnaud Bienner&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1007278&#34;&gt;Bug 1007278&lt;/a&gt; - Restore the distinct text-color on disabled buttons. r=dholbert, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/75ff52caee21&#34;&gt;75ff52caee21&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Margaret Leibovic&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1005107&#34;&gt;Bug 1005107&lt;/a&gt; - Include charsetMenu.properties in localized files. r=Pike, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/51262a06149a&#34;&gt;51262a06149a&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ethan Tseng&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1006530&#34;&gt;Bug 1006530&lt;/a&gt; - Closing a audio RTSP streaming via tab page causes system crash. r=sworkman, a=bajaj - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/4f28715f9db6&#34;&gt;4f28715f9db6&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;r= means &lt;em&gt;reviewed by&lt;/em&gt;&lt;br /&gt;a= means &lt;em&gt;uplift approved by&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Previous changelogs:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;http://sylvestre.ledru.info/blog/2014/05/07/changes-firefox-30-beta1-to-beta2&#39;&gt;Firefox 30 beta 1 to beta 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#39;http://sylvestre.ledru.info/blog/2014/05/12/changes-firefox-30-beta2-to-beta3&#39;&gt;Firefox 30 beta 2 to beta 3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#39;http://sylvestre.ledru.info/blog/2014/05/14/changes-firefox-30-beta3-to-beta4&#39;&gt;Firefox 30 beta 3 to beta 4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;/p&gt;
</description>
    <content:encoded><![CDATA[<ul>
<li>37 changesets</li>
<li>97 files changed</li>
<li>791 insertions</li>
<li>323 deletions</li>
</ul>

<p><br />
<table><tr><td><strong>Extension</strong></td><td><strong>Occurrences</strong></td></tr>
<tr><td>cpp</td><td>21</td></tr>
<tr><td>html</td><td>16</td></tr>
<tr><td>js</td><td>15</td></tr>
<tr><td>h</td><td>9</td></tr>
<tr><td>css</td><td>8</td></tr>
<tr><td>list</td><td>3</td></tr>
<tr><td>ini</td><td>3</td></tr>
<tr><td>webidl</td><td>2</td></tr>
<tr><td>py</td><td>2</td></tr>
<tr><td>mozbuild</td><td>2</td></tr>
<tr><td>mn</td><td>2</td></tr>
<tr><td>jsm</td><td>2</td></tr>
<tr><td>xul</td><td>1</td></tr>
<tr><td><a href="http://www.tellmewhatis.com/xml">xml</a></td><td>1</td></tr>
<tr><td>mm</td><td>1</td></tr>
<tr><td>gypi</td><td>1</td></tr>
<tr><td>build</td><td>1</td></tr>
</table><br />
</p>
<p><br />
<table><tr><td><strong>Module</strong></td><td><strong>Occurrences</strong></td></tr>
<tr><td>layout</td><td>18</td></tr>
<tr><td>browser</td><td>18</td></tr>
<tr><td>gfx</td><td>13</td></tr>
<tr><td>dom</td><td>11</td></tr>
<tr><td>content</td><td>9</td></tr>
<tr><td>toolkit</td><td>6</td></tr>
<tr><td>media</td><td>3</td></tr>
<tr><td>testing</td><td>2</td></tr>
<tr><td>netwerk</td><td>2</td></tr>
<tr><td>widget</td><td>1</td></tr>
<tr><td>mozglue</td><td>1</td></tr>
<tr><td>modules</td><td>1</td></tr>
<tr><td>mobile</td><td>1</td></tr>
<tr><td>js</td><td>1</td></tr>
<tr><td>ipc</td><td>1</td></tr>
<tr><td>docshell</td><td>1</td></tr>
<tr><td>build</td><td>1</td></tr>
</table><br />
</p>
<p>List of changesets:<br />
<table>
<tr><td><strong>Margaret Leibovic</strong></td><td><a href="http://bugzilla.mozilla.org/999760">Bug 999760</a> - Fix mistake in uplift. a=bustage - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/ea7fa7d12c15">ea7fa7d12c15</a></td></tr>
<tr><td><strong>Matt Woodrow</strong></td><td><a href="http://bugzilla.mozilla.org/1003707">Bug 1003707</a> - Pass surfaces sizes in to CreateSourceSurfaceFromNativeSurface instead of trying to extract it from cairo. r=Bas, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/956578072396">956578072396</a></td></tr>
<tr><td><strong>JW Wang</strong></td><td><a href="http://bugzilla.mozilla.org/1004669">Bug 1004669</a> - Fix leaks in MediaTaskQueue::Dispatch(). r=cpearce, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/662c516a1858">662c516a1858</a></td></tr>
<tr><td><strong>David Major</strong></td><td><a href="http://bugzilla.mozilla.org/1002748">Bug 1002748</a> - Blocklist libinject.dll. r=bsmedberg, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/b334e79cf04f">b334e79cf04f</a></td></tr>
<tr><td><strong>David Major</strong></td><td><a href="http://bugzilla.mozilla.org/988311">Bug 988311</a> - Blocklist rf-firefox-22.dll. r=bsmedberg, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/79e75d908e1d">79e75d908e1d</a></td></tr>
<tr><td><strong>Chris Peterson</strong></td><td><a href="http://bugzilla.mozilla.org/757726">Bug 757726</a> - Part 7 - Reenable navigator.plugins enumeration. r=bsmedberg, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/a7b30030153c">a7b30030153c</a></td></tr>
<tr><td><strong>Mark Hammond</strong></td><td><a href="http://bugzilla.mozilla.org/999518">Bug 999518</a> - Don't hit the production FxA server during mochitests. r=froydnj, a=test-only - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/2c4e64ce090e">2c4e64ce090e</a></td></tr>
<tr><td><strong>Dão Gottwald</strong></td><td><a href="http://bugzilla.mozilla.org/1007229">Bug 1007229</a> - Background tabs need to use the CaptionText color when using a high contrast theme on Windows 8/8.1. r=Gijs, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/ee16a6a74667">ee16a6a74667</a></td></tr>
<tr><td><strong>Gijs Kruitbosch</strong></td><td><a href="http://bugzilla.mozilla.org/1004255">Bug 1004255</a> - Adjust flex so that inner panelUI-contents sizes correctly. r=mconley, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/68037a299c56">68037a299c56</a></td></tr>
<tr><td><strong>Tim Taubert</strong></td><td><a href="http://bugzilla.mozilla.org/966098">Bug 966098</a> - Handle inactive/no windows case for "sync started" notification r=markh a=sylvestre - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/937f11ea90b2">937f11ea90b2</a></td></tr>
<tr><td><strong>Neil Deakin</strong></td><td><a href="http://bugzilla.mozilla.org/994194">Bug 994194</a>, don't set height of panels when they are on the toolbar, prevents scrollbars from appearing, r=mconley, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/9bd4a69ee2e0">9bd4a69ee2e0</a></td></tr>
<tr><td><strong>Tim Taubert</strong></td><td><a href="http://bugzilla.mozilla.org/495123">Bug 495123</a> - Save an empty window state if it's the last window closed and there were no others closed in series before r=smacleod a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/f29ab60028d4">f29ab60028d4</a></td></tr>
<tr><td><strong>Giovanni Sferro</strong></td><td><a href="http://bugzilla.mozilla.org/982189">Bug 982189</a> - Fix Input type="number" immutability. r=jst, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/dcd4cf44e61b">dcd4cf44e61b</a></td></tr>
<tr><td><strong>Andrea Marchesini</strong></td><td><a href="http://bugzilla.mozilla.org/1000947">Bug 1000947</a> - Console::Methods must not throw exceptions. r=bz, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/e295406432eb">e295406432eb</a></td></tr>
<tr><td><strong>Bob Owen</strong></td><td><a href="http://bugzilla.mozilla.org/973837">Bug 973837</a> - Don't allow view-source in &lt;object&gt;s. r=johns, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/acb6d71ba45d">acb6d71ba45d</a></td></tr>
<tr><td><strong>Bob Owen</strong></td><td><a href="http://bugzilla.mozilla.org/973837">Bug 973837</a> - Check that view-source is not allowed for &lt;object&gt;s. r=johns, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/ff4da156e917">ff4da156e917</a></td></tr>
<tr><td><strong>Andrea Marchesini</strong></td><td><a href="http://bugzilla.mozilla.org/1004814">Bug 1004814</a> - console.time/timeEnd work in workers. r=bz, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/aa9bc2b880a1">aa9bc2b880a1</a></td></tr>
<tr><td><strong>Stephen Pohl</strong></td><td><a href="http://bugzilla.mozilla.org/989769">Bug 989769</a> - Allow for vertical scrolls to interrupt horizontal swipes on OSX. r=smichaud, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/a713e6bd540d">a713e6bd540d</a></td></tr>
<tr><td><strong>Chris Pearce</strong></td><td><a href="http://bugzilla.mozilla.org/1008785">Bug 1008785</a> - Ensure the last video frame end time is correct on Android MP4 playback. r=kinetik, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/e9cfd7705824">e9cfd7705824</a></td></tr>
<tr><td><strong>Matt Woodrow</strong></td><td><a href="http://bugzilla.mozilla.org/1008610">Bug 1008610</a> - Convert right xlib surface into a SourceSurface. r=Bas, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/1c2c267a019f">1c2c267a019f</a></td></tr>
<tr><td><strong>Gijs Kruitbosch</strong></td><td><a href="http://bugzilla.mozilla.org/1000051">Bug 1000051</a> - Fix hidpi close icon size. r=dao, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/504c3281b663">504c3281b663</a></td></tr>
<tr><td><strong>Gijs Kruitbosch</strong></td><td><a href="http://bugzilla.mozilla.org/1008559">Bug 1008559</a> - setLocationAttributes, as called from buildArea, should remove anchor attribute if set. r=mconley, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/b927870d378d">b927870d378d</a></td></tr>
<tr><td><strong>Jonathan Kew</strong></td><td><a href="http://bugzilla.mozilla.org/1001233">Bug 1001233</a> - Convert bullet frame's margin to the block frame's writing mode when positioning bullet. r=smontagu, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/542398357372">542398357372</a></td></tr>
<tr><td><strong>Gijs Kruitbosch</strong></td><td><a href="http://bugzilla.mozilla.org/1009529">Bug 1009529</a> - Treat null features as '' features in window.open calls. r=bz, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/41a1653a0199">41a1653a0199</a></td></tr>
<tr><td><strong>Mark Hammond</strong></td><td><a href="http://bugzilla.mozilla.org/966579">Bug 966579</a> - Tweaks to mutation observer usage for fix intermittent chat orange. r=mixedpuppy, a=test-only - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/c3db2214834e">c3db2214834e</a></td></tr>
<tr><td><strong>Randell Jesup</strong></td><td><a href="http://bugzilla.mozilla.org/981780">Bug 981780</a> - Fix --disable-webrtc. r=glandium, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/83f031a76d0a">83f031a76d0a</a></td></tr>
<tr><td><strong>Landry Breuil</strong></td><td><a href="http://bugzilla.mozilla.org/981780">Bug 981780</a> - Disable some dom/media webrtc tests if webrtc isnt enabled. r=drno, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/3f803365277a">3f803365277a</a></td></tr>
<tr><td><strong>Mark Hammond</strong></td><td><a href="http://bugzilla.mozilla.org/916497">Bug 916497</a> - PageThumbs no longer expires thumbnails being tested to fix intermittent oranges. r=adw, a=test-only - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/c5f7b330dd3a">c5f7b330dd3a</a></td></tr>
<tr><td><strong>Tim Nguyen</strong></td><td><a href="http://bugzilla.mozilla.org/983978">Bug 983978</a> - download-glow.png should be blue on Windows and Linux. r=Gijs, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/c3bcd563e6ce">c3bcd563e6ce</a></td></tr>
<tr><td><strong>Gijs Kruitbosch</strong></td><td><a href="http://bugzilla.mozilla.org/986866">Bug 986866</a>, <a href="http://bugzilla.mozilla.org/1008647">Bug 1008647</a> - duplicate the 'show all bookmarks' item, r=mak, ui-r=shorlander, a=sylvestre - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/d087200dd934">d087200dd934</a></td></tr>
<tr><td><strong>Marty Rosenberg</strong></td><td><a href="http://bugzilla.mozilla.org/995542">Bug 995542</a> - Add extra consumers of the congruence-head when we split it from the class. r=sstangl, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/9e2975cd6792">9e2975cd6792</a></td></tr>
<tr><td><strong>Bob Owen</strong></td><td><a href="http://bugzilla.mozilla.org/996280">Bug 996280</a> - Use the docshell's sandbox flags if we can't get the active document in IsSandboxedFrom(). r=smaug, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/68b0fb01bfdc">68b0fb01bfdc</a></td></tr>
<tr><td><strong>David Major</strong></td><td><a href="http://bugzilla.mozilla.org/1000364">Bug 1000364</a> - Drop nonqueued messages for QuickTime's QTNSHIDDEN class. r=jimm, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/19554eb3bed1">19554eb3bed1</a></td></tr>
<tr><td><strong>Gijs Kruitbosch</strong></td><td><a href="http://bugzilla.mozilla.org/1008402">Bug 1008402</a> - Linux downloads button icon loses lwtheme color if using dark lwtheme (bright text). r=mconley, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/792de35e26c0">792de35e26c0</a></td></tr>
<tr><td><strong>Arnaud Bienner</strong></td><td><a href="http://bugzilla.mozilla.org/1007278">Bug 1007278</a> - Restore the distinct text-color on disabled buttons. r=dholbert, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/75ff52caee21">75ff52caee21</a></td></tr>
<tr><td><strong>Margaret Leibovic</strong></td><td><a href="http://bugzilla.mozilla.org/1005107">Bug 1005107</a> - Include charsetMenu.properties in localized files. r=Pike, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/51262a06149a">51262a06149a</a></td></tr>
<tr><td><strong>Ethan Tseng</strong></td><td><a href="http://bugzilla.mozilla.org/1006530">Bug 1006530</a> - Closing a audio RTSP streaming via tab page causes system crash. r=sworkman, a=bajaj - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/4f28715f9db6">4f28715f9db6</a></td></tr>
</table><br />
</p>
<p>r= means <em>reviewed by</em><br />a= means <em>uplift approved by</em></p>
<p>Previous changelogs:<br />
<ul>
<li><a href='http://sylvestre.ledru.info/blog/2014/05/07/changes-firefox-30-beta1-to-beta2'>Firefox 30 beta 1 to beta 2</a></li>
<li><a href='http://sylvestre.ledru.info/blog/2014/05/12/changes-firefox-30-beta2-to-beta3'>Firefox 30 beta 2 to beta 3</a></li>
<li><a href='http://sylvestre.ledru.info/blog/2014/05/14/changes-firefox-30-beta3-to-beta4'>Firefox 30 beta 3 to beta 4</a></li>
</ul><br />
</p>
]]></content:encoded>
  </item>
  
  <item>
    <title>Changes Firefox 30 beta3 to beta4</title>
    <link>http://100.109.194.79:1313/blog/2014/05/20/changes-firefox-30-beta3-to-beta4</link>
    <guid isPermaLink="false">846@http://100.109.194.79:1313/blog/</guid>
    <pubDate>Tue, 20 May 2014 19:12:00 &#43;0000</pubDate>
    <dc:creator>sylvestre</dc:creator>
    <category>Mozilla</category>
    <description>&lt;ul&gt;
&lt;li&gt;20 changesets&lt;/li&gt;
&lt;li&gt;26 files changed&lt;/li&gt;
&lt;li&gt;757 insertions&lt;/li&gt;
&lt;li&gt;492 deletions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;
&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Extension&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Occurrences&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;cpp&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;jsm&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;js&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ini&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;html&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;h&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;xul&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;txt&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;nsi&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;nsh&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;css&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Module&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Occurrences&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;browser&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dom&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;content&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;caps&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;toolkit&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;services&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;netwerk&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;layout&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;build&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;List of changesets:&lt;br /&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Shawn Huang&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1000961&#34;&gt;Bug 1000961&lt;/a&gt; - Make DBusReplyHandler use thread-safe ref-counting. r=echou, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/306759b08bbf&#34;&gt;306759b08bbf&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ryan VanderMeulen&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Backed out changeset ccde75e4b1af (&lt;a href=&#34;http://bugzilla.mozilla.org/1004152&#34;&gt;Bug 1004152&lt;/a&gt;) for Mnw bustage. DONTBUILD - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/1c4fdb3d772d&#34;&gt;1c4fdb3d772d&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Marco Castelluccio&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/981085&#34;&gt;Bug 981085&lt;/a&gt; - Stop using OS.File in apps code. r=fabrice, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/ed09e2b74d14&#34;&gt;ed09e2b74d14&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Marco Castelluccio&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/972927&#34;&gt;Bug 972927&lt;/a&gt; - Re-enable dom/apps tests on b2g. r=RyanVM, a=test-only - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/9c41e6f07c3e&#34;&gt;9c41e6f07c3e&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Marco Castelluccio&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/991246&#34;&gt;Bug 991246&lt;/a&gt; - Fix &#34;aIdsApp is undefined&#34; error in OperatorApps.jsm. r=cjc, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/a3d8c7c4f462&#34;&gt;a3d8c7c4f462&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Carmen Jimenez&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/992589&#34;&gt;Bug 992589&lt;/a&gt; - OperatorApps.jsm errors when running with and without Single Variant apps. r=ferjm, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/bbac2a994298&#34;&gt;bbac2a994298&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Shane Caraveo&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/983481&#34;&gt;Bug 983481&lt;/a&gt; - Open a post activation landing page. r=markh, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/315f0fda0470&#34;&gt;315f0fda0470&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Timothy Nikkel&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1000423&#34;&gt;Bug 1000423&lt;/a&gt; - Properly convert from appunits/layout device pixels to layer pixels for composition bounds calculation. r=botond, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/d7abd8044d61&#34;&gt;d7abd8044d61&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mark Hammond&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1006360&#34;&gt;Bug 1006360&lt;/a&gt; - prevent failures backing up bookmarks from stopping sync completing. r=rnewman, a=sylvestre - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/d202bb3a79cf&#34;&gt;d202bb3a79cf&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Matt Woodrow&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1003707&#34;&gt;Bug 1003707&lt;/a&gt; - Pass surfaces sizes in to CreateSourceSurfaceFromNativeSurface instead of trying to extract it from cairo. r=Bas, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/7d945895a6d9&#34;&gt;7d945895a6d9&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Nicholas Hurley&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1007850&#34;&gt;Bug 1007850&lt;/a&gt; - Don&#39;t reset seer if it&#39;s not enabled. r=mcmanus, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/9c27fdffe6f1&#34;&gt;9c27fdffe6f1&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ryan VanderMeulen&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Backed out changeset 7d945895a6d9 (&lt;a href=&#34;http://bugzilla.mozilla.org/1003707&#34;&gt;Bug 1003707&lt;/a&gt;) for bustage. - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/eb84c3250ae3&#34;&gt;eb84c3250ae3&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Marco Castelluccio&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/915879&#34;&gt;Bug 915879&lt;/a&gt; - Wait for _writeFile to finish before continuing. r=fabrice, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/c81fd101b5a2&#34;&gt;c81fd101b5a2&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Robert Strong&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1004168&#34;&gt;Bug 1004168&lt;/a&gt; - Add an INI file option to prevent requiring a reboot when there are files in use. r=jmathies, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/afcec252f3b7&#34;&gt;afcec252f3b7&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Chris Pearce&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1005622&#34;&gt;Bug 1005622&lt;/a&gt; - Reset media queues in Android media seek so that we don&#39;t think we&#39;re still at EOS after playing to EOS and then seeking. r=edwin, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/63b001b6f985&#34;&gt;63b001b6f985&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Nathan Froyd&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1009042&#34;&gt;Bug 1009042&lt;/a&gt; - add example.net to server-locations.txt; r=jmaher - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/913fb15c7218&#34;&gt;913fb15c7218&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Bobby Holley&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/995943&#34;&gt;Bug 995943&lt;/a&gt; - Clean up some silly stuff surrounding prefs in CAPS. r=bz - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/c1b7c8d03129&#34;&gt;c1b7c8d03129&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Bobby Holley&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/995943&#34;&gt;Bug 995943&lt;/a&gt; - Allow access to file:// URIs from pref-whitelisted sites. r=bz a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/5b3bfd0a529a&#34;&gt;5b3bfd0a529a&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Edwin Flores&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/977089&#34;&gt;Bug 977089&lt;/a&gt; - Don&#39;t pass ID3 headers to GStreamer. r=cpearce, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/e414a4798c7c&#34;&gt;e414a4798c7c&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Gijs Kruitbosch&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1003542&#34;&gt;Bug 1003542&lt;/a&gt; - Remove extra space at bottom of single-item menus in bookmarks menu button panel menus. r=mikedeboer, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/d27918134b3d&#34;&gt;d27918134b3d&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;r= means &lt;em&gt;reviewed by&lt;/em&gt;&lt;br /&gt;a= means &lt;em&gt;uplift approved by&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Previous changelogs:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;http://sylvestre.ledru.info/blog/2014/05/07/changes-firefox-30-beta1-to-beta2&#39;&gt;Firefox 30 beta 1 to beta 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#39;http://sylvestre.ledru.info/blog/2014/05/12/changes-firefox-30-beta2-to-beta3&#39;&gt;Firefox 30 beta 2 to beta 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;/p&gt;
</description>
    <content:encoded><![CDATA[<ul>
<li>20 changesets</li>
<li>26 files changed</li>
<li>757 insertions</li>
<li>492 deletions</li>
</ul>

<p><br />
<table><tr><td><strong>Extension</strong></td><td><strong>Occurrences</strong></td></tr>
<tr><td>cpp</td><td>6</td></tr>
<tr><td>jsm</td><td>4</td></tr>
<tr><td>js</td><td>4</td></tr>
<tr><td>ini</td><td>3</td></tr>
<tr><td>html</td><td>2</td></tr>
<tr><td>h</td><td>2</td></tr>
<tr><td>xul</td><td>1</td></tr>
<tr><td>txt</td><td>1</td></tr>
<tr><td>nsi</td><td>1</td></tr>
<tr><td>nsh</td><td>1</td></tr>
<tr><td>css</td><td>1</td></tr>
</table><br />
</p>
<p><br />
<table><tr><td><strong>Module</strong></td><td><strong>Occurrences</strong></td></tr>
<tr><td>browser</td><td>7</td></tr>
<tr><td>dom</td><td>5</td></tr>
<tr><td>content</td><td>4</td></tr>
<tr><td>caps</td><td>4</td></tr>
<tr><td>toolkit</td><td>2</td></tr>
<tr><td>services</td><td>1</td></tr>
<tr><td>netwerk</td><td>1</td></tr>
<tr><td>layout</td><td>1</td></tr>
<tr><td>build</td><td>1</td></tr>
</table><br />
</p>
<p>List of changesets:<br />
<table>
<tr><td><strong>Shawn Huang</strong></td><td><a href="http://bugzilla.mozilla.org/1000961">Bug 1000961</a> - Make DBusReplyHandler use thread-safe ref-counting. r=echou, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/306759b08bbf">306759b08bbf</a></td></tr>
<tr><td><strong>Ryan VanderMeulen</strong></td><td>Backed out changeset ccde75e4b1af (<a href="http://bugzilla.mozilla.org/1004152">Bug 1004152</a>) for Mnw bustage. DONTBUILD - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/1c4fdb3d772d">1c4fdb3d772d</a></td></tr>
<tr><td><strong>Marco Castelluccio</strong></td><td><a href="http://bugzilla.mozilla.org/981085">Bug 981085</a> - Stop using OS.File in apps code. r=fabrice, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/ed09e2b74d14">ed09e2b74d14</a></td></tr>
<tr><td><strong>Marco Castelluccio</strong></td><td><a href="http://bugzilla.mozilla.org/972927">Bug 972927</a> - Re-enable dom/apps tests on b2g. r=RyanVM, a=test-only - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/9c41e6f07c3e">9c41e6f07c3e</a></td></tr>
<tr><td><strong>Marco Castelluccio</strong></td><td><a href="http://bugzilla.mozilla.org/991246">Bug 991246</a> - Fix "aIdsApp is undefined" error in OperatorApps.jsm. r=cjc, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/a3d8c7c4f462">a3d8c7c4f462</a></td></tr>
<tr><td><strong>Carmen Jimenez</strong></td><td><a href="http://bugzilla.mozilla.org/992589">Bug 992589</a> - OperatorApps.jsm errors when running with and without Single Variant apps. r=ferjm, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/bbac2a994298">bbac2a994298</a></td></tr>
<tr><td><strong>Shane Caraveo</strong></td><td><a href="http://bugzilla.mozilla.org/983481">Bug 983481</a> - Open a post activation landing page. r=markh, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/315f0fda0470">315f0fda0470</a></td></tr>
<tr><td><strong>Timothy Nikkel</strong></td><td><a href="http://bugzilla.mozilla.org/1000423">Bug 1000423</a> - Properly convert from appunits/layout device pixels to layer pixels for composition bounds calculation. r=botond, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/d7abd8044d61">d7abd8044d61</a></td></tr>
<tr><td><strong>Mark Hammond</strong></td><td><a href="http://bugzilla.mozilla.org/1006360">Bug 1006360</a> - prevent failures backing up bookmarks from stopping sync completing. r=rnewman, a=sylvestre - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/d202bb3a79cf">d202bb3a79cf</a></td></tr>
<tr><td><strong>Matt Woodrow</strong></td><td><a href="http://bugzilla.mozilla.org/1003707">Bug 1003707</a> - Pass surfaces sizes in to CreateSourceSurfaceFromNativeSurface instead of trying to extract it from cairo. r=Bas, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/7d945895a6d9">7d945895a6d9</a></td></tr>
<tr><td><strong>Nicholas Hurley</strong></td><td><a href="http://bugzilla.mozilla.org/1007850">Bug 1007850</a> - Don't reset seer if it's not enabled. r=mcmanus, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/9c27fdffe6f1">9c27fdffe6f1</a></td></tr>
<tr><td><strong>Ryan VanderMeulen</strong></td><td>Backed out changeset 7d945895a6d9 (<a href="http://bugzilla.mozilla.org/1003707">Bug 1003707</a>) for bustage. - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/eb84c3250ae3">eb84c3250ae3</a></td></tr>
<tr><td><strong>Marco Castelluccio</strong></td><td><a href="http://bugzilla.mozilla.org/915879">Bug 915879</a> - Wait for _writeFile to finish before continuing. r=fabrice, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/c81fd101b5a2">c81fd101b5a2</a></td></tr>
<tr><td><strong>Robert Strong</strong></td><td><a href="http://bugzilla.mozilla.org/1004168">Bug 1004168</a> - Add an INI file option to prevent requiring a reboot when there are files in use. r=jmathies, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/afcec252f3b7">afcec252f3b7</a></td></tr>
<tr><td><strong>Chris Pearce</strong></td><td><a href="http://bugzilla.mozilla.org/1005622">Bug 1005622</a> - Reset media queues in Android media seek so that we don't think we're still at EOS after playing to EOS and then seeking. r=edwin, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/63b001b6f985">63b001b6f985</a></td></tr>
<tr><td><strong>Nathan Froyd</strong></td><td><a href="http://bugzilla.mozilla.org/1009042">Bug 1009042</a> - add example.net to server-locations.txt; r=jmaher - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/913fb15c7218">913fb15c7218</a></td></tr>
<tr><td><strong>Bobby Holley</strong></td><td><a href="http://bugzilla.mozilla.org/995943">Bug 995943</a> - Clean up some silly stuff surrounding prefs in CAPS. r=bz - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/c1b7c8d03129">c1b7c8d03129</a></td></tr>
<tr><td><strong>Bobby Holley</strong></td><td><a href="http://bugzilla.mozilla.org/995943">Bug 995943</a> - Allow access to file:// URIs from pref-whitelisted sites. r=bz a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/5b3bfd0a529a">5b3bfd0a529a</a></td></tr>
<tr><td><strong>Edwin Flores</strong></td><td><a href="http://bugzilla.mozilla.org/977089">Bug 977089</a> - Don't pass ID3 headers to GStreamer. r=cpearce, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/e414a4798c7c">e414a4798c7c</a></td></tr>
<tr><td><strong>Gijs Kruitbosch</strong></td><td><a href="http://bugzilla.mozilla.org/1003542">Bug 1003542</a> - Remove extra space at bottom of single-item menus in bookmarks menu button panel menus. r=mikedeboer, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/d27918134b3d">d27918134b3d</a></td></tr>
</table><br />
</p>
<p>r= means <em>reviewed by</em><br />a= means <em>uplift approved by</em></p>
<p>Previous changelogs:<br />
<ul>
<li><a href='http://sylvestre.ledru.info/blog/2014/05/07/changes-firefox-30-beta1-to-beta2'>Firefox 30 beta 1 to beta 2</a></li>
<li><a href='http://sylvestre.ledru.info/blog/2014/05/12/changes-firefox-30-beta2-to-beta3'>Firefox 30 beta 2 to beta 3</a></li>
</ul><br />
</p>
]]></content:encoded>
  </item>
  
  <item>
    <title>Changes Firefox 30 beta2 to beta3</title>
    <link>http://100.109.194.79:1313/blog/2014/05/12/changes-firefox-30-beta2-to-beta3</link>
    <guid isPermaLink="false">844@http://100.109.194.79:1313/blog/</guid>
    <pubDate>Mon, 12 May 2014 16:07:00 &#43;0000</pubDate>
    <dc:creator>sylvestre</dc:creator>
    <category>Mozilla</category>
    <description>&lt;ul&gt;
&lt;li&gt;23 changesets&lt;/li&gt;
&lt;li&gt;38 files changed&lt;/li&gt;
&lt;li&gt;543 insertions&lt;/li&gt;
&lt;li&gt;325 deletions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;
&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Extension&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Occurrences&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;js&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;cpp&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ini&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;xul&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;jsm&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;h&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&#34;http://www.tellmewhatis.com/xml&#34;&gt;xml&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;html&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;webidl&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;sh&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;py&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;json&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Module&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Occurrences&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;toolkit&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;js&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dom&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;browser&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;testing&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;image&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;content&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;services&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;netwerk&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;modules&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mobile&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;layout&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;gfx&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;List of changesets:&lt;br /&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Benoit Jacob&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/999445&#34;&gt;Bug 999445&lt;/a&gt; - Do not fail GLContext initialization if the GL_VERSION is too low. We may get what we need as extensions. - r=jrmuizel, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/f15b4b99adc4&#34;&gt;f15b4b99adc4&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Matt Woodrow&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/952721&#34;&gt;Bug 952721&lt;/a&gt; - Don&#39;t crash if our surface allocation fails in TiledContentClient. r=Bas, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/0a9afc76690c&#34;&gt;0a9afc76690c&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Matt Woodrow&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/952721&#34;&gt;Bug 952721&lt;/a&gt; - Base our decision to prerender transformed content on it&#39;s screen space size, not the untransformed size. r=tn, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/c0f1a5d2645b&#34;&gt;c0f1a5d2645b&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Nicholas Hurley&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1005958&#34;&gt;Bug 1005958&lt;/a&gt; - Disable seer. r=mcmanus, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/ae17ae04609b&#34;&gt;ae17ae04609b&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mark Hammond&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/966579&#34;&gt;Bug 966579&lt;/a&gt; - Fix intermittent browser_social_chatwindow_resize oranges. r=mixedpuppy, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/3c51501a4e52&#34;&gt;3c51501a4e52&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Bobby Holley&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1005806&#34;&gt;Bug 1005806&lt;/a&gt; - HTMLInputElement.controllers should be [ChromeOnly]. r=bz, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/02e1dd202d67&#34;&gt;02e1dd202d67&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mike de Boer&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/978861&#34;&gt;Bug 978861&lt;/a&gt;: disable prefillWithSelection on OSX by default, fix its semantics when enabled. r=ehsan, a=sylvestre. - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/b431c1c19a26&#34;&gt;b431c1c19a26&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;James Kitchener&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1000079&#34;&gt;Bug 1000079&lt;/a&gt; - Nullcheck to avoid Windows overwriting length 0 string. r=bsmedberg, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/594456499788&#34;&gt;594456499788&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Douglas Crosher&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1000960&#34;&gt;Bug 1000960&lt;/a&gt; - IonMonkey (ARM): Correct the order of the operands in moveFloat32. r=mjrosenb, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/10e5a05f34b3&#34;&gt;10e5a05f34b3&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Shu-yu Guo&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1000598&#34;&gt;Bug 1000598&lt;/a&gt; - Clear TypeCompartment tables. r=billm, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/56d4c53323c0&#34;&gt;56d4c53323c0&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Valentin Gosu&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1005578&#34;&gt;Bug 1005578&lt;/a&gt; - Change nsIURI object from nsStandardURL to nsJSURI when calling url.href. r=bz, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/0c8b19312abf&#34;&gt;0c8b19312abf&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Jared Wein&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1004576&#34;&gt;Bug 1004576&lt;/a&gt; - Background tabs are unreadable when the Color Intensity of the window frame is at or near its lowest point (white text on light-grey window frame). r=Gijs a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/ebad9b622f2e&#34;&gt;ebad9b622f2e&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Irving Reid&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/900954&#34;&gt;Bug 900954&lt;/a&gt; - Expose addons.json flush to test harness. r=felipe, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/1c5aa2062579&#34;&gt;1c5aa2062579&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Monica Chew&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1005504&#34;&gt;Bug 1005504&lt;/a&gt; - Fix telemetry for application reputation. r=gcp, a=sledru - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/2919cce749c0&#34;&gt;2919cce749c0&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Henrik Skupin&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1006298&#34;&gt;Bug 1006298&lt;/a&gt; - TPS fails to download virtualenv due to the redirect. r=glob, a=testonly DONTBUILD - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/da8b1c15e2b1&#34;&gt;da8b1c15e2b1&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Henrik Skupin&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1003250&#34;&gt;Bug 1003250&lt;/a&gt; - Disable automatic sync for TPS tests. r=rnewman, a=testonly DONTBUILD - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/68d24bc3a93d&#34;&gt;68d24bc3a93d&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mark Banner&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/975550&#34;&gt;Bug 975550&lt;/a&gt; Handle python 2.6 when preventing invalid utf-8 being writting to test files. r=ted,a=test-only - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/04c5fcc3831b&#34;&gt;04c5fcc3831b&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ryan VanderMeulen&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/983490&#34;&gt;Bug 983490&lt;/a&gt; - Disable test_browserElement_inproc_SetInputMethodActive.html and test_browserElement_oop_SetInputMethodActive.html for frequent failures. a=test-only - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/1fc8f2d7a261&#34;&gt;1fc8f2d7a261&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Milan Sreckovic&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/994907&#34;&gt;Bug 994907&lt;/a&gt; - imgDecoderObserver does reference counting on different threads, so should be using thread safe reference counting. r=seth, r=ehsan, a=abillings - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/adafd31af170&#34;&gt;adafd31af170&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Szu-Yu Chen [:aknow]&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1004152&#34;&gt;Bug 1004152&lt;/a&gt; - Delay telephony.dial for 1s in test cases. r=hsinyi, a=test-only - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/ccde75e4b1af&#34;&gt;ccde75e4b1af&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Nathan Froyd&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/997341&#34;&gt;Bug 997341&lt;/a&gt; - Modify content/xul/document/test/bug497875-iframe.xul to not connect to mozilla.org. r=smaug, a=test-only - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/f59b7498a97f&#34;&gt;f59b7498a97f&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Rob Campbell&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/998302&#34;&gt;Bug 998302&lt;/a&gt; - Connect to about:config instead of about:credits to avoid accessing mozilla.org when the test runs. r=robcee, a=test-only - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/d43267eaf528&#34;&gt;d43267eaf528&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Randy Lin&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/969372&#34;&gt;Bug 969372&lt;/a&gt; - Move mediaRecorder in global scope to avoid test timeout. r=jsmith, a=test-only - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/e532119b92ab&#34;&gt;e532119b92ab&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;r= means &lt;em&gt;reviewed by&lt;/em&gt;&lt;br /&gt;a= means &lt;em&gt;uplift approved by&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Previous changelogs:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;http://sylvestre.ledru.info/blog/2014/05/07/changes-firefox-30-beta1-to-beta2&#39;&gt;Firefox 30 beta 1 to beta 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;/p&gt;
</description>
    <content:encoded><![CDATA[<ul>
<li>23 changesets</li>
<li>38 files changed</li>
<li>543 insertions</li>
<li>325 deletions</li>
</ul>

<p><br />
<table><tr><td><strong>Extension</strong></td><td><strong>Occurrences</strong></td></tr>
<tr><td>js</td><td>9</td></tr>
<tr><td>cpp</td><td>8</td></tr>
<tr><td>ini</td><td>4</td></tr>
<tr><td>xul</td><td>3</td></tr>
<tr><td>jsm</td><td>3</td></tr>
<tr><td>h</td><td>3</td></tr>
<tr><td><a href="http://www.tellmewhatis.com/xml">xml</a></td><td>2</td></tr>
<tr><td>html</td><td>2</td></tr>
<tr><td>webidl</td><td>1</td></tr>
<tr><td>sh</td><td>1</td></tr>
<tr><td>py</td><td>1</td></tr>
<tr><td>json</td><td>1</td></tr>
</table><br />
</p>
<p><br />
<table><tr><td><strong>Module</strong></td><td><strong>Occurrences</strong></td></tr>
<tr><td>toolkit</td><td>10</td></tr>
<tr><td>js</td><td>7</td></tr>
<tr><td>dom</td><td>5</td></tr>
<tr><td>browser</td><td>4</td></tr>
<tr><td>testing</td><td>2</td></tr>
<tr><td>image</td><td>2</td></tr>
<tr><td>content</td><td>2</td></tr>
<tr><td>services</td><td>1</td></tr>
<tr><td>netwerk</td><td>1</td></tr>
<tr><td>modules</td><td>1</td></tr>
<tr><td>mobile</td><td>1</td></tr>
<tr><td>layout</td><td>1</td></tr>
<tr><td>gfx</td><td>1</td></tr>
</table><br />
</p>
<p>List of changesets:<br />
<table>
<tr><td><strong>Benoit Jacob</strong></td><td><a href="http://bugzilla.mozilla.org/999445">Bug 999445</a> - Do not fail GLContext initialization if the GL_VERSION is too low. We may get what we need as extensions. - r=jrmuizel, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/f15b4b99adc4">f15b4b99adc4</a></td></tr>
<tr><td><strong>Matt Woodrow</strong></td><td><a href="http://bugzilla.mozilla.org/952721">Bug 952721</a> - Don't crash if our surface allocation fails in TiledContentClient. r=Bas, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/0a9afc76690c">0a9afc76690c</a></td></tr>
<tr><td><strong>Matt Woodrow</strong></td><td><a href="http://bugzilla.mozilla.org/952721">Bug 952721</a> - Base our decision to prerender transformed content on it's screen space size, not the untransformed size. r=tn, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/c0f1a5d2645b">c0f1a5d2645b</a></td></tr>
<tr><td><strong>Nicholas Hurley</strong></td><td><a href="http://bugzilla.mozilla.org/1005958">Bug 1005958</a> - Disable seer. r=mcmanus, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/ae17ae04609b">ae17ae04609b</a></td></tr>
<tr><td><strong>Mark Hammond</strong></td><td><a href="http://bugzilla.mozilla.org/966579">Bug 966579</a> - Fix intermittent browser_social_chatwindow_resize oranges. r=mixedpuppy, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/3c51501a4e52">3c51501a4e52</a></td></tr>
<tr><td><strong>Bobby Holley</strong></td><td><a href="http://bugzilla.mozilla.org/1005806">Bug 1005806</a> - HTMLInputElement.controllers should be [ChromeOnly]. r=bz, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/02e1dd202d67">02e1dd202d67</a></td></tr>
<tr><td><strong>Mike de Boer</strong></td><td><a href="http://bugzilla.mozilla.org/978861">Bug 978861</a>: disable prefillWithSelection on OSX by default, fix its semantics when enabled. r=ehsan, a=sylvestre. - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/b431c1c19a26">b431c1c19a26</a></td></tr>
<tr><td><strong>James Kitchener</strong></td><td><a href="http://bugzilla.mozilla.org/1000079">Bug 1000079</a> - Nullcheck to avoid Windows overwriting length 0 string. r=bsmedberg, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/594456499788">594456499788</a></td></tr>
<tr><td><strong>Douglas Crosher</strong></td><td><a href="http://bugzilla.mozilla.org/1000960">Bug 1000960</a> - IonMonkey (ARM): Correct the order of the operands in moveFloat32. r=mjrosenb, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/10e5a05f34b3">10e5a05f34b3</a></td></tr>
<tr><td><strong>Shu-yu Guo</strong></td><td><a href="http://bugzilla.mozilla.org/1000598">Bug 1000598</a> - Clear TypeCompartment tables. r=billm, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/56d4c53323c0">56d4c53323c0</a></td></tr>
<tr><td><strong>Valentin Gosu</strong></td><td><a href="http://bugzilla.mozilla.org/1005578">Bug 1005578</a> - Change nsIURI object from nsStandardURL to nsJSURI when calling url.href. r=bz, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/0c8b19312abf">0c8b19312abf</a></td></tr>
<tr><td><strong>Jared Wein</strong></td><td><a href="http://bugzilla.mozilla.org/1004576">Bug 1004576</a> - Background tabs are unreadable when the Color Intensity of the window frame is at or near its lowest point (white text on light-grey window frame). r=Gijs a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/ebad9b622f2e">ebad9b622f2e</a></td></tr>
<tr><td><strong>Irving Reid</strong></td><td><a href="http://bugzilla.mozilla.org/900954">Bug 900954</a> - Expose addons.json flush to test harness. r=felipe, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/1c5aa2062579">1c5aa2062579</a></td></tr>
<tr><td><strong>Monica Chew</strong></td><td><a href="http://bugzilla.mozilla.org/1005504">Bug 1005504</a> - Fix telemetry for application reputation. r=gcp, a=sledru - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/2919cce749c0">2919cce749c0</a></td></tr>
<tr><td><strong>Henrik Skupin</strong></td><td><a href="http://bugzilla.mozilla.org/1006298">Bug 1006298</a> - TPS fails to download virtualenv due to the redirect. r=glob, a=testonly DONTBUILD - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/da8b1c15e2b1">da8b1c15e2b1</a></td></tr>
<tr><td><strong>Henrik Skupin</strong></td><td><a href="http://bugzilla.mozilla.org/1003250">Bug 1003250</a> - Disable automatic sync for TPS tests. r=rnewman, a=testonly DONTBUILD - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/68d24bc3a93d">68d24bc3a93d</a></td></tr>
<tr><td><strong>Mark Banner</strong></td><td><a href="http://bugzilla.mozilla.org/975550">Bug 975550</a> Handle python 2.6 when preventing invalid utf-8 being writting to test files. r=ted,a=test-only - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/04c5fcc3831b">04c5fcc3831b</a></td></tr>
<tr><td><strong>Ryan VanderMeulen</strong></td><td><a href="http://bugzilla.mozilla.org/983490">Bug 983490</a> - Disable test_browserElement_inproc_SetInputMethodActive.html and test_browserElement_oop_SetInputMethodActive.html for frequent failures. a=test-only - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/1fc8f2d7a261">1fc8f2d7a261</a></td></tr>
<tr><td><strong>Milan Sreckovic</strong></td><td><a href="http://bugzilla.mozilla.org/994907">Bug 994907</a> - imgDecoderObserver does reference counting on different threads, so should be using thread safe reference counting. r=seth, r=ehsan, a=abillings - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/adafd31af170">adafd31af170</a></td></tr>
<tr><td><strong>Szu-Yu Chen [:aknow]</strong></td><td><a href="http://bugzilla.mozilla.org/1004152">Bug 1004152</a> - Delay telephony.dial for 1s in test cases. r=hsinyi, a=test-only - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/ccde75e4b1af">ccde75e4b1af</a></td></tr>
<tr><td><strong>Nathan Froyd</strong></td><td><a href="http://bugzilla.mozilla.org/997341">Bug 997341</a> - Modify content/xul/document/test/bug497875-iframe.xul to not connect to mozilla.org. r=smaug, a=test-only - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/f59b7498a97f">f59b7498a97f</a></td></tr>
<tr><td><strong>Rob Campbell</strong></td><td><a href="http://bugzilla.mozilla.org/998302">Bug 998302</a> - Connect to about:config instead of about:credits to avoid accessing mozilla.org when the test runs. r=robcee, a=test-only - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/d43267eaf528">d43267eaf528</a></td></tr>
<tr><td><strong>Randy Lin</strong></td><td><a href="http://bugzilla.mozilla.org/969372">Bug 969372</a> - Move mediaRecorder in global scope to avoid test timeout. r=jsmith, a=test-only - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/e532119b92ab">e532119b92ab</a></td></tr>
</table><br />
</p>
<p>r= means <em>reviewed by</em><br />a= means <em>uplift approved by</em></p>
<p>Previous changelogs:<br />
<ul>
<li><a href='http://sylvestre.ledru.info/blog/2014/05/07/changes-firefox-30-beta1-to-beta2'>Firefox 30 beta 1 to beta 2</a></li>
</ul><br />
</p>
]]></content:encoded>
  </item>
  
  <item>
    <title>Changes Firefox 29.0 to 29.0.1</title>
    <link>http://100.109.194.79:1313/blog/2014/05/09/changes-firefox-29-0-to-29-0-1</link>
    <guid isPermaLink="false">843@http://100.109.194.79:1313/blog/</guid>
    <pubDate>Fri, 09 May 2014 23:15:00 &#43;0000</pubDate>
    <dc:creator>sylvestre</dc:creator>
    <category>Mozilla</category>
    <description>&lt;p&gt;29.0.1 fixes the &lt;a href=&#34;http://bugzilla.mozilla.org/1003707&#34;&gt;PDF.js bug&lt;/a&gt;, a &lt;a href=&#34;http://bugzilla.mozilla.org/1001167&#34;&gt;session storage error&lt;/a&gt; and a few other issues on Desktop. For mobile, this release fixes an &lt;a href=&#34;http://bugzilla.mozilla.org/1003897&#34;&gt;encoding issue&lt;/a&gt;, bring back the &#34;Send to tab&#34; feature and a few other minor issues.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;8 changesets&lt;/li&gt;
&lt;li&gt;17 files changed&lt;/li&gt;
&lt;li&gt;110 insertions&lt;/li&gt;
&lt;li&gt;55 deletions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;
&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Extension&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Occurrences&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;js&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;txt&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ini&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;cpp&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&#34;http://www.tellmewhatis.com/xml&#34;&gt;xml&lt;/a&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mn&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;java&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;in&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Module&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Occurrences&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;browser&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mobile&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;widget&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;netwerk&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;modules&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;intl&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;gfx&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;config&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;List of changesets:&lt;br /&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Matt Woodrow&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Backout &lt;a href=&#34;http://bugzilla.mozilla.org/991767&#34;&gt;Bug 991767&lt;/a&gt; for causing &lt;a href=&#34;http://bugzilla.mozilla.org/1003707&#34;&gt;Bug 1003707&lt;/a&gt;. a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/07e9f010bf08&#34;&gt;07e9f010bf08&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ryan VanderMeulen&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Backed out changeset b84e23f32f81 (&lt;a href=&#34;http://bugzilla.mozilla.org/943262&#34;&gt;Bug 943262&lt;/a&gt;) for causing &lt;a href=&#34;http://bugzilla.mozilla.org/1003897&#34;&gt;Bug 1003897&lt;/a&gt;. a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/6b14de55b252&#34;&gt;6b14de55b252&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Richard Marti&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/907373&#34;&gt;Bug 907373&lt;/a&gt; - Fix -moz-os-version media query on Windows 8.1. r=jimm, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/b14554c010ad&#34;&gt;b14554c010ad&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tim Taubert&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1001167&#34;&gt;Bug 1001167&lt;/a&gt; - Don&#39;t let invalid sessionstore.js files break sessionstore. r=smacleod, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/67b273f17641&#34;&gt;67b273f17641&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Richard Newman&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1005074&#34;&gt;Bug 1005074&lt;/a&gt; - Part 1: Rename Send Tab activity. r=mfinkle, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/2d371f067965&#34;&gt;2d371f067965&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Richard Newman&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1005074&#34;&gt;Bug 1005074&lt;/a&gt; - Part 2: Re-enable Send Tab on Beta. r=mfinkle, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/fad6e80495ba&#34;&gt;fad6e80495ba&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Richard Newman&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/987867&#34;&gt;Bug 987867&lt;/a&gt; - JB &amp;amp; KK crash in java.util.ConcurrentModificationException: at java.util.LinkedList.next(LinkedList.java). r=mfinkle,ckitching, a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/5f238cb34fe7&#34;&gt;5f238cb34fe7&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Nicholas Hurley&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#34;http://bugzilla.mozilla.org/1005958&#34;&gt;Bug 1005958&lt;/a&gt; - Disable seer. r=mcmanus a=lsblakk - &lt;a href=&#34;https://hg.mozilla.org/releases/mozilla-beta/rev/bebd4af02d88&#34;&gt;bebd4af02d88&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;/p&gt;
</description>
    <content:encoded><![CDATA[<p>29.0.1 fixes the <a href="http://bugzilla.mozilla.org/1003707">PDF.js bug</a>, a <a href="http://bugzilla.mozilla.org/1001167">session storage error</a> and a few other issues on Desktop. For mobile, this release fixes an <a href="http://bugzilla.mozilla.org/1003897">encoding issue</a>, bring back the "Send to tab" feature and a few other minor issues.</p>

<ul>
<li>8 changesets</li>
<li>17 files changed</li>
<li>110 insertions</li>
<li>55 deletions</li>
</ul>

<p><br />
<table><tr><td><strong>Extension</strong></td><td><strong>Occurrences</strong></td></tr>
<tr><td>js</td><td>7</td></tr>
<tr><td>txt</td><td>2</td></tr>
<tr><td>ini</td><td>2</td></tr>
<tr><td>cpp</td><td>2</td></tr>
<tr><td><a href="http://www.tellmewhatis.com/xml">xml</a></td><td>1</td></tr>
<tr><td>mn</td><td>1</td></tr>
<tr><td>java</td><td>1</td></tr>
<tr><td>in</td><td>1</td></tr>
</table><br />
</p>
<p><br />
<table><tr><td><strong>Module</strong></td><td><strong>Occurrences</strong></td></tr>
<tr><td>browser</td><td>6</td></tr>
<tr><td>mobile</td><td>5</td></tr>
<tr><td>widget</td><td>1</td></tr>
<tr><td>netwerk</td><td>1</td></tr>
<tr><td>modules</td><td>1</td></tr>
<tr><td>intl</td><td>1</td></tr>
<tr><td>gfx</td><td>1</td></tr>
<tr><td>config</td><td>1</td></tr>
</table><br />
</p>
<p>List of changesets:<br />
<table>
<tr><td><strong>Matt Woodrow</strong></td><td>Backout <a href="http://bugzilla.mozilla.org/991767">Bug 991767</a> for causing <a href="http://bugzilla.mozilla.org/1003707">Bug 1003707</a>. a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/07e9f010bf08">07e9f010bf08</a></td></tr>
<tr><td><strong>Ryan VanderMeulen</strong></td><td>Backed out changeset b84e23f32f81 (<a href="http://bugzilla.mozilla.org/943262">Bug 943262</a>) for causing <a href="http://bugzilla.mozilla.org/1003897">Bug 1003897</a>. a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/6b14de55b252">6b14de55b252</a></td></tr>
<tr><td><strong>Richard Marti</strong></td><td><a href="http://bugzilla.mozilla.org/907373">Bug 907373</a> - Fix -moz-os-version media query on Windows 8.1. r=jimm, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/b14554c010ad">b14554c010ad</a></td></tr>
<tr><td><strong>Tim Taubert</strong></td><td><a href="http://bugzilla.mozilla.org/1001167">Bug 1001167</a> - Don't let invalid sessionstore.js files break sessionstore. r=smacleod, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/67b273f17641">67b273f17641</a></td></tr>
<tr><td><strong>Richard Newman</strong></td><td><a href="http://bugzilla.mozilla.org/1005074">Bug 1005074</a> - Part 1: Rename Send Tab activity. r=mfinkle, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/2d371f067965">2d371f067965</a></td></tr>
<tr><td><strong>Richard Newman</strong></td><td><a href="http://bugzilla.mozilla.org/1005074">Bug 1005074</a> - Part 2: Re-enable Send Tab on Beta. r=mfinkle, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/fad6e80495ba">fad6e80495ba</a></td></tr>
<tr><td><strong>Richard Newman</strong></td><td><a href="http://bugzilla.mozilla.org/987867">Bug 987867</a> - JB &amp; KK crash in java.util.ConcurrentModificationException: at java.util.LinkedList.next(LinkedList.java). r=mfinkle,ckitching, a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/5f238cb34fe7">5f238cb34fe7</a></td></tr>
<tr><td><strong>Nicholas Hurley</strong></td><td><a href="http://bugzilla.mozilla.org/1005958">Bug 1005958</a> - Disable seer. r=mcmanus a=lsblakk - <a href="https://hg.mozilla.org/releases/mozilla-beta/rev/bebd4af02d88">bebd4af02d88</a></td></tr>
</table><br />
</p>
]]></content:encoded>
  </item>
  
</channel>
</rss>