SPy — это статически компилируемый вариант Python!
Мечтали писать код так же легко, как на Python, но чтобы он работал так же быстро, как скомпилированный язык? Проект SPy пытается решить именно эту амбициозную задачу.
libspy (написанная на C). Самое крутое: когда вы запускаете код в интерпретаторе, эта библиотека подгружается прямо туда в виде WASM-модуля через wasmtime. А при релизной сборке она статически линкуется к вашему бинарнику.libspy через команду make и установка самого пакета в режиме для разработчиков (pip install -e .[dev]).#Python #WebAssembly #WASM #Compiler #Backend #DevTools #OpenSource #Programming
https://github.com/spylang/spy
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - spylang/spy: SPy language
SPy language. Contribute to spylang/spy development by creating an account on GitHub.
1🔥3 2
Shed Skin - это экспериментальный транспайлер, который переводит программы на чистом Python 3 с неявной статической типизацией в оптимизированный код на C++.
На выходе инструмент может собирать как автономные исполняемые файлы, так и скомпилированные C++ модули расширения, которые можно импортировать в обычный Python-код в качестве ускоренных библиотек. В отличие от Cython, Shed Skin не требует ручного описания типов в C-стиле — он выводит их автоматически из логики программы.
shedskin build my_script) или в нативный модуль расширения для вызова из стандартного CPython.Shed Skin поддерживает только строго ограниченное подмножество возможностей языка Python:
random, re, math, time), произвольные тяжелые внешние зависимости подключить нельзя.*args / **kwargs).В Linux / macOS:
shedskin build test
./build/test
В Windows:
shedskin build test
build\test.exe
#Python #Cpp #ShedSkin #Transpiler #Compiler #Performance #Optimization #OpenSource #DevTools #Algorithms
https://github.com/shedskin/shedskin
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - shedskin/shedskin: Shed Skin is a restricted-Python-to-C++ transpiler. Read the introduction below to learn about the…
Shed Skin is a restricted-Python-to-C++ transpiler. Read the introduction below to learn about the restrictions. - shedskin/shedskin
🔥3 2⚡1
TurboPython - это опережающий (AOT) компилятор, транслирующий статически типизированный Python через современный C++23 напрямую в автономный нативный бинарник без интерпретатора, сборщика мусора и GIL.
В отличие от Cython, mypyc или Nuitka, сгенерированный код вообще не опирается на рантайм CPython и подсчет ссылок, а в отличие от Codon и Shed Skin — не использует сторонний сборщик мусора (GC). Памятью управляет строгая модель владения (Ownership) в стиле Rust, проверяемая прямо во время компиляции. При этом исходные файлы остаются синтаксически валидным кодом на Python, понятным привычным линтерам, IDE и кодинг-агентам.
@noalloc.Own[T], а неявные копирования данных подсвечиваются компилятором еще до запуска программы.spawn) нативных потоков ОС без ограничений GIL. Компилятор на этапе сборки статически проверяет контракты Send и Sync, предотвращая состояние гонки (data races). Доступ к разделяемым ресурсам идет через знакомые примитивы: Arc[Mutex[T]], RwLock, атомики и каналы.int32), литералы и функция len() по умолчанию 32-битные с проверкой переполнения на аппаратном уровне (ошибка вместо тихого заворачивания значения). Стандартный int остается длинной арифметикой произвольной точности.@native, @export(binding="C")), генерирует чистый C++ код с готовыми CMakeLists.txt и умеет компилироваться как в автономные бинарники, так и в нативные модули расширения для стандартного CPython.from dataclasses import dataclass
from tpy import Own, int32
@dataclass
class Stats:
count: int32
total: int32
longest: int32
# Функция передает владение объектом Stats вызывающей стороне
def measure(words: list[str]) -> Own[Stats]:
total, longest = 0, 0
for w in words:
total += len(w)
longest = max(longest, len(w))
return Stats(len(words), total, longest)
s = measure("the quick brown fox jumps over the lazy dog".split())
print(s.count, s.total, s.longest)
Установка компилятора (требуется Python 3.12+ и Clang 19+ / GCC 13+):
# Установка с бандлом компилятора Zig
pip install "tpy-lang[bundled]"
Компиляция и запуск:
# Запуск через JIT-подобный вызов или REPL
tpy stats.py
# Сборка в автономный нативный бинарный файл
tpyc -b stats.py
./__tpyc__/stats.d/release/stats
# Просмотр сгенерированного чистого C++ кода
tpy --dump-code stats.py
#TurboPython #Python #Cpp #Compiler #AOT #Performance #Rust #NoGIL #Multithreading #DevTools #OpenSource #SoftwareEngineering
https://github.com/trozen/tpy-lang
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - trozen/tpy-lang: TurboPython: a Python-to-C++ compiler. Typed Python to native binaries with no Python runtime, no GC…
TurboPython: a Python-to-C++ compiler. Typed Python to native binaries with no Python runtime, no GC, no GIL. - trozen/tpy-lang
👍3⚡2 2