proj-plbook-plPartImplementationTools

Table of Contents for Programming Languages: a survey

LLVM

See LLVM

PyPy

See PyPy

JVM

See JVM

CLR

See CLR

Other runtimes and runtime libraries

See also targets, IRs, VMs and runtimes

Apache Portable Runtime

"OS threads, blocking IO, and other system things"

libuv

asynchronous I/O and some other stuff.

Used by nodejs, Rust language, Luvit, Julia, pyuv, MoarVM?.

libumem

Used by nodejs

helps with debugging memory leaks (see http://www.joyent.com/blog/walmart-node-js-memory-leak for an example)

Other useful runtime libraries

libatomic_ops

"Provides implementations for atomic memory update operations on a number of architectures"

"Note that experience with this package contributed to the design of C11 and C++11 atomics, which represent a careful refinement of the API. If your platform supports well-implemented C11 or C++11 atomics, please use those instead. "

documentation: http://en.cppreference.com/w/c/atomic

C11 atomics:

All of the above atomics take an optional parameter, memory_order, which can be one of relaxed memory_order_relaxed, memory_order_consume, memory_order_acquire, memory_order_release, memory_order_acq_rel, memory_order_seq_cst. The default is memory_order_seq_cst (the strongest sequencing condition). Here's what these do: http://en.cppreference.com/w/c/atomic/memory_order

"Members of an atomic struct/union may not be accessed individually. The whole struct must first be copied to a non-atomic variable of compatible type."

"The ++,--, and compound assignment operators (e.g. +=) are atomic read-modify-write operations."

-- http://fileadmin.cs.lth.se/cs/Education/EDAN25/F06.pdf

Links