The recent introduction of nocc, a distributed C++ compiler developed at VK.com, has sparked an engaging discussion within the developer community about various distributed compilation solutions. While nocc aims to improve C++ compilation performance, particularly for large codebases, the community has highlighted several established alternatives that serve similar purposes.
![]() |
---|
Visual representation of the distributed compilation process using the nocc compiler, showcasing various tasks executed in parallel |
Diverse Ecosystem of Distributed Build Tools
The development community has identified numerous mature solutions in the distributed compilation space. These range from commercial offerings like IncrediBuild and SN DBS (widely used in game development) to open-source alternatives such as icecream, distcc, and Bazel. Each tool brings its own approach to solving the challenges of distributed compilation.
From the README this tool has been built because distcc was too slow
Performance and Integration Considerations
A significant point of discussion centers around performance comparisons, particularly between nocc, distcc, and icecream. Community members note that while distcc has known performance limitations, icecream has successfully addressed many of these issues, particularly in load balancing and work distribution across build nodes. The discussion suggests that comparing nocc against icecream would provide more meaningful insights than comparisons with distcc alone.
Technical Challenges and Implementation Concerns
Technical experts in the community have identified several areas where nocc could be improved. These include handling SHA256 hash conflicts during rapid file modifications, optimizing job distribution, and implementing proper compiler version detection across build nodes. These suggestions reflect the community's deep understanding of distributed compilation challenges and their potential solutions.
Build System Integration
The discussion reveals varying approaches to build system integration. While nocc focuses on simplicity and integration with existing build systems, tools like Bazel take a more comprehensive approach. This has led to debates about the trade-offs between simplicity and features, particularly regarding system library dependencies and cross-platform compatibility.
In conclusion, while nocc represents a new approach to distributed C++ compilation, the community discussion highlights the rich ecosystem of existing solutions. Each tool offers different trade-offs between ease of use, performance, and feature completeness, suggesting that the choice of tool should depend on specific project requirements and infrastructure constraints.
Reference: nocc — a distributed C++ compiler