This mostly covers unification with CoreCLR.
Unification with Mono is nearly done in #76173
A followup to #75436
Since we employ eager finalization, some simplifications are possible. Managed implementation in NativeAOT would be an example.
Ideally CoreClr switches to a managed implementation like in NativeAOT, which seems a lot simpler as it does not need to deal with concerns such as protecting the referenced object and the weak reference instance itself.
The problematic part could be the COM/WINRT/IWeakReference support. Perhaps it can be done via FCall callouts.