1 पॉइंट द्वारा GN⁺ 2025-08-04 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • इस वर्ष IOCCC28 चार साल के अंतराल के बाद फिर शुरू हुआ और विश्वभर के डेवेलपर्स ने बड़ी संख्या में जटिल C code प्रस्तुतियाँ सबमिट कीं
  • वेबसाइट और इंफ्रास्ट्रक्चर का पुनर्निर्माण, mkiocccentry toolkit का इंटीग्रेशन, तथा submission सिस्टम में सुधार जैसे बदलावों से ऑपरेशनल दक्षता में उल्लेखनीय वृद्धि हुई
  • समीक्षा प्रक्रिया पहले की तुलना में अधिक जटिल और कठोर हुई, लेकिन जजिंग अवधि सामान्यतः अपेक्षित समय की तुलना में काफी कम रही
  • code size नियमों में कुछ ढील दी गई, फिर भी कई छोटी लेकिन उच्च गुणवत्ता वाली entries चुनी गईं, इसलिए भविष्य के प्रतियोगिता नियमों में बदलाव की संभावना सीमित मानी जा रही है
  • कई दिलचस्प और रचनात्मक विजेता कार्य, obfuscation techniques तथा प्रयोगात्मक virtual machine/emulator दिखाए गए, जिनसे C programming के स्तर में सुधार में मदद मिली

IOCCC28 का अवलोकन और आयोजन पृष्ठभूमि

  • 2024 में आयोजित 28वां International Obfuscated C Code Contest (IOCCC28) चार साल के विराम के बाद विश्वभर के डेवेलपर्स की भागीदारी वाली एक रचनात्मक और कठिन C code प्रतियोगिता थी
  • इस अवधि में 6,168 से अधिक commits के साथ official IOCCC वेबसाइट को "Great Fork Merge" नाम के तहत व्यापक रूप से rebuild किया गया
  • ऑपरेशन्स में mkiocccentry toolkit, नया registration flow, submission server आदि कई सुधार लागू किए गए, जिससे जजिंग efficiency और code रिलीज़ speed बेहतर हुए
  • 2025 मार्च 5 से 2025 जून 5 तक submissions लिए गए, और समीक्षा केवल "33 दिन" में समाप्त हो गई; प्रतियोगिता समाप्ति के लगभग 2 घंटे के भीतर सभी source code सार्वजनिक कर दिए गए

प्रविष्टियाँ और चयन ट्रेंड

  • इस वर्ष IOCCC28 में entries की संख्या और quality में बड़ी वृद्धि होने के कारण जजिंग कठिन हो गई, और रिकॉर्ड 23 विजेता entries चुने गए
  • "चार साल के break की वजह से बेहतर entries दिखीं, लेकिन कुल मिलाकर प्रतिभागियों ने obfuscation और C programming में स्पष्ट सुधार दिखाया"
  • नया code-size limit लगभग 21% बढ़ाया गया, लेकिन विजेताओं में से आधे से अधिक दो-तिहाई सीमा से नीचे और 10 entries ने आधे से कम size में entries भेजीं, जिससे efficiency और quality दोनों दिखीं
  • इसके कारण आने वाले 10 वर्षों में code-size rules में बदलाव लगभग न होने की संभावना है

जजिंग नियम और भविष्य की योजनाएँ

  • IOCCC rules और guidelines को आगे चलकर और भी innovative तथा intuitive तरीके से revise करने की योजना है; IOCCC Judges दिसंबर 2025 में होने वाली IOCCC29 की तैयारी कर रहे हैं
  • GitHub के IOCCC winner repository और mkiocccentry toolkit repository में pull request आधारित सुधार-पैच भी प्रस्तावित हैं

विजेता चयन और हाइलाइट्स

  • विविध थीम के विजेता चुने गए; मुख्य entries और उनकी खासियतें इस प्रकार हैं

    • ChatIOCCC: Meta की LLaMA 2 पर आधारित open source large language model से बनी दुनिया का शायद सबसे छोटा LLM inference engine, जो मज़ेदार chatbot फीचर देता है
    • Eh: UTF-8 support वाला editor, जो ed(1) से अधिक practical obfuscated code प्रस्तुत करता है
    • 135-byte One-liner: इनपुट किए गए hex मानों के आधार पर अलग-अलग आउटपुट देने वाला अत्यंत छोटा obfuscated code
    • C-Preprocessor Art: हजारों से लेकर लाखों बार preprocessor चलाकर image rendering करने वाला प्रयोग, जिसमें script execution समय बहुत लंबा और अनुभव अलग होता है
    • Z₃ virtual machine: Z-machine के तीसरे संस्करण पर आधारित VM implementation, जिसमें source code interpretation को गेम की तरह enjoy किया जा सकता है
    • C64 emulator के साथ virtual environment: fork bomb, file deletion जैसे हानिकारक scenarios को भी सुरक्षित तरीके से test करने वाली virtual machine, जिसमें C64 भी शामिल है
    • Intel 4004 chip emulation: 1971 में लॉन्च हुई दुनिया की पहली commercial microprocessor circuitry को gate-level तक C code में emulate करने की कलात्मक प्रस्तुति
    • Multilingual puzzle: कम से कम तीन भाषाओं (C, English और अन्य) से परिचित लोगों के लिए नया obfuscation

प्रतिभागी और आगे की सिफारिशें

  • पुराने विजेता कामों से मिलती-जुलती obfuscation को अतिरिक्त अंक नहीं मिलते; रचनात्मकता और completeness ही मुख्य जजिंग मानदंड बने रहते हैं
  • बिना पुरस्कार वाली entries वाले प्रतिभागियों को सुधार करके फिर से प्रयास करने या अलग approaches आजमाने की सलाह दी गई
  • non-winning entries का अलग से सार्वजनिक होना भी स्वागत योग्य है

विजेता code की compile और रन गाइड

  • कुछ C compilers में compatibility issues हो सकते हैं, इसलिए latest clang या gcc इस्तेमाल करने की सलाह दी गई है
  • FAQ और official दस्तावेज़ों में troubleshooting और fixes submit करने की प्रक्रिया बताई गई है

2024 IOCCC28 विजेता डाउनलोड

  • सभी विजेता entries एक compressed फाइल (2024.tar.bz2) के रूप में उपलब्ध हैं, और प्रत्येक entry का detailed webpage, source code तथा लेखक टिप्पणियाँ देखकर अद्वितीय obfuscation techniques सीखी जा सकती हैं

(विजेता एंट्री डाउनलोड लिंक और प्रत्येक विजेता का अलग विवरण सीधे उपलब्ध हो तो उसे देखने के लिए official साइट देखें)

1 टिप्पणियां

 
GN⁺ 2025-08-04
Hacker News टिप्पणियाँ
  • वाकई कमाल है :)
    यह कोड अभी के चाँद के phase को console में ड्रॉ करता है। अगर मैं वेयरवुल्फ होता, तो चाँद के phase को देख पाता।
  • यह कोड donut.c को एक तरह का homage लगता है
    donut.c संदर्भ लिंक
  • यह कोड 1988 में pi की value निकालने वाले IOCCC entry जैसा भी थोड़ा महसूस होता है
    1988 pi calculation code संदर्भ
  • इसे Compiler Explorer में सीधे देखा जा सकता है
    Compiler Explorer पर जाएँ
  • इस कोड को compile करने का तरीका नीचे है
cc -Wno-implicit-int -Wno-implicit-function-declaration phase.c && ./a.out
  • redesign की वजह से पुराने IOCCC entries के सारे links टूट गए। दशकों से Wikipedia जैसी कई sites पर फैले हुए links बिना redirect के बंद हो गए, और अब Github पर entries देखने के लिए JavaScript support वाला browser ज़रूरी हो गया है
  • बिना JS वाले environment में access करना हो तो git clone से repository clone करनी होगी
  • इस entry को देखते हुए मैंने पुराने IOCCC submissions भी पढ़े। यह image decompression one-liner source code की hash value को argument के रूप में लेने पर अपना logo image खुद output करता है। यह बहुत ही अद्भुत है
  • मैं सोच रहा था कि यह hash trick कैसे काम करती है, और notes में उसकी explanation है। वैसे notes भी बहुत मज़ेदार हैं
    उसमें लिखा है, "संक्षिप्तता को कठिनता से ऊपर रखा जाता है, लेकिन यह program भी अब तक IOCCC के clarity standards को पूरा करता है"
  • एक सचमुच हैरतअंगेज़ संयोग से, input format के bits की संख्या लगभग उस log2 के बराबर है जितनी MD5 evaluations एक पाँच साल पुराना GPU एक घंटे में कर सकता है
  • यह वही व्यक्ति है जिसने jq भी बनाया है
  • यह 135 bytes में लिखा गया है! यह लगभग पागल वैज्ञानिक स्तर का code है। सचमुच यकीन करना मुश्किल है
  • IOCCC entry rules शानदार हैं। ये बहुत specific नियम हैं जो साफ़ दिखाते हैं कि अतीत में इन्हें किस तरह exploit किया गया था
Rule 2

Rule 2 का पालन करने के लिए entry को Rule 2a और 2b दोनों को संतुष्ट करना होगा  
`iocccsize(1)` tool से जाँचा जा सकता है कि code इस rule को pass करता है या नहीं  
बस `prog.c` जैसी file name को argument के रूप में देना होता है

Rule 2a  
program source का आकार 4993 bytes से ज़्यादा नहीं होना चाहिए

Rule 2b  
`iocccsize(1)` tool से code size मापने पर output value 2503 से अधिक नहीं होनी चाहिए

इस बारे में अधिक जानकारी के लिए FAQ या Rule 17 देख सकते हैं
  • तो इसका मतलब file name में 2053 bytes का अतिरिक्त data रखना allowed है। उम्मीद से ज़्यादा ढीला rule है
  • 4993 bytes, यह इतना अजीब-सा specific number क्यों चुना गया होगा, यह सोचने पर मजबूर करता है
  • काश underhanded-c.org फिर से खुल जाए
  • शायद C का इस्तेमाल न करने के लिए इससे बेहतर दलील अलग से चाहिए ही नहीं। यह एक काफ़ी साफ़ और गंभीर निष्कर्ष लगता है
  • ऐसी obfuscated code किसी भी language में लिखी जा सकती है। C इस काम के लिए खास तौर पर अच्छी लगती है, लेकिन ज़्यादातर IOCCC entries ऐसी tricks इस्तेमाल करती हैं जो कई languages पर लागू हो सकती हैं
  • यह मेरी पसंदीदा IOCCC submissions में से एक है, और award winner भी है
    2005 persano.c देखें
  • अगर मैं programmer होता, तो शायद मेरा काम भी दूसरों को शुद्ध बेतुके cipher जैसा दिखता
  • यह सचमुच शानदार है
    2024 macke entry
    यह program बेहद कम features के साथ पूरे modern Linux system को चलाने वाला emulator है
  • मैं इसका author हूँ। यह binary 1.6MB में modern Linux चलाती है। size को जितना हो सके छोटा करने के लिए मैंने हर तरह की तरकीबें इस्तेमाल कीं। इसे WebAssembly में भी compile किया गया है, इसलिए यह browser के अंदर भी चल सकता है
  • यह entry मुझे काफ़ी ज़्यादा confusing लगी