<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/the-29th-ioccc-zwoipulya" -->

---
title: The 29th IOCCC | daily.dev
description: The 29th International Obfuscated C Code Contest (IOCCC29) has announced its 22 winning entries for 2025. Submission volume and quality remained near-historic...
canonical: https://daily.dev/posts/the-29th-ioccc-zwoipulya
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: The 29th IOCCC | daily.dev
og:description: The 29th International Obfuscated C Code Contest (IOCCC29) has announced its 22 winning entries for 2025. Submission volume and quality remained near-historic...
og:url: https://daily.dev/posts/the-29th-ioccc-zwoipulya
og:image: https://api.daily.dev/og/posts/ZWoiPulyA.png
og:image:alt: The 29th IOCCC
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# The 29th IOCCC

**[Lobsters](https://daily.dev/sources/lobsters)** · 8 min read · 0 upvotes · 0 comments

## Summary

The 29th International Obfuscated C Code Contest (IOCCC29) has announced its 22 winning entries for 2025. Submission volume and quality remained near-historic highs for the second consecutive contest after a 2020–2024 hiatus. Notable winners include a GameBoy emulator, a patch/diff quine, a Subleq computer, a quasi-roguelike game, and a quine pong implementation. Three authors — Yusuke Endoh, Nick Craig-Wood, and Don Yang — each won three entries (a 'hat trick'). The contest also welcomed its first author from Taiwan. IOCCC30 is planned to open toward the end of 2026. Fun challenges have been added to each winning entry, and community contributions via GitHub pull requests are encouraged.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.ioccc.org/2025>

## Community take

How the wider developer community reacted, aggregated from 2 discussions and 204 comments across lobsters, hackernews (as of 2026-08-07).

**TL;DR:** The community is enthusiastic about the 29th IOCCC's winning entries, with particular excitement around the GameBoy emulator, the SUBLEQ VM running Linux and Doom, and the quine pong implementation; a lively side debate emerged about whether LLMs could meaningfully compete or assist in producing IOCCC-quality obfuscation.

**Sentiment:** 75% positive · 20% mixed · 5% skeptical

**The case for**

- The GameBoy emulator entry is especially impressive because its source code is shaped like a GameBoy, and the author documented the extraordinary effort required to squeeze a Z80 emulator under the 2503-character limit.
- The SUBLEQ-based OISC VM that can run Linux and Doom in 366 bytes is widely called the most impressive entry, with a full LLVM backend and Linux port behind it.
- LLMs are reportedly good at de-obfuscating entries but genuinely poor at producing IOCCC-grade obfuscation, which commenters see as validating the contest's continued relevance as a human art form.
- The contest's openness to LLM-assisted development is seen as a reasonable policy that makes purely handcrafted winners feel even more valuable.
- Winning authors engaging directly in the comment threads (including the GameBoy emulator author and the SUBLEQ VM author) added depth and transparency about the creative process.

**The pushback**

- The IOCCC website is criticized as hard to navigate, with source code buried under unintuitive links and no clear explanation of the contest for newcomers.
- Some commenters feel that awarding 22 winners dilutes the prestige, likening it to modern participation-trophy culture.
- The contest schedule and submission process are described as confusing and messy.
- The Underhanded C Contest, seen by some as more intellectually interesting, has been inactive for a decade with no sign of revival.

**By community**

- lobsters (positive): Commenters enthusiastically highlighted specific entries — the GameBoy emulator, the SUBLEQ VM, the roguelike, and quine pong — with detailed technical appreciation and playful speculation about who will attempt 'Quine Doom' next year.
- hackernews (positive): Broadly celebratory, with deep technical threads on the SUBLEQ VM and GameBoy emulator, a spirited debate about LLMs' inability to produce genuine IOCCC-quality obfuscation, and direct participation from several winning authors.

**Hottest debate:** Whether LLMs can meaningfully produce IOCCC-grade obfuscated C code, with commenters trading concrete examples of LLM failures and successes at various obfuscation transformations.

**Open questions**

- How many total submissions does the IOCCC typically receive, and what is the actual acceptance rate?
- Could a sufficiently clever human use LLM assistance to produce a winning entry, and has any confirmed winner done so?
- Will someone actually submit 'Quine Doom' to IOCCC30?
- What would it take to extend the GameBoy emulator to run more complex games like Pokémon?

**Highlights**

> Glad you enjoyed it :-) If you want to see how the sausage was made, here is the source: https://github.com/ncw/ioccc-gameboy You'll find an unobfuscated version (kind-of) there too. This the the one I actually worked on then I had a program squash all the variable names and squeeze it into the gameboy shape The size limit for the entry was the killer. You are allowed 2503 non white space characters (a simplification - the rules are complicated) in IOCCC entries and 4K total code size. This isn't a lot to fit a Z80 processor and a GameBoy hardware emulator in! I first wrote a full Gameboy emulator in C. It started out at about 6000 non white space characters. I then spent about about 100 hours work trying to get it to fit into the 2503 limit. For a long time I wasn't sure it was going to fit. I decided making the emulator play Tetris (which is a fairly simple game) was the target so I stripped out features like the half carry flag in the Z80 emulator and the windowing system in the Gameboy emulation which Tetris didn't need. I also abused the C code terribly doing things with implicit int I can never un-see. I also got creative with the IOCCC rules which are implemented in a C program which checks your source and I spent some time reverse engineering that looking for loopholes! I discovered that the operators defined in <iso646.h> only count for one token which was very useful. Once I had it small enough I had to supply some games to run with it. I created 4, a test program written in z80 assembler, a pi calculator (written in assembler), a 3d tic tac toe game (written in C with gbdk-2020) and a chess program also written in C. I discovered that quite a few open source games ran on the emulator too so I added a downloader for those where I could. Apparently not many games use BCD arithmetic - who would have thought! It was a fun project.
> — [nickcw on hackernews · 2 comments](https://news.ycombinator.com/item?id=48433055)

> My favorite is the 366-byte C program emulator that can run Linux and Doom [0]. The VM implements an OISC - a One Instruction Set Computer [1]. [0] https://github.com/ioccc-src/winner/blob/master/2025/cable/p... [1] https://github.com/ioccc-src/winner/blob/master/2025/cable/R...
> — [s-macke on hackernews · 6 comments](https://news.ycombinator.com/item?id=48432748)

> I particularly liked these:  - [nwc1](https://www.ioccc.org/2025/ncw1/index.html): a stripped down GameBoy emulator, providing the bare minimum to run Tetris (also, apparently [the author](https://www.craig-wood.com/nick/) is the developer of rclone - cool!)   - [cable](https://www.ioccc.org/2025/cable/index.html): a subleq*-based one-instruction-set-computer VM emulator, aided by [a whole software stack](https://github.com/adriancable/eternal/), including a custom LLVM backend and a port of Linux to the architecture. The pitch of the [project](https://eternal-software.org/) is a tiny VM whose description fits in a [napkin](https://github.com/adriancable/eternal/blob/main/docs/napkin.md) and once implemented can run pre-compiled "capsules" as a form of software preservation. Flashy website aside, I found the documentation of the machine architecture really interesting: https://github.com/adriancable/eternal/blob/main/docs/machine_architecture.md. Also the [notes on the linux port](https://github.com/adriancable/eternal/blob/main/docs/esi_linux_port.md), and [the LLVM backend](https://github.com/adriancable/eternal/blob/main/docs/llvm_backend.md) which is based on generating pseudo-instructions, with a convention for pseudo registers, that in a final pass expand to pre generated sequences of subleq instructions.    \* technically, it augments the 'standard' subleq with indirect addressing modes   - [jhshrvdp](https://www.ioccc.org/2025/jhshrvdp/index.html)'s roguelike!   - [uellenberg](https://www.ioccc.org/2025/uellenberg/index.html)'s quine pong, for which the developer created [his own programming language](https://github.com/uellenberg/Insert) that generates self-modifying C programs.
> — [lemon on lobsters · 19 points, 1 comments](https://lobste.rs/s/aekbzt/winners_2025_international_obfuscated_c#c_qf6nfe)

> Yes, I’ve tried it. For example, this was my winning entry from a year ago [0]. The LLM only performs trivial obfuscation, not advanced transformations. For example:   if (x == 1 || x == 2) { ... can be transformed into:   if (!(2+x*x-3*x)) { ... An LLM will do this if you explicitly ask it to, but not on its own. [0] https://github.com/ioccc-src/winner/blob/master/2024/macke/p...
> — [s-macke on hackernews · 3 comments](https://news.ycombinator.com/item?id=48433119)

> The competition never was about actual obfuscation. If you really just want obfuscation, you are actually writing a DRM system, like Denuvo. If anything, it is closer to code golf, the main obfuscation is often a result of all the trickery needed to do something impressive in a small amount of code. Of course, minification techniques are used, like renaming variables to single character and messing with the formatting, but that's the boring part, no one is going to win because of that. Another aspect is being clever and unique, and abusing the rules is often rewarded... once. LLMs are not good at that. The judges are human, the code needs to a appeal to a human, not just be hard to understand.
> — [GuB-42 on hackernews](https://news.ycombinator.com/item?id=48435367)

**Source threads**

- [lobsters](https://lobste.rs/s/aekbzt/winners_2025_international_obfuscated_c) · 56 points · 6 comments
- [hackernews](https://news.ycombinator.com/item?id=48432199) · 430 points · 198 comments

## Similar posts on daily.dev

- [The Winners Of The 2025 Obfuscated C Code Contest](https://daily.dev/posts/the-winners-of-the-2025-obfuscated-c-code-contest-hjmjx7r7d) · Hackaday · 0 upvotes · 0 comments

---

Tags: [#general-programming](https://daily.dev/tags/general-programming), [#c](https://daily.dev/tags/c)

[View this post on daily.dev](https://daily.dev/posts/the-29th-ioccc-zwoipulya)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"The 29th IOCCC","url":"https://daily.dev/posts/the-29th-ioccc-zwoipulya","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/the-29th-ioccc-zwoipulya"},"datePublished":"2026-06-07T13:46:47.453Z","dateModified":"2026-08-07T22:26:41.345Z","description":"The 29th International Obfuscated C Code Contest (IOCCC29) has announced its 22 winning entries for 2025. Submission volume and quality remained near-historic...","image":"https://media.daily.dev/image/upload/s--58gMhC4P--/f_auto/v1722860399/public/Placeholder%2012","thumbnailUrl":"https://media.daily.dev/image/upload/s--58gMhC4P--/f_auto/v1722860399/public/Placeholder%2012","isAccessibleForFree":true,"articleSection":"Lobsters","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Lobsters","logo":"https://media.daily.dev/image/upload/s--tl8v_Fku--/f_auto,t_logo/v1698841318/logos/lobste.jpg","url":"https://daily.dev/sources/lobsters"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/the-29th-ioccc-zwoipulya","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"general-programming,c","timeRequired":"PT8M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Lobsters","item":"https://daily.dev/sources/lobsters"},{"@type":"ListItem","position":3,"name":"The 29th IOCCC"}]}
```

