1ec9adcfc0
There have been some recent panics on the bots and this commit is an attempt to appease them. Previously it was considered invalid to run `rt::at_exit` after the handlers had already started running. Due to the multithreaded nature of applications, however, it is not always possible to guarantee this. For example [this program][ex] will show off the abort. [ex]: https://gist.github.com/alexcrichton/56300b87af6fa554e52d The semantics of the `rt::at_exit` function have been modified as such: * It is now legal to call `rt::at_exit` at any time. The return value now indicates whether the closure was successfully registered or not. Callers must now decide what to do with this information. * The `rt::at_exit` handlers will now be run for a fixed number of iterations. Common cases (such as the example shown) may end up registering a new handler while others are running perhaps once or twice, so this common condition is covered by re-running the handlers a fixed number of times, after which new registrations are forbidden. Some usage of `rt::at_exit` was updated to handle these new semantics, but deprecated or unstable libraries calling `rt::at_exit` were not updated. |
||
---|---|---|
.. | ||
collections | ||
ffi | ||
fs | ||
io | ||
net | ||
num | ||
old_io | ||
old_path | ||
prelude | ||
rand | ||
rt | ||
sync | ||
sys | ||
thread_local | ||
time | ||
ascii.rs | ||
bool.rs | ||
dynamic_lib.rs | ||
env.rs | ||
lib.rs | ||
macros.rs | ||
os.rs | ||
panicking.rs | ||
path.rs | ||
process.rs | ||
rtdeps.rs | ||
thread.rs | ||
thunk.rs | ||
tuple.rs | ||
unit.rs |