Nix ने आधा Debugger खुद लिख दिया

मूल शीर्षक: Nix wrote half of my debugger

यह क्यों महत्वपूर्ण है

Nix की reproducibility को debugging infrastructure के रूप में इस्तेमाल करना developer tools के लिए एक नई सोच खोलता है।

Farid Zakaria ने Rewind VM नामक एक deterministic VM बनाया जो Nix builds में race conditions पकड़ता है। उनके अनुसार debugger की आधी जटिलता Nix ने पहले से हल कर दी थी।

Farid Zakaria के ब्लॉग पोस्ट (7 अक्टूबर 2026) के अनुसार, उन्होंने Rewind VM विकसित किया — एक ऐसा VM जहाँ हर Nix build एक pure function है, thread schedule समेत। इसका मतलब है कि हर run पूरी तरह reproducible होता है।

उन्होंने एक सरल race condition का उदाहरण दिया: दो threads एक ही bank account में पैसे जमा कर रही हैं। 16-core laptop पर 1,000 में से 396 runs में पैसे गायब हो गए। Rewind VM ने `rewind check` कमांड से मात्र 11 सेकंड में वह exact step (step 3237) खोज निकाला जहाँ schedule बदलने से run fail होता है।

Zakaria का मुख्य बिंदु यह है कि एक debugger को program के inputs, debug symbols, sources, libraries, और दूसरे की machine पर reproduce करने का तरीका चाहिए — और यह सब Nix derivation पहले से प्रदान करती है। Rewind VM derivation के inputs को erofs image में pack करके VM boot करता है। Run का ID उसके inputs का hash होता है, ठीक store path की तरह।

Tool में source panel, stack frames, bookmarks, Compare tab, gdb support, और thread lanes जैसे features जुड़ चुके हैं। Zakaria कहते हैं कि हर नए feature में hard part पहले से Nix ने कर दिया था।

स्रोत

fzakaria.com — मूल लेख पढ़ें →