Closed
Description
The new runtime, scheduler, and I/O types are often accessed through unsafe mutable pointers. There are many interrelated runtime features that expect independent access to mutable task-local or thread-local state, and this is difficult to model safely.
Many of the unsafe features that need to be fixed use functions called unsafe_borrow*
, like unsafe_borrow
, unsafe_borrow_io
, unsafe_borrow_local_services
.
More things will need to be passed by value or ~. There are probably useful functional idioms that I'm not familiar with that could help.