> All of that is valid for a rewrite, but not efficient if you’re porting the current implementation.
Help me see it?
I can easily see how getting rid of the cyclical structure crosses from "line-to-line port" into "rewrite" territory. I'm not saying you're wrong, but I'm having more trouble seeing how "wrap some types in cells and pass along a lifetime and arena parameter" crosses that threshold. It might not be feasible at all, though, if tsc compilations are long-lived for language server + incremental compilation support.
> Why not use a library in the Rust ecosystem to help with this problem e.g. some GC<T> type.
iirc I've seen some experimental GC library mentioned. I think something like that is at least off the beaten path enough that I can see how the author might decide it's better to just use Go instead.
As I understand it, in this case, Rust would be able to have a line to line port from JavaScript.
I do still think your overall point holds. Why not use a library in the Rust ecosystem to help with this problem e.g. some GC<T> type.