{"id":3501,"date":"2019-09-20T09:02:51","date_gmt":"2019-09-20T07:02:51","guid":{"rendered":"http:\/\/itcraftapps.com\/pl\/?p=3501"},"modified":"2020-03-04T13:04:02","modified_gmt":"2020-03-04T12:04:02","slug":"abi-stability","status":"publish","type":"post","link":"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/","title":{"rendered":"Stabilno\u015b\u0107 ABI i jej znaczenie"},"content":{"rendered":"\n<script type=\"application\/ld+json\">\n    {\n      \"@context\": \"http:\/\/schema.org\",\n      \"@type\": \"Blog\",\n      \"name\": \"itCraftapps.com - Mobile App Development Blog\",\n      \"url\": \"https:\/\/itcraftapps.com\/pl\/blog\"\n    }\n  <\/script>\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"http:\/\/schema.org\",\n  \"@type\": \"Article\",\n  \"mainEntityOfPage\": {\n  \"@type\": \"WebPage\",\n  \"@id\": \"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/\"\n  },\n  \"headline\": \"Co to jest ABI?\",\n \n    \"image\": [\n{\n\t\n  \"@type\": \"ImageObject\", \n  \"contentUrl\": \"Swift-ABI-Stability.jpg\",  \"url\":\"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/09\/Swift-ABI-Stability.jpg\",\n  \"description\": \"Stabilno\u015b\u0107 ABI i jej znaczenie\",\n  \"name\": \"Stabilno\u015b\u0107 ABI i jej znaczenie\"\n\n}\n  \n  ],\n  \n  \"datePublished\": \"2019-09-20\",\n  \"dateModified\": \"2020-03-04\",\n  \"author\": {\n  \"@type\": \"Person\",\n  \"name\": \"Michalina Kukie\u0142ko\",\n  \"jobTitle\": \"iOS Developer\",\n  \"description\": \"iOS Developer at itCraft\"\n\n  },\n  \"publisher\": {\n  \"@type\": \"Organization\",\n  \"name\": \"itCraftapps.com\",\n  \"logo\": {\n  \"@type\": \"ImageObject\",\n  \"url\": \"https:\/\/wp-test.itcraft.pl\/wp-content\/uploads\/2019\/04\/placeholder-post.png\"\n  },\n  \"description\": \"itCraftapps.com - Mobile App Development\"\n}}\n<\/script>\n\n\n\n<h3 class=\"wp-block-heading\">Spis tre\u015bci<\/h3>\n\n\n\n<ol class=\"wp-block-list\"><li><a href=\"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/#1\"><span style=\"text-decoration: underline;\">Co to jest ABI?<\/span><\/a><\/li><li><a href=\"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/#2\"><span style=\"text-decoration: underline;\">Co to jest stabilno\u015b\u0107 ABI?<\/span><\/a><\/li><li><a href=\"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/#2a\"><span style=\"text-decoration: underline;\">Dlaczego stabilno\u015b\u0107 ABI jest tak wa\u017cna dla Swift Developers?<\/span><\/a><\/li><li><a href=\"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/#3\"><span style=\"text-decoration: underline;\">Najwi\u0119ksze zalety stabilno\u015bci ABI<\/span><\/a><\/li><li><span style=\"text-decoration: underline;\"><a href=\"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/#4\">Przydatne linki<\/a><\/span><\/li><\/ol>\n\n\n\n<br \/>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"text-align:left\" id=\"1\">Co to jest ABI?<\/h2>\n\n\n\n<p>W czasie <em>runtime<\/em> pliki binarne <a href=\"https:\/\/itcraftapps.com\/pl\/blog\/10-najpopularniejszych-pytan-o-swift\/\">Swift<\/a> oddzia\u0142uj\u0105 z innymi bibliotekami i komponentami za po\u015brednictwem ABI. ABI oznacza Application Binary Interface &#8211; jest to specyfikacja, z kt\u00f3r\u0105 niezale\u017cnie skompilowane jednostki bibliotek musz\u0105 si\u0119 zgadza\u0107, aby by\u0107 ze sob\u0105 po\u0142\u0105czone i wykonywalne. Te jednostki binarne musz\u0105 uzgodni\u0107 wiele szczeg\u00f3\u0142\u00f3w niskiego poziomu, takich jak spos\u00f3b wywo\u0142ywania funkcji, spos\u00f3b reprezentowania ich danych w pami\u0119ci, a nawet to, gdzie znajduj\u0105 si\u0119 metadane i jak uzyska\u0107 do nich dost\u0119p.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"text-align:left\" id=\"2\">Co to jest stabilno\u015b\u0107 ABI?<\/h2>\n\n\n\n<p>Stabilno\u015b\u0107 ABI oznacza zablokowanie ABI do tego stopnia, \u017ce \u200b\u200bprzysz\u0142e wersje kompilatora mog\u0105 generowa\u0107 pliki binarne zgodne ze stabilnym ABI. Gdy ABI jest stabilne, ma tendencj\u0119 do utrzymywania si\u0119 przez czasu istnienia platformy dzi\u0119ki stale rosn\u0105cym wzajemnym zale\u017cno\u015bciom.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"text-align:left\" id=\"2a\">Dlaczego stabilno\u015b\u0107 ABI jest tak wa\u017cna dla Swift Developers?<\/h3>\n\n\n\n<p>Przed Swift 5 programi\u015bci musz\u0105 zdawa\u0107 sobie spraw\u0119 z problem\u00f3w ze zgodno\u015bci\u0105 wersji, poniewa\u017c poprzednie wersje Swift r\u00f3\u017cni\u0105 si\u0119 od siebie. Nie by\u0142o uzgodnionych plik\u00f3w binarnych do komunikowania si\u0119 ze sob\u0105. Prowadz\u0105 one do wielu problem\u00f3w migracyjnych. Konieczna by\u0142a migracja ca\u0142ego kodu do najnowszej wersji Swift, aby mie\u0107 pewno\u015b\u0107, \u017ce si\u0119 nie zepsuje.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"548\" height=\"65\" src=\"http:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/09\/ABI-stability.png\" alt=\"Migracja w Swift\" class=\"wp-image-3502\" srcset=\"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/09\/ABI-stability.png 548w, https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/09\/ABI-stability-300x36.png 300w\" sizes=\"(max-width: 548px) 100vw, 548px\" \/><\/figure>\n\n\n\n<p>Nie by\u0142o wbudowanych bibliotek, wi\u0119c rozmiar aplikacji by\u0142 zawy\u017cany przez wszystkie biblioteki, za ka\u017cdym razem, gdy aplikacja zbudowa\u0142a dynamiczn\u0105 bibliotek\u0119 Swift, zostaje osadzona w pakiecie aplikacji w celu obs\u0142ugi okre\u015blonej wersji Swift, dla kt\u00f3rej budowana jest aplikacja.<\/p>\n\n\n\n<p>Dzi\u0119ki zwi\u0119kszonej stabilno\u015bci ABI kt\u00f3ra pojawi\u0142a si\u0119 z wprowadzeniem Swift 5, wszystkie przysz\u0142e wersje zostan\u0105 spakowane i po\u0142\u0105czone bezpo\u015brednio z systemem operacyjnym. Oznacza to, \u017ce je\u015bli w przysz\u0142ych wersjach Swift pojawi\u0105 si\u0119 jakiekolwiek zmiany, b\u0119d\u0105 one dostarczane z systemem operacyjnym, nad kt\u00f3rym pracuje programista, i b\u0119d\u0105 automatycznie u\u017cywane przez aplikacj\u0119, gdy jest uruchomiona w tym systemie operacyjnym, bez potrzeby ponownej kompilacji i ponownego dostarczenia aplikacji.<\/p>\n\n\n\n<p>Ponadto, poniewa\u017c biblioteki Swift nie b\u0119d\u0105 musia\u0142y by\u0107 osadzane w aplikacji, rozmiar pakietu aplikacji zmniejszy si\u0119, co prowadzi do mniejszego zu\u017cycia pami\u0119ci. Zmniejszenie og\u00f3lnego rozmiaru aplikacji jest r\u00f3wnie\u017c zalet\u0105 dla u\u017cytkownik\u00f3w, poniewa\u017c mog\u0105 zu\u017cywa\u0107 mniej zasob\u00f3w do pobrania aplikacji z App Store.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"text-align:left\" id=\"3\">Najwi\u0119ksze zalety stabilno\u015bci ABI:<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"text-align:left\">Zmniejszony rozmiar pakietu<\/h3>\n\n\n\n<p>Nie ma ju\u017c potrzeby do\u0142\u0105czania standardowej biblioteki Swift do folderu Framework, poniewa\u017c stabilne \u015brodowisko wykonawcze Swift jest w\u0142\u0105czone do systemu operacyjnego.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"text-align:left\">Kompatybilno\u015b\u0107 \u017ar\u00f3d\u0142a<\/h3>\n\n\n\n<p>Nigdy wi\u0119cej k\u0142opotliwych migracji &#8211; nowsze kompilatory mog\u0105 kompilowa\u0107 kod napisany w starszej wersji Swift.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"text-align:left\">Kompatybilno\u015b\u0107 binarna<\/h3>\n\n\n\n<p>Aplikacja zbudowana z jedn\u0105 wersj\u0105 kompilatora Swift b\u0119dzie mog\u0142a komunikowa\u0107 si\u0119 z bibliotek\u0105 zbudowan\u0105 z innej wersji.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"text-align:left\">Rzadsze zmiany j\u0119zyka<\/h3>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"text-align:left\" id=\"4\">Przydatne linki:<\/h2>\n\n\n\n<p><a rel=\"noreferrer noopener nofollow\" aria-label=\" (otwiera si\u0119 na nowej zak\u0142adce)\" href=\"https:\/\/github.com\/apple\/swift\/blob\/master\/docs\/ABIStabilityManifesto.md\" target=\"_blank\">https:\/\/github.com\/apple\/swift\/blob\/master\/docs\/ABIStabilityManifesto.md<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener nofollow\" aria-label=\" (otwiera si\u0119 na nowej zak\u0142adce)\" href=\"https:\/\/swift.org\/blog\/abi-stability-and-more\/\" target=\"_blank\">https:\/\/swift.org\/blog\/abi-stability-and-more\/<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.raywenderlich.com\/1301449-what-s-new-in-swift-5-abi-stability\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\" (otwiera si\u0119 na nowej zak\u0142adce)\">https:\/\/www.raywenderlich.com\/1301449-what-s-new-in-swift-5-abi-stability<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8222;image&#8221;: [ { &#8222;@type&#8221;: &#8222;ImageObject&#8221;, &#8222;contentUrl&#8221;: &#8222;Swift-ABI-Stability.jpg&#8221;, &#8222;url&#8221;:&#8221;https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/09\/Swift-ABI-Stability.jpg&#8221;, &#8222;description&#8221;: &#8222;Stabilno\u015b\u0107 ABI i jej znaczenie&#8221;, &#8222;name&#8221;: &#8222;Stabilno\u015b\u0107 ABI i jej znaczenie&#8221; } ], &#8222;datePublished&#8221;: &#8222;2019-09-20&#8221;, &#8222;dateModified&#8221;: &#8222;2020-03-04&#8221;, &#8222;author&#8221;: { &#8222;@type&#8221;: &#8222;Person&#8221;, &#8222;name&#8221;: &#8222;Michalina Kukie\u0142ko&#8221;, &#8222;jobTitle&#8221;: &#8222;iOS Developer&#8221;, &#8222;description&#8221;: &#8222;iOS Developer at itCraft&#8221; }, &#8222;publisher&#8221;: { &#8222;@type&#8221;: &#8222;Organization&#8221;, &#8222;name&#8221;: &#8222;itCraftapps.com&#8221;, &#8222;logo&#8221;: { &#8222;@type&#8221;: &#8222;ImageObject&#8221;, &#8222;url&#8221;: &#8222;https:\/\/wp-test.itcraft.pl\/wp-content\/uploads\/2019\/04\/placeholder-post.png&#8221; },&hellip;<\/p>\n","protected":false},"author":12,"featured_media":3517,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[5],"tags":[],"class_list":{"0":"post-3501","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-news"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Stabilno\u015b\u0107 ABI i jej znaczenie - itCraft blog<\/title>\n<meta name=\"description\" content=\"Dowiedz si\u0119, czym jest stabilno\u015b\u0107 ABI i dlaczego jest kluczowa dla d\u0142ugoterminowej stabilno\u015bci Twoich aplikacji Swift.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Stabilno\u015b\u0107 ABI i jej znaczenie - itCraft blog\" \/>\n<meta property=\"og:description\" content=\"Dowiedz si\u0119, czym jest stabilno\u015b\u0107 ABI i dlaczego jest kluczowa dla d\u0142ugoterminowej stabilno\u015bci Twoich aplikacji Swift.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/\" \/>\n<meta property=\"og:site_name\" content=\"Aplikacje mobilne i webowe dla firm | itCraft\" \/>\n<meta property=\"article:published_time\" content=\"2019-09-20T07:02:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-03-04T12:04:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/09\/Swift-ABI-Stability.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"400\" \/>\n\t<meta property=\"og:image:height\" content=\"225\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"itcseo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Stabilno\u015b\u0107 ABI i jej znaczenie - itCraft blog","description":"Dowiedz si\u0119, czym jest stabilno\u015b\u0107 ABI i dlaczego jest kluczowa dla d\u0142ugoterminowej stabilno\u015bci Twoich aplikacji Swift.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/","og_locale":"pl_PL","og_type":"article","og_title":"Stabilno\u015b\u0107 ABI i jej znaczenie - itCraft blog","og_description":"Dowiedz si\u0119, czym jest stabilno\u015b\u0107 ABI i dlaczego jest kluczowa dla d\u0142ugoterminowej stabilno\u015bci Twoich aplikacji Swift.","og_url":"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/","og_site_name":"Aplikacje mobilne i webowe dla firm | itCraft","article_published_time":"2019-09-20T07:02:51+00:00","article_modified_time":"2020-03-04T12:04:02+00:00","og_image":[{"width":400,"height":225,"url":"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/09\/Swift-ABI-Stability.jpg","type":"image\/jpeg"}],"author":"itcseo","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/","url":"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/","name":"Stabilno\u015b\u0107 ABI i jej znaczenie - itCraft blog","isPartOf":{"@id":"https:\/\/itcraftapps.com\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/#primaryimage"},"image":{"@id":"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/#primaryimage"},"thumbnailUrl":"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/09\/Swift-ABI-Stability.jpg","datePublished":"2019-09-20T07:02:51+00:00","dateModified":"2020-03-04T12:04:02+00:00","author":{"@id":"https:\/\/itcraftapps.com\/pl\/#\/schema\/person\/d2fc85f8fb53798d0b727d373f9e39b7"},"description":"Dowiedz si\u0119, czym jest stabilno\u015b\u0107 ABI i dlaczego jest kluczowa dla d\u0142ugoterminowej stabilno\u015bci Twoich aplikacji Swift.","breadcrumb":{"@id":"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/#primaryimage","url":"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/09\/Swift-ABI-Stability.jpg","contentUrl":"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/09\/Swift-ABI-Stability.jpg","width":400,"height":225},{"@type":"BreadcrumbList","@id":"https:\/\/itcraftapps.com\/pl\/blog\/abi-stability\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/itcraftapps.com\/pl\/"},{"@type":"ListItem","position":2,"name":"Stabilno\u015b\u0107 ABI i jej znaczenie"}]},{"@type":"WebSite","@id":"https:\/\/itcraftapps.com\/pl\/#website","url":"https:\/\/itcraftapps.com\/pl\/","name":"Aplikacje mobilne i webowe dla firm | itCraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/itcraftapps.com\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Person","@id":"https:\/\/itcraftapps.com\/pl\/#\/schema\/person\/d2fc85f8fb53798d0b727d373f9e39b7","name":"itcseo","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/itcraftapps.com\/pl\/#\/schema\/person\/image\/","url":"https:\/\/itcraftapps.com\/pl\/wp-content\/litespeed\/avatar\/5\/8d5121d60f83294679f3ed7498971492.jpg?ver=1775758459","contentUrl":"https:\/\/itcraftapps.com\/pl\/wp-content\/litespeed\/avatar\/5\/8d5121d60f83294679f3ed7498971492.jpg?ver=1775758459","caption":"itcseo"},"url":"https:\/\/itcraftapps.com\/pl\/blog\/author\/itcseo\/"}]}},"_links":{"self":[{"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/posts\/3501","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/comments?post=3501"}],"version-history":[{"count":0,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/posts\/3501\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/media\/3517"}],"wp:attachment":[{"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/media?parent=3501"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/categories?post=3501"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/tags?post=3501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}