প্রকল্প সম্পর্কে

Iris হলো Go ল্যাঙ্গুয়েজের জন্য একটি ওয়েব ফ্রেমওয়ার্ক। এর README-তে বর্তমান v12 সংস্করণ এবং পরিকল্পিত v14 রিলিজের একটি প্রিভিউ দেওয়া হয়েছে। v12-এর মূল সক্ষমতাগুলো হলো: - সার্ভার পুশ এবং এমবেডেড ডেটাসহ HTTP/2 সাপোর্ট। - একটি রাউটার যা :uuid, :string এবং :int-এর মতো স্ট্যান্ডার্ড টাইপসহ ডাইনামিক পাথ প্যারামিটার গ্রহণ করে এবং কাস্টম প্যারামিটার টাইপ সংজ্ঞায়িত করার অনুমতি দেয়। - বিল্ট-ইন মিডলওয়্যার যেমন access log, basic auth, CORS, gRPC, hCaptcha এবং reCaptcha অ্যান্টি-বট চেক, JWT, method override, monitor, pprof, rate limit, recovery, request ID এবং rewrite। - API ভার্সনিং, Model-View-Controller (mvc প্যাকেজ) এবং MVC, হ্যান্ডলার এবং API রাউটারের জন্য ডিপেন্ডেন্সি ইনজেকশন। - WebSockets, gRPC এবং অটোমেটিক HTTPS। - লোকাল অ্যাপকে ইন্টারনেটে এক্সপোজ করার জন্য বিল্ট-ইন ngrok সাপোর্ট। - রেসপন্স কমপ্রেশন (gzip, deflate, brotli, snappy, s2) এবং একটি Compression মিডলওয়্যার। - ভিউ ইঞ্জিন যার মধ্যে HTML, Django, Handlebars এবং Pug/Jade অন্তর্ভুক্ত। - কাস্টম ফাইল সার্ভার এবং একটি WebDAV সার্ভার। - ক্যাশ, আন্তর্জাতিকীকরণ (i18n, sitemap), সেশন এবং একটি টেস্টিং স্যুট। - সমৃদ্ধ রেসপন্স: HTML, text, Markdown, XML, YAML, binary, JSON, JSONP, Protocol Buffers, MessagePack, কন্টেন্ট নেগোসিয়েশন, স্ট্রিমিং এবং সার্ভার-সেন্ট ইভেন্টস। - সমৃদ্ধ রিকোয়েস্ট বাইন্ডিং: URL query, headers, form, text, XML, YAML, binary, JSON, ভ্যালিডেশন, Protocol Buffers এবং MessagePack। - README-তে উদাহরণ কোডে দেখানো হয়েছে কীভাবে iris.New() দিয়ে একটি মিনিমাল অ্যাপ তৈরি করা যায়, app.Get এর মাধ্যমে রুট রেজিস্টার করা যায় এবং app.Listen(":8080") ব্যবহার করা হয়। README-তে উল্লেখ করা হয়েছে যে _examples ডিরেক্টরিতে ২৮৫টি উদাহরণ উপলব্ধ রয়েছে এবং এতে কমিউনিটি চ্যাট ও ডোনেশন পেজের লিঙ্ক দেওয়া হয়েছে। পরিকল্পিত v14 (যাকে প্রকল্পের ইতিহাসের বৃহত্তম রিলিজ হিসেবে বর্ণনা করা হয়েছে, যার কোনো পাবলিক রিলিজ ডেট নেই এবং একটি নতুন ইমপোর্ট পাথ রয়েছে যাতে v12 কোড প্রভাবিত না হয়): - একটি কম্পাইল-চেকড অ্যাপ্লিকেশন বিল্ডার (iris.NewBuilder) যা CORS, কমপ্রেশন, অ্যাক্সেস লগিং, হেলথ এন্ডপয়েন্ট, এরর ম্যাপিং, সার্ভিস এবং API গ্রুপগুলোকে একটি নির্দিষ্ট ক্রমে চেইনের মাধ্যমে যুক্ত করে। - rest হেল্পার যেমন rest.ReadJSON[T], rest.OK, rest.NoContent, rest.Count, rest.Created এবং rest.Paginated যা ডিকোডিং, ভ্যালিডেশন এবং এরর রেন্ডারিং-কে হ্যান্ডলার বডির বাইরে নিয়ে যায়। - ডোমেইন-এরর থেকে HTTP-রেসপন্স ম্যাপিং একবার ঘোষণা করার জন্য একটি rest/errors প্যাকেজ, যাতে লগিং এবং JSON বা ভিউ হিসেবে রেন্ডারিং করার জন্য ঐচ্ছিক কালেক্টর থাকে। - MVC-এর বাইরেও ডিপেন্ডেন্সি ইনজেকশন উপলব্ধ, যেখানে Build()-এর সময় একটি Init(ctx) হুক চলে এবং শাটডাউনের সময় ক্লোজেবল রিসোর্সগুলো বন্ধ হয়ে যায়; hero প্যাকেজটি dep এবং rest দ্বারা প্রতিস্থাপিত হয়েছে। - প্যাকেজ পরিবর্তন: sessions, cache, websocket, i18n, view এবং versioning এখন মিডলওয়্যার হয়ে যাবে; mvc এখন fileserver, sitemap এবং apigraph কন্ট্রোলারের পাশাপাশি controller-এর অধীনে চলে যাবে; ভিউ ইঞ্জিন ইমপ্লিমেন্টেশনগুলো iris-contrib/views-এ চলে যাবে। - প্রায় ত্রিশটি বান্ডেলড মিডলওয়্যার, যার মধ্যে নতুন কিছু হলো httpcost (প্রতি রিকোয়েস্টে সময়, মেমরি এবং CPU), bodylimit, compress, counter, referrer, geolocation, ipaccess এবং servertiming। - iris.Options পার্শিয়াল লিটারেলের মাধ্যমে কনফিগারেশন, যেখানে Bind পরিবেশ ভেরিয়েবল SERVER_CONFIG বা ফাইল থেকে YAML লোড করে। - কিছু রিনেম যেমন Party থেকে Router এবং ctx.URLParam থেকে ctx.Query().Get, যা একটি মাইগ্রেশন গাইডে নথিভুক্ত করা হয়েছে। - ডিফল্টভাবে সুরক্ষিত সেশন কুকিজ (Secure, SameSite=Lax), প্রতিটি রিড পাথে রিকোয়েস্ট বডি লিমিট, এবং রেট লিমিটিং ও Logout-এর আগে বর্ণিত সমস্যাগুলোর সমাধান। - ডকুমেন্টেশন হিসেবে রিপোজিটরিতে ২৩ অধ্যায়ের একটি বই, একটি গেটিং-স্টার্টেড টিউটোরিয়াল, একটি v12 মাইগ্রেশন গাইড এবং একটি জেনারেটেড উইকি পরিকল্পনা করা হয়েছে। README-তে Iris-কে দ্রুত, সহজ এবং পূর্ণাঙ্গ হিসেবে উপস্থাপন করা হয়েছে এবং দীর্ঘমেয়াদী কমিউনিটি সাপোর্টের ওপর গুরুত্ব দেওয়া হয়েছে; এটি নিজস্ব পরিমাপের পরিবর্তে এক্সটারনাল বেঞ্চমার্ক এবং প্রশংসাপত্রের পেজের লিঙ্ক প্রদান করে।