Open Bug 1543777 Opened 5 years ago Updated 6 months ago

[meta] Migrate more of content framework code to C++

Categories

(WebExtensions :: General, task)

task

Tracking

(Fission Milestone:Future)

Fission Milestone Future

People

(Reporter: kmag, Unassigned)

References

(Blocks 2 open bugs)

Details

(Keywords: meta)

We still have quite a lot of content-side framework code written in JS, which has some pretty serious performance and memory implications for Fission. We need to migrate more of this to C++.

The first priority should probably be the MessageChannel code, possibly followed by the schema processing and binding generation code, but we should probably do some more thorough analysis before deciding on relative priorities.

I could be wrong, but all these sound doable with Rust, to varying degrees of difficulty (binding generation would I think use XPCOM either way, I doubt that's any worse from Rust than from C++).

Even if it turns out twice as painful, it's in the direction we want to be going anyway, and the result would be worth it IMO.

They're not really doable with Rust at all. A lot of it will need extensive IPDL usage, which is not supported in Rust, and the binding work will need extensive JSAPI and XPConnect work. The former has some amount Rust support. The latter has none.

IPDL support in Rust sounds like something we would want for other parts of Firefox at some point.

Looks like all the pieces for the schemas validation/normalization are there, I might try to prototype that if I get a chance soon.

And for the XPConnect stuff, I know someone who might be able to help us, they're familiar both with WE internals and XPConnect. :)

(In reply to Tomislav Jovanovic :zombie from comment #3)

And for the XPConnect stuff, I know someone who might be able to help us, they're familiar both with WE internals and XPConnect. :)

I don't have the time. And a prerequisite would be adding cycle collector support for Rust, which I really don't have the time for.

Type: defect → task
Type: task → defect
Fission Milestone: --- → M2
Type: defect → task
Fission Milestone: M2 → M3
Fission Milestone: M3 → M4
Depends on: 1555455
No longer blocks: fission
Fission Milestone: M4 → M5
Fission Milestone: M5 → Future
See Also: → 1620447
Severity: normal → S3

The bug assignee is inactive on Bugzilla, so the assignee is being reset.

Assignee: kmaglione+bmo → nobody
You need to log in before you can comment on or make changes to this bug.