TnFOX
টি. এন. এফ. ও. এক্স পোর্টেবিলিটি টুলকিট হল ফক্স জি. ইউ. আই টুলকিটের একটি কাঁটাচামচ যেখানে বেশিরভাগ যোগ করা কোড অর্থোগোনাল বৈশিষ্ট্যগুলি প্রয়োগ করে (অর্থাৎ। ফক্স এপিআই-কে উল্লেখযোগ্যভাবে পরিবর্তন না করা) যাতে ফক্সের জন্য তৈরি অ্যাপ্লিকেশনগুলি সহজেই টিএনএফওএক্স-এর জন্য পুনরায় কম্পাইল করা যায়। অস্বাভাবিকভাবে, টিএনএফওএক্সে কিছু কিউটি লাইব্রেরি ক্লাসের এপিআই এমুলেশনও রয়েছে-লেখকের মতে, এটি কিউটি থেকে ফক্সে একটি উল্লেখযোগ্য প্রকল্প পোর্ট করার জন্য করা হয়েছিল। যোগ করা বেশিরভাগ বৈশিষ্ট্য একটি সম্পূর্ণ "পোর্টেবিলিটি টুলকিট" লাইব্রেরি প্রয়োগ করে যাতে যে কেউ যে কোনও জায়গায় চালানোর জন্য একটি প্রোগ্রাম লিখতে পারে-এটি ফক্স থেকে আলাদা যা বেশিরভাগ ক্ষেত্রে শুধুমাত্র জিইউআই পোর্টেবিলিটি প্রদান করে। টিএনএফওএক্স তাই একটি অপারেটিং সিস্টেম বিমূর্ত স্তরের একটি উদাহরণ। ফক্সের বিপরীতে, টিএনএফওএক্স শুধুমাত্র সি + + সংকলক এবং অপারেটিং সিস্টেমের একটি সীমাবদ্ধ সেটকে সমর্থন করে। এটি শুধুমাত্র মাইক্রোসফ্টের সি + + কম্পাইলার v7.1 এবং পরবর্তী, জিসিসি v3.2 এবং পরবর্তী এবং ইন্টেল সি + + কম্পাইলার v8 বা পরবর্তীকে সমর্থন করে। এটি শুধুমাত্র উইন্ডোজ 2000 বা তার পরে, লিনাক্স 2.6 কার্নেল বা তার পরে, ফ্রিবিএসডি এবং ম্যাক ওএস এক্স 10.4 বা তার পরে, যদিও যে কোনও প্রসেসর বা আর্কিটেকচারে চলে। টিএনএফওএক্স-এ Boost.Python লাইব্রেরির উপর ভিত্তি করে পাইথনের জন্য নিজস্ব স্বয়ংক্রিয়ভাবে উত্পন্ন বাঁধাই রয়েছে-এগুলির জটিলতা ছিল জিসিসি ভি4-এর পরে-দৃশ্যমানতা বৈশিষ্ট্য যোগ করার প্রয়োজন। যাইহোক, সাম্প্রতিক বছরগুলিতে এগুলির গুণমান এবং অবস্থা হ্রাস পেয়েছে। 2012 সাল থেকে গ্রন্থাগারটি আর এর লেখকের দ্বারা রক্ষণাবেক্ষণ করা হয় না। টি. এন. এফ. ও. এক্স-এর উল্লেখযোগ্য বৈশিষ্ট্যগুলি টি. এন. এফ. ও. এক্স-এর আরও মৌলিক বৈশিষ্ট্যগুলির মধ্যে একটি হল এর সি + + মেটাপ্রোগ্রামিংয়ের ব্যাপক ব্যবহার, যদিও এটি সম্পূর্ণরূপে জি. ইউ. আই দিক থেকে দূরে রাখা হয় (ফক্স সামঞ্জস্যের জন্য)। একটি সম্পূর্ণ লাইটওয়েট মেটাপ্রোগ্রামিং টুলকিট অন্তর্ভুক্ত করা হয়েছে যা বুস্ট মেটাপ্রোগ্রামিং লাইব্রেরি দ্বারা প্রদত্ত অনেক ক্রিয়াকলাপের অনুমতি দেয়, যার মধ্যে রয়েছে টাইপলিস্ট, টাইপ বৈশিষ্ট্য, সংকলন-সময় যুক্তি, ফাংক্টর, ভার্চুয়াল টেবিল সংকলন, অনুভূমিক টাইপ তালিকা তাৎক্ষণিককরণ এবং আরও অনেক কিছু। বুস্টের বিপরীতে, একটি আধুনিক সি + + কম্পাইলারের প্রয়োজনীয়তার কারণে, সমস্ত মেটাপ্রোগ্রামিং কুৎসিত ম্যাক্রোর প্রয়োজন ছাড়াই কম্পাইলার জুড়ে ধারাবাহিকভাবে কাজ করে। আরেকটি অস্বাভাবিক বৈশিষ্ট্য হল বিস্তৃত ব্যতিক্রম পরিচালনা এবং সুরক্ষার ব্যবহার যার মাধ্যমে যে কোনও লাইন সর্বদা সম্ভাব্য ব্যতিক্রম নিক্ষেপ করে বলে ধরে নেওয়া হয়। টিএনএফওএক্স একটি সি + + রোলব্যাক প্রক্রিয়া প্রদান করে (মূলত আন্দ্রেই আলেকজান্দ্রেস্কু দ্বারা প্রস্তাবিত) যাতে কোনও ত্রুটি ঘটলে যে কোনও নির্দিষ্ট পর্যায়ে কোন ক্রিয়াকলাপগুলি বাতিল করা দরকার তার উপর নজর রাখা যায়-পরিবর্তে এসকিউএল লেনদেনের মতো। এই পদ্ধতির একটি সমস্যা হল বস্তু ধ্বংসের সময় নেস্টেড এক্সসেপশন থ্রোয়ের সম্ভাবনা যা আইএসও সি + + স্ট্যান্ডার্ডের অধীনে একটি তাত্ক্ষণিক প্রোগ্রাম সমাপ্তির প্রয়োজন-অতিরিক্ত সমর্থন কোড যোগ করার জন্য উৎসের প্রাক প্রক্রিয়াকরণের মাধ্যমে টিএনএফওএক্স এই সমস্যার চারপাশে কাজ করে। v0.88 রিলিজের একটি অদ্ভুত সংযোজন হল গুগল ট্রান্সলেট ব্যবহার করে এর স্থানীয় স্ট্রিং রূপান্তর করা। যদিও এর উপযোগিতা সন্দেহজনক, বিশেষত ছোট স্ট্রিংয়ের জন্য, তবুও এটি অনুবাদের সময় সময় সাশ্রয় করতে পারে। বেশিরভাগ বহনযোগ্য টুলকিটের বিপরীতে, টিএনএফওএক্স খুব ব্যাপকভাবে প্রোফাইল করা হয়েছে এবং সর্বাধিক গতি এবং ন্যূনতম মেমরি ব্যবহারের জন্য কর্মক্ষমতা সুর করা হয়েছে। একই ক্যাশে লাইনে দুটি থ্রেড লেখা এড়াতে টিউনিং সহ এটির শক্তিশালী মাল্টিথ্রেডিং সমর্থন রয়েছে (যা ক্যাশে লাইন বাউন্স এবং সমান্তরাল থ্রুপুটকে ব্যাপকভাবে বাধা দেয়)। এটি ঐচ্ছিকভাবে তার নিজস্ব থ্রেড ক্যাশিং মেমরি বরাদ্দকারী ব্যবহার করে, স্বয়ংক্রিয়ভাবে গতিশীল অ্যালগরিদম ব্যবহার করে যা মেমরি কম অবস্থার অনুযায়ী মেমরি ব্যবহারের জন্য গতি বিনিময় করবে এবং সিমডি ভেক্টরগুলির একটি মেটাপ্রোগ্রামিং বাস্তবায়ন সহ খুব শক্তিশালী x86 এবং x64 নির্দিষ্ট অপ্টিমাইজেশন রয়েছে যা স্বয়ংক্রিয়ভাবে SSE ক্রিয়াকলাপে সংকলন করবে (ঠিক SSE4 সমর্থন পর্যন্ত)। এটির নিজস্ব অ্যাসেম্বলার লিখিত দ্রুত মিউটেক্স বাস্তবায়ন, কার্নেলে সিসকল এড়ানোর জন্য বিস্তৃত অভ্যন্তরীণ ক্যাশিং এবং নিজস্ব আন্তঃপ্রক্রিয়া যোগাযোগ কাঠামো রয়েছে যা স্বয়ংক্রিয়ভাবে সিরিয়ালাইজেশন এবং ডিসেরিয়ালাইজেশন বাস্তবায়নের জন্য মেটাপ্রোগ্রামিং ব্যবহার করে নির্বিচারে সি + + বস্তুর দৃষ্টান্তগুলি এক জায়গা থেকে অন্য জায়গায় পরিবহন করতে পারে। এটি বিশেষত এর এসকিউএল ডাটাবেস ইন্টারফেসে স্পষ্ট হয় যেখানে কেউ একটি নির্বিচারে সি + + অবজেক্ট দৃষ্টান্তকে একটি বিএলওবি ক্ষেত্রের সাথে আবদ্ধ করতে পারে এবং আর কোনও কোডের প্রয়োজন হয় না। টিএনএফওএক্স বিকল্পভাবে ওপেনএসএসএল লাইব্রেরি এবং এসকিউএলাইট লাইব্রেরির অনুলিপি অন্তর্ভুক্ত করে যাতে যথাক্রমে এর শক্তিশালী এনক্রিপশন এবং ডিফল্ট এসকিউএল ডাটাবেস বাস্তবায়ন করা যায়। এটি পৃথক ডিএলএল-এর একটি সেট হিসাবে বা একশিলা হিসাবে মডুলারভাবে তৈরি করা যেতে পারে। এটিতে হোস্ট অপারেটিং সিস্টেম এসিএল সুরক্ষার জন্য সম্পূর্ণ বহনযোগ্য সমর্থন রয়েছে এবং কীভাবে সংবেদনশীল তথ্যকে সোয়াপ ফাইলে প্রবেশ করা থেকে রক্ষা করতে হয়, এবং স্বয়ংক্রিয়ভাবে যে কোনও মুছে ফেলা অংশ কেটে ফেলতে হয় তা জানে। এটি অ্যাক্সেস করতে পারে যে কোন ব্যবহারকারী প্রক্রিয়াটি চালাচ্ছেন এবং কীভাবে প্রয়োজনীয় হিসাবে এর সুবিধাগুলি বাড়ানো যায়। এটিতে কোনও জিইউআই বিল্ড নেই যা ডেমন এবং সিস্টেম প্রক্রিয়াগুলির জন্য পোর্টেবিলিটি টুলকিট হিসাবে উপযুক্ত। এর কোনও এক্স11/জি. ডি. আই নির্ভরতা নেই। টিএনএফওএক্স ইতিমধ্যেই সেইসব সংকলকদের জন্য সি + + 0x বৈশিষ্ট্য যোগ করা শুরু করেছে যা তাদের সমর্থন করে-এটি আইএসও সি + + মানের পরবর্তী সংশোধন। আরও দেখুন উইজেট টুলকিট অপারেটিং সিস্টেম বিমূর্ত স্তর উইজেট টুলকিটগুলির তালিকা ফক্স টুলকিট কিউটি রেফারেন্স বাহ্যিক লিঙ্ক প্রকল্প হোমপেজ উইজেট টুলকিট এলজিপিএল লাইসেন্স ব্যবহার করে সি + + সফ্টওয়্যারে প্রোগ্রাম করা বিনামূল্যে সফ্টওয়্যার