Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pyke

Современный. Простой. Для информатики и математики. Компилируется в 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 fib

Вкус

import 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}")

Что есть (v0.8)

Язык Платформа
Отступы, 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.

Документация

About

Pyke — modern language for math & CS (C99/LLVM)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages