Компания Apple ΠΎΡ‚ΠΊΡ€Ρ‹Π»Π° ΠΊΠΎΠ΄ сборочной систСмы Swift Build

Компания Apple объявила ΠΎΠ± ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ исходного ΠΊΠΎΠ΄Π° сборочной систСмы Swift Build, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ²ΡˆΠ΅ΠΉΡΡ Π² ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… срСдах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Xcode ΠΈ Swift Playground. БистСма ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° языках Swift, C ΠΈ Objective-C, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками. Для ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Swift Package Manager ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (Β«β€”build-system swiftbuildΒ»), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Swift Build Π² качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° для сборки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Код Swift Build написан Π½Π° языкС Swift ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ сборка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² для Linux, macOS, iOS, Android, QNX ΠΈ Windows.

На основС прСдоставлСнных сборочных ΠΏΡ€Π°Π²ΠΈΠ» Swift Build Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ»Π°Π½ сборки ΠΈ запускаСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ сборочного процСсса. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ развиваСтся с оглядкой Π½Π° обСспСчСниС кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠΉ сборки для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм ΠΈ Ρ‚ΠΈΠΏΠΎΠ² устройств. ОсновноС Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ сборочной систСмы описываСтся, ΠΊΠ°ΠΊ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ прСдоставлСнных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ описаниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ исходный ΠΊΠΎΠ΄, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ прилоТСния.

БистСма Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Π²ΠΈΠ΄Π΅ надстройки Π½Π°Π΄ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ llbuild (low-level build), Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„ΠΎΠΌ зависимостСй, опрСдСлСния Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΏΡ€Π°Π²ΠΈΠ» сборки, отслСТивания пСрСсобираСмых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ создания манифСстов для инструмСнтария Ninja. Из Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… возмоТностСй Swift Build отмСчаСтся: ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с компилятором Swift для эффСктивной ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΠΈ сборка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° языкС Swift; ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сборки Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, GUI-прилоТСния ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ; ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ сборочного Π³Ρ€Π°Ρ„Π° для повшСния эффСктивности распараллСливания процСссов сборки ΠΊΠΎΠ΄Π° Π½Π° языках Swift ΠΈ C.

ΠžΡΠ½ΠΎΠ²Ρƒ Swift Build составляСт процСсс SWBBuildService, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСтся послС инициирования сборки ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° swbuild, срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Xcode ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Swift Package Manager. ВзаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ сборочным сСрвисом SWBBuildService ΠΈ клиСнтским процСссом осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ сСриализированных сообщСний ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° (pipe). На сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° взаимодСйствиС со сборочной систСмой осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· API SwiftBuild ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки swbuild.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Swift Build опрСдСляСт Π½Π°Π±ΠΎΡ€ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ:

  • SWBLLBuild β€” надстройка для доступа ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ llbuild;
  • SWBUtil β€” Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ рСализация упорядочСнных списков;
  • SWBCSupport β€” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠ΄Π° Π½Π° C ΠΈ Objective-C;
  • SWBCore β€” Π΄Π²ΠΈΠΆΠΊΠΈ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ макросов, настроСк, ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, спСцификаций, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ;
  • SWBTaskConstruction β€” Π»ΠΎΠ³ΠΈΠΊΠ° формирования Π·Π°Π΄Π°Ρ‡;
  • SWBTaskExecution β€” организация выполнСния сборочных Π·Π°Π΄Π°Ρ‡;
  • SWBBuildSystem β€” построСниС ΠΈ планирования сборочных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ созданиСм ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π°Ρ‡.

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

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