8769409612
I need these in the context of doing various malloc/free operations for libuv structs that need to live in the heap, because of API workflow (there's no stack to put them in). This has cropped up several times when impl'ing the high-level API for things like timers, but I've decided to take the plunge and use this approach for the net::tcp module. Technically, this can be avoided by spawning a new task that contains the needed memory structures on its stack and then having it block for the duration of the time we need that memory to be valid (this is what I did in std::timer). Exposing this API provides a much lower overhead way to address the issue, albeit with safety concerns. The main mitigation policy should be to use malloc/free with libuv handles only when the handles, are then associated with a resource or class-with-dtor. So we have a finite lifetime for the object and can gaurantee a free(), barring a runtime crash (in which case you have bigger problems!) |
||
---|---|---|
.. | ||
cargo | ||
compiletest | ||
etc | ||
fuzzer | ||
libcore | ||
librustsyntax | ||
libstd | ||
libuv@1170ffba3a | ||
llvm@3a57b672f8 | ||
rt | ||
rustc | ||
rustdoc | ||
rustllvm | ||
test | ||
README.txt | ||
snapshots.txt |
This is preliminary version of the Rust compiler, libraries and tools Source layout: rustc/ The self-hosted compiler libcore/ The core library (imported and linked by default) libstd/ The standard library (slightly more peripheral code) librustsyntax/ The Rust parser and pretty-printer rt/ The runtime system rt/rust_*.cpp - The majority of the runtime services rt/isaac - The PRNG used for pseudo-random choices in the runtime rt/bigint - The bigint library used for the 'big' type rt/uthash - Small hashtable-and-list library for C, used in runtime rt/sync - Concurrency utils rt/util - Small utility classes for the runtime. rt/vg - Valgrind headers rt/msvc - MSVC support test/ Testsuite test/compile-fail - Tests that should fail to compile test/run-fail - Tests that should compile, run and fail test/run-pass - Tests that should compile, run and succeed test/bench - Benchmarks and miscellanea test/pretty - Pretty-printer tests test/auxiliary - Dependencies of tests compiletest/ The test runner cargo/ The package manager rustdoc/ The Rust API documentation tool llvm/ The LLVM submodule libuv/ The libuv submodule rustllvm/ LLVM support code fuzzer/ A collection of fuzz testers etc/ Scripts, editor support, misc