Bionic (software)
বায়োনিক হল স্ট্যান্ডার্ড সি লাইব্রেরির একটি বাস্তবায়ন, যা গুগল তার অ্যান্ড্রয়েড অপারেটিং সিস্টেমের জন্য তৈরি করেছে। এটি একটি সাধারণ লিনাক্স সিস্টেমের তুলনায় কম মেমরি এবং প্রসেসর শক্তি সহ ডিভাইসগুলির জন্য ডিজাইন করার ক্ষেত্রে জিএনইউ সি লাইব্রেরি (জিএলবিসি) থেকে আলাদা। এটি ফ্রিবিএসডি, নেটবিএসডি এবং ওপেনবিএসডি থেকে নতুন কোড এবং কোডের সংমিশ্রণ যা গ্লিবসির পরিবর্তে বিএসডি লাইসেন্সের অধীনে প্রকাশিত হয়, যা জিএনইউ লেসার জেনারেল পাবলিক লাইসেন্স ব্যবহার করে। অ্যান্ড্রয়েডের শুরুর দিনগুলিতে এই পার্থক্যটি গুরুত্বপূর্ণ ছিল, যখন স্ট্যাটিক লিঙ্কিং প্রচলিত ছিল, এবং এখনও মালিকানাধীন অপারেটিং সিস্টেমগুলিতে ব্যবহৃত সফ্টওয়্যার সংস্থাগুলিতে অ্যান্ড্রয়েড প্রবর্তনে সহায়ক, যারা এলজিপিএল থেকে সতর্ক থাকতে পারে এবং এর এবং সম্পূর্ণ জিএনইউ জেনারেল পাবলিক লাইসেন্সের (জিপিএল) মধ্যে পার্থক্য সম্পর্কে অস্পষ্ট। বায়োনিক হল লিনাক্স কার্নেলের সাথে ব্যবহারের জন্য একটি সি লাইব্রেরি, এবং libc, libdl এবং libm প্রদান করে (libpthred কার্যকারিতা libc-এর অংশ, অন্য কিছু সিস্টেমের মতো একটি পৃথক লাইব্রেরি নয়)। এটি বিএসডি সি লাইব্রেরির থেকে আলাদা যা বায়োনিক কোড ভাগ করে নেয়, কারণ তাদের একটি বিএসডি কার্নেলের প্রয়োজন হয়। বায়োনিকের মূল লক্ষ্যগুলি সর্বজনীনভাবে বর্ণিত লক্ষ্যগুলি ছিল নিম্নরূপঃ বিএসডি-লাইসেন্সযুক্তঃ গুগল একটি মালিকানাধীন ইউজার-স্পেস এবং অ্যাপ্লিকেশন ইকোসিস্টেম তৈরি করতে কপিলেফ্ট লাইসেন্সের প্রভাব থেকে অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিকে বিচ্ছিন্ন করতে চেয়েছিল, তবেঃ অ্যান্ড্রয়েড লিনাক্স কার্নেল ভিত্তিক, যা কপিলেফ্ট জিএনইউ জেনারেল পাবলিক লাইসেন্স (জিপিএল) সংস্করণ 2-এর সাপেক্ষে। লিনাক্স কার্নেলের জন্য সবচেয়ে বিস্তৃত স্ট্যান্ডার্ড সি লাইব্রেরি হল জি. এন. ইউ সি লাইব্রেরি (জি. এল. আই. বি. সি), যা জি. এন. ইউ লেসার জেনারেল পাবলিক লাইসেন্সের (এল. জি. পি. এল) অধীন, যা একটি কপিলেফ্ট লাইসেন্সও। জিপিএল-এর বিপরীতে, এলজিপিএল স্পষ্টভাবে গতিশীল সংযোগের অনুমতি দেয় তবে এটি সোর্স কোড বা লিঙ্কযোগ্য অবজেক্ট ফাইল সরবরাহ না করে মালিকানাধীন সফ্টওয়্যারের স্থির সংযোগের অনুমতি দেয় না। অনুমতিপ্রাপ্ত বিএসডি লাইসেন্স একটি নন-কপিলেফ্ট লাইসেন্স যা উভয় দিকেই সামঞ্জস্যপূর্ণ। একটি বিএসডি-লাইসেন্সযুক্ত গ্লিবসি বিকল্প কপিলেফ্ট কোর (কার্নেল) এবং নন-কপিলেফ্ট অ্যাপ্লিকেশনগুলির মধ্যে একটি বিচ্ছিন্ন স্তর হিসাবে কাজ করতে পারে এবং তাই গুগল তার বায়োনিকের জন্য গ্লিবসি বিকল্প হিসাবে বেছে নিয়েছিল। ছোট আকারঃ বায়োনিক জিএনইউ সি লাইব্রেরির তুলনায় অনেক ছোট ছিল; আরও গুরুত্বপূর্ণভাবে এর স্মৃতির প্রয়োজনীয়তা অনেক কম ছিল (এবং রয়ে গেছে)। গতিঃ বায়োনিক তুলনামূলকভাবে কম ঘড়ির ফ্রিকোয়েন্সিতে সিপিইউগুলির জন্য ডিজাইন করা হয়েছিল। সমর্থিত স্থাপত্যগুলি বায়োনিক শুধুমাত্র লিনাক্স কার্নেলগুলিকে সমর্থন করে, কিন্তু বর্তমানে বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু, বাহু প্ল্যাটফর্মটিতে মার্শম্যালো থেকে নিয়নের সাথে আর্মভি 7-এর প্রয়োজন ছিল, যদিও অ্যান্ড্রয়েড নেটিভ ডেভেলপমেন্ট কিট (এনডিকে) এনডিকে আর16 পর্যন্ত আর্মভি5 (যাকে এটি আরমেবি বলে) সমর্থন অব্যাহত রেখেছিল। এনডিকে এখনও নিয়ন সহ এবং ছাড়াই আর্মভি 7 সমর্থন করে। ঐতিহাসিকভাবে প্ল্যাটফর্মে আংশিক এসএইচ-4 সমর্থন ছিল, তবে কোনও ডিভাইস কখনও পাঠানো হয়নি এবং সমর্থনটি তখন থেকে সরানো হয়েছে। এন. ডি. কে কখনই এস. এইচ-4 সমর্থন করেনি, এবং আর 17-এ এন. ডি. কে থেকে এম. আই. পি. এস এবং এম. আই. পি. এস 64 সমর্থন সরিয়ে দেওয়া হয়েছিল। উপাদান libc উৎসের কিছু অংশ, যেমন stdio, বিএসডি থেকে (প্রধানত ওপেনবিএসডি), যেখানে অন্যান্য, যেমন পিথ্রেড বাস্তবায়ন, স্ক্র্যাচ থেকে লেখা হয়েছিল। সময়ের সাথে সাথে গতিশীল মেমরি বরাদ্দকারী বাস্তবায়ন পরিবর্তিত হয়েছে। ললিপপের আগে একটি একক নেটিভ মেমরি বরাদ্দকারী ছিল, ডগ লিয়ার ডিএলমালোক। ললিপপ এবং মার্শমেলোর জন্য দুটি বাস্তবায়ন ছিলঃ ডি. এল. ম্যালোক এবং জেম্যালোক। জেমালোক ডি. এল. ম্যালোকের তুলনায় অনেক বেশি কার্যকারিতা দেয়, তবে হিসাবরক্ষণের জন্য প্রয়োজনীয় অতিরিক্ত মেমরির মূল্যে। বেশিরভাগ যন্ত্রই জেমালোক ব্যবহার করত কিন্তু কম-মেমোরি যন্ত্রগুলি এখনও ডি. এল. ম্যালোক ব্যবহার করত। অ্যান্ড্রয়েড 10-এর মাধ্যমে নুগাটের জন্য, সমস্ত ডিভাইস জেমালোক ব্যবহার করে। লো-মেমোরি ডিভাইসগুলি জেমালোকের একটি "স্বেল্ট" কনফিগারেশন ব্যবহার করে যা জেমালোকের বেশিরভাগ গতি বজায় রেখে টি-ক্যাশেকে ডিএল-ম্যালোকের নিম্ন মেমরির ওভারহেডের সাথে প্রায় মেলাতে অক্ষম করে। অ্যান্ড্রয়েড 11-এ, বেশিরভাগ ডিভাইসের জন্য মেমরি বরাদ্দকারীকে স্কুডোতে পরিবর্তন করা হয়েছিল, যা অতিরিক্ত নিরাপত্তা শক্তকরণ বৈশিষ্ট্যের জন্য জেমালকের কিছু উচ্চ কার্যকারিতা ত্যাগ করে। তবে, লো-মেমোরি ডিভাইসগুলিকে এখনও জেমালোক ব্যবহারের অনুমতি দেওয়া হয়েছে। কিছু 64-বিট ডিভাইস, যেমন নেক্সাস 9, কার্যকরভাবে কম মেমরি ডিভাইস কারণ 64-বিট পয়েন্টারের অতিরিক্ত স্থানের প্রয়োজনীয়তা এবং দুটি জাইগোটের হোস্টিং। (জাইগোট একটি অ্যান্ড্রয়েড সিস্টেম পরিষেবা যা সমস্ত অ্যান্ড্রয়েড অ্যাপ্লিকেশন প্রক্রিয়াগুলির মূল।) লিবএম উৎসটি মূলত ফ্রিবিএসডি-র, তবে অপ্টিমাইজড অ্যাসেম্বলার সহ বিভিন্ন এস. ও. সি বিক্রেতাদের অবদান রয়েছে। গতিশীল সংযোগকারী (এবং libdl) স্ক্র্যাচ থেকে লেখা হয়েছিল। বায়োনিক লিবথ্রেড _ ডিবি (জি. ডি. বি. সার্ভার দ্বারা ব্যবহৃত) অন্তর্ভুক্ত করে না, তবে এন. ডি. কে করে। অ্যান্ড্রয়েড প্ল্যাটফর্মে একটি স্থিতিশীলভাবে সংযুক্ত জি. ডি. বি. সার্ভার রয়েছে, যাতে ডেভেলপাররা এমনকি পুরানো ডিভাইসেও সর্বশেষতম জি. ডি. বি ব্যবহার করতে পারে। অ্যান্ড্রয়েডে কোনও পৃথক libpthred, libresolv বা গ্রন্থাগার নেই, সমস্ত কার্যকারিতা libc-তে রয়েছে। লিবপথ্রেডের জন্য, একক-থ্রেডেড কেসের জন্য অপ্টিমাইজ করার কোনও প্রচেষ্টা নেই কারণ তৃতীয় পক্ষের কোডের প্রথম নির্দেশটি চালানোর আগেই অ্যাপ্লিকেশনগুলি বহু-থ্রেডেড পরিবেশে থাকে। অ্যান্ড্রয়েড প্ল্যাটফর্মটি সি + + স্ট্যান্ডার্ড লাইব্রেরির জন্য লিবসি + + ব্যবহার করে (ললিপপ ব্যবহৃত স্টিলপোর্ট সহ)। এন. ডি. কে ঐতিহাসিকভাবে এস. টি. এল. পোর্ট এবং জি. এন. ইউ লিব. এস. টি. ডি. সি + + অফার করেছিল, কিন্তু সেগুলি এন. ডি. কে আর 18 হিসাবে অপসারণ করা হয়েছিল। মনে রাখবেন যে কোনও অ্যান্ড্রয়েড অ্যাপে যদি কোনও নেটিভ কোড সি + + ব্যবহার করে, তবে সমস্ত সি + +-কে অবশ্যই একই এস. টি. এল ব্যবহার করতে হবে। এস. টি. এল অ্যান্ড্রয়েড ওএস দ্বারা সরবরাহ করা হয় না এবং প্রতিটি অ্যাপের সাথে একত্রিত করা আবশ্যক। পোসিক্স থেকে পার্থক্য যদিও বায়োনিকের লক্ষ্য সমস্ত সি11 এবং পোসিক্স বাস্তবায়ন করা, তবুও (ওরিও হিসাবে) প্রায় 70টি পোসিক্স ফাংশন লিবসি থেকে অনুপস্থিত। এছাড়াও এন্ডপভেন্ট/গেটপভেন্ট/সেটপভেন্ট পরিবারের মতো পোসিক্স ফাংশন রয়েছে যা অ্যান্ড্রয়েডে প্রয়োগ করা যায় না কারণ এতে পাসডাব্লুডি ডাটাবেস নেই। ওরিও হিসাবে, লিব্ম সম্পূর্ণ। কিছু ফাংশন ইচ্ছাকৃতভাবে নিরাপত্তার কারণে পোসিক্স বা সি মান মেনে চলে না, যেমন প্রিন্টএফ যা% n বিন্যাস স্ট্রিং সমর্থন করে না। সর্বাধিক ব্যবহৃত জি. এন. ইউ এক্সটেনশনগুলির অনেকগুলি বায়োনিক-এ প্রয়োগ করা হয়, যেমন বিভিন্ন বি. এস. ডি এক্সটেনশন। এনডিকে প্ল্যাটফর্ম কোডের সাথে সম্পর্ক সরাসরি বায়োনিক ব্যবহার করে, তবে তৃতীয় পক্ষের ডেভেলপাররা অ্যান্ড্রয়েড নেটিভ ডেভেলপমেন্ট কিট (এনডিকে) ব্যবহার করে। অনেক তৃতীয় পক্ষের ডেভেলপার এখনও পুরানো ওএস রিলিজগুলিকে লক্ষ্য করে, যা একটি ব্যাপক বিশ্বাসকে অবদান রাখে যে বায়োনিকের অনেক বৈশিষ্ট্যের অভাব রয়েছে। জিঞ্জারব্রেড লিবসি থেকে 803টি ফাংশন রপ্তানি করে কিন্তু ওরিও 1278টি রপ্তানি করে (1.6 গুণ বৃদ্ধি)। ঐতিহাসিকভাবে এনডিকে এবং প্ল্যাটফর্মটি বিচ্ছিন্ন হয়ে যায়, তবে এনডিকে আর11 এবং পরে এনডিকে কাঁটাচামচকে তাদের বর্তমান প্ল্যাটফর্ম সমতুল্য দিয়ে প্রতিস্থাপন করেছে। এই কাজটি প্রাথমিকভাবে জিসিসি এবং ক্ল্যাং সংকলকগুলির উপর দৃষ্টি নিবদ্ধ করে। এনডিকে আর14-এর আগে, যখন "ইউনিফাইড" হেডারগুলি প্রথম অপ্ট-ইন ভিত্তিতে দেওয়া হয়েছিল, তখন এনডিকে বিভিন্ন এপিআই স্তরের জন্য প্ল্যাটফর্ম হেডারগুলির অনুলিপি তৈরি করেছিল। এর অর্থ হল যে হেডার-অনলি ফিক্সগুলি (উদাহরণস্বরূপ, ধ্রুবক বা কাঠামোর সংজ্ঞাগুলির ফিক্সগুলি) বেশিরভাগ এনডিকে ব্যবহারকারীদের জন্য উপলব্ধ ছিল না কারণ তারা একটি পুরানো এপিআই স্তরকে লক্ষ্যবস্তু করবে, তবে প্ল্যাটফর্ম ফিক্সগুলি কেবল বর্তমান প্ল্যাটফর্ম হেডারগুলিতে যাচ্ছিল। ওরিও ডেভেলপমেন্ট পিরিয়ডে প্ল্যাটফর্ম হেডারগুলিকে এপিআই স্তরের তথ্য দিয়ে ব্যাখ্যা করা হয়েছিল যাতে সমস্ত এপিআই স্তরের জন্য হেডারের একই সেট ব্যবহার করা যায়, শুধুমাত্র ডেভেলপারের লক্ষ্যযুক্ত এপিআই স্তরে উপলব্ধ ফাংশনগুলি দৃশ্যমান হয়। এগুলি তথাকথিত "ইউনিফাইড" হেডার এবং এনডিকে আর15-এর পর থেকে ডিফল্ট। এনডিকে আর16-এর আগে, এনডিকে লিবসি + + ব্যবহার করে কোডের সাথে libandroid_support.a নামে একটি লাইব্রেরিকে সংযুক্ত করেছিল। এটি libc + + দ্বারা প্রয়োজনীয় ফাংশন সরবরাহ করেছিল যা পুরানো ওএস রিলিজে ছিল না। এটি প্ল্যাটফর্ম দ্বারা ব্যবহৃত একই কোড ছিল না এবং অসংখ্য বাগ প্রবর্তন করেছিল (যেমন libc + + ব্যবহার করা যে কোনও কোডে প্রিন্টএফ পরিবারে অবস্থানগত আর্গুমেন্ট ব্রেক করা)। এনডিকে-তে r16 libandroid_support.a এখনও বিদ্যমান, কিন্তু এখন সরাসরি প্ল্যাটফর্ম উৎস থেকে নির্মিত (এনডিকে নির্মাণের সময় বর্তমান)। অ্যান্ড্রয়েড জেলি বিন এমআর1 (4.2) হিসাবে, বায়োনিক গ্লিবসের _ ফোর্টিফাই _ সোর্সের অনুরূপ কার্যকারিতা সমর্থন করে, যা এমন একটি বৈশিষ্ট্য যেখানে অনিরাপদ স্ট্রিং এবং মেমরি ফাংশন (যেমন স্ট্রকপাই (), স্ট্রক্যাট (), এবং মেমকপি ()) বাফার ওভাররানের জন্য চেক অন্তর্ভুক্ত করে। এই চেকগুলি সংকলনের সময় সঞ্চালিত হয় যদি বাফার আকারগুলি সংকলনের সময় বা অন্যথায় রান-টাইমে নির্ধারণ করা যায়। যেহেতু ফোর্টিফাই লিবসি থেকে রানটাইম সমর্থনের উপর নির্ভর করে, তাই পুরানো অ্যান্ড্রয়েড রিলিজে এর বহনযোগ্যতা সীমিত। প্ল্যাটফর্মটি নিজেই _ FORTIFY _ SORCE সক্ষম করে তৈরি করা হয়েছে। ঐতিহাসিকভাবে, ফোর্টিফাইয়ের একটি ত্রুটি হ 'ল এটি জিসিসির সাথে ঘনিষ্ঠভাবে জড়িত, যা ক্ল্যাংয়ের মতো অন্যান্য সংকলকগুলিতে ভালভাবে সমর্থন করা খুব কঠিন করে তোলে। এর মানে হল যে যখন অ্যান্ড্রয়েড তার ডিফল্ট কম্পাইলার হিসাবে ক্ল্যাং-এ অদলবদল করে, তখন বায়োনিকের ফোর্টিফাই বাস্তবায়ন উল্লেখযোগ্যভাবে কম কার্যকর হয়ে ওঠে। অ্যান্ড্রয়েড ওরিওতে (8.0), বায়োনিকের ফোর্টিফাই ক্ল্যাংকে মাথায় রেখে পুনর্বিন্যাস করা হয়েছিল, যার ফলে ক্ল্যাং-এ ফোর্টিফাই জিসিসি-তে ফোর্টিফাইয়ের সমতুল্য অভিজ্ঞতা প্রদান করে। এই পুনর্বিবেচনার পর থেকে, কোডটি ধরার জন্য গ্লিবসির উপরে এবং বাইরে কিছু চেক যুক্ত করা হয়েছিল-যা অগত্যা অনির্ধারিত আচরণের কারণ না হলেও-স্পষ্টতই ভুল। যেহেতু এই নতুন বাস্তবায়নের জন্য আগেরটির তুলনায় আর কোনও লিবসি সমর্থনের প্রয়োজন নেই, ক্ল্যাং-নির্দিষ্ট বর্ধিতকরণগুলি ওরিওর আগে অ্যান্ড্রয়েডের লক্ষ্যযুক্ত সংস্করণগুলির জন্য উপলব্ধ। বিতর্ক বায়োনিক তৈরির জন্য, গুগল জিপিএলভি2-লাইসেন্সযুক্ত লিনাক্স কার্নেল হেডার ফাইল ব্যবহার করেছিল। জি. পি. এল থেকে মুক্তি পাওয়ার জন্য, গুগল দাবি করে যে এটি যে কোনও কপিরাইট-যোগ্য কাজ থেকে হেডার ফাইলগুলি পরিষ্কার করে, সেগুলিকে অ-কপিরাইটযোগ্য "তথ্য"-এ কমিয়ে দেয়। লিনাক্সের স্রষ্টা লিনাস টরভাল্ডস গুগলের আচরণকে গ্রহণযোগ্য বলে মনে করেছিলেন, তবে জিপিএল সম্পর্কে গুগলের ব্যাখ্যাকে চ্যালেঞ্জ করা হয়েছে, উদাহরণস্বরূপ হিউস্টন বিশ্ববিদ্যালয়ের আইন কেন্দ্রের আইনের অধ্যাপক রেমন্ড নিমার। আরও দেখুন হাইব্রিস (লিবিব্রিস নামেও পরিচিত) মসল টয়বক্স রেফারেন্স বাহ্যিক লিঙ্ক ডেভেলপার হোম পেজ ফর অ্যান্ড্রয়েড অ্যান্ড্রয়েড নেটিভ ডেভেলপমেন্ট কিট (এনডিকে) হোম পেজ বায়োনিক সোর্স (অফিসিয়াল রিপোজিটরি) বায়োনিক নোটস eLinux.org অ্যান্ড্রয়েড (অপারেটিং সিস্টেম) সি স্ট্যান্ডার্ড লাইব্রেরি বিএসডি লাইসেন্স ব্যবহার করে লিনাক্স কার্নেল সফ্টওয়্যারের ইন্টারফেস