Hello list. I'm a Rust newbie and I'm really excited about this language
As a process of knowing each other, I'm implementing a libgit2 bindings for Rust. (You can look at the code at here: https://github.com/kimhyunkang/git2-rs though it has virtually no features for now.) libgit2 uses thread local storage to store and retrieve error info from last library call. But the Rust tutorial states that tasks are considered green threads. As far as I can understand, that means tasks are not mapped 1:1 to OS thread, thus making thread-local storage unsafe for direct use. Then I rememberd errno, another thread local storage that I know of, and checked the source code to find out how core::os handles errno. But core::os::errno seems to just call __errno without locking or blocking anything. So, the question is: How does the runtime makes sure that errno is not overwritten by another syscall failure? Is it safe to ignore the possibility of another task scheduled into the same OS thread? - kimhyunkang _______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev
