]> git.lizzy.rs Git - rust.git/commitdiff
Remove segmented stack info from the FFI chapter of the book.
authorSteve Klabnik <steve@steveklabnik.com>
Mon, 12 Jan 2015 18:41:37 +0000 (13:41 -0500)
committerSteve Klabnik <steve@steveklabnik.com>
Sat, 17 Jan 2015 15:49:49 +0000 (10:49 -0500)
Fixes #20071.

src/doc/trpl/ffi.md

index 940d2c968be677e33d6754e2fd4d0f7e21ed3414..32b60f0a81d0bb3370bba3b31215cfd9de31a052 100644 (file)
@@ -164,29 +164,6 @@ pub fn uncompress(src: &[u8]) -> Option<Vec<u8>> {
 For reference, the examples used here are also available as an [library on
 GitHub](https://github.com/thestinger/rust-snappy).
 
-# Stack management
-
-Rust threads by default run on a *large stack*. This is actually implemented as a
-reserving a large segment of the address space and then lazily mapping in pages
-as they are needed. When calling an external C function, the code is invoked on
-the same stack as the rust stack. This means that there is no extra
-stack-switching mechanism in place because it is assumed that the large stack
-for the rust thread is plenty for the C function to have.
-
-A planned future improvement (not yet implemented at the time of this writing)
-is to have a guard page at the end of every rust stack. No rust function will
-hit this guard page (due to Rust's usage of LLVM's `__morestack`). The intention
-for this unmapped page is to prevent infinite recursion in C from overflowing
-onto other rust stacks. If the guard page is hit, then the process will be
-terminated with a message saying that the guard page was hit.
-
-For normal external function usage, this all means that there shouldn't be any
-need for any extra effort on a user's perspective. The C stack naturally
-interleaves with the rust stack, and it's "large enough" for both to
-interoperate. If, however, it is determined that a larger stack is necessary,
-there are appropriate functions in the thread spawning API to control the size of
-the stack of the thread which is spawned.
-
 # Destructors
 
 Foreign libraries often hand off ownership of resources to the calling code.