Glslang is a compiler and validator that serves as the Khronos-reference front end for GLSL and ESSL shader languages, with partial support for HLSL and a SPIR-V code generator.
The tool addresses the need to validate shader code and translate it into intermediate representations for graphics pipelines. It parses GLSL and ESSL source code into an abstract syntax tree, which can then be translated to SPIR-V, Khronos's standardized intermediate language. The GLSL and ESSL front ends are feature-complete and carry the weight of official specifications. The AST-to-SPIR-V back end is also virtually complete. A reflector component provides APIs for extracting reflection information about types and variables from the parsed shader source.
Developers should adopt glslang if they need authoritative validation of GLSL or ESSL shaders or require compilation to SPIR-V for use in graphics applications. It is the reference implementation maintained by Khronos and is suitable for projects that depend on standards-compliant shader compilation. The HLSL front end is deprecated and will be removed at the next major version, so projects requiring HLSL support should plan migration or maintain a fork. The tool can be used as a command-line utility or integrated as a library, and building it as a shared library or DLL is now supported.
The project maintains continuous integration and deployment pipelines. Development activity includes ongoing refinement of binding control options, such as the recent separation of texture and combined sampler binding shifts. Certain utilities have been migrated to related Khronos projects, such as the spirv-remap functionality moving to SPIRV-Tools as an optimization pass. The reflector component remains a work in progress without a formal specification to measure against, though it accurately reflects the input source and AST.