ОБСУЖДЕНИЕ Анонс 

SkyForge — русскоязычный язык программирования с транспилятором в Python

0 ответов 43
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Всем привет.

Пишу язык программирования SkyForge уже около полутора лет. Это мой пет-проект,
который неожиданно дорос до чего-то рабочего. Хочу поделиться — может кому-то
будет интересно, может кто-то найдёт баги.

Что это такое

Язык с русским синтаксисом, написанный на Python. Компилируется в Python AST
или интерпретируется напрямую. Есть свой лексер, парсер, интерпретатор.

пусть имя = "Мир"
функция привет(имя) {
вернуть "Привет, " + имя
}
лог(привет(имя))

Что уже реализовано

  • ООП с наследованием (класс X наследник Y, это, супер)
  • Async/await с реальным параллелизмом через потоки
  • Генераторы (выдать x)
  • Pattern matching (совпадает x { случай ... })
  • Опциональные типы с проверкой в рантайме
  • Декораторы (@кешировать, @повторить, @таймер_декоратор)
  • Исключения (попробовать/поймать/наконец/бросить)
  • Python-мост — подключить_питон("numpy") даёт доступ ко всему PyPI
  • Веб-фреймворк (маршруты, шаблоны, middleware, сессии, /docs)
  • ORM поверх SQLite
  • Свой тестовый фреймворк (@Тест, ожидать_равно, ...)
  • Stdlib: транслит, русские склонения, PBKDF2, JWT, regex, base64, хэши

Что мне кажется самым интересным

1. AutoREST

Одна строка генерирует CRUD-API + админку + OpenAPI для всех таблиц:

app.из_схемы("""
users (id PK, name TEXT NOT_NULL, email TEXT UNIQUE)
products (id PK, title TEXT, price REAL)
""")

Django REST + DRF на то же самое — 6 файлов и 200+ строк. Тут — 3 строки
и один файл. Под капотом парсер схемы, ORM и веб-фреймворк.

2. Транспилятор

Изначально был только интерпретатор, который на вычислениях работал в 30-100
раз медленнее CPython. Добавил транспилятор .skf -> Python AST -> compile().
Получилось ускорение вплоть до 130x на рекурсии:

fib(32):
интерпретатор: ~60 секунд
транспилятор: ~0.37 секунды

Работает для функций, циклов, включений, лямбд, интерполяции строк.
Классы и async пока не поддерживаются — там обычный интерпретатор.

3. LSP-сервер для VS Code

Отдельный PyPI-пакет skyforge-lsp на pygls. Даёт диагностику в реальном
времени, автодополнение, hover-документацию, переход к определению (F12),
outline. Расширение для VS Code пока не в маркетплейсе, ставится из репо.

Статус

  • 79/79 тестов проходят (examples/всё.skf)
  • На PyPI: skyforge-lang 1.0.7 и skyforge-lsp 0.1.0
  • Документация: skyforge-docs.onrender.com
  • Сайт документации написан на самом SkyForge (один файл docs.skf)
  • Render, CI пока нет, всё вручную

Технические детали

  • ~1500 строк ядро (core.py), ~600 строк транспилятор
  • Зависимости: только pygls для LSP. Ядро на чистом stdlib
  • Python 3.9+
  • На Windows были проблемы с cp1251 и BOM — обошёл через
принудительный UTF-8 в cli.py и запись файлов через Python, а не PowerShell

Чего нет и не будет скоро

- Нормальной экосистемы. Библиотек на самом SkyForge почти нет,
всё через Python-мост
  • Отладчика
  • Форматтера и линтера
  • Нормальных миграций БД (при изменении схемы AutoREST нужно пересоздавать БД)
  • Marketplace для VS Code
  • Поддержки классов в транспиляторе

Ссылки

  • PyPI: pypi.org/project/skyforge-lang
  • LSP: pypi.org/project/skyforge-lsp
  • GitHub: github.com/skytech-alt/SkyForge-Docs
  • Документация: skyforge-docs.onrender.com

Буду рад фидбэку. Особенно интересует:

  • Где вы видите нишу для такого языка? (кроме "обучение по-русски")
  • Что важнее развивать: транспилятор до ООП или писать пакетный менеджер?
  • Кто-нибудь реально хочет использовать это в работе, или это остаётся
интересным пет-проектом?

Критика приветствуется, отвечу на все вопросы в комментах.