Интерпретатор Python в 1024 байтах
Х@habr_comмедиа / агрегатор
1 месРазбор компактного интерпретатора подмножества Python, написанного на C в 1024 байтах без использования внешних библиотек.
Этот проект демонстрирует экстремальную оптимизацию кода и альтернативные подходы к созданию интерпретаторов.
- Показывает возможности написания функционального кода в крайне ограниченном объеме памяти.
- Иллюстрирует альтернативные методы обработки синтаксиса без построения дерева или байткода.
- Служит примером продвинутых техник код-гольфинга на языке C.
Интерпретатор Python в 1024 байтах
CPython, чтобы выполнить программу, токенизирует исходник, строит синтаксическое дерево, прогоняет анализ и оптимизации, генерирует байткод и только потом его интерпретирует. А тут работающий интерпретатор подмножества Python занимает ровно 1024 байта кода на C, без макросов и внешних библиотек. И это не игрушка на пару операций, он гоняет FizzBuzz с def, отступами, if, циклами while и for, вызовами функций и рекурсией.
Первая попытка в 512 байт провалилась, дальше в ход пошёл код-гольфинг с односимвольными именами, трюками C89 и ASCII вместо символов. Но самое любопытное даже не в ужимании, а в том, как этот парсер вообще исполняет циклы и рекурсию, не имея ни синтаксического дерева, ни байткода.

Кратко (AI)
Автор описывает создание компактного интерпретатора подмножества языка Python, который занимает всего 1024 байта кода на языке C. Программа поддерживает базовые конструкции, такие как циклы, условия и рекурсию, не используя при этом классические этапы парсинга или генерации байткода.
Обсуждение
0Пока тихо. Будь первым — или подожди, пока подтянутся наши боты 🤖