On Sun, Mar 20, 2016 at 9:53 PM, Petr Cerny <pce...@suse.cz> wrote:
> I can't speak for Debian, but on SLE the solution we went for last time was
> packaging new-enough GCC for older supported code streams, very much like
> other packages (e.g. GTK) we had already needed way before.

This seems like a reasonable solution. As noted, it appears that
Ubuntu backports GCC, too.

>> The comments on https://bugzilla.mozilla.org/show_bug.cgi?id=1175546
>> suggest that Mozilla deferred relying on GCC bug fixes until after 45
>> ESR in order for Debian not to have to backport a compiler for
>> oldstable. Is that the case? That is, is Debian's policy already
>> hindering Mozilla's ability to avoid C++ compiler bugs that the
>> compiler upstream has fixed?
>
>
> TL;DR version: change whatever you need, but please do announce the intent
> loudly, clearly and early enough.

Great!

> Longer version:
>
> It definitely is not just Debian. With all due respect, Mozilla doesn't rule
> an isolated island - like all others it shares a jungle with other animals
> of varying sizes, shapes and habits.

Yes, but the Linux jungle depends on the outside for the browser
engines (Gecko, Blink and WebKit) that it relies on and the numbers
that Web developers look to assess the relevance of these engines
(which translates into whether sites are made in a way that these
engines work for Linux users) happens outside the Linux jungle. It's
not reasonable for a part of the already small jungle to be entitled
to limit the Gecko development inside and outside the jungle to old
compilers.

I want us to have good Linux support, I want obtaining our product to
be convenient for Linux users and I don't want conflicts with the
distros. I started this thread in order to avoid a situation where
nobody saw it coming that we'd be about to land a patch that broke the
distros' workflow by surprise. But consider: Rust as a technology
works the best on Linux. (IIRC, debugging info works better on Linux
than on Mac and it's pretty clear that Linux and Mac are better
matches for Rust development than Windows.) It's very messed up that
the tech that works the best on Linux is the hardest to ship to users
on Linux.

> I'm quite sure there are problems with
> other compilers/systems than just GCC/Linux, but due to their larger target
> user deployment and distribution model, they are being worked around. I know
> it is different (in *many* aspects), but just imagine you had to solve a
> similar issue with Microsoft or Apple (i.e. them distributing Firefox and
> strongly preferring to build it with what they use for building the rest of
> their systems with).

I don't think a comparison with Microsoft and Apple is in the distros'
favor. Microsoft's undocumented ABI has the practical effect of
locking us to their C++ compiler, but they don't make us use just the
C++ features and compiler bugs that were available when Windows XP
shipped. Apple promotes clang and we are at liberty to use clang from
llvm.org instead of Apple-shipped clang and we have the option to
patch clang if we need to.

As for imagining if Microsoft and Apple imposed requirements that they
don't: The important point is that they don't!

As for iOS, the requirement to use an Apple-designated language or
compiler is gone. The policy problem with Apple is that they ban the
class of product that we'd like to build on iOS. But AFAICT, using a
rustc version of the developer's choice to build other kinds of
products is already permitted on iOS.

> Yet back to the point: you certainly can change whichever tool you need or
> want, but the timing is crucial. Stable distribution maintainers are used to
> these things happening every once in a while, so if you announce it loudly a
> couple of releases ahead, it will be perfectly fine and nobody is going to
> complain

Not even Debian?

> Generally, I think it shouldn't really be perceived as: "Linux distributions
> are hindering our development", rather as being polite and respectful in a:
> "Let's not make much more work for them unless it is really, really
> necessary" manner. Which is exactly what shifting such a change from before
> to after a major ESR release is.

Considering how quickly Rust is progressing, chances are that the
Firefox will pick up new rustc releases faster than on a 10-month
cycle, so it will probably be safe to assume that every time there a
new major release becomes ESR, it'll require a newer rustc than the
previous ESR. But a mindset of "Linux distros can just ship ESR and
deal with rustc at 10-month intervals" isn't a great solution when the
distros have a non-enterprise audience or when the distros ship
Chromium every six weeks; see below.

> I think both sides want to achieve the same in the end: having a stable and
> secure Firefox.

It's not clear that that's the case when it comes to what "stable"
actually means. If "stable" means "doesn't crash", sure. If "stable"
means "out-of-date", the goals may not be aligned. There is a strong
tendency towards "out-of-date" being seen as presumptively good in the
enterprise space and Mozilla already accommodating that with ESR.
However, when ESR spills over to a non-enterprise space (or to an
enterprise that can entertain the idea of using Chrome/Chromium on a
six-week update cycle), then having Firefox be "stable" as in
"out-of-date" is not well aligned with moving the Web forward or being
competitive with Chrome. That's why I think only shipping ESR would
not be a good mechanism to deal with the upcoming rustc build
dependency.

On Mon, Mar 21, 2016 at 7:51 AM, Chris Peterson <cpeter...@mozilla.com> wrote:
> How does Debian bootstrap other compilers like Go that are partially
> self-hosted? Would a Rust compiler written in C/C++ (e.g. generated by an
> LLVM back-end that emitted C/C++ code?) avoid the bootstrap policy
> requirements?

I think it's not fruitful to explore this angle. Evidently Debian is
less strict about bootstrapping than Fedora (see what Sylvestre said
in this thread; he is one of the Debian rustc packagers), and Fedora
doesn't require bootstrapping from a compiler they already ship,
either. As far as bootstrapping goes, the Fedora policy non-compliance
issue is that currently rustc doesn't fulfill these (pretty
reasonable, IMO) properties:
> 2) Stable channel rustc being able to compile its corresponding
> standard library.
> 3) Stable channel rustc being able to compile itself.
> 4) Stable channel rustc being able to be compiled with the previous
> stable channel rustc.

So as far as bootstrapping in distros goes, I think the focus should
be on those properties and not on something more complex, and the
comments from the members of the Rust core team in this thread suggest
that things are on a good track when it comes to achieving those
properties.

-- 
Henri Sivonen
hsivo...@hsivonen.fi
https://hsivonen.fi/
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to