Интерпретатор Python в 1024 байтах
CPython, чтобы выполнить программу, токенизирует исходник, строит синтаксическое дерево, прогоняет анализ и оптимизации, генерирует байткод и только потом его интерпретирует. А тут работающий интерпретатор подмножества Python занимает ровно 1024 байта кода на C, без макросов и внешних библиотек. И это не игрушка на пару операций, он гоняет FizzBuzz с def, отступами, if, циклами while и for, вызовами функций и рекурсией.
Первая попытка в 512 байт провалилась, дальше в ход пошёл код-гольфинг с односимвольными именами, трюками C89 и ASCII вместо символов. Но самое любопытное даже не в ужимании, а в том, как этот парсер вообще исполняет циклы и рекурсию, не имея ни синтаксического дерева, ни байткода.
Post #69520
15.8K

- ❤ 38
- 🔥 19
- 🥴 7
- 🤮 4
- 👌 4
- 🤡 4
- 😐 4
- 👍 3
- 👏 2
- 🫡 2