1 पॉइंट द्वारा GN⁺ 2024-11-28 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • C-Reduce का उपयोग

    • C-Reduce, Regehr और उनके सहयोगियों द्वारा विकसित एक टूल है, जिसका उपयोग C compiler bug reproducer को न्यूनतम करने के लिए किया जाता है.
    • उदाहरण के लिए, जब आप Clang bug को ट्रिगर करने वाली 10,000 लाइनों की C file को छोटा करना चाहते हैं, तब यह उपयोगी है.
    • C-Reduce केवल C भाषा तक सीमित नहीं है और इसे कई भाषाओं पर लागू किया जा सकता है.
  • C-Reduce की आवश्यकताएँ

    • deterministic condition की आवश्यकता होती है.
    • तेज reproducer होने पर reduction की गति बेहतर होती है.
    • C-Reduce द्वारा छोटा की जा सकने वाली एक या अधिक editable source files की आवश्यकता होती है.
  • RustPython bug का मामला

    • RustPython में हुई bug की रिपोर्ट करने के लिए interesting.sh script लिखी गई.
    • यह script RustPython चलाने के बाद एक खास error message को grep से खोजती है.
  • C-Reduce चलाना

    • C-Reduce चलाकर file size को 50% से अधिक घटाने में सफलता मिली.
    • --not-c option का उपयोग करके C-विशेष passes से बचा गया और इसे Python के लिए optimize किया गया.
    • नतीजतन, file को तेज़ी और आसानी से छोटा किया जा सका.
  • निष्कर्ष

    • C-Reduce को कई भाषाओं पर लागू किया जा सकता है, और यह files को तेज़ी व कुशलता से छोटा करने में उपयोगी है.
    • यह एक open source blog है, इसलिए अगर कोई गलती हो तो बदलाव का सुझाव दिया जा सकता है.

1 टिप्पणियां

 
GN⁺ 2024-11-28
Hacker News टिप्पणियाँ
  • एक उपयोगकर्ता ने फ़ाइल को छोटा करने का तरीका साझा किया और RustPython तथा scrapscript का उपयोग करके इसे सेट अप करने का तरीका समझाया

    • git clone कमांड का उपयोग करके RustPython और scrapscript को clone किया, और cargo build --release से build किया
    • interesting.sh फ़ाइल डाउनलोड की और उसे execute permission दिया
    • nix run nixpkgs#creduce कमांड का उपयोग करके फ़ाइल को छोटा किया
  • C-Reduce के उपयोग की सिफारिश की गई, और साथ में Shrinkray नामक टूल भी आज़माने की सलाह दी गई

    • Shrinkray format-independent है और उन मामलों में भी उपयोगी है जहाँ C-Reduce अच्छी तरह काम नहीं करता
  • उल्लेख किया गया कि C-Reduce पर शोध-पत्र 2012 में प्रकाशित हुआ था

    • John Regehr et al. के पेपर के माध्यम से C-Reduce के काम करने का तरीका समझाया गया
  • C-Reduce के बारे में पहली बार पता चला, और वही रोमांच महसूस हुआ जैसा पहली बार git bisect खोजने पर हुआ था

    • बाद में ज़रूरत पड़ने पर उपयोग करने के लिए इसे याद रखने का निश्चय किया
  • C-Reduce के उदाहरण दिखाने वाला एक लेख मिला, लेकिन हर iteration में क्या हटाया जाए यह कैसे तय होता है, इसे समझना कठिन लगा

    • अनुमान लगाया गया कि कोई tokenization प्रक्रिया होगी, लेकिन यह अलग-अलग programming languages के बीच कैसे काम करती है, यह समझना मुश्किल है
  • C-Reduce को बहुत उपयोगी बताया गया

    • CSmith का उपयोग करके random test programs बनाए जाते हैं, और crash होने पर समस्या को छोटा करने के लिए अपने-आप C-Reduce का उपयोग किया जाता है
  • delta debugging कोई नया विचार नहीं है

    • delta नाम का delta debugging implementation 19 साल से भी पुराना है और open source के रूप में जारी किया गया था
    • LLVM परिचय में इसका उल्लेख standard delta debugging tool के रूप में किया गया है
  • यह SQL में भी अच्छी तरह काम करता है, और कार्यस्थल पर इसका उपयोग किया जा रहा है

    • SQLancer के माध्यम से इसके बारे में पता चला
  • यह समझाना मुश्किल है कि C भाषा के अलावा दूसरी भाषाओं में भी यह कैसे काम करता है, अगर उसके लिए कोई व्याख्या न हो

    • LLM का उपयोग नहीं किया जाता, इसलिए बात और भी उलझाने वाली लगती है
  • C-Reduce के एक अच्छे successor tool के रूप में cvise की सिफारिश की गई

    • assembly programs को न्यूनतम सेट तक घटाने के लिए इसे कई बार इस्तेमाल किया गया है, और यह बहुत उपयोगी प्रोग्राम है