Скрытые возможности крашлогов: как читать информацию об ошибках
Никто не любит краши. Бывает, что их сложно анализировать, а исследование причин может отнять большое количество времени (и возможно, даже не всегда привести нас к решению).
Патрик Уордл проделал огромную работу и написал статью, в которой объяснил, как упростить понимание структуры и информации из крашлогов.
Он признаёт, что сам путь исследования требует глубокого понимания реверс-инжиниринга, поэтому поверхностно ещё и затронуты темы дизассемблирования и отладки на примере ARM64.
Сам материал наполнен большим количеством примеров не только под iOS, но и macOS, и, даже показан баг 0day (который затрагивает даже бетки 15 макоси).
📖 Рекомендую прочитать и сохранить исследование.
А если вы хотите узнать, что, например, означает EXC_BAD_ACCESS — у нас в канале уже есть и такой пост.
✅ Кстати, что в ноушне есть раздел по повышению производительности приложения, информация из которого поможет уменьшить причины появления самых разных крашей.
😃 iOS Dev
Никто не любит краши. Бывает, что их сложно анализировать, а исследование причин может отнять большое количество времени (и возможно, даже не всегда привести нас к решению).
Патрик Уордл проделал огромную работу и написал статью, в которой объяснил, как упростить понимание структуры и информации из крашлогов.
Он признаёт, что сам путь исследования требует глубокого понимания реверс-инжиниринга, поэтому поверхностно ещё и затронуты темы дизассемблирования и отладки на примере ARM64.
Сам материал наполнен большим количеством примеров не только под iOS, но и macOS, и, даже показан баг 0day (который затрагивает даже бетки 15 макоси).
📖 Рекомендую прочитать и сохранить исследование.
А если вы хотите узнать, что, например, означает EXC_BAD_ACCESS — у нас в канале уже есть и такой пост.
Please open Telegram to view this post
VIEW IN TELEGRAM
Зарплаты стажёров и джунов в IT
На Хабр.карьере вышло новое исследование зарплат, на этот раз изучили зарплатные возможности для новичков в IT — стажеров и джунов.
Главные выводы:
1️⃣ Проще попасть в IT с позиции стажера.
2️⃣ Доля вакансий с удаленкой для джунов и стажеров сейчас 60%, это на 17% больше, чем в начале 2023.
3️⃣ Больше всего начинающие IT-специалисты зарабатывают в Ozon Tech, YADRO и Холдинге Т1.
💸 Эти данные основаны на реальных зарплатах, а больше про динамику на рынке можно узнать в этом посте.
😃 iOS Dev
На Хабр.карьере вышло новое исследование зарплат, на этот раз изучили зарплатные возможности для новичков в IT — стажеров и джунов.
Главные выводы:
1️⃣ Проще попасть в IT с позиции стажера.
2️⃣ Доля вакансий с удаленкой для джунов и стажеров сейчас 60%, это на 17% больше, чем в начале 2023.
3️⃣ Больше всего начинающие IT-специалисты зарабатывают в Ozon Tech, YADRO и Холдинге Т1.
Please open Telegram to view this post
VIEW IN TELEGRAM
Отслеживание утечек памяти в iOS-приложении со SwiftUI в Runtime
Декларативность, а также то, что в SwiftUI нет явно выраженного жизненного цикла для вьюх, значительно повышает трудности при поиске утечек по сравнению с UIKit.
📖 На хабре iOS-разработчик Фарид поделился своим решением в компании для упрощения поиска проблем утечек в таких проектах.
Основные блоки:
1️⃣ Рассмотрены основные подходы для поиска утечек.
2️⃣ Поиск оптимального варианта для нахождения таких проблем.
3️⃣ Поиск опций для подстраховки от утечек в будущем.
😃 iOS Dev
Декларативность, а также то, что в SwiftUI нет явно выраженного жизненного цикла для вьюх, значительно повышает трудности при поиске утечек по сравнению с UIKit.
📖 На хабре iOS-разработчик Фарид поделился своим решением в компании для упрощения поиска проблем утечек в таких проектах.
Основные блоки:
1️⃣ Рассмотрены основные подходы для поиска утечек.
2️⃣ Поиск оптимального варианта для нахождения таких проблем.
3️⃣ Поиск опций для подстраховки от утечек в будущем.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Как использовать файлы EditorConfig в Xcode 16
🛠 Если вы работали/работаете над несколькими проектами с разным кодстайлом, то может быть такое, что приходится настраивать параметры Xcode каждый раз при переключении между проектами.
А если в проекте нет линтера, который обеспечивает соблюдение стиля и вы вдруг забудете применить эти настройки, то в итоге можно легко получить непоследовательное форматирование кода во всем проекте.
В Xcode 16 добавлена поддержка файлов EditorConfig, которые позволяют задавать настройки редактора Xcode для каждого проекта.
📖 В этой статье вы узнаете, как настроить файлы EditorConfig в Xcode и какие настройки поддерживаются на данный момент.
✅ Больше советов по работе с инструментарием вы можете найти здесь.
😃 iOS Dev
🛠 Если вы работали/работаете над несколькими проектами с разным кодстайлом, то может быть такое, что приходится настраивать параметры Xcode каждый раз при переключении между проектами.
А если в проекте нет линтера, который обеспечивает соблюдение стиля и вы вдруг забудете применить эти настройки, то в итоге можно легко получить непоследовательное форматирование кода во всем проекте.
В Xcode 16 добавлена поддержка файлов EditorConfig, которые позволяют задавать настройки редактора Xcode для каждого проекта.
📖 В этой статье вы узнаете, как настроить файлы EditorConfig в Xcode и какие настройки поддерживаются на данный момент.
Please open Telegram to view this post
VIEW IN TELEGRAM
SwiftUI AlignmentGuide: расширенное руководство
📖 На хабре опубликована большая статья с примерами для работы с модификатором AlignmentGuide, описано, когда могут пригодиться ViewDimensions и какие есть альтернативы.
🛠А ещё есть интерактивный сайт, где можно посмотреть не только на самые разные примеры верстки, но и поперетаскивать блоки.
😃 iOS Dev
📖 На хабре опубликована большая статья с примерами для работы с модификатором AlignmentGuide, описано, когда могут пригодиться ViewDimensions и какие есть альтернативы.
🛠А ещё есть интерактивный сайт, где можно посмотреть не только на самые разные примеры верстки, но и поперетаскивать блоки.
Please open Telegram to view this post
VIEW IN TELEGRAM
DebugDescription в Xcode 16: новый макрос для упрощения отладки
При работе с кастомными типами отладка может быть непростой задачей.
Для упрощения можно юзать
А с помощью макроса DebugDescription, можно вызвать debugDescription и чекнуть детальное описание.
😃 iOS Dev
При работе с кастомными типами отладка может быть непростой задачей.
Для упрощения можно юзать
CustomDebugStringConvertible
, который позволяет кастомизировать вывод в таких случаях.А с помощью макроса DebugDescription, можно вызвать debugDescription и чекнуть детальное описание.
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа с данными банковских приложений на iOS с использованием SwiftUI + Vision
Одна из перспективных задач при работе с любыми приложениями — упрощение ввода, так как это экономия времени, сил и способ избежать потенциальных ошибок.
Но у того же FinanceKit есть множество ограничений: минимальная ось 17.4 и требования к самим компаниям, да и пользователи вряд ли захотят делиться своими данными.
🧑💻 Наш читатель, Слава Слуцкер, придумал необычный и интересный способ для решения задачи сбора данных о кэшбеке из разных источников на базе скриншотов (но, конечно, потенциал использования выше).
Для этого он использовал связку Vision (для распознавания определённых строк и дальнейшего парсинга процентов) и SwiftUI. Vision умеет работать в том числе и с разными языками, что безусловный плюс, а ещё прямо на устройстве.
📖 В статье на хабре вы можете почитать о процессе решения этой задачи, познакомиться с кодом и, возможно, использовать это в своих приложениях. Кстати, посмотреть результат (и поделиться фидбэком) можно в тестфлайте.
😃 iOS Dev
Одна из перспективных задач при работе с любыми приложениями — упрощение ввода, так как это экономия времени, сил и способ избежать потенциальных ошибок.
Но у того же FinanceKit есть множество ограничений: минимальная ось 17.4 и требования к самим компаниям, да и пользователи вряд ли захотят делиться своими данными.
🧑💻 Наш читатель, Слава Слуцкер, придумал необычный и интересный способ для решения задачи сбора данных о кэшбеке из разных источников на базе скриншотов (но, конечно, потенциал использования выше).
Для этого он использовал связку Vision (для распознавания определённых строк и дальнейшего парсинга процентов) и SwiftUI. Vision умеет работать в том числе и с разными языками, что безусловный плюс, а ещё прямо на устройстве.
📖 В статье на хабре вы можете почитать о процессе решения этой задачи, познакомиться с кодом и, возможно, использовать это в своих приложениях. Кстати, посмотреть результат (и поделиться фидбэком) можно в тестфлайте.
Please open Telegram to view this post
VIEW IN TELEGRAM
Как автоматически локализовать секцию «Что нового?» с помощью App Store connect API
При создании новой версии приложения в App Store Connect мы обязаны указывать какую-то инфу, которая меняется нечасто (конечно, если у вас нет SMM-команды, которая отвечает за юмор и репосты скриншотов).
Раньше для этого повсеместно использовали fastlane, но сейчас всё чаще я слышу от коллег о переходе на нативное апи (некоторые пишут свою обёртку, некоторые используют готовые решения).
Эти способы позволяют сэкономить немного времени, усилий и устранить человеческие ошибки.
📖 В этой статье рассказано, как использовать API App Store Connect для предварительного указания информации при создании новой версии приложения.
🔗 А вот здесь описаны и другие кейсы использования этого API.
😃 iOS Dev
При создании новой версии приложения в App Store Connect мы обязаны указывать какую-то инфу, которая меняется нечасто (конечно, если у вас нет SMM-команды, которая отвечает за юмор и репосты скриншотов).
Раньше для этого повсеместно использовали fastlane, но сейчас всё чаще я слышу от коллег о переходе на нативное апи (некоторые пишут свою обёртку, некоторые используют готовые решения).
Эти способы позволяют сэкономить немного времени, усилий и устранить человеческие ошибки.
📖 В этой статье рассказано, как использовать API App Store Connect для предварительного указания информации при создании новой версии приложения.
🔗 А вот здесь описаны и другие кейсы использования этого API.
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа с JSON в Swift: расширенное руководство
Парсинг JSON чаще всего является базой приложения для iOS, использующим REST API.
Делюсь руководством, которое поможет освежить знания (состоит из нескольких глав, в каждой их которых подразделы с примерами).
1️⃣ Как работать с данными JSON в Swift.
2️⃣ Продвинутые техники для парсинга сложных данных.
3️⃣ Создание приложения SwiftUI, которое загружает и парсит JSON.
🛠 Проект целиком доступен и на github.
🔗 А вот тут я писал про четыре полезных сервиса для упрощения работы с JSON.
😃 iOS Dev
Парсинг JSON чаще всего является базой приложения для iOS, использующим REST API.
Делюсь руководством, которое поможет освежить знания (состоит из нескольких глав, в каждой их которых подразделы с примерами).
1️⃣ Как работать с данными JSON в Swift.
2️⃣ Продвинутые техники для парсинга сложных данных.
3️⃣ Создание приложения SwiftUI, которое загружает и парсит JSON.
🛠 Проект целиком доступен и на github.
🔗 А вот тут я писал про четыре полезных сервиса для упрощения работы с JSON.
Please open Telegram to view this post
VIEW IN TELEGRAM
Архитектурная секция на собеседованиях
Команда мобильной разработки Яндекс 360 записала пример прохождения архитектурной секции в Яндекс. В интервью участвуют руководитель технического управления сервисами Виктор Брыксин, а в роли кандидата — руководитель мобильной разработки Михаил Буравлев.
В тестовом задании нужно было спроектировать абстрактное мобильное приложение для медитаций: с отдельным экраном для списка треков, возможностью воспроизведения аудиозаписей, упрощённым календарём и пуш-уведомлениями. После этого нужно было поработать с требованиями, архитектурой и API, а также показать ход мысли и защитить свои решения.
Забирайте наглядный пример прохождения секции!
Смотреть на Youtube
Смотреть в ВК
Команда мобильной разработки Яндекс 360 записала пример прохождения архитектурной секции в Яндекс. В интервью участвуют руководитель технического управления сервисами Виктор Брыксин, а в роли кандидата — руководитель мобильной разработки Михаил Буравлев.
В тестовом задании нужно было спроектировать абстрактное мобильное приложение для медитаций: с отдельным экраном для списка треков, возможностью воспроизведения аудиозаписей, упрощённым календарём и пуш-уведомлениями. После этого нужно было поработать с требованиями, архитектурой и API, а также показать ход мысли и защитить свои решения.
Забирайте наглядный пример прохождения секции!
Смотреть на Youtube
Смотреть в ВК
Планируете что-то обновить после презентации?
Anonymous Poll
16%
AirPods (или AirPods Max)
12%
Apple Watch (или ultra)
5%
iPhone 16 (или plus)
24%
iPhone 16 pro (или pro max)
60%
Ничего менять не планирую
Camera Control в iPhone16: AVCaptureControl и фреймворк LockedCameraCapture
Буквально вчера показали новый телефон, а у нас уже появилсяновый островок новый контрол, с которым можно работать.
📖 На официальной странице Apple можно познакомиться с лучшими практиками в плане дизайна.
А из того, что нам может пригодиться:
1️⃣ AVCaptureControl — новый контрол только для 16/16 Pro (примеры работы - тут).
2️⃣ LockedCameraCapture — новый фреймворк, с помощью которого можно создать расширение для запуска камеры на залоченном девайсе. Туториал уже доступен (но, как и всегда, есть ряд ограничений).
😃 iOS Dev
Буквально вчера показали новый телефон, а у нас уже появился
📖 На официальной странице Apple можно познакомиться с лучшими практиками в плане дизайна.
А из того, что нам может пригодиться:
1️⃣ AVCaptureControl — новый контрол только для 16/16 Pro (примеры работы - тут).
2️⃣ LockedCameraCapture — новый фреймворк, с помощью которого можно создать расширение для запуска камеры на залоченном девайсе. Туториал уже доступен (но, как и всегда, есть ряд ограничений).
Please open Telegram to view this post
VIEW IN TELEGRAM
Swift Testing: Разбор API и макроса
Новый понятный и выразительный API делает написание тестов более простым, а в самом интерфейсе Xcode сделали большой шаг вперёд для оповещений при ошибках (или же корректном выполнении).
📖 В этой статье уделено внимание написанию тестов с использованием новых возможностей, а также разобрана миграция с XCTests.
🔗 А вот тут можно детальнее познакомиться с улучшениями и преимуществами по сравнению с XCTests.
😃 iOS Dev
#expect
Новый понятный и выразительный API делает написание тестов более простым, а в самом интерфейсе Xcode сделали большой шаг вперёд для оповещений при ошибках (или же корректном выполнении).
📖 В этой статье уделено внимание написанию тестов с использованием новых возможностей, а также разобрана миграция с XCTests.
🔗 А вот тут можно детальнее познакомиться с улучшениями и преимуществами по сравнению с XCTests.
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS Dev
🥳 Нужен будет только один набор скриншотов при загрузке приложения в App Store (как для iPhone, так и для iPad). 📖 Отличная новость для дизайнеров, инди-разработчиков, да и для компаний тоже. А ещё доступ к запросу фичеринга будет более явным (конечно же…
Обновление App Store Connect
C сегодняшнего дня обязателен только один набор скриншотов для приложений (и для iPhone, и для iPad).
🤩 Теперь выкладывать приложения будет проще (и быстрее).
😃 iOS Dev
C сегодняшнего дня обязателен только один набор скриншотов для приложений (и для iPhone, и для iPad).
Please open Telegram to view this post
VIEW IN TELEGRAM
Оптимизация использования памяти для SwiftUI+CoreData
Несмотря на наличие lazy containers в SwiftUI, и в целом механизмов для оптимизации CoreData, по мере увеличения сложности приложений могут возникнуть ситуации, когда можно поймать краши из-за слишком большого использования памяти.
Важно понимать не только особенности работы с вьюхами, но и свойства самой CoreData.
📖 В этом проекте рассмотрен пошаговый процесс оптимизации работы с памятью для демонстрационного приложения (изначально использующего 1,6 ГБ памяти для отображения всего лишь 100 элементов данных), которое в итоге сможет работать с сотнями объектов и юзать всего 200 МБ.
🛠 Код приложения доступен на GitHub.
✅ Кстати, если вы хотите почитать в целом про память: ARC, side table, флаги, утечки и многое другое (и поотвечать на вопросы) — доступ можно получить здесь.
😃 iOS Dev
Несмотря на наличие lazy containers в SwiftUI, и в целом механизмов для оптимизации CoreData, по мере увеличения сложности приложений могут возникнуть ситуации, когда можно поймать краши из-за слишком большого использования памяти.
Важно понимать не только особенности работы с вьюхами, но и свойства самой CoreData.
📖 В этом проекте рассмотрен пошаговый процесс оптимизации работы с памятью для демонстрационного приложения (изначально использующего 1,6 ГБ памяти для отображения всего лишь 100 элементов данных), которое в итоге сможет работать с сотнями объектов и юзать всего 200 МБ.
🛠 Код приложения доступен на GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
Подборка вопросов по Swift и iOS с технических собеседований 2024
Я продолжаю обновлять базу знаний, а также собирать материалы (и новые темы) для будущего обновления приложения iOS IQ.
Сегодня готов поделиться здесь огромным материалом (а в ноушене комментариями, дополнениями и примерами).
1. В чем разница между статической переменной и переменной класса?
Почему их природа схожа, и при чём здесь наследование?
2. Вычисляются ли ленивые переменные более одного раза?
И почему потокобезопасность важна.
3. В чём разница между self и Self?
Разница же в Swift заключается в их использовании и контексте. Если вы писали на других языках, то наверняка знаете для чего там использовался this или typeof (в ноушне много примеров).
4. Как сделать методы опциональными в протоколе?
Есть два подхода - optional и extension (а вот как их использовать - в разборе вот здесь).
5. Как происходит оптимизация использования памяти в UITableView?
В канале я регулярно делюсь проблемами и решениями для оптимизации. Например, как быть, если у нас очень много ячеек. В Notion есть пример разбора и таких ситуаций.
6. Что такое Dependency Injection и каковы его преимущества?
Здесь, как вы уже догадались, речь про Constructor injection/Property injection/Method injection. Ну и про описание преимуществ, конечно.
7. Объясните разницу между throws и rethrows в Swift
Как правильно использовать do-catch и многое другое.
8. Объясните типы сессий и задач, поддерживаемые классом URLSession.
Default Session/Ephemeral Session/Background Session. В этой теме рассмотрено, есть ли у нас способ повторить неудавшиеся запросы.
9. Сравните статические и динамические библиотеки
Про то, что может включать каждый тип либ, что происходит при компиляции, как быть с обновлениями.
10. Как бы вы реализовали список с бесконечной прокруткой?
Большой разбор на примерах.
11. Что такое copy-on-write в Swift? Объясните, как настроить его реализацию.
Конечно, эта техника позволяет значительно сократить использование памяти и повысить производительность. Но вот что внутри?
12. Объясните, как используется паттерн Factory и какую проблему решает этот паттерн.
Тут можно не забыть об использовании этой подборки
13. Что такое APNS и как он работает?
14. Объясните назначение ключевого слова «mutating» в Swift.
15. В чем разница между
16. Что такое Mocks и Stubs и в чем разница между ними?
Назначение/Поведение/Использование.
17. Объясните протоколы Equatable, Hashable и Comparable в Swift.
18. Что означает UIApplicationMain?
19. Объясните, почему Swift является типобезопасным языком?
Все о Strong Type, Type Inference, Type Casting, optional, дженериках.
20. Зачем вам нужны escaping closures и когда их следует использовать?
✅ Напомню, что в бусти продолжает действовать выгодное предложение (а если вам нравится канал — то ещё и здесь, в телеграм), и вы уже сейчас можете получить доступ не только к этому материалу, но и к большому количеству тем для собеседований и разбору практических задач.
😃 iOS Dev
Я продолжаю обновлять базу знаний, а также собирать материалы (и новые темы) для будущего обновления приложения iOS IQ.
Сегодня готов поделиться здесь огромным материалом (а в ноушене комментариями, дополнениями и примерами).
1. В чем разница между статической переменной и переменной класса?
Почему их природа схожа, и при чём здесь наследование?
2. Вычисляются ли ленивые переменные более одного раза?
И почему потокобезопасность важна.
3. В чём разница между self и Self?
Разница же в Swift заключается в их использовании и контексте. Если вы писали на других языках, то наверняка знаете для чего там использовался this или typeof (в ноушне много примеров).
4. Как сделать методы опциональными в протоколе?
Есть два подхода - optional и extension (а вот как их использовать - в разборе вот здесь).
5. Как происходит оптимизация использования памяти в UITableView?
В канале я регулярно делюсь проблемами и решениями для оптимизации. Например, как быть, если у нас очень много ячеек. В Notion есть пример разбора и таких ситуаций.
6. Что такое Dependency Injection и каковы его преимущества?
Здесь, как вы уже догадались, речь про Constructor injection/Property injection/Method injection. Ну и про описание преимуществ, конечно.
7. Объясните разницу между throws и rethrows в Swift
Как правильно использовать do-catch и многое другое.
8. Объясните типы сессий и задач, поддерживаемые классом URLSession.
Default Session/Ephemeral Session/Background Session. В этой теме рассмотрено, есть ли у нас способ повторить неудавшиеся запросы.
9. Сравните статические и динамические библиотеки
Про то, что может включать каждый тип либ, что происходит при компиляции, как быть с обновлениями.
10. Как бы вы реализовали список с бесконечной прокруткой?
Большой разбор на примерах.
11. Что такое copy-on-write в Swift? Объясните, как настроить его реализацию.
Конечно, эта техника позволяет значительно сократить использование памяти и повысить производительность. Но вот что внутри?
12. Объясните, как используется паттерн Factory и какую проблему решает этот паттерн.
Тут можно не забыть об использовании этой подборки
13. Что такое APNS и как он работает?
14. Объясните назначение ключевого слова «mutating» в Swift.
15. В чем разница между
@StateObject
и @ObservedObject
в SwiftUI?16. Что такое Mocks и Stubs и в чем разница между ними?
Назначение/Поведение/Использование.
17. Объясните протоколы Equatable, Hashable и Comparable в Swift.
18. Что означает UIApplicationMain?
19. Объясните, почему Swift является типобезопасным языком?
Все о Strong Type, Type Inference, Type Casting, optional, дженериках.
20. Зачем вам нужны escaping closures и когда их следует использовать?
Please open Telegram to view this post
VIEW IN TELEGRAM
Кастомизация тем в SwiftUI с использованием ShapeStyle
В SwiftUI настройка внешнего вида приложения на базе кастомной темы безусловно улучшит пользовательский опыт.
Первоначальный подход к управлению этими настройками предполагает монотонное повторение одних и тех же действий для разных экранов.
📖 В этой статье рассмотрен способ с использованием кастомного ShapeStyle для создания собственных тем во всем приложении.
😃 iOS Dev
В SwiftUI настройка внешнего вида приложения на базе кастомной темы безусловно улучшит пользовательский опыт.
Первоначальный подход к управлению этими настройками предполагает монотонное повторение одних и тех же действий для разных экранов.
📖 В этой статье рассмотрен способ с использованием кастомного ShapeStyle для создания собственных тем во всем приложении.
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Swift 6 официально анонсирован!
И хотя мы с вами используем язык для разработки приложений, он подходит и для много другого: написания библиотек, интернет-сервисов и критичного к производительности и безопасности кода.
Swift 6 расширился ещё и за счёт новых функций низкоуровневого программирования, расширенной поддержки Linux и Windows, новых кроссплатформенным API, включая новую библиотеку тестирования Swift.
📖 На макро-уровне изменения разобраны в этой статье.
А в канале уже сейчас можно прочитать про:
🔗 Новый метод count(where:) в Swift 6
🔗 DebugDescription в Xcode 16: новый макрос для упрощения отладки
🔗 Обновлённый Foundation
🔗 Swift Testing: Разбор API и макроса #expect
🔗 Миграция на Swift 6. И ещё: Swift 6: подготовка ваших проектов Xcode к будущему
😃 iOS Dev
И хотя мы с вами используем язык для разработки приложений, он подходит и для много другого: написания библиотек, интернет-сервисов и критичного к производительности и безопасности кода.
Swift 6 расширился ещё и за счёт новых функций низкоуровневого программирования, расширенной поддержки Linux и Windows, новых кроссплатформенным API, включая новую библиотеку тестирования Swift.
📖 На макро-уровне изменения разобраны в этой статье.
А в канале уже сейчас можно прочитать про:
Please open Telegram to view this post
VIEW IN TELEGRAM