History of Ruby
রুবি প্রোগ্রামিং ভাষার ইতিহাস শুরু হয় যখন 1993 সালে ইউকিহিরো মাতসুমোতো প্রথম এই ভাষার ধারণা করেন, তারপর 1995 সালে এটি প্রকাশ করেন। ভাষার বার্ষিক প্রকাশ প্রায়শই বড়দিনের দিনে হয়। রুবি অন রেলস কাঠামোর কারণে 2005 সালের দিকে ভাষার প্রতি আগ্রহ বৃদ্ধি পায়। রুবি ধারণার স্রষ্টা ইউকিহিরো মাতসুমোতো বলেছেন যে রুবি 1993 সালে গর্ভধারণ করেছিলেন। 1999 সালে রুবি-টক মেলিং লিস্টে একটি পোস্টে, তিনি ভাষা সম্পর্কে তাঁর কিছু প্রাথমিক ধারণার বর্ণনা দিয়েছেনঃ মাতসুমোতো রুবির নকশাকে একটি সাধারণ লিস্প ভাষার মতো বলে বর্ণনা করেছেন, যার মূল অংশে স্মলটকের মতো একটি অবজেক্ট সিস্টেম, উচ্চ-ক্রম ফাংশন দ্বারা অনুপ্রাণিত ব্লক এবং পার্লের মতো ব্যবহারিক উপযোগিতা রয়েছে। "রুবি" নামটি 1993 সালের 24শে ফেব্রুয়ারি মাতসুমোতো এবং কেইজু ইশিতসুকার মধ্যে একটি অনলাইন চ্যাট সেশনের সময় ভাষার জন্য কোনও কোড লেখার আগে উদ্ভূত হয়েছিল। প্রাথমিকভাবে দুটি নাম প্রস্তাব করা হয়েছিলঃ "কোরাল" এবং "রুবি"। মাতসুমোতো ইশিতসুকাকে একটি পরবর্তী ই-মেইলে পরেরটি বেছে নিয়েছিলেন। মাতসুমোতো পরে "রুবি" নামটি বেছে নেওয়ার একটি কারণ উল্লেখ করেছিলেন-এটি ছিল তাঁর এক সহকর্মীর জন্মস্তম্ভ। প্রথম প্রকাশ 1995 সালের 21শে ডিসেম্বর জাপানি অভ্যন্তরীণ সংবাদ গোষ্ঠীগুলিতে রুবি 0.95-এর প্রথম প্রকাশ্য প্রকাশের কথা ঘোষণা করা হয়। পরবর্তীকালে, রুবির আরও তিনটি সংস্করণ দুই দিনের মধ্যে মুক্তি পায়। এই প্রকাশটি জাপানি ভাষার রুবি-তালিকা মেলিং তালিকা প্রকাশের সাথে মিলে যায়, যা নতুন ভাষার জন্য প্রথম মেলিং তালিকা ছিল। উন্নয়নের এই পর্যায়ে ইতিমধ্যেই উপস্থিত ছিল রুবির পরবর্তী রিলিজগুলিতে পরিচিত অনেকগুলি বৈশিষ্ট্য, যার মধ্যে রয়েছে অবজেক্ট-ওরিয়েন্টেড ডিজাইন, উত্তরাধিকার সহ ক্লাস, মিক্সিন, ইটারেটর, ক্লোজার, ব্যতিক্রম পরিচালনা এবং আবর্জনা সংগ্রহ। 1995 সালে রুবি 0.95-এর মুক্তির পর, পরবর্তী বছরগুলিতে রুবির বেশ কয়েকটি স্থিতিশীল সংস্করণ মুক্তি পায়ঃ রুবি 1ঃ ডিসেম্বর 25,1996 রুবি 2ঃ ডিসেম্বর 1998 রুবি 4ঃ আগস্ট 1999 রুবি 6ঃ সেপ্টেম্বর 2000 1997 সালে, রুবি সম্পর্কে প্রথম নিবন্ধটি ওয়েবে প্রকাশিত হয়েছিল। একই বছরে, মাতসুমোতোকে netlab.jp দ্বারা একজন পূর্ণ-সময়ের ডেভেলপার হিসাবে রুবিতে কাজ করার জন্য নিয়োগ করা হয়েছিল। 1998 সালে, রুবি অ্যাপ্লিকেশন আর্কাইভ মাতসুমোতো দ্বারা চালু করা হয়েছিল, রুবির জন্য একটি সাধারণ ইংরেজি ভাষার হোমপেজ সহ। 1999 সালে, প্রথম ইংরেজি ভাষার মেইলিং তালিকা রুবি-টক শুরু হয়, যা জাপানের বাইরে ভাষার প্রতি ক্রমবর্ধমান আগ্রহের ইঙ্গিত দেয়। এই একই বছরে, মাতসুমোতো এবং কেইজু ইশিতসুকা রুবির উপর প্রথম বই লিখেছিলেন, দ্য অবজেক্ট-ওরিয়েন্টেড স্ক্রিপ্টিং ল্যাঙ্গুয়েজ রুবি, যা 1999 সালের অক্টোবরে জাপানে প্রকাশিত হয়েছিল। 2000-এর দশকের গোড়ার দিকে জাপানি ভাষায় রুবি নিয়ে প্রায় 20টি বই প্রকাশিত হয়। 2000 সাল নাগাদ জাপানে পাইথনের চেয়ে রুবি বেশি জনপ্রিয় হয়ে ওঠে। 2000 সালের সেপ্টেম্বরে, প্রথম ইংরেজি ভাষার বই প্রোগ্রামিং রুবি মুদ্রিত হয়েছিল, যা পরে জনসাধারণের জন্য অবাধে প্রকাশিত হয়েছিল, যা ইংরেজি বক্তাদের মধ্যে রুবি গ্রহণকে আরও প্রশস্ত করেছিল। 2002 সালের গোড়ার দিকে, ইংরেজি ভাষার রুবি-টক মেইলিং তালিকা জাপানি ভাষার রুবি-তালিকার চেয়ে বেশি বার্তা পাচ্ছিল, যা অ-জাপানিভাষী বিশ্বে রুবির ক্রমবর্ধমান জনপ্রিয়তা প্রদর্শন করে। রুবি 1.8 রুবি 1.8 প্রাথমিকভাবে 2003 সালের আগস্ট মাসে মুক্তি পায়, দীর্ঘ সময়ের জন্য স্থিতিশীল ছিল এবং 2013 সালের জুন মাসে অবসর গ্রহণ করে। যদিও অবচিত, তবুও এর উপর ভিত্তি করে কোড রয়েছে। রুবি 1.8 শুধুমাত্র রুবি 1.9-এর সাথে আংশিকভাবে সামঞ্জস্যপূর্ণ। রুবি 1.8 বেশ কয়েকটি শিল্প মানের বিষয় হয়ে দাঁড়িয়েছে। জাপানি ইন্ডাস্ট্রিয়াল স্ট্যান্ডার্ড কমিটি (জেআইএসসি) এবং তারপর ইন্টারন্যাশনাল অর্গানাইজেশন ফর স্ট্যান্ডার্ডাইজেশনের (আইএসও) কাছে জমা দেওয়ার জন্য ইনফরমেশন-টেকনোলজি প্রোমোশন এজেন্সির (একটি জাপানি সরকারী সংস্থা) ওপেন স্ট্যান্ডার্ড প্রোমোশন সেন্টার রুবির জন্য ভাষার নির্দিষ্টকরণগুলি তৈরি করেছিল। এটি 2011 সালে জাপানি ইন্ডাস্ট্রিয়াল স্ট্যান্ডার্ড (জেআইএস এক্স 3017) এবং 2012 সালে একটি আন্তর্জাতিক মান (আইএসও/আইইসি 30170) হিসাবে গৃহীত হয়েছিল। 2005 সালের দিকে, রুবি ভাষার প্রতি আগ্রহ রুবি অন রেলসের সাথে তাল মিলিয়ে বৃদ্ধি পায়, যা রুবি ভাষায় লেখা একটি ওয়েব কাঠামো। রুবি সম্পর্কে সচেতনতা বৃদ্ধির জন্য রেলসকে প্রায়শই কৃতিত্ব দেওয়া হয়। রুবি 1.9 রুবি 1.9 2007 সালে বড়দিনের দিনে মুক্তি পায়। 31শে অক্টোবর, 2011-এ প্রকাশিত রুবি 1.9.3-এর সাথে কার্যকর, রুবি রুবি লাইসেন্স এবং জিপিএল-এর অধীনে দ্বৈত-লাইসেন্সপ্রাপ্ত থেকে রুবি লাইসেন্স এবং দুই-ধারা বিএসডি লাইসেন্সের অধীনে দ্বৈত-লাইসেন্সপ্রাপ্ত হয়ে ওঠে। 1. 1-এর গ্রহণ 1.8 থেকে পরিবর্তনের দ্বারা ধীর হয়ে গিয়েছিল যার জন্য অনেক জনপ্রিয় তৃতীয় পক্ষের রত্ন পুনর্লিখন করা প্রয়োজন ছিল। রুবি 1.9 1.8 সিরিজের উপর অনেক উল্লেখযোগ্য পরিবর্তন প্রবর্তন করে। উদাহরণগুলির মধ্যে রয়েছেঃ ব্লক লোকাল ভেরিয়েবল (ভেরিয়েবলগুলি যে ব্লকে সেগুলি ঘোষণা করা হয়েছে তার স্থানীয়) একটি অতিরিক্ত ল্যাম্বডা সিনট্যাক্সঃ প্রতীক কীগুলির জন্য কোলন ব্যবহার করে একটি অতিরিক্ত হ্যাশ আক্ষরিক সিনট্যাক্সঃ প্রতি-স্ট্রিং অক্ষর এনকোডিং নতুন সকেট এপিআই (আইপিভি 6 সমর্থন) সমর্থিত। ব্যবহারকারীদের আরও সাম্প্রতিক সংস্করণে আপগ্রেড করার পরামর্শ দেওয়া হচ্ছে। রুবি 2 রুবি 2 বেশ কয়েকটি নতুন বৈশিষ্ট্য যুক্ত করেছে, যার মধ্যে রয়েছেঃ মেথড কীওয়ার্ড আর্গুমেন্ট, একটি নতুন পদ্ধতি, Module#prepend, একটি ক্লাস প্রসারিত করার জন্য, প্রতীকগুলির একটি অ্যারে তৈরি করার জন্য একটি নতুন আক্ষরিক, গণনাযোগ্যগুলির অলস মূল্যায়নের জন্য নতুন এপিআই এবং বস্তুকে হ্যাশে রূপান্তর করতে #to_h ব্যবহার করার একটি নতুন প্রথা। রুবি 2.0-এর উদ্দেশ্য ছিল রুবি 1.9.3-এর সাথে সম্পূর্ণরূপে পশ্চাদগামী সামঞ্জস্যপূর্ণ হওয়া। 24শে ফেব্রুয়ারী, 2013-এ অফিসিয়াল 2.0 প্রকাশ হিসাবে, মাত্র পাঁচটি পরিচিত (ছোটখাটো) অসঙ্গতি ছিল। রুবি 2 ফেব্রুয়ারী, 2016 থেকে অপ্রচলিত, এবং এটি আর বাগ এবং নিরাপত্তা সংশোধন গ্রহণ করবে না। ব্যবহারকারীদের আরও সাম্প্রতিক সংস্করণে আপগ্রেড করার পরামর্শ দেওয়া হচ্ছে। রুবি 2.1 রুবি 2013 সালে বড়দিনের দিনে মুক্তি পায়। এই রিলিজে স্পিড-আপ, বাগ ফিক্স এবং লাইব্রেরি আপডেট অন্তর্ভুক্ত রয়েছে। 2. 1 থেকে শুরু করে, রুবির সংস্করণ নীতি শব্দার্থিক সংস্করণের মতো। যদিও একই রকম, রুবির সংস্করণ নীতি শব্দার্থিক সংস্করণের সাথে সামঞ্জস্যপূর্ণ নয়ঃ শব্দার্থিক সংস্করণ প্রাক-প্রকাশের জন্য অতিরিক্ত লেবেল সরবরাহ করে এবং MAJOR.MINOR.PATCH বিন্যাসে এক্সটেনশন হিসাবে মেটাডেটা তৈরি করে, যা রুবিতে উপলব্ধ নয়। রুবি 2,1 এপ্রিল, 2017 থেকে অপ্রচলিত হয়ে গেছে এবং এটি আর বাগ এবং নিরাপত্তা সংশোধন গ্রহণ করবে না। ব্যবহারকারীদের আরও সাম্প্রতিক সংস্করণে আপগ্রেড করার পরামর্শ দেওয়া হচ্ছে। রুবি 2.2 রুবি 2014 সালে বড়দিনের দিনে মুক্তি পায়। এই রিলিজে স্পিড-আপ, বাগ ফিক্স এবং লাইব্রেরি আপডেট অন্তর্ভুক্ত রয়েছে এবং কিছু অবচিত এপিআই অপসারণ করা হয়েছে। সবচেয়ে উল্লেখযোগ্যভাবে, রুবি 2.2 একটি ক্রমবর্ধমান আবর্জনা সংগ্রাহক পরিচালনা করার জন্য মেমরি পরিবর্তন, প্রতীকগুলির আবর্জনা সংগ্রহের জন্য সমর্থন এবং সরাসরি জেমালোকের বিরুদ্ধে সংকলন করার বিকল্প প্রবর্তন করে। এটি সিস্টেম () এবং স্পন () এর সাথে ভিফর্ক (2) ব্যবহার করার জন্য পরীক্ষামূলক সমর্থনও রয়েছে এবং ইউনিকোড 7 নির্দিষ্টকরণের জন্য সমর্থন যোগ করেছে। যে বৈশিষ্ট্যগুলি অপ্রচলিত বা অপসারণ করা হয়েছিল তার মধ্যে রয়েছে কলসি, ডিএল লাইব্রেরি, ডাইজেস্টঃঃ এইচএমএসি, লিব/রেশনাল. আরবি, লিব/কমপ্লেক্স. আরবি, জিএসার্ভার, লগারঃ অ্যাপ্লিকেশন এবং বিভিন্ন সি এপিআই ফাংশন। রুবি 2.2.1 এপ্রিল, 2018 থেকে অপ্রচলিত হয়ে গেছে এবং এটি আর বাগ এবং নিরাপত্তা সংশোধন গ্রহণ করবে না। ব্যবহারকারীদের আরও সাম্প্রতিক সংস্করণে আপগ্রেড করার পরামর্শ দেওয়া হচ্ছে। পাওয়ারপিসি64 কর্মক্ষমতা সংস্করণ 2.2.1 থেকে, পাওয়ারপিসি64-এ রুবি এমআরআই কর্মক্ষমতা উন্নত করা হয়েছে। রুবি 2.3 রুবি 2015 সালে বড়দিনের দিনে মুক্তি পায়। কয়েকটি উল্লেখযোগ্য পরিবর্তনের মধ্যে রয়েছেঃ সমস্ত স্ট্রিং আক্ষরিককে ডিফল্টরূপে হিমায়িত হিসাবে চিহ্নিত করার ক্ষমতা যার ফলে স্ট্রিং ক্রিয়াকলাপে বড় কর্মক্ষমতা বৃদ্ধি পায়। হ্যাশ তুলনা শুধুমাত্র কীগুলির পরিবর্তে কী/মান জোড়া সরাসরি পরীক্ষা করার অনুমতি দেয়। একটি নতুন নিরাপদ নেভিগেশন অপারেটর &। যা শূন্য পরিচালনা সহজ করতে পারে (যেমন। এর পরিবর্তে, আমরা ব্যবহার করতে পারি যদি ওবিজে &. ফো &. বার)। ডিড _ ইউ _ মিন রত্নটি এখন ডিফল্টরূপে বান্ডিল করা হয়েছে এবং স্টার্টআপে স্বয়ংক্রিয়ভাবে একটি নেম এরর বা নোমেথোড এরর-এ অনুরূপ নামের মিলগুলির পরামর্শ দিতে হবে। Hash#dig এবং Array#dig সহজেই গভীরভাবে নেস্টেড মানগুলি বের করতে (যেমন। প্রদত্ত, ফু বাজ মানটি এখন profile.dig (: সামাজিক,: উইকিপিডিয়া,: নাম) দ্বারা পুনরুদ্ধার করা যেতে পারে। . grep _ v (রেজেএক্সপি) যা অন্যান্য নতুন বৈশিষ্ট্য ছাড়াও প্রদত্ত নিয়মিত অভিব্যক্তির সমস্ত নেতিবাচক উদাহরণের সাথে মেলে। 2. 3 শাখায় অনেক কর্মক্ষমতার উন্নতি, আপডেট এবং বাগফিক্স অন্তর্ভুক্ত রয়েছে যার মধ্যে রয়েছে Proc#call-এ পরিবর্তন, ব্যতিক্রম কীওয়ার্ডের সকেট এবং আইও ব্যবহার, Thread#name হ্যান্ডলিং, ডিফল্ট প্যাসিভ নেটঃ: এফটিপি সংযোগ এবং এসটিডিলিব থেকে রেক অপসারণ। রুবি 2.4 রুবি 2016 সালে বড়দিনের দিনে মুক্তি পায়। কয়েকটি উল্লেখযোগ্য পরিবর্তনের মধ্যে রয়েছেঃ Binding#irb: binding.pry এর মতো একটি আরইপিএল অধিবেশন শুরু করুন ফিক্সনাম এবং বিগনমকে পূর্ণসংখ্যা শ্রেণীতে একীভূত করুন স্ট্রিং ইউনিকোড কেস ম্যাপিংকে সমর্থন করে, শুধুমাত্র এএসসিআইআই নয় একটি নতুন পদ্ধতি, Regexp#match?, যা Regexp#match থ্রেড ডেডলোক সনাক্তকরণের একটি দ্রুত বুলিয়ান সংস্করণ যা এখন তাদের ব্যাকট্রেস এবং নির্ভরতার সাথে থ্রেড দেখায়। রুবি 2.5 রুবি 2017 সালে বড়দিনের দিনে মুক্তি পায়। কয়েকটি উল্লেখযোগ্য পরিবর্তনের মধ্যে রয়েছেঃ উদ্ধার এবং নিশ্চিত করা বিবৃতিগুলি স্বয়ংক্রিয়ভাবে একটি পার্শ্ববর্তী ডু-এন্ড ব্লক ব্যবহার করে (অতিরিক্ত স্টার্ট-এন্ড ব্লকের কম প্রয়োজন) ইয়েল্ড-সেলফ সাপোর্ট শাখা কভারেজের সাথে পদ্ধতি-শৃঙ্খল এবং পদ্ধতি কভারেজ পরিমাপ Hash#slice এবং Hash#transform_keys এর সাথে সহজ হ্যাশ রূপান্তর এর উপরে দ্রুত ব্লক পাসিং (3 গুণ দ্রুত), দ্রুত মিউটেক্স, দ্রুত ইআরবি টেমপ্লেট এবং কিছু সংযোগ পদ্ধতিতে উন্নতির মতো অনেক কর্মক্ষমতার উন্নতি আসে। 'রুবি 2.6' 2018 সালের বড়দিনের দিনে মুক্তি পায়। কয়েকটি উল্লেখযোগ্য পরিবর্তনের মধ্যে রয়েছেঃ জেআইটি (পরীক্ষামূলক) রুবিভিএমঃঃ অ্যাবস্ট্রাক্টসিন্ট্যাক্সট্রি (পরীক্ষামূলক) রুবি 2.7.2 রুবি 2.7.0 2019 সালের বড়দিনের দিনে মুক্তি পায়। কয়েকটি উল্লেখযোগ্য পরিবর্তনের মধ্যে রয়েছেঃ প্যাটার্ন ম্যাচিং (পরীক্ষামূলক) আরইপিএল উন্নতি কম্প্যাশন জিসি অবস্থানগত এবং কীওয়ার্ড আর্গুমেন্টের পৃথকীকরণ রুবি 3.0 রুবি 3.0 2020 সালে বড়দিনের দিনে প্রকাশিত হয়েছিল। এটি রুবি 3x3 নামে পরিচিত। এর অন্যতম প্রধান লক্ষ্য ছিল প্রোগ্রামগুলিকে দ্রুততর করার জন্য দোভাষীকে জাস্ট-ইন-টাইম কম্পাইলারে পরিবর্তন করা। রুবি 3.1 সংস্করণ 3.1.0 2021 সালের ক্রিসমাসে মুক্তি পায়। এর মধ্যে একটি স্বয়ংক্রিয় বৈশিষ্ট্য অন্তর্ভুক্ত ছিল। রুবি 3.2 রুবি 2022 সালের বড়দিনের দিনে মুক্তি পায়। এতে ওয়েব অ্যাসেম্বলির জন্য সমর্থন অন্তর্ভুক্ত রয়েছে। সংস্করণের সারণি রেফারেন্স রুবি (প্রোগ্রামিং ভাষা)