Recs.
Updated
Emscripten is an LLVM-to-JavaScript compiler. It takes LLVM bitcode - which can be generated from C/C++, using llvm-gcc or clang, or any other language that can be converted into LLVM - and compiles that into JavaScript, which can be run on the web (or anywhere else JavaScript can run).
SpecsUpdate
Pros
Pro Extremely high performance
When it comes to performance, there's no competing with native code. Any interpreted language incurs some overhead due to its data model and access patterns. This overhead can be mostly eliminated by using asm.js, which allows the VM to translate all but system calls to efficient undecorated native code.
Cons
Con Suffers from fundamental design flaws of C and older C++ specifications
Due to attempting to be fully backward compatible, it continues to implement features on top of broken implementations of past concepts. In example, lack of type safety, poor memory management, lack of unit testing, lack of modules, and has the same fundamental problem of header files.