Найти в Дзене
Chidorin

Vapor 5 Использование экосистемы

По мере продвижения к Vapor 5 мы начинаем понимать, как будут выглядеть наши пакеты в современной экосистеме. Отчасти это связано с интеграцией на сервере множества пакетов, которые становятся неотъемлемой частью Swift.

Ярким примером этого является JWTKit, в новой основной версии которого используются преимущества Swift 6, тестирование Swift, пакет тестов и последние улучшения в Swift Crypto. Важным релизом был JWTKit v5, в котором была удалена готовая копия BoringSSL, чтобы сократить время сборки для всех, кто ее создает, и который с самого начала создавался с учетом параллелизма Swift.

MultipartKit - это следующий пакет, который получит такую же поддержку. Частично это связано с переходом на Swift-тестирование, чтобы упростить написание тестов (это намного, намного приятнее!), и написанием тестовых тестов для обеспечения максимальной производительности пакета. Мы также готовимся к миру параллелизма Swift, удалив SwiftNIO как зависимость. Это может показаться странным шагом, учитывая, что мы "внедряем экосистему", но в этом нет необходимости. Мы можем воспользоваться преимуществами AsyncSequences для предоставления полноценного потокового API, который полезен при больших нагрузках.

Использование параллелизма Swift означает, что нам не нужны EventLoopFutures, и мы можем сделать тип полезной нагрузки независимым, чтобы они не требовали байтовых буферов. Будущее Swift на сервере, вероятно, связано с переходом от байтбуферов к AsyncSequence<ArraySlice<UInt8>> или аналогичному. Однако производительность для использования AsyncSequences таким образом еще не достигнута, поэтому мы можем разрешить использование байтбуферов при желании. Удаление NIO в качестве зависимости позволяет таким пакетам, как Swift OpenAPI Generator, интегрировать MultipartKit, устраняя дублирование в экосистеме.

В Vapor 5 также будут интегрированы многие из этих пакетов. В тестах будет использоваться Swift-тестирование, а новый модуль VaporTesting облегчит пользователям Vapor написание своих тестов с помощью Swift-тестирования. Тесты позволят нам начать правильно измерять производительность, чтобы мы могли объективно улучшить ее. Swift Argument Parser - это еще один пакет, которого не существовало на момент выпуска Vapor 4, и который устранит множество дублированных действий.

Swift Service Lifecycle - это фундаментальный пакет в мире структурированного параллелизма и еще один пакет, который Vapor (и наши драйверы баз данных) будут использовать для управления жизненным циклом сервисов. Ознакомьтесь с замечательным выступлением Франца на конференции ServerSide.swift, в котором он объясняет, почему это важно и как это можно использовать. Кроме того, у нас также есть промежуточное программное обеспечение Swift и библиотеки HTTP-серверов, которые в настоящее время находятся в стадии разработки, чтобы снова устранить дублирование и упростить обмен кодом по всей экосистеме.

Все это сослужит Vapor 5 хорошую службу в работе с экосистемой и обеспечит надежную основу для роста и эволюции.