The first project to be released in the tcg.hackspace is proj.phil – an investigation into rapid iteration of a C++ code base published straight to the web.
Speed of iteration is the key to turning great ideas into great products. The web allows for near instant access to near limitless knowledge, yet C++ is still the go to language for high performance computing. Until recently, those worlds could never quite collide – C++ could be used to form the basis for native server implementations but – without the use of bespoke browser plugins – languages such as JavaScript or .NET would always be required to fulfill client-side web scripting. The trade off being speed of runtime versus speed of deployment. While adopting such a mix of technologies comes with the added complexity of having to maintain multiple skill sets and code bases within a team, or worse still, a coordinated effort across multiple teams.
Recent developments, however, have allowed developers to get close to achieving the best of both worlds. With the introduction of asm.js, client side code has the ability to achieve near native performance within the browser all be it with an additional cost to the ease of implementation. (Visit for a breakdown of the relative performance between native C++ and asm.js) Meanwhile, the LLVM toolchain has provided the ability for ISO standard C++ (amongst other languages) to be compiled into an intermediate language (IL) without the need for extensions. In addition, LLVM provides an extensible framework for the development of other tools. One such tool is the Emscripten compiler frontend, which forms the final piece of the puzzle, by compiling LLVM bitcode into asm.js.
By embracing LLVM and Emscripten, along with tools such as Gulp and Node.js, it is possible to revolutionise the traditional, staid C++ workflow into a rapid, iterative development model much more familiar to web developers. Such a workflow may seem a pipe dream but the intersection of technologies is now at a point of maturity where it is being embraced by both Unity and Unreal for their web publishing models. proj.phil provides the first simple building block for achieving such a workflow. We hope you find it useful.