Some traits in jrsonnet have as_any/as_any_mut methods
Those methods might be removed by making Any a supertrait of those, but it will be only possible with
Many good Rust GC designs with explicit root tracking (Like https://github.com/withoutboats/shifgrethor) require method receivers to be typed as in fn method(self: Gc<Self>), this requires
(This is also possible to implement with rustc_driver, which implements required linting, as in servo... But this is uglier, and requires using separate compiler)
Until then, current Gc is a reference counting with cycle collection instead, as we can't reliably track roots.
rust-gc, which was used previously, spends too much time tracking roots, so its approach is not practical.
To remove as_any[_mut] methods
Some traits in jrsonnet have as_any/as_any_mut methods Those methods might be removed by making Any a supertrait of those, but it will be only possible with
Better GC
Many good Rust GC designs with explicit root tracking (Like https://github.com/withoutboats/shifgrethor) require method receivers to be typed as in
fn method(self: Gc<Self>)
, this requires(This is also possible to implement with rustc_driver, which implements required linting, as in servo... But this is uglier, and requires using separate compiler)
Until then, current Gc is a reference counting with cycle collection instead, as we can't reliably track roots.
rust-gc
, which was used previously, spends too much time tracking roots, so its approach is not practical.