Новото в езика Swift 4.2 на Apple

Преди планираното издание на Swift 5 за 2019 г. Apple пусна междинната версия Swift 4.2.

Текуща версия: Какво е новото в Apple Swift 4.2

Версия 4.2 на програмния език на Apple Swift приближава езика до стабилизиран двоичен интерфейс на приложението (ABI) и позволява двоична съвместимост за бъдещи версии. Стабилността на ABI позволява двоична съвместимост между библиотеки и приложения, компилирани с различни версии на езика.

Въпреки че целта на Apple е стабилност, Swift 4.2 не е двоично съвместим с предишни версии. Осигурена е обаче съвместимост с източника. Повечето изходни кодове, създадени с компилатора Swift 4.0, трябва да се компилират както с компилаторите Swift 4.2, така и с Swift 4.1.

Други нови функции в Swift 4.2 са:

  • Генерични подобрения, закрепени от завършването на поддръжка на условно съответствие, намаляване на количеството на кода на шаблона и правене на повече код за повторна употреба.
  • Стандартните функции на библиотеката включват подобрения на протокола Hashable и единен набор от функции и протоколи за рандомизация.
  • Поддръжка на компилация в групов режим, която подобрява времето за изграждане.
  • Промяна в конвенцията за повикване за цикъла на запазване / освобождаване, за да се намали размерът на кода и да се подобри производителността.
  • Поддръжка на рекурсивни метаданни.
  • По-компактни метаданни за отражение.
  • Аргументи за отклонение, вградени в сайтовете за повикване.
  • Различни корекции на грешки, като например за наследяване на общи инициализатори.
  • В compilerдирективата, която е синтактично еквивалентна на #if swiftпроверката версия, но проверките срещу версията на компилатора, независимо от това кой режим на съвместимост работи.
  • Нови възможности на мениджъра на пакети Swift, включително поддръжка за групов режим, с цели, компилирани сега, използващи този режим; подобрена логика за генериране на схеми; и автоматично генериране на Xcode проект.

Къде да изтеглите Swift 4.2

Можете да изтеглите Swift 4.2, като изтеглите Xcode 10.0 IDE от Apple.

Други планове за Swift 4.2 включват:

  • Подобрения в производителността по време на компилация.
  • Сега низовете са 16 байта вместо 24 байта. Apple вижда това като добър компромис между използването на паметта и производителността, като същевременно е достатъчно голям, за да направи малки оптимизации на низове.
  • Предлагат се API за по-лесно генериране на произволни числа.
  • В has importдирективата изграждане конфигурация по-добре изразява намерение при споделяне на код между IOS и MacOS.

Предишна версия: Какво е новото в Swift 4.1

Пуснат в края на март 2018 г., Swift 4.1 добавя повече генерици към езика, както и подобрения в изграждането. Версия 4.1 е съвместима с източника с Swift 4.0.

Предложенията, свързани с генерични продукти, внедрени в изданието 4.1, включват условно съответствие, изразяващо идеята, че родовият тип ще съответства на определен протокол само когато аргументите на типа отговарят на специфични изисквания. Очаква се тази функция да окаже голямо влияние върху стандартната библиотека на Swift. Другите подобрения на генеричните лекарства включват:

  • Наличието на компилатора да синтезира Equatableи Hashableсъобрази, за да се намали стандартното ниво и сложността.
  • Създаване на стандартни типове библиотечни индекси Hashable.
  • Премахване на свързаните тип, IndexDistance, от Collection и променяте употреби до типа на бетон, Intвместо.

Също така в Swift 4.1 има повече начини за конфигуриране на компилации, като оптимизация на размера на кода и по-лесни механизми за насочване на поддръжка на платформа и среда.

Промените под качулката във версия 4.1 бяха направени като част от план за стабилизиране на ABI (двоично взаимодействие на приложения) в Swift 5, който се очаква в края на тази година. Тези променливи промени включват използване на поле с размер на думата в заглавката на родния обект за преброяване на референции и одити на функции по време на изпълнение. Също така, различни обвивки за събиране се свиват чрез използването на условно съответствие.

Swift 4.1 подобрява Swift Package Manager. Сега той разрешава зависимости в графики на пакети, които използват URL схеми като sshи http. Също така, производителността е повишена за графики на пакети със споделени зависимости.

Надстройката 4.1 също включва предложения за еволюция на Swift, включително премахване на ключови думи за собственост weakи unownedза декларации за собственост в протокол. Това се прави за яснота. Също така се ограничават инициализаторите на структури от различни модули. Това съответства на съществуващо ограничение за класове.

Къде да изтеглите Swift 4.1

Можете да изтеглите надстройката на Swift 4.1 от уеб страницата за изтегляне на Swift. Също така, Swift 4.1 е достъпен с IDE на Xcode 9.3, който разполага с мигратор на код за обработка на много промени в източника.

Предишна версия: Какво е новото в Swift 4.0

Swift 4.0 е голямо надграждане на Swift на Apple, тригодишния наследник на езика Objective-C, използван за разработка на MacOS и iOS приложения.

Надстройката на Swift 4 подобрява Swift Package Manager и предоставя нови режими на съвместимост за разработчиците. Apple заяви, че Swift 4 също така прави Swift по-стабилен и подобрява стандартната си библиотека. Swift 4 е до голяма степен съвместим с източници с Swift 3 и се доставя като част от Xcode 9 IDE на Apple.

Новите неща в мениджъра на пакети на Swift 4

Swift Package Manager, който дебютира в Swift 3, е инструмент за разпространение на код. Той е интегриран със системата за изграждане на Swift за автоматизиране на процеси, включително изтегляне, компилиране и свързване на зависимости. Подобренията в мениджъра на пакети на Swift 4 включват:

  • По-чист API за пакети, който позволява на пакетите да задават нови настройки. Тези настройки дават на разработчиците по-голям контрол върху изграждането на пакети и организацията на източници на диска.
  • Разработването на множество пакети в тандем е улеснено.
  • Формализиране на пакетни продукти, даващи възможност за контрол върху това, какви библиотеки пакетът публикува на клиентите.
  • Изграждането на пакети на MacOS вече се случва в пясъчник, предотвратявайки достъпа до мрежата и модификацията на файловата система, за да се намали обхватът на злонамерени манифести.

Нови режими на съвместимост в Swift 4 подпомагат миграцията

Новите режими на съвместимост на Swift 4 могат да ви спестят от необходимостта да модифицирате кода, за да можете да използвате новата версия на компилатора. Поддържат се два режима, включително режимът Swift 3.2, който приема повечето изходни файлове, изградени със Swift 3.x компилатори, и режимът Swift 4.0, който включва промени в Swift 4 и API.

Apple заяви, че за много проекти ще е необходима известна миграция на източници, но броят на промените в източника е „доста скромен“ в сравнение с много предишни големи промени между изданията на Swift. Въвеждането на режимите на съвместимост в Swift 4 дава на разработчиците по-голям контрол върху темпото на миграция.

Езиковите подобрения изобилстват в Swift 4

Swift 4 представя няколко езикови подобрения, включително:

  • По-бърза и лесна за използване Stringреализация, запазваща коректността на Unicode и поддържаща разработването и използването на поднизове.
  • Подобрено използване и управление на типовете колекции.
  • Прилагане на изключителен достъп до паметта, при което потенциалните модификации на променливи трябва да бъдат изключителни с всеки друг достъп до тази променлива.
  • Възможност за архивиране structи enumтипове.
  • Безопасна за типа сериализация към външни формати като JSON.
  • Ориентирани към протокол цели числа, които изчистват Integer API и ги правят по-полезни за общо програмиране.
  • Поддръжка на whereклаузи за ограничаване на асоциирани типове. Преди това асоциираните типове можеха да изразяват само прости ограничения за наследяване и не по-сложни ограничения, достъпни за родови типове с where клаузата.
  • Включване на swift runкомандата за изграждане и стартиране на изпълним файл, дефиниран в текущия пакет.
  • Премахване на final поддръжка на ключови думи при деклариране на функции в разширения на протокола.
  • Подобрено взаимодействие между privateдекларации и разширения, с privateразширен контрол на достъпа, така че членовете, дефинирани в разширение на даден тип, имат същия достъп като членовете, дефинирани в самия тип, стига типът и разширението да са в един и същ изходен файл.