Apple выпустил язык программирования Swift 5.3 ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π» ΠΊΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Swift System

Компания Apple объявила ΠΎΠ± ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ исходных тСкстов Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Swift System, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ идСоматичСский Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… интСрфСйсов ΠΊ систСмным Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Swift System ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Apple, Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ для Linux. Код Swift System написан Π½Π° языкС Swift ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0.

Swift System прСдоставляСт Π΅Π΄ΠΈΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ доступа ΠΊ систСмным интСрфСйсам, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° всСх ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… Π±Π΅Π· примСнСния Π² Swift-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… спСцифичных обвязок Π½Π° языкС Π‘ΠΈ. ΠŸΡ€ΠΈ этом Swift System Π½Π΅ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ сами систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹, Π° прСдоставляСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ подмноТСство API для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ интСрфСйсы ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ создания Swift System являСтся ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ SwiftNIO ΠΈ SwiftPM. Swift System Π½Π΅ отмСняСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ вСтвлСния Π½Π° основС «#if os()» ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌ, Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΄Π°Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π±ΠΎΠ»Π΅Π΅ бСзопасной ΠΈ
ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ρ€Π΅Π»ΠΈΠ·Π° языка программирования Swift 5.3. ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ сборки ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ для Linux (Ubuntu 16.04/18.04/20.04, Π‘entOS 7/8), macOS (Xcode 12) ΠΈ Windows 10. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ тСксты Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0.

Π’ Π½ΠΎΠ²ΠΎΠΌ выпускС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Windows ΠΈ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ поставка инструмСнтария для сборки ΠΈ запуска Swift-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Windows 10. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΎ ΠΎΡ‚Ρ‚Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ языка. Из Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй отмСчаСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° для Ρ‚ΠΈΠΏΠ° String, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ выраТСния «where», ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ сСмантики didSet, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° указания Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… шаблонов Π² выраТСниях Catch, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°
Float16, Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ.

Π‘Π½ΠΈΠΆΠ΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ — Ссли Π² Swift 4 Ρ€Π°Π·ΠΌΠ΅Ρ€ собранной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π» Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° Objective-C Π² 2.3 Ρ€Π°Π·Π°, Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π·Ρ€Ρ‹Π² сокращён Π΄ΠΎ 1.5 Ρ€Π°Π·Π°. Π’ Π½ΠΎΠ²ΠΎΠΌ выпускС Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ускорСна ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ сборка ΠΈ сборка ΠΊΠΎΠ΄Π° с большим числом свойств ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ срСдства диагностики Π² компиляторС ΠΈ качСство Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСсурсов, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π²ΠΎ врСмя исполнСния, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ изобраТСния. Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² для Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ опрСдСлСния условных зависимостСй.

Напомним, Ρ‡Ρ‚ΠΎ язык Swift наслСдуСт Π»ΡƒΡ‡ΡˆΠΈΠ΅ элСмСнты языков C ΠΈ Objective-C, ΠΈ прСдоставляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль, ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΡƒΡŽ с Objective-C (Swift-ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒΡΡ с ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° Π‘ ΠΈ Objective-C), Π½ΠΎ отличаСтся использованиСм срСдств автоматичСского распрСдСлСния памяти ΠΈ контроля пСрСполнСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ массивов, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°. Swift Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ мноТСство соврСмСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² программирования, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ замыкания, ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, лямбда-выраТСния, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈ словарныС Ρ‚ΠΈΠΏΡ‹, быстрыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ коллСкциями, элСмСнты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. ВСрсия для Linux Π½Π΅ привязана ΠΊ Objective-C Runtime, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ язык Π² окруТСниях, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… отсутствуСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Objective-C.

PСализация Swift построСна с задСйствованиСм Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ свободного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° LLVM. Для обСспСчСния высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Swift-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, выполняСмый Π² тСстах Apple Π½Π° 30% быстрСС ΠΊΠΎΠ΄Π° Π½Π° Objective-C. ВмСсто сборщика мусора Π² Swift ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ срСдства подсчёта ссылок Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π’ поставку Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Swift Package Manager, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ срСдства для распространСния ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΈ прилоТСниями Π½Π° языкС Swift, управлСния зависимостями, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, сборки ΠΈ связывания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ