Ion is a portable suite of libraries and tools for building client applications, especially graphical ones. It is small, fast, and robust, and is cross-platform across many platforms and devices, including desktops, mobile devices, browsers, and other embedded platforms. Why Use Ion? * Small: < 500k binary size on mobile platforms, often much smaller * Powerful: Tools for faster productivity when developing applications * Robust, portable application infrastructure aids in: * Object lifetime management * Memory allocation * Application start-up and static instances * Threading * Run-time setting editing * Automatic performance instrumentation * More! * Tools for graphics: * Analyze graphics scenes to find performance bottleneck * Trace all OpenGL calls and examine their arguments * Use scene resources in multiple contexts, automatically * Run-time graphics state introspection * Run-time shader editing: change your shaders and immediately see the results * Fast graphics: Minimal overhead between your application and OpenGL / ES * Tested: Well-tested and facilitates testing your application * ~100% test coverage * Black- and white-box tested, unit tests and integration tests * Mock implementation of OpenGL API allows direct renderer unit tests and validation * Integrated Remote: extensible API allows changing arbitrary application settings on-the-fly for faster development, testing, and debugging * Cross-platform: * Desktop: Linux, Mac OSX, Windows (OpenGL) * Handheld: Android (ARM, x86 MIPS), iOS (ARM and x86), and their 64-bit variants * Browser: Emscripten/asm.js, NaCl / pNaCl * Cross-functional * Used by many teams across Google, running on billions of devices through multiple Google products NOTE: This is not an official Google product.