Современный. Простой. Для информатики и математики. Компилируется в C / LLVM.
Синтаксис как у Python — отступы, списки, словари, кортежи, множества, f-строки, классы, генераторы.
Бэкенд — чистый C99 или LLVM IR через clang: один бинарник, без VM.
./scripts/pyke run examples/hello.pyke
./scripts/pyke run examples/xor_net.pyke
./scripts/pyke run examples/iris_net.pyke # UCI Iris → datasets/iris.csv
./scripts/pyke run examples/wine_net.pyke # UCI Wine → datasets/wine.csv
./scripts/pyke run examples/chat_net.pyke # PykeChat — word LM + interactive chat
./scripts/pyke run examples/classes.pyke
./scripts/pyke run examples/hello.pyke --backend=llvm
./scripts/pyke build examples/fib.pyke -o fibimport tensor as T
import math
W = T.randn(2, 4) * 0.5
x = T.array([1.0, 0.0])
h = T.relu(x @ W)
print(h, math.sigmoid(0), f"{3.14159:.2f}")
| Язык | Платформа |
|---|---|
Отступы, def / if / elif / else / while / for |
C99 → gcc / clang |
| Списки, словари, кортежи, множества | LLVM IR: --backend=llvm / pyke ll |
Срезы с шагом (s[a:b:c]), UTF-8 индексация |
Один нативный бинарник |
f-строки со спеками ({x:.2f}), **, in / not in |
Без VM |
+= / //= / побитовые << >> & | ^ ~ |
|
Тернарный a if c else b, walrus := |
|
Default-args, *args, keyword-calls, lambda |
|
List comprehensions, unpack a, b = … |
|
Классы + наследование, super / @staticmethod / @property |
|
try / except / raise / assert / del / with + files |
|
Замыкания, генераторы (yield), @decorator |
|
import / пакеты / относительные from .mod |
|
math / tensor / random / str / io / data |
|
Литералы 0x1f / 0b1011 / 0o17 / 1_000 / 1.5e-3 |
|
Атрибуты класса, try / finally без except |
|
Тензоры N-D, @, relu/sigmoid, toy autodiff, RNN/attention |
|
match/case, dict/set comps, **kwargs, nonlocal |
|
Опциональные аннотации; лёгкий tools/typecheck.py |
GPU, полный autodiff graph, полноценный LSP/отладчик, f(**d) unpack,
свой LLVM-IR бэкенд (сейчас C → clang).
file.pyke → transpiler → file.c + runtime → native binary
↘ clang -emit-llvm → .ll → binary
./scripts/pyke run file.pyke [--backend=c|llvm]
./scripts/pyke build file.pyke [--backend=c|llvm] [-o app]
./scripts/pyke c file.pyke # показать сгенерированный C
./scripts/pyke ll file.pyke # LLVM IR через clang
./scripts/pyke-test # регрессия
python3 tests/run_tests.py --sanitize # то же под ASan + UBSanПеременные окружения: CC (можно с флагами, напр. CC="gcc -fsanitize=address"),
CFLAGS, PYKE_CACHE — каталог кеша скомпилированного рантайма
(по умолчанию ~/.cache/pyke; первая сборка ~1.6 с, последующие ~0.1 с).
Полный аудит безопасности, корректности и производительности — AUDIT.md.
Тесты гоняются и под ASan/UBSan; рантайм собирается с -Wall -Wextra -Wshadow -Werror.