Bionic (software)
બાયોનિક એ સ્ટાન્ડર્ડ સી લાઇબ્રેરીનું અમલીકરણ છે, જે ગૂગલ દ્વારા તેની એન્ડ્રોઇડ ઓપરેટિંગ સિસ્ટમ માટે વિકસાવવામાં આવ્યું છે. તે સામાન્ય લિનક્સ સિસ્ટમ કરતાં ઓછી મેમરી અને પ્રોસેસર પાવર ધરાવતા ઉપકરણો માટે રચવામાં આવેલી જી. એન. યુ. સી. લાઇબ્રેરી (જી. એલ. આઈ. બી. સી.) થી અલગ છે. તે ફ્રીબીએસડી, નેટબીએસડી અને ઓપનબીએસડીના નવા કોડ અને કોડનું સંયોજન છે, જે ગ્લિબ્સને બદલે બીએસડી લાઇસન્સ હેઠળ બહાર પાડવામાં આવે છે, જે જીએનયુ લેસર જનરલ પબ્લિક લાઇસન્સનો ઉપયોગ કરે છે. એન્ડ્રોઇડના શરૂઆતના દિવસોમાં આ તફાવત મહત્વપૂર્ણ હતો, જ્યારે સ્થિર જોડાણ સામાન્ય હતું, અને હજુ પણ માલિકીની ઓપરેટિંગ સિસ્ટમ્સ માટે ઉપયોગમાં લેવાતી સોફ્ટવેર કંપનીઓને એન્ડ્રોઇડ રજૂ કરવામાં મદદરૂપ છે, જે એલજીપીએલથી સાવચેત રહી શકે છે, અને તેની અને સંપૂર્ણ જીએનયુ જનરલ પબ્લિક લાઇસન્સ (જી. પી. એલ.) વચ્ચેના તફાવતો વિશે અસ્પષ્ટ છે. બાયોનિક એ લિનક્સ કર્નલ સાથે વાપરવા માટે સી લાઈબ્રેરી છે, અને libc, libdl અને libm પ્રદાન કરે છે (libpthred કાર્યક્ષમતા એ libcનો ભાગ છે, કેટલીક અન્ય સિસ્ટમોની જેમ અલગ લાઈબ્રેરી નથી). આ બીએસડી સી લાઈબ્રેરીઓથી અલગ છે જે બાયોનિક સાથે કોડ શેર કરે છે, કારણ કે તેમને બીએસડી કર્નલની જરૂર હોય છે. મૂળ લક્ષ્યાંકો બાયોનિક માટે જાહેરમાં જણાવેલા મૂળ લક્ષ્યાંકો નીચે મુજબ હતાઃ બીએસડી-લાઇસન્સઃ ગૂગલ માલિકીની વપરાશકર્તા-જગ્યા અને એપ્લિકેશન ઇકોસિસ્ટમ બનાવવા માટે કોપીલેફ્ટ લાઇસન્સની અસરથી એન્ડ્રોઇડ એપ્લિકેશનોને અલગ કરવા માંગતું હતું, પરંતુઃ એન્ડ્રોઇડ લિનક્સ કર્નલ પર આધારિત છે, જે કોપીલેફ્ટ જીએનયુ જનરલ પબ્લિક લાઇસન્સ (જી. પી. એલ.) વર્ઝન 2 ને આધિન છે. લિનક્સ કર્નલ માટે સૌથી વ્યાપક પ્રમાણભૂત સી લાઈબ્રેરી એ જીએનયુ સી લાઈબ્રેરી (ગ્લિબસી) છે, જે જીએનયુ લેસર જનરલ પબ્લિક લાઈસન્સ (એલજીપીએલ) ને આધીન છે, જે કોપીલેફ્ટ લાઈસન્સ પણ છે. જી. પી. એલ. થી વિપરીત, એલ. જી. પી. એલ. સ્પષ્ટપણે ગતિશીલ જોડાણની મંજૂરી આપે છે પરંતુ તે સ્રોત કોડ અથવા જોડાણક્ષમ ઓબ્જેક્ટ ફાઇલો પ્રદાન કર્યા વિના માલિકીના સોફ્ટવેરને સ્થિર જોડાણની મંજૂરી આપતું નથી. અનુમત બી. એસ. ડી. લાઇસન્સ એ બિન-કોપીલેફ્ટ લાઇસન્સ છે જે બંને દિશામાં સુસંગત છે. બીએસડી-લાઇસન્સ પ્રાપ્ત ગ્લિબક અવેજી કોપીલેફ્ટ કોર (કર્નલ) અને બિન-કોપીલેફ્ટ એપ્લિકેશનો વચ્ચે અલગ સ્તર તરીકે કામ કરી શકે છે, અને તેથી ગૂગલ દ્વારા તેના બાયોનિક માટે ગ્લિબક અવેજી તરીકે પસંદ કરવામાં આવ્યું હતું. નાનું કદઃ બાયોનિક જીએનયુ સી લાઈબ્રેરી કરતાં ઘણું નાનું હતું; વધુ મહત્ત્વની વાત એ છે કે તેની મેમરી જરૂરિયાતો ઘણી ઓછી હતી (અને રહે છે). ઝડપઃ બાયોનિકની રચના સીપીયુ માટે પ્રમાણમાં ઓછી ઘડિયાળ આવર્તન પર કરવામાં આવી હતી. સપોર્ટેડ આર્કિટેક્ચર બાયોનિક માત્ર લિનક્સ કર્નલને સપોર્ટ કરે છે, પરંતુ હાલમાં આર્મ, આર્મ64, રિસ્કવી64, x86 અને x 86-64 આર્કિટેક્ચરને સપોર્ટ કરે છે. પ્લેટફોર્મને પોતે માર્શમેલોથી નિયોન સાથે આર્મવી 7ની જરૂર હતી, જોકે એન્ડ્રોઇડ નેટિવ ડેવલપમેન્ટ કિટ (એન. ડી. કે.) એ એન. ડી. કે. આર16 સુધી આર્મવી5 (જેને તે આર્મેબી કહે છે) ને ટેકો આપવાનું ચાલુ રાખ્યું હતું. એન. ડી. કે. હજુ પણ નિયોન સાથે અને તેના વગર આર્મવી7ને સપોર્ટ કરે છે. ઐતિહાસિક રીતે પ્લેટફોર્મમાં આંશિક એસએચ-4 સપોર્ટ હતો, પરંતુ ક્યારેય કોઈ ઉપકરણો મોકલવામાં આવ્યા નથી અને ત્યારથી સપોર્ટ દૂર કરવામાં આવ્યો છે. એન. ડી. કે. એ ક્યારેય એસ. એચ.-4ને ટેકો આપ્યો ન હતો અને આર17માં એન. ડી. કે. માંથી એમ. આઈ. પી. એસ. અને એમ. આઈ. પી. એસ. 64ને ટેકો દૂર કરવામાં આવ્યો હતો. ઘટકો libc સ્રોતના કેટલાક ભાગો, જેમ કે stdio, બીએસડી (મુખ્યત્વે ઓપનબીએસડી) માંથી છે, જ્યારે અન્ય, જેમ કે પીથ્રેડ અમલીકરણ, શરૂઆતથી લખવામાં આવ્યા હતા. ડાયનેમિક મેમરી એલોકેટર અમલીકરણ સમય જતાં બદલાયું છે. લોલીપોપ પહેલાં એક જ મૂળ મેમરી એલોકેટર હતું, ડગ લીનું ડી. એલ. મેલોક. લોલીપોપ અને માર્શમેલો માટે બે અમલીકરણ હતાઃ ડી. એલ. મેલોક અને જેમેલોક. જેમેલોક ડી. એલ. મેલોક કરતાં ઘણું ઊંચું પ્રદર્શન આપે છે, પરંતુ હિસાબ રાખવા માટે જરૂરી વધારાની મેમરીની કિંમત પર. મોટાભાગના ઉપકરણો જેમેલોકનો ઉપયોગ કરતા હતા પરંતુ ઓછી મેમરીવાળા ઉપકરણો હજુ પણ ડી. એલ. મેલોકનો ઉપયોગ કરતા હતા. એન્ડ્રોઇડ 10 મારફતે નૌગટ માટે, તમામ ઉપકરણો જેમેલોકનો ઉપયોગ કરે છે. લો-મેમરી ઉપકરણો જેમેલોકના "સ્વેલ્ટ" રૂપરેખાંકનનો ઉપયોગ કરે છે જે જેમેલોકની મોટાભાગની ઝડપને જાળવી રાખીને ડી. એલ. મેલોકના નીચલા મેમરી ઓવરહેડ સાથે લગભગ મેળ કરવા માટે ટી. કેશેને અક્ષમ કરે છે. એન્ડ્રોઇડ 11 માં, મોટાભાગના ઉપકરણો માટે મેમરી એલોકેટરને સ્કુડો પર સ્વિચ કરવામાં આવ્યું હતું, જે વધારાની સુરક્ષા સખ્તાઇ સુવિધાઓ માટે જેમેલોકના કેટલાક ઉચ્ચ પ્રદર્શનને બલિદાન આપે છે. જો કે, ઓછી મેમરીવાળા ઉપકરણોને હજુ પણ જેમેલોકનો ઉપયોગ કરવાની મંજૂરી છે. કેટલાક 64-બીટ ઉપકરણો, જેમ કે નેક્સસ 9,64-બીટ પોઇન્ટરની વધારાની જગ્યાની જરૂરિયાતો અને બે ઝાયગોટ્સની હોસ્ટિંગને કારણે અસરકારક રીતે ઓછી મેમરીવાળા ઉપકરણો છે. (ઝાયગોટ એ એન્ડ્રોઇડ સિસ્ટમ સેવા છે જે તમામ એન્ડ્રોઇડ એપ્લિકેશન પ્રક્રિયાઓની પિતૃ છે.) લિબ્મનો સ્રોત મોટાભાગે ફ્રીબીએસડીનો છે, પરંતુ વિવિધ એસઓસી વિક્રેતાઓ દ્વારા ઓપ્ટિમાઇઝ્ડ એસેમ્બલરનું યોગદાન છે. ગતિશીલ લિંકર (અને libdl) શરૂઆતથી લખવામાં આવ્યાં હતાં. બાયોનિકમાં libthred _ db (gdbseverver દ્વારા વપરાય છે) નો સમાવેશ થતો નથી, પરંતુ NDK કરે છે. એન્ડ્રોઇડ પ્લેટફોર્મમાં સ્થિર રીતે જોડાયેલા જીડીબીએસ સર્વરનો સમાવેશ થાય છે, જેથી વિકાસકર્તાઓ જૂના ઉપકરણો પર પણ નવીનતમ જીડીબીનો ઉપયોગ કરી શકે. એન્ડ્રોઇડ પર કોઈ અલગ libpthreed, libresolv, અથવા librart નથી આ બધી કાર્યક્ષમતા libc માં છે. libpthred માટે, સિંગલ-થ્રેડેડ કેસ માટે ઑપ્ટિમાઇઝ કરવાનો કોઈ પ્રયાસ નથી કારણ કે તૃતીય-પક્ષ કોડની પ્રથમ સૂચના ક્યારેય ચલાવવામાં આવે તે પહેલાં જ એપ્લિકેશનો બહુ-થ્રેડેડ વાતાવરણમાં હોય છે. એન્ડ્રોઇડ પ્લેટફોર્મ સી + + સ્ટાન્ડર્ડ લાઇબ્રેરી માટે libc + + નો ઉપયોગ કરે છે (લોલીપોપ વપરાયેલ એસ. ટી. એલ. પી. ટી. સહિત). એન. ડી. કે. એ ઐતિહાસિક રીતે એસ. ટી. એલ. પી. ટી. અને જી. એન. યુ. libstdc + + ઓફર કરી હતી, પરંતુ એન. ડી. કે. r18 તરીકે તેને દૂર કરવામાં આવી હતી. નોંધ લો કે જો એન્ડ્રોઇડ એપ્લિકેશનમાં કોઈ મૂળ કોડ C + + નો ઉપયોગ કરે છે, તો તમામ C + + એ સમાન STL નો ઉપયોગ કરવો આવશ્યક છે. એસટીએલ એન્ડ્રોઇડ ઓએસ દ્વારા પ્રદાન કરવામાં આવતું નથી, અને તે દરેક એપ્લિકેશન સાથે જોડાયેલું હોવું જોઈએ. પોસિક્સથી તફાવતો બાયોનીકનો ઉદ્દેશ તમામ સી11 અને પોસિક્સને અમલમાં મૂકવાનો હોવા છતાં, હજુ પણ (ઓરેઓ મુજબ) લગભગ 70 પોસિક્સ કાર્યો લિબસીમાંથી ખૂટે છે. એન્ડપ્વેંટ/ગેટપ્વેંટ/સેટપ્વેંટ પરિવાર જેવા પોસિક્સ કાર્યો પણ છે જે એન્ડ્રોઇડ પર લાગુ થઈ શકતા નથી કારણ કે તેમાં પાસડબલ્યુડી ડેટાબેઝનો અભાવ છે. ઓરેઓ મુજબ, લિબ્મ પૂર્ણ છે. કેટલાક કાર્યો ઇરાદાપૂર્વક સુરક્ષા કારણોસર પોસિક્સ અથવા સી ધોરણોને અનુરૂપ નથી, જેમ કે પ્રિન્ટએફ જે% n ફોર્મેટ સ્ટ્રિંગને ટેકો આપતું નથી. ઘણા સૌથી વધુ ઉપયોગમાં લેવાતા જીએનયુ એક્સ્ટેંશન બાયોનિકમાં લાગુ કરવામાં આવે છે, જેમ કે વિવિધ બીએસડી એક્સ્ટેંશન છે. એન. ડી. કે. પ્લેટફોર્મ કોડ સાથેનો સંબંધ સીધા બાયોનિકનો ઉપયોગ કરે છે, પરંતુ તૃતીય-પક્ષ વિકાસકર્તાઓ એન્ડ્રોઇડ નેટિવ ડેવલપમેન્ટ કિટ (એન. ડી. કે.) નો ઉપયોગ કરે છે. ઘણા તૃતીય-પક્ષ વિકાસકર્તાઓ હજુ પણ જૂના OS પ્રકાશનોને લક્ષ્ય બનાવે છે, જે વ્યાપક માન્યતામાં ફાળો આપે છે કે બાયોનિકમાં ઘણી સુવિધાઓનો અભાવ છે. જિંજરબ્રેડે લિબસીમાંથી 803 કાર્યોની નિકાસ કરી હતી પરંતુ ઓરેઓ 1278 (1.6 ગણો વધારો) ની નિકાસ કરે છે. ઐતિહાસિક રીતે એન. ડી. કે. અને પ્લેટફોર્મ અલગ થઈ ગયા હતા, પરંતુ એન. ડી. કે. આર11 અને પછીથી એન. ડી. કે. ફોર્કને તેમના વર્તમાન પ્લેટફોર્મ સમકક્ષ સાથે બદલવામાં આવ્યા છે. આ કાર્ય શરૂઆતમાં જીસીસી અને ક્લાંગ કમ્પાઇલર્સ પર કેન્દ્રિત હતું. એન. ડી. કે. આર. 14 પહેલાં, જ્યારે "યુનિફાઇડ" હેડર પ્રથમ વખત ઓપ્ટ-ઇન ધોરણે ઓફર કરવામાં આવ્યા હતા, ત્યારે એન. ડી. કે. એ વિવિધ API સ્તરો માટે પ્લેટફોર્મ હેડરની નકલો ફોર્ક કરી હતી. આનો અર્થ એ થયો કે મોટાભાગના એન. ડી. કે. વપરાશકર્તાઓ માટે હેડર-ઓનલી ફિક્સેસ (સ્થિર અથવા માળખાની વ્યાખ્યાઓ માટે ફિક્સેસ, ઉદાહરણ તરીકે) ઉપલબ્ધ ન હતા કારણ કે તેઓ જૂના API સ્તરને લક્ષ્ય બનાવતા હતા, પરંતુ પ્લેટફોર્મ ફિક્સેસ ફક્ત વર્તમાન પ્લેટફોર્મ હેડરમાં જ જતા હતા. ઓરેઓ વિકાસના સમયગાળામાં પ્લેટફોર્મ હેડરોને API સ્તરની માહિતી સાથે ટિપ્પણી કરવામાં આવી હતી જેથી તમામ API સ્તરો માટે હેડરોના સમાન સમૂહનો ઉપયોગ કરી શકાય, જેમાં વિકાસકર્તાના લક્ષિત API સ્તર પર ઉપલબ્ધ માત્ર તે જ કાર્યો દૃશ્યમાન હોય. આ કહેવાતા "યુનિફાઇડ" હેડર છે, અને એન. ડી. કે. આર15 થી ડિફોલ્ટ છે. એન. ડી. કે. આર. 16 પહેલા, એન. ડી. કે. એ libc + + નો ઉપયોગ કરીને libandroid_support.a નામની લાઇબ્રેરીને કોડ સાથે જોડી હતી. આ libc + + દ્વારા જરૂરી કાર્યો પૂરા પાડે છે જે જૂના OS પ્રકાશનોમાં ન હતા. આ પ્લેટફોર્મ દ્વારા ઉપયોગમાં લેવાતો સમાન કોડ ન હતો અને સંખ્યાબંધ ભૂલો રજૂ કરી હતી (જેમ કે libc + + નો ઉપયોગ કરતા કોઈપણ કોડમાં પ્રિન્ટએફ પરિવારમાં સ્થિતિગત દલીલો તોડવી). એન. ડી. કે. માં r16 libandroid_support.a હજુ પણ અસ્તિત્વમાં છે, પરંતુ હવે તે સીધા જ પ્લેટફોર્મ સ્રોતમાંથી બનાવવામાં આવે છે (એન. ડી. કે. બનાવવામાં આવે તે સમયે વર્તમાન). એન્ડ્રોઇડ જેલી બીન એમ. આર. 1 (4.2) ની જેમ, બાયોનિક ગ્લિબકના _ ફોર્ટિફાય _ સોર્સ જેવી જ કાર્યક્ષમતાને ટેકો આપે છે, જે એક એવી સુવિધા છે જ્યાં અસુરક્ષિત સ્ટ્રિંગ અને મેમરી કાર્યો (જેમ કે એ. આર. સી. પી. આઈ. (), એ. આર. સી. ટી. (), અને એ. આર. સી. પી. આઈ. ()) માં બફર ઓવરરન માટેના ચેકનો સમાવેશ થાય છે. આ તપાસ સંકલન સમયે કરવામાં આવે છે જો બફર કદ સંકલન સમયે નક્કી કરી શકાય છે, અથવા અન્યથા રન-ટાઇમ. કારણ કે ફોર્ટિફાઇ એલ. બી. સી. ના રનટાઇમ સપોર્ટ પર આધાર રાખે છે, જૂની એન્ડ્રોઇડ રીલીઝ માટે તેની પોર્ટેબિલિટી મર્યાદિત છે. પ્લેટફોર્મ પોતે _ FORTIFY _ SORCE સક્ષમ સાથે બનાવવામાં આવ્યું છે. ઐતિહાસિક રીતે, ફોર્ટિફાઇની એક ખામી એ રહી છે કે તે જીસીસી સાથે ગાઢ રીતે જોડાયેલું છે, જે ક્લાંગ જેવા અન્ય કમ્પાઇલર્સમાં સારી રીતે ટેકો આપવાનું ખૂબ જ મુશ્કેલ બનાવે છે. આનો અર્થ એ થયો કે જ્યારે એન્ડ્રોઇડ તેના ડિફોલ્ટ કમ્પાઇલર તરીકે ક્લાંગમાં બદલાઈ ગયું, ત્યારે બાયોનિકનું ફોર્ટિફાઇ અમલીકરણ નોંધપાત્ર રીતે ઓછું ઉપયોગી બન્યું. એન્ડ્રોઇડ ઓરેઓ (8.0) માં, બાયોનિકના ફોર્ટિફાઇને ક્લાંગને ધ્યાનમાં રાખીને ઓવરહોલ્ડ કરવામાં આવ્યું હતું, પરિણામે ક્લાંગ પર ફોર્ટિફાઇ જીસીસી પર ફોર્ટિફાઇની સમકક્ષ અનુભવ પ્રદાન કરે છે. આ ઓવરહોલથી, કોડને પકડવા માટે ગ્લિબ્સની ઉપર અને બહાર કેટલાક ચેક ઉમેરવામાં આવ્યા હતા-જે અનિવાર્યપણે અવ્યાખ્યાયિત વર્તનનું કારણ નથી-દેખીતી રીતે ખોટું છે. કારણ કે આ નવા અમલીકરણ માટે પહેલાની સરખામણીમાં વધુ libc સપોર્ટની જરૂર નથી, ક્લાંગ-વિશિષ્ટ ઉન્નતીકરણો ઓરેઓ પહેલાં એન્ડ્રોઇડના વર્ઝનને લક્ષિત કરતી એપ્લિકેશનો માટે ઉપલબ્ધ છે. વિવાદો બાયોનિકની રચના માટે ગૂગલે જી. પી. એલ. વી. 2-લાઇસન્સ ધરાવતી લિનક્સ કર્નલ હેડર ફાઇલોનો ઉપયોગ કર્યો હતો. જી. પી. એલ. થી છુટકારો મેળવવા માટે, ગૂગલે દાવો કર્યો હતો કે તેણે હેડર ફાઇલોને કોઈપણ કૉપિરાઇટ-યોગ્ય કાર્યમાંથી સાફ કરી દીધી છે, જે તેમને બિન-કૉપિરાઇટ કરી શકાય તેવી "હકીકતો" સુધી ઘટાડે છે. લિનક્સના નિર્માતા લિનસ ટોરવાલ્ડ્સે ગૂગલની વર્તણૂકને સ્વીકાર્ય ગણાવી હતી, પરંતુ જી. પી. એલ. ના ગૂગલના અર્થઘટનને પડકારવામાં આવ્યું છે, ઉદાહરણ તરીકે યુનિવર્સિટી ઓફ હ્યુસ્ટન લૉ સેન્ટરના કાયદાના પ્રોફેસર રેમન્ડ નિમેર દ્વારા. આ પણ જુઓ હાયબ્રિસ (લિબિબ્રિસ તરીકે પણ ઓળખાય છે) મસલ ટોયબોક્સ સંદર્ભો બાહ્ય કડીઓ એન્ડ્રોઇડ એન્ડ્રોઇડ નેટિવ ડેવલપમેન્ટ કિટ (એન. ડી. કે.) માટેનું વિકાસકર્તા હોમ પેજ હોમ પેજ બાયોનિક સ્ત્રોતો (સત્તાવાર ભંડાર) eLinux.org એન્ડ્રોઇડ (ઓપરેટિંગ સિસ્ટમ) પર બાયોનિક નોંધો સી પ્રમાણભૂત લાઇબ્રેરી બીએસડી લાઇસન્સનો ઉપયોગ કરીને લિનક્સ કર્નલ સોફ્ટવેરના ઇન્ટરફેસ