Starlette — был создан в июне 2018 года Томом Кристи и уже много лет существует на ZeroVer(схема версионирования 0.0.x). Сегодня его скачивают почти 10 миллионов раз в день, он служит основой для FastAPI и вдохновил множество других фреймворков. Он предназначен для создания быстрых и масштабируемых веб‑приложений и API с использованием async/await. В эпоху ИИ Starlette продолжает играть важную роль в качестве зависимости Python MCP SDK.
Спустя почти восемь лет после создания, Starlette наконец‑то вышел в своей первой стабильной версии 1.0.0! Этот релиз сосредоточен на удалении устаревших возможностей, которые были помечены для удаления в 1.0.0rc1, а также на некоторых последних исправлениях ошибок.
Добавлено (Added):
1.0.0
Отслеживание доступа к сессии и её изменений в SessionMiddleware
1.0.0rc1
Добавлен generic state для WebSocket
Исправления (Fixed):
1.0.0
Обработка ответов отказа WebSocket в StreamingResponse и FileResponse
Использование bytearray для накопления полей в FormParser
Перемещение parser.finalize() внутрь try/except в MultiPartParser.parse()
1.0.0rc1
Включение единицы bytes в заголовок Content‑Range для ответов 416
Обработка нулевых байтов в пути StaticFiles
Использование слияния на основе сортировки для разбора заголовка Range
Установка Content‑Type вместо Content‑Range в ответах с несколькими диапазонами
Использование окончаний строк CRLF в границах multipart byterange
Предотвращение изменения заголовков FileResponse при range‑запросах
Возврат явного origin в CORS‑ответе, когда разрешены credentials
Включение autoescape по умолчанию в Jinja2Templates
Удалённо (Removed):
Удалены параметры on_startup и on_shutdown из Starlette и Router. Вместо этого используйте параметр lifespan
Удалён декоратор on_event() из Starlette и Router. Вместо этого используйте параметр lifespan
Удалён метод add_event_handler() из Starlette и Router. Вместо этого используйте параметр lifespan
Удалены методы startup() и shutdown() из Router
Удалён декоратор @app.route() из Starlette и Router. Вместо этого используйте Route в параметре routes
Удалён декоратор @app.websocket_route() из Starlette и Router. Вместо этого используйте WebSocketRoute в параметре routes
Удалён декоратор @app.exception_handler() из Starlette. Вместо этого используйте параметр exception_handlers
Удалён декоратор @app.middleware() из Starlette. Вместо этого используйте параметр middleware
Удалена функция iscoroutinefunction_or_partial() из starlette.routing
Удалён параметр **env_options из Jinja2Templates. Вместо этого используйте предварительно настроенный jinja2.Environment через параметр env
Удалена устаревшая сигнатура TemplateResponse(name, context) из Jinja2Templates. Вместо этого используйте TemplateResponse(request, name,...)
Удалён устаревший параметр method из FileResponse
Изменения (Changed):
Теперь jinja2 должен быть установлен для импорта Jinja2Templates. Ранее ошибка возникала только при создании экземпляра класса
Контрибьюторы и благодарности
Kim Christie — оригинальный создатель Starlette, Uvicorn и MkDocs, а также текущий мейнтейнер HTTPX. Работа Ким помогла заложить основу современного асинхронного Python-экосистемы
Adrian Garcia Badaracco — один из самых умных людей, которых я знаю, с которым мне посчастливилось работать в Pydantic
Thomas Grainger — мой учитель по async, всегда готов помочь с вопросами
Alex Grönholm — ещё один наставник по async, всегда быстро помогает с вопросами
Florimond Manca — всегда присутствовал в ранние дни Starlette и Uvicorn и сильно помог экосистеме
Amin Alaee — внёс большой вклад через PR, связанные с файлами
Sebastián Ramírez — поддерживает FastAPI upstream и всегда на связи для помощи с upstream-проблемами
Alex Oleshkevich — сильно помог с шаблонами и многими обсуждениями
abersheeran — человек, к которому я обращаюсь, когда нужна помощь по многим вопросам
Ссылки:
Репозиторий Starlette- https://github.com/Kludex/starlette/releases
Сайт Starlette - https://www.starlette.io/release-notes/#100-march-22-2026
