Bug 1163224 has landed on inbound, which means that Gecko builds with
--enable-rust now support multiple Rust crates.  This change is
intended to make the lives of people developing Rust components
easier, and it comes with several caveats:

1) There is zero support for interdependencies between crates, so you
have to structure your crate as one big crate that includes any
dependencies, rather than several separate crates, as is the norm.
This is clearly suboptimal, and it will be fixed.  I think it's an
open question exactly how we're going to integrate multiple crates and
external projects anyway, so feel free to experiment!

2) We do not have Rust support on all of our Tier 1 platforms (Android
is still being worked on), so actually depending on Rust code
everywhere is still not possible.

3) Due to bug 1178897, Rust code uses a completely different memory
allocator than the rest of Gecko.  We therefore don't have any
visibility into Rust's memory allocations through things like
about:memory, using Rust code worsens fragmentation issues, and there
are also edge cases with allocating in C++ and freeing in Rust (or
vice versa).  This is obviously something we're going to fix, ideally
soon.

We --enable-rust on all of our Tier 1 desktop platforms, but given 2)
and 3) above, it seems best to limit the amount of Rust code we
actually ship.  So if you want to land Rust components in-tree right
now, I'd recommend gating your component behind an --enable-shiny
configure option.  Ideally 2) and 3) will be fixed in short order, 1)
will be ironed out, and then the real fun can begin!

Thanks,
-Nathan
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to