Nguồn: Martin Farre’s Blog
Tóm tắt
Mozilla engineer Martin Farre mô tả cách đạt được cải thiện 17% trong build time của Firefox bằng cách implement caching cho WebIDL code generation step. WebIDL (Web Interface Definition Language) là một ngôn ngữ dùng để define các browser APIs — Firefox có hàng trăm WebIDL files phải được compiled thành C++ code trong mỗi build.
Vấn đề gốc: WebIDL code generation là một quá trình expensive chạy mỗi lần build, ngay cả khi không có WebIDL files nào thay đổi. Giải pháp là implement một content-addressed cache — nếu inputs (WebIDL files + codegen scripts) không thay đổi, cached output được reuse thay vì generate lại.
Implementation không đơn giản vì codegen phụ thuộc vào nhiều factors ngoài WebIDL files: Python scripts, build configuration, và một số implicit dependencies. Bài viết mô tả cách identify và hash tất cả relevant inputs để đảm bảo cache correctness. Kết quả là 17% improvement cho incremental builds và đáng kể hơn cho clean builds — một chiến thắng lớn cho developer experience khi làm việc trên codebase lớn như Firefox.