Uglerod (API) - Carbon (API)

Uglerod
Tuzuvchi (lar)Apple Inc.
Operatsion tizimKlassik Mac OS, macOS
LitsenziyaMulkiy
Veb-saythttp://developer.apple.com/referencelibrary/Carbon/ da Orqaga qaytish mashinasi (arxivlangan 2009 yil 20 aprel)

Uglerod biri olma Ning C ga asoslangan amaliy dasturlash interfeyslari Uchun (API) macOS (avvalgi Mac OS X), operatsion tizim bu kuchlar Macintosh kompyuterlar. Uglerod yaxshi darajani ta'minladi orqaga qarab muvofiqligi uchun dasturlar bu yugurdi Mac OS 8 va 9. Ishlab chiquvchilar o'zlarining portlarini portlashtirish uchun Carbon API-laridan foydalanishlari mumkin "Klassik" Mac bilan solishtirganda, ozgina kuch sarflab, Mac OS X platformasiga dasturiy ta'minot ko'chirish ilova butunlay boshqacha Kakao kelib chiqqan tizim OPENSTEP.

Uglerod Apple-ning Mac OS X-ni bozorga olib chiqish strategiyasining muhim qismi bo'lib, mavjud dasturiy ta'minot dasturlarini tezkor ko'chirish yo'lini taklif qildi, shuningdek Mac OS X-da yoki klassik Mac OS-da ishlaydigan dasturlarni etkazib berish vositasini taqdim etdi. Bozor tobora kakao asosidagi ramkalarga o'tib borganligi sababli, ayniqsa chiqarilganidan keyin iOS, ko'chirish kutubxonasiga ehtiyoj susaytirildi. Apple yaratmadi 64-bit 2007 yildagi vaqt oralig'ida va boshqa doiralarini yangilashda uglerodning versiyasi eskirgan butun API in OS X 10.8 Mountain Lion, 2012 yil 24-iyulda chiqarilgan. Uglerod rasman to'xtatilgan va chiqarilishi bilan butunlay chiqarib tashlangan macOS 10.15 Catalina.

Tarix

"Gazlangan" dastur Adobe tizimlari ImageReady to'g'ridan-to'g'ri ishlaydigan v.7.0 Mac OS X versiyasi 10.2

Klassik Mac OS dasturlash

The original Mac OS ishlatilgan Paskal uning asosiy rivojlanish platformasi sifatida va API-lar juda ko'p Paskalga asoslangan edi semantikani chaqirish. Ko'p narsa Macintosh asboblar qutisi iborat edi protsedura qo'ng'iroqlari, turli xillardan foydalangan holda API va dastur o'rtasida ma'lumotni oldinga va orqaga uzatish ma'lumotlar tuzilmalari Paskalnikiga asoslangan variantli yozuv kontseptsiya.

Vaqt o'tishi bilan bir qator ob'ekt kutubxonalari Mac-da rivojlangan, xususan Ob'ekt Paskal kutubxona MacApp va Think Class kutubxonasi (TCL) Paskalda va undan keyingi MacApp va CodeWarrior PowerPlant-da C ++. 1990-yillarning o'rtalariga kelib, Mac dasturlarining aksariyati CodeWarrior yordamida C ++ da yozilgan.

Rapsodiya

Sotib olish bilan Keyingisi 1996 yil oxirida Apple asosan mavjudlarga asoslangan yangi operatsion tizim strategiyasini ishlab chiqdi OpenStep platforma. Yangi Rapsodiya nisbatan sodda edi; u OpenStep-ning mavjud bo'lgan "Yellow Box" nomi ostida OpenStep-ning mavjud ob'ekt kutubxonalarining ko'pini saqlab qoldi GUI va uni Mac-ga o'xshash ko'rinishga keltirdi, bir nechta yirik portlarga ko'chirildi API-lar Mac OS-dan Rhapsody-ga asoslanadi Unixga o'xshash tizim (xususan QuickTime va AppleSearch ) va mavjud Mac OS dasturini boshqaradigan "Moviy quti" nomi bilan tanilgan emulyatorni qo'shdi.

Ushbu reja oshkor bo'lganda Butunjahon ishlab chiquvchilar konferentsiyasi 1997 yilda mavjud bo'lgan Mac OS ishlab chiquvchilaridan bir oz orqaga qaytish yuz berdi, ular kod bazalari hech qachon yangilanishi mumkin bo'lmagan emulyatorga samarali ravishda qulflanganidan xafa bo'lishdi. Ular Moviy qutini "jarima qutisi" deb atashga qaror qilishdi.[iqtibos kerak ] Kattaroq ishlab chiquvchilar yoqadi Microsoft va Adobe to'g'ridan-to'g'ri balked va OpenStep-ga ko'chirishni ko'rib chiqishni rad etdi, bu mavjud Mac OS-dan juda farq qilar edi, chunki u erda moslik kam yoki umuman yo'q edi.

Apple bu tashvishlarni yuragiga oldi. Qachon Stiv Jobs 1998 yilgi WWDC-da ushbu yo'nalishdagi o'zgarish haqida e'lon qildi va u "ishlab chiquvchilar haqiqatan ham xohlagan narsa Mac OS-ning zamonaviy versiyasi edi va Apple uni taqdim qilmoqchi edi" deb aytdi. Bayonot gulduros qarsaklar bilan kutib olindi.

Mavjud Mac OS dasturiy ta'minotini ishlatish uchun faqat Blue Box-ga ega bo'lgan asl Rapsodiya kontseptsiyasi 1999 yilda chiqarildi Mac OS X Server 1.0. Bu asl Rapsodiya kontseptsiyasiga asoslangan yagona nashr edi.

Kakao va uglerod

Mavjud Mac OS kod bazalari uchun haqiqiy va yaxshi qo'llab-quvvatlanadigan yangilanish yo'lini taklif qilish uchun Apple Carbon tizimini joriy qildi. Uglerod Mac-ga o'xshash API-ni taklif qiladigan, ammo emulyatsiyada ishlaydigan Mac OS-ning nusxasi emas, balki asosiy Unix-ga o'xshash operatsion tizimning yuqori qismida ishlaydigan ko'plab kutubxonalar va funktsiyalardan iborat. Uglerod kutubxonalari keng miqyosda tozalangan, zamonaviylashtirilgan va yaxshi "himoyalangan". Ma'lumotlarni uzatish uchun Mac OS operatsion tizimida xotirani birgalikda ishlatadigan API mavjud bo'lsa, Carbon tizimida barcha bunday kirish imkoniyatlari yordamida qayta amalga oshirildi kiruvchi subroutines kuni shaffof bo'lmagan ma'lumotlar turlari. Bu uglerodga haqiqatni qo'llab-quvvatlashga imkon berdi ko'p vazifali va xotirani himoya qilish, Mac ishlab chiquvchilari o'n yil davomida so'ragan xususiyatlari. Oldindan mavjud bo'lgan API-dan olingan boshqa o'zgarishlar Mac OS X bilan kontseptual jihatdan mos kelmaydigan yoki oddiygina eskirgan xususiyatlarni olib tashladi. Masalan, ilovalar endi o'rnatib bo'lmadi interrupt ishlovchilari yoki qurilma drayverlari.

Uglerodni qo'llab-quvvatlash uchun butun Rapsodiya modeli o'zgargan. Rapsodiya emulyator bilan samarali ravishda OpenStep bo'lishi mumkin bo'lsa, yangi tizim ostida OpenStep va Carbon API, iloji bo'lsa, umumiy kod bilan bo'lishadi. Buning uchun OpenStep tizimining quyi darajalaridagi Objective-C-da yozilgan va Foundation deb nomlanuvchi ko'plab foydali bitlar toza S-da qayta tatbiq etildi. Asosiy fond, yoki qisqacha CF. Yellow Box-ning CF-ga qo'ng'iroq qilish uchun mo'ljallangan versiyasi yangi bo'ldi Kakao API va Carbon-ning Mac-ga o'xshash qo'ng'iroqlari ham xuddi shu funktsiyalarni chaqirdi. Yangi tizimga binoan uglerod va kakao tengdosh edi. Ushbu konvertatsiya, odatda, C usulidagi asosiy kutubxonalarga kiritilgan ob'ekt usullari sifatida Kakaoning ishlashini sekinlashtirishi mumkin edi, ammo Apple ular chaqirgan usuldan foydalandi tekin ko'prik ushbu ta'sirni kamaytirish uchun.[1]

Ushbu konversiyaning bir qismi sifatida Apple shuningdek grafik vosita litsenziyadagi og'irlikdan PostScript-ni ko'rsatish litsenziyasiz Kvarts ("PDF-ni ko'rsatish" deb nomlangan).[2] Kvarts mahalliy qo'ng'iroqlarni taqdim etdi, ular uglerod yoki kakaodan foydalanishlari mumkin, shuningdek taklif qilishadi Java 2D interfeyslarga o'xshash. Asosiy operatsion tizimning o'zi alohida ajratilgan va chiqarildi Darvin.

Chiqarish va evolyutsiya

Uglerod 2000 yilda to'liq bo'lmagan shaklda, 1997 yilgi Mac OS 8.1 bilan orqaga qarab umumiy kutubxona sifatida taqdim etildi. Ushbu versiya ishlab chiquvchilarga o'zlarining kodlarini Carbon-ga ko'chirishga imkon berib, ushbu dasturlarning mavjud Mac OS mashinalarida ishlash imkoniyatini yo'qotmadi. Uglerodga o'tish "Karbonizatsiya" nomi bilan mashhur bo'ldi. Rasmiy Mac OS X ko'magi 2001 yilda chiqarilishi bilan paydo bo'ldi Mac OS X v10.0, yangi OSning birinchi ommaviy versiyasi. Uglerod deyarli barcha yirik dasturiy ta'minot uylari, hatto Apple tomonidan Mac OS X ning dastlabki versiyalarida juda keng ishlatilgan. The Topuvchi Masalan, ko'p yillar davomida uglerodli dastur bo'lib qoldi, faqat 2009 yilda Mac OS X 10.6 chiqishi bilan Kakaoga ko'chirildi.[3]

Ga o'tish 64-bit Macintosh dasturlari bilan boshlanadi Mac OS X v10.5, 2007 yil 26 oktyabrda chiqarilgan, uglerod uchun birinchi katta cheklovlarni keltirib chiqardi. Apple Macintosh o'rtasida moslikni ta'minlamaydi grafik foydalanuvchi interfeysi va 64-bitli muhitda C dasturlash tili, buning o'rniga -dan foydalanishni talab qiladi Maqsad-C Cocoa API bilan dialekt.[4] Ko'pgina sharhlar buni Karbonning yo'q bo'lib ketishining birinchi alomati deb qabul qildi, bu holat Apple karbon tizimiga yangi katta qo'shimchalar qo'shilmasligini aytganda qayta kuchga kirdi,[5] va 2012 yilda eskirganligi bilan yanada mustahkamlandi.

Kakaoga o'tish

Kakao afzalliklariga qaramay, katta miqdordagi eskirgan kodni qayta yozish zarurati uglerod asosidagi dasturlarning o'tishini sekinlashtirdi. Adobe Photoshop,[6] oxir-oqibat 2010 yil aprel oyida Kakaoga yangilandi. Bu shuningdek, Apple kompaniyasining o'z dasturiy ta'minot paketlariga ham tegishli iTunes[7] va Final Cut Pro (shuningdek, xususiyatlari QuickTime uni quvvatlaydigan dvigatel[8]) ko'p yillar davomida uglerodda yozilgan. O'shandan beri iTunes ham, Final Cut Pro X ham kakao versiyalarida chiqarildi.

Amortizatsiya va bekor qilish

2012 yilda OS X 10.8 Mountain Lion chiqishi bilan ko'pchilik Karbonli API-lar eskirgan deb hisoblanadi. API-lar ishlab chiquvchilar uchun hali ham mavjud edi va barcha Carbon dasturlari hali ham ishlaydi, ammo API-lar endi yangilanmaydi. 2017 yil 28 iyunda Apple barcha karbonli dasturlar kabi macOS uchun 32 bitli dasturiy ta'minot endi MacOS versiyalarida "murosasiz" qo'llab-quvvatlanmasligini e'lon qildi. macOS 10.13 Yuqori Sierra.[9] macOS 10.15 Catalina 32-bitli dasturlarni, shu jumladan barcha Karbonli dasturlarni rasmiy ravishda o'chirib tashladi.[10]

Arxitektura

Uglerod pastga tushadi Asboblar qutisi, va shunga o'xshash "Menejerlar" dan iborat. Har bir menejer funktsional jihatdan bog'liq bo'lgan API bo'lib, ularni boshqarish uchun ma'lumotlar tuzilmalari va funktsiyalar to'plamini belgilaydi. Menejerlar ko'pincha o'zaro bog'liq yoki qatlamli. Uglerod fayllarni, xotirani, ma'lumotlarni, foydalanuvchi interfeysini va boshqa tizim xizmatlarini boshqarish uchun keng funktsiyalar to'plamidan iborat. U boshqa har qanday API singari amalga oshiriladi: macOS-da, u bir nechta ramkalarga tarqaladi (har biri tuzilishi a atrofida qurilgan umumiy kutubxona ), asosan Uglerod, ApplicationServices.frameworkva CoreServices.frameworkva klassik Mac OS-da u bitta nomlangan umumiy kutubxonada joylashgan CarbonLib.

Sifatida soyabon muddati Mac-ga xos funktsiyalarga kirish uchun barcha C-tilidagi API protseduralarini o'z ichiga olgan Carbon diskret tizim sifatida ishlab chiqilmagan. Aksincha, bu macOS-ning deyarli barcha funktsiyalarini bilmagan ishlab chiquvchilar uchun ochib beradi Maqsad-C keng ekvivalenti uchun zarur bo'lgan til Kakao API.[11]

Uglerod ularning barchasi bilan mos keladi bajariladigan formatlar PowerPC Mac OS uchun mavjud. Mac OS X va oldingi versiyalar o'rtasidagi ikkilik muvofiqlik a-dan foydalanishni talab qiladi Amalga oshiriladigan format Apple ularni hech qachon qo'llab-quvvatlamaydigan fayl Xkod IDE.

Uglerodning yangi qismlari ularning kontseptsiyasida ob'ektiv yo'naltirilgan bo'lib, ularning aksariyati asoslanadi Asosiy fond. Ba'zi menejerlar, masalan, HIView menejeri (Boshqarish menejerining yuqori to'plami) C ++, ammo uglerod a C API.

Uglerod menejerlarining ba'zi misollari:

  • Fayl menejeri - fayl tizimiga kirishni, fayllarni ochish, yopish, o'qish va yozishni boshqaradi.
  • Resurs menejeri - dastur talab qilishi mumkin bo'lgan ma'lumotlarning oldindan belgilangan qismlari bo'lgan manbalarga kirishni boshqaradi. Diskdagi fayllarni o'qish va yozish uchun File Manager-ga qo'ng'iroq qiladi. Resurslarga misol sifatida piktogramma, tovushlar, rasmlar, vidjetlar uchun shablonlar va boshqalar kiradi.
  • Shrift menejeri - boshqaradi shriftlar. Eskirgan (qismi sifatida QuickDraw ) beri Mac OS X v10.4, foydasiga Apple turi xizmatlari (ATS).
  • QuickDraw - 2 o'lchovli grafik primitivlar. O'shandan beri bekor qilingan Mac OS X v10.4, Kvarts 2D foydasiga.
  • Carbon Event Manager - foydalanuvchi va tizim faoliyatini kod tanib oladigan va javob bera oladigan voqealarga aylantiradi.
  • HIObject - Carbon an-ga olib keladigan butunlay yangi ob'ektga yo'naltirilgan API OO GUI yaratish uchun model. Mac OS Classic-da HIToolbox va Kopland[12] tashlandiqlarga suyandi IBM tizim ob'ekti modeli Shunday qilib, uglerod eski kodni ko'chirishni ta'minlash uchun tez va iflos almashtirishni ta'minlashi kerak edi. Bu mavjud Mac OS X v10.2 yoki keyinchalik, va uglerod dasturchilariga kakao ishlab chiquvchilari uzoq vaqtdan beri tanish bo'lgan ba'zi vositalarni beradi. Bilan boshlanadi Mac OS X v10.2, HIObject - bu ugleroddagi barcha GUI elementlari uchun asosiy sinf. HIView tomonidan qo'llab-quvvatlanadi Interface Builder, Apple ishlab chiquvchi vositalarining bir qismi. An'anaviy ravishda ushbu turdagi GUI arxitekturalari taqdim etish uchun uchinchi tomon dasturlari tizimiga topshirildi. Mac OS X v10.4-dan boshlab, HIObjects NSObjects hisoblanadi va diskka tashish yoki saqlash uchun ma'lumotlar oqimiga seriyalash qobiliyatini meros qilib oladi.
  • HITheme - ko'rsatish uchun QuickDraw va Quartz-dan foydalanadi grafik foydalanuvchi interfeysi (GUI) elementlari ekranga. HITheme joriy etildi Mac OS X v10.3, va tashqi ko'rinish menejeri bu versiyadan beri HITheme-ning yuqori qismidagi moslik qatlami.
  • HIView menejeri - yaratish, rasm chizishni boshqaradi xit-test va boshqarish vositalarini boshqarish. Mac OS X v10.2-dan boshlab, barcha boshqaruv elementlari HIV-ni ko'rishdir. Mac OS X v10.4 da Boshqarish menejeri HIView Manager deb o'zgartirildi.
  • Window Manager - derazalarni yaratish, joylashtirish, yangilash va manipulyatsiyani boshqaradi. Mac OS X v10.2-dan boshlab, Windows-ning ildizlari HIView-ga ega.
  • Menyu menejeri - menyularni yaratish, tanlash va manipulyatsiyasini boshqaradi. Mac OS X v10.2-dan beri menyular HIObject-lardir. Mac OS X v10.3 versiyasidan boshlab, menyu tarkibini HIViews yordamida tuzish mumkin va barcha standart menyularda rasmlarni olish uchun HIViews ishlatiladi.

Voqealar bilan ishlash

Dastlab Mac Toolbox-ning Voqealar menejeri a ovoz berish dastur dizayni uchun model. Ilova asosiy voqea halqasi Voqealar menejeridan GetNextEvent-dan foydalangan holda tadbir so'raydi. Agar navbatda voqea bo'lsa, Voqealar menejeri uni dasturga qaytaradi, u erda ishlov beriladi, aks holda u darhol qaytadi. Ushbu xatti-harakatlar "band-kutish ", voqea tsiklini keraksiz ravishda ishga tushirish. bandlik kutish boshqa dasturlar uchun mavjud bo'lgan CPU vaqtini kamaytiradi va noutbuklarda batareyaning quvvatini pasaytiradi. Klassik Voqealar menejeri asl Mac OS-dan 1984 yilda ishga tushirilgan. The faqat dasturni ishga tushirish va qaerda quvvatni boshqarish muammo emas edi.

MultiFinder paydo bo'lishi va bir vaqtning o'zida bir nechta dasturni ishga tushirish imkoniyati bilan yangi Event Manager qo'ng'irog'i paydo bo'ldi, WaitNextEvent, bu dasturga uyqu oralig'ini ko'rsatishga imkon beradi. Eski kodning manba kodiga katta o'zgarishlar kiritmasdan samaraliroq modelni qabul qilishning oson usullaridan biri shunchaki o'tkazilgan uyqu parametrini o'rnatishdir. WaitNextEvent juda katta qiymatga ega - macOS-da, bu ishni bajarishga hojat qolmasa, ipni uxlaydi va faqat ishlov berish kerak bo'lganda voqeani qaytaradi. Shu tarzda, so'rovnoma modeli tezda teskari aylantirilib, qayta qo'ng'iroq qilish modeliga teng bo'lib, ilova o'z hodisa dispetcherligini asl tartibida amalga oshiradi. Bo'shliqlar mavjud. Birinchidan, eski asboblar qutisi chaqiruvi ModalDialog, masalan, kattalarni chaqiradi GetNextEvent ichki funktsiya, natijada blokirovka qilinmasdan zich tsiklda ovoz berish.

Carbon Carbon Event Manager deb nomlangan almashtirish tizimini joriy qiladi. (Dastlabki Voqealar menejeri eski dasturlar bilan muvofiqligi uchun hali ham mavjud). Carbon Event Manager dasturchilar uchun voqealar aylanishini taqdim etadi (Core Foundation's asosida) CFRunLoop joriy amalga oshirishda); ishlab chiquvchi voqea ishlovchilarini o'rnatadi va voqea tsiklini asosiy funktsiyasiga kiritadi va Carbon Event Manager dasturini voqealarni yuborishini kutadi.

Taymerlar

Klassik Mac OS-da, dastur darajasidagi taymerlar uchun operatsion tizim qo'llab-quvvatlanmagan (quyi darajadagi Time Manager mavjud edi, lekin u to'xtash vaqtida taymerning qo'ng'iroqlarini amalga oshirdi, bu vaqtda ko'pchilik Toolbox tartib-qoidalariga qo'ng'iroqlarni xavfsiz amalga oshirish mumkin emas edi). Amalga oshirish uchun taymerlar odatda dastur ishlab chiquvchilariga qoldirildi va bu odatda o'tgan vaqtni hisoblash orqali amalga oshirildi bo'sh voqea - ya'ni qaytib kelgan voqea WaitNextEvent boshqa tadbir bo'lmaganida. Bunday taymerlar oqilona qarorga ega bo'lishi uchun ishlab chiquvchilar bunga qodir emas edilar WaitNextEvent juda uzoq kechiktirish uchun, va juda past "uyqu" parametrlari odatda o'rnatildi. Bu juda samarasiz rejalashtirish xatti-harakatlariga olib keladi, chunki ip juda uzoq vaqt uxlamaydi, aksincha bu bo'sh voqealarni qaytarish uchun bir necha marta uyg'onadi. Ushbu muammoni hal qilish uchun Apple Karbonga taymer yordamini qo'shdi - tizim taymerlarni katta samaradorlik bilan rejalashtirishi mumkin.

Ochiq manbali dasturlar

GNUstep Bor deb nomlangan Carbon API dasturini o'z ichiga oladi. Bu ApplicationServices va CoreServices-ning eskirgan qismlari bilan mos kelishini maqsad qiladi. Ism shundan dalolat beradi Bor uglerod oldida keladi elementlarning davriy jadvali.[13] Azizim shuningdek, uglerodni o'z ichiga oladi. Ikkala dastur juda to'liq emas va asosan stub funktsiyalaridan iborat.

Shuningdek qarang

Adabiyotlar

  1. ^ "Ob'ektiv dasturlash bo'yicha tushunchalar: bepul ko'prik". developer.apple.com. 2012. Olingan 8 may, 2017.
  2. ^ Sirakuza, Jon (2000). "Mac OS X yangilanishi: Kvarts va Aqua". arxiv.arstechnica.com. Olingan 8 may, 2017.
  3. ^ Krazit, Tom (2008 yil 17 oktyabr). "Apple Finder-ni kakaoga ko'chirmoqda". CNET. Arxivlandi asl nusxasi 2015 yil 11-iyulda. Olingan 21 may, 2015.
  4. ^ Apple Inc. "Uglerod ishlab chiqaruvchilari uchun 64 bitli qo'llanma bilan tanishish". Arxivlandi asl nusxasi 2009 yil 11 iyunda.
  5. ^ Apple Inc. "Ugleroddan foydalanuvchi interfeysi uchun rivojlanish yo'lini tanlash". 64-bitli manzildan foydalanish uchun arizangizni o'zgartirish. Arxivlandi asl nusxasi 2009 yil 4 avgustda.
  6. ^ Jon Nek. "Photoshop, Lightroom va Adobe-ning 64-bitli yo'l xaritasi". Arxivlandi asl nusxasi 2015 yil 14 aprelda.
  7. ^ Kris Foresman. "iTunes 10 amaliy: tezkor ishlash, shubhali foydalanuvchi interfeysi tanlovi". Arxivlandi asl nusxasi 2015 yil 2 aprelda.
  8. ^ Jon Sirakuza. "Mac OS X 10.6 Snow Leopard: Ars Technica sharhi". Arxivlandi asl nusxasi 2014 yil 13 iyulda.
  9. ^ Apple Inc. (2017 yil 28-iyun). "Mac ilovalari uchun 64-bitli talab". Arxivlandi asl nusxasi 2018 yil 30 yanvarda. Olingan 18-fevral, 2018.
  10. ^ MacRumors (2019 yil 4-iyun). "MacOS Catalina-da ishlashni to'xtatish uchun 32-bitli dasturlar" Mac uchun optimallashtirilmagan "". Olingan 10 avgust, 2019.
  11. ^ Apple Inc. "Apple Carbon-ning asosiy sahifasi". Arxivlandi asl nusxasi 2012 yil 12 oktyabrda.
  12. ^ Mac OS 8.0 (Copland) DDK dan HIEditText SOM sinf tavsifi[doimiy o'lik havola ]
  13. ^ "gnustep / libs-bor: Bor - ugleroddan oldin paydo bo'lgan atom". GitHub. GNUstep. 2019 yil 23 mart.