1 puan yazan GN⁺ 2025-08-04 | 1 yorum | WhatsApp'ta paylaş
  • Bu yılki IOCCC28, dört yılın ardından tekrar başladı ve dünyadan geliştiricilerin zorlayıcı C kodu eserleri yoğun şekilde gönderildi
  • Web sitesi ve altyapının yeniden inşası, mkiocccentry toolkit’in kullanıma alınması, gönderim sisteminin iyileştirilmesi gibi adımlarla operasyon verimliliği ciddi biçimde arttı
  • Değerlendirme süreci geçmişe göre daha karmaşık ve sıkı hale gelmiş olmasına rağmen, değerlendirme süresi olağandan belirgin şekilde kısaldı
  • Kod boyutu kuralları rahatlatılmış olsa da, küçük ve yüksek kaliteli eserlerin çoğu seçildi; bu nedenle gelecekteki yarışma kural değişikliklerinin sınırlı kalması bekleniyor
  • İlginç ve özgün ödül eserleri ile obfuscation teknikleri, deneysel sanal makine ve emülatörlerin gösterilmesi C programlama seviyesinin gelişmesine katkı sağladı

IOCCC28 Genel Bakış ve Düzenleme Arka Planı

  • 2024’te düzenlenen 28. International Obfuscated C Code Contest (IOCCC28), 4 yıllık bir ara sonrasında dünyanın her yerinden geliştiricilerin katıldığı yaratıcı ve anlaşılması güç bir C kod yarışmasıydı
  • Bu süreçte resmi IOCCC web sitesi, 6.168’den fazla commit ile "Great Fork Merge" adı altında büyük ölçekli şekilde yeniden inşa edildi
  • Operasyonel açıdan mkiocccentry toolkit, yeni kayıt süreci, submission server gibi yenilikler uygulandı; böylece değerlendirme verimliliği ve kaynak kodu açılma hızı iyileştirildi
  • 2025’in 5 Mart’ından 2025’in 6 Haziran’ına kadar gönderim alındı ve değerlendirme sadece **"33 gün"**de tamamlandı; yarışma bittikten yaklaşık 2 saat içinde tüm kaynak kodları yayınlandı

Başvurular ve Seçim Eğilimleri

  • Bu yılki IOCCC28, başvuru sayısı ve kalitesi büyük oranda yükseldiği için değerlendirme zorluğu da arttı ve dönem rekoru olan 23 ödül sahibi çıktı
  • "4 yıl ara olması daha iyi başvurulara yol açmış olsa da, genel olarak katılımcılar obfuscation ve C programlama becerilerinde görünür bir gelişme kaydetti"
  • Yeni kod boyutu sınırında (yaklaşık %21 artış) değişiklik uygulanmasına rağmen, kazananların yarısından çoğu toplam sınırlamanın 2/3’ünden daha aşağısında, 10’u ise yarısından da daha düşük bir boyutta sunularak verimlilik ve kaliteyi birden gösterdi
  • Bu nedenle önümüzdeki 10 yıl boyunca kod boyutu kurallarında büyük bir değişiklik beklenmiyor

Değerlendirme Kuralları ve Gelecek Planlar

  • IOCCC kuralları ve kılavuzları ileride daha yenilikçi ve sezgisel biçimde revize edilecek; IOCCC Jürisi, 2025 Aralık ayında planlanan IOCCC29’un hazırlıklarına başlayacak
  • GitHub IOCCC winner deposu ile mkiocccentry toolkit deposuna yönelik Pull Request tabanlı düzeltme yamaları da planlanıyor

Ödül Eserleri Tanıtımı ve Öne Çıkanlar

  • Çeşitli temalarda ödül eserleri seçildi ve bunlar arasında şu temel projeler ve özellikler öne çıktı

    • ChatIOCCC: Meta’nın LLaMA 2 tabanlı açık kaynaklı büyük dil modelini, dünya üzerindeki en küçültülmüş LLM çıkarım motorlarından biri olarak uygulayarak eğlenceli bir sohbet botu işlevi sunuyor
    • Eh: UTF-8 aksanı eklenmiş bir düzenleyici (editor) olarak, ed(1)’den daha pratik bir obfuscated kod uygulaması
    • 135 Bayt Tek Satır Kod: Girilen onaltılık değerler üzerinden farklı çıktılar üreten, uç derecede kısa bir obfuscation kodu
    • C Ön İşlemci Sanatı: Görüntü render etmek için binlerce ile yüz binlerce kez ön işlemciyi çalıştırarak script yürütme süresini çok uzun ve deneyimi benzersiz kılan bir yaklaşım
    • Z₃ Sanal Makinesi: Z-machine’in üçüncü sürümünden esinlenerek yapılmış bir VM uygulaması; kaynak kodu çözümünü bir oyun gibi deneyimlemeyi sağlıyor
    • C64 Emülatörlü Sanal Ortam: Fork bomb, dosya silme gibi zararlı senaryoların bile güvenli biçimde test edilebildiği, C64 entegre bir sanal makine
    • Intel 4004 Çip Emülasyonu: 1971’de çıkan dünyanın ilk ticari mikroişlemcisinin devresini, C kodu seviyesinde kapı düzeyine kadar taklit eden sanatsal bir yeniden üretim
    • Çok Dilli Bulmaca: En az üç dile (C, İngilizce ve diğer) aşina olanlar için yenilikçi bir obfuscation

Yarışmacılar ve Gelecekteki Öneriler

  • Eski ödül eserlerine benzeyen obfuscationlar düşük puan alıyor; özgünlük ve tamamlanma değerlendirmede ana ölçüt
  • Ödül alamayanlara, geliştirdikten sonra tekrar katılmaları veya farklı yaklaşımlar denemeleri öneriliyor
  • Ödül almayan eserlerin ayrı yayınlanması da memnuniyetle karşılanıyor

Kazanan Kodları Derleme ve Çalıştırma Rehberi

  • Bazı C derleyicilerinde uyumluluk sorunları çıkabileceği için en yeni clang veya gcc kullanılması öneriliyor
  • SSS ve resmi dökümantasyonlarda sorun giderme ve düzeltme gönderme yöntemleri açıklanıyor

2024 IOCCC28 Ödül Eserleri İndirimi

  • Tüm ödül eserleri sıkıştırılmış dosya (2024.tar.bz2) olarak sunuluyor; her bir eserin detaylı web sayfasını, kaynak kodunu ve yazar görüşlerini inceleyerek özgün obfuscation tekniklerini öğrenebilirsiniz

(Başvuru içeriğinden doğrudan erişilebilen ödül indirme linkleri ve her bir ödülün ayrıntılı açıklaması için resmi siteye bakın)

1 yorum

 
GN⁺ 2025-08-04
Hacker News görüşleri
cc -Wno-implicit-int -Wno-implicit-function-declaration phase.c && ./a.out
  • Yeniden tasarım yüzünden önceki IOCCC girdilerine giden bağlantıların hepsi bozulmuş. On yıllar boyunca Wikipedia gibi çeşitli sitelere yayılmış bağlantılar yönlendirme olmadan kesilmiş ve artık Github'da girdileri görmek için JavaScript destekli bir tarayıcı zorunlu hale gelmiş
  • JS olmayan bir ortamda erişmek için depoyu git clone ile kopyalama yöntemi kullanılabilir
  • Bu girdiye bakarken eski IOCCC gönderilerini de okudum; bu görüntü açma tek satırlık kodu, kaynak kodunun hash değerini argüman olarak alırsa kendi logo görselini doğrudan basıyor. Fazlasıyla ilginç
  • Bu hash numarasının nasıl çalıştığını merak etmiştim; notlarda açıklama var. Bu arada notların kendisi de gerçekten komik
    "Kısalık, anlaşılmazlıktan daha önemli görülse de bu program yine de IOCCC'nin kendine özgü açıklık standartlarını karşılıyor" yazıyor
  • Gerçekten şaşırtıcı bir tesadüfle, giriş formatındaki bit sayısı, beş yaşındaki bir GPU'nun bir saatte yapabildiği MD5 değerlendirme sayısının log2 değeriyle neredeyse aynı
  • Bu kişi aynı zamanda jq'nun da yaratıcısı
  • 135 baytta yazılmış! Neredeyse çılgın bilim insanı seviyesinde bir kod. Tam anlamıyla inanılmaz
  • IOCCC girdi kuralları harika. Geçmişte bunların nasıl suistimal edildiğini açıkça gösteren çok spesifik düzenlemeler
Rule 2

Rule 2, bir girdinin hem Rule 2a'yı hem de 2b'yi karşılamasını gerektirir  
Kodun bu kuralı geçip geçmediğini `iocccsize(1)` aracıyla kontrol edebilirsiniz  
`prog.c` gibi dosya adını argüman olarak vermeniz yeterlidir

Rule 2a  
Program kaynak kodunun boyutu 4993 baytı aşmamalıdır

Rule 2b  
`iocccsize(1)` aracıyla ölçüldüğünde kod boyutu çıktısı 2503'ü aşmamalıdır

Bununla ilgili daha ayrıntılı bilgi için FAQ'ya veya Rule 17'ye bakabilirsiniz
  • O halde dosya adına 2053 baytlık ek veri koymaya izin veriliyor demek. Beklenmedik şekilde gevşek bir kural
  • 4993 bayt, bunun neden böyle garip bir sayı olarak seçildiğini merak ettiriyor
  • underhanded-c.org yeniden açılsa keşke
  • C kullanmamak gerektiğine dair daha iyi bir argüman var mı emin değilim. Bu, oldukça açık ve ciddi bir sonuç gibi geliyor
  • Böyle anlaşılmaz kodlar herhangi bir dilde yazılabilir. C buna özellikle iyi uyuyor ama IOCCC girdilerinin çoğu başka dillere de uygulanabilecek numaralar kullanıyor
  • Bu, en sevdiğim IOCCC gönderilerinden biri ve aynı zamanda kazananlardan biri
    2005 persano.c'yi görüntüle
  • Muhtemelen ben bir programcı olsaydım, yaptığım iş başkalarının gözünde saf anlamsız şifreler gibi görünürdü
  • Bu gerçekten harika
    2024 macke girdisi
    Bu program, en aza indirilmiş işlevlerle modern bir Linux sisteminin tamamını çalıştıran bir emülatör
  • Yazarı benim. Bu ikili dosya 1.6MB boyutunda ve modern Linux çalıştırıyor. Boyutu olabildiğince küçültmek için akla gelebilecek her türlü yöntemi kullandım. WebAssembly'ye de derleniyor, böylece tarayıcı içinde de çalışabiliyor
  • Bu girdi bana epey kafa karıştırıcı geldi