PYTHONOMANIA
273 subscribers
195 photos
3 videos
1 file
616 links
Откройте для себя мир Python в PYTHONOMANIA!

Идеально подходит как для начинающих, так и для опытных разработчиков. Присоединяйтесь к нам, чтобы достичь совершенства в Python!

Сайт: https://pythonomania.github.io/
Download Telegram
📱SPy.

SPy — это статически компилируемый вариант Python!

Мечтали писать код так же легко, как на Python, но чтобы он работал так же быстро, как скомпилированный язык? Проект SPy пытается решить именно эту амбициозную задачу.

🔹Главные фичи:

🔘Два режима работы: Вы можете писать и тестировать код быстро через привычный интерпретатор, а затем скомпилировать его в нативный исполняемый файл (executable) для максимальной скорости.

🔘Прозрачный конвейер: SPy не просто "вслепую" транслирует код в C. Компиляция проходит в несколько этапов (Py AST -> SPy AST -> Redshift -> C -> Бинарник). Вы можете остановить процесс на любом шаге специальными флагами в консоли, чтобы посмотреть, во что превращается ваш код!

🔘 Магия WebAssembly (WASM): В основе языка лежит рантайм-библиотека libspy (написанная на C). Самое крутое: когда вы запускаете код в интерпретаторе, эта библиотека подгружается прямо туда в виде WASM-модуля через wasmtime. А при релизной сборке она статически линкуется к вашему бинарнику.

🔘Работает в браузере: Благодаря архитектуре на базе WASM/emscripten, SPy может работать поверх Pyodide прямо в браузере без установки!

❓Как попробовать?

❗️Пока проект находится в активной разработке, локальная установка требует немного ручной работы: вам понадобится Python 3.12, сборка библиотеки libspy через команду make и установка самого пакета в режиме для разработчиков (pip install -e .[dev]).

💡Но если вы не хотите возиться с терминалом, на официальном сайте есть браузерная песочница (Playground), где можно пощупать язык прямо сейчас.

#Python #WebAssembly #WASM #Compiler #Backend #DevTools #OpenSource #Programming

📱Ссылка на репозиторий:
https://github.com/spylang/spy
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥32
📱Shed Skin.

Shed Skin
- это экспериментальный транспайлер, который переводит программы на чистом Python 3 с неявной статической типизацией в оптимизированный код на C++.

На выходе инструмент может собирать как автономные исполняемые файлы, так и скомпилированные C++ модули расширения, которые можно импортировать в обычный Python-код в качестве ускоренных библиотек. В отличие от Cython, Shed Skin не требует ручного описания типов в C-стиле — он выводит их автоматически из логики программы.

🔹Производительность и возможности:

🔘Ускорение в 1–100 раз: На наборе из 80+ нетривиальных программ (>25 000 строк кода) прирост скорости относительно CPython составляет в среднем 20× (медианное значение — 12×). На вычислительных задачах (например, алгоритмах решета Эратосфена) Shed Skin опережает PyPy и соревнуется по скорости с Numba.

🔘Два режима компиляции: Сборка в автономный бинарник (shedskin build my_script) или в нативный модуль расширения для вызова из стандартного CPython.

🔘Управление памятью: Под капотом использует сборщик мусора Boehm GC, избавляя от ручного контроля выделения памяти в сгенерированном C++ коде.

⚠️Ограничения и компромиссы:

Shed Skin поддерживает только строго ограниченное подмножество возможностей языка Python:

🔘Неявная статическая типизация: Переменные не могут менять свой тип во время выполнения.

🔘Ограниченная стандартная библиотека: Поддерживается около 25 базовых модулей (среди них random, re, math, time), произвольные тяжелые внешние зависимости подключить нельзя.

🔘Синтаксические рамки: Не поддерживаются некоторые динамические конструкции языка (например, вложенные функции, произвольное число аргументов *args / **kwargs).

💡Когда стоит использовать:

🔘У вас есть ресурсоемкий блок вычислений на несколько сотен или тысяч строк (рендеринг, симуляция, игровая физика, алгоритмическая математика).

🔘Код автономен и не привязан к внешним C-расширениям.

🔘Вы хотите остаться на CPython и не переписывать логику вручную на C++, Rust или Cython.

💻Пример сборки:

В 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
🔥32⚡1
📱TurboPython.

TurboPython
- это опережающий (AOT) компилятор, транслирующий статически типизированный Python через современный C++23 напрямую в автономный нативный бинарник без интерпретатора, сборщика мусора и GIL.

В отличие от Cython, mypyc или Nuitka, сгенерированный код вообще не опирается на рантайм CPython и подсчет ссылок, а в отличие от Codon и Shed Skin — не использует сторонний сборщик мусора (GC). Памятью управляет строгая модель владения (Ownership) в стиле Rust, проверяемая прямо во время компиляции. При этом исходные файлы остаются синтаксически валидным кодом на Python, понятным привычным линтерам, IDE и кодинг-агентам.

🔹Главные особенности:

🔘Никакого CPython, GC и GIL: На выходе получается чистый нативный C++23-бинарник. Нет оверхеда на виртуальную машину, трассирующий сборщик мусора или Reference Counting, а для критических участков доступна директива @noalloc.

🔘Модель владения (Ownership Model): Каждое значение имеет ровно одного владельца (стековый фрейм, поле класса или контейнер). Передача владения оформляется явно через Own[T], а неявные копирования данных подсвечиваются компилятором еще до запуска программы.

🔘Настоящий параллелизм с проверкой типов: Многопоточный запуск (spawn) нативных потоков ОС без ограничений GIL. Компилятор на этапе сборки статически проверяет контракты Send и Sync, предотвращая состояние гонки (data races). Доступ к разделяемым ресурсам идет через знакомые примитивы: Arc[Mutex[T]], RwLock, атомики и каналы.

🔘Фиксированные типы и контроль переполнений: Введены нативные целочисленные типы (например, int32), литералы и функция len() по умолчанию 32-битные с проверкой переполнения на аппаратном уровне (ошибка вместо тихого заворачивания значения). Стандартный int остается длинной арифметикой произвольной точности.

🔘Полная интеграция с экосистемой C/C++: Легко линкуется с внешними C/C++ библиотеками (@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


📌Статус проекта: Ранняя разработка (pre-1.0). Поддерживаются Linux и macOS (для Windows рекомендуется WSL). Лицензия — Apache 2.0 with LLVM Exceptions (позволяет распространять собранные бинарники без лицензионных ограничений).

#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
👍3⚡22