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

Freya হলো Rust-এর জন্য একটি ক্রস-প্ল্যাটফর্ম, নেটিভ, ডিক্লারেটিভ GUI লাইব্রেরি। এটি সেই সব ডেভেলপারদের লক্ষ্য করে যারা Rust-এ ডেস্কটপ অ্যাপ্লিকেশন তৈরি করতে চান এবং ওয়েব প্রযুক্তির উপর নির্ভর না করে কম্পোনেন্ট-ভিত্তিক UI মডেল চান। মূল মডেল: কম্পোনেন্ট হলো পুনর্ব্যবহারযোগ্য UI উপাদান যা তাদের নির্ভরশীল স্টেট পরিবর্তন হলে পুনরায় রেন্ডার হয়। কম্পোনেন্টগুলি অভ্যন্তরীণ স্টেট ধারণ করতে পারে বা শেয়ার্ড স্টেটে সাবস্ক্রাইব করতে পারে, এবং Component ট্রেইট বাস্তবায়নকারী যেকোনো টাইপ কম্পোনেন্ট হিসেবে কাজ করতে পারে; রুট অ্যাপ কম্পোনেন্ট একটি সাধারণ ফাংশন হতে পারে। বিল্ট-ইন উদাহরণের মধ্যে Button এবং Switch রয়েছে। আউট-অফ-দ্য-বক্স কম্পোনেন্টগুলির মধ্যে Button, Switch এবং Slider-এর মতো সাধারণ নিয়ন্ত্রণ থেকে শুরু করে VirtualScrollView, Calendar এবং ColorPicker-এর মতো আরও জটিল উপাদান রয়েছে। examples ফোল্ডারে component_ প্রিফিক্সযুক্ত উদাহরণ ফাইলগুলি সেগুলি প্রদর্শন করে। README-তে বর্ণিত ফিচার এলাকা: - অ্যানিমেশন: রঙ, আকার এবং অবস্থানের জন্য ট্রানজিশন, টাইমিং, ইজিং এবং সিকোয়েন্স নিয়ন্ত্রণ সহ। - রিচ টেক্সট এডিটিং: কার্সার ম্যানেজমেন্ট, নির্বাচন, কীবোর্ড শর্টকাট, কাস্টম ফরম্যাটিং এবং ভার্চুয়ালাইজেশন। - কোড এডিটর: স্টেট-অ্যাগনস্টিক এডিটর যা টেক্সটের জন্য Rope এবং সিনট্যাক্স হাইলাইটিংয়ের জন্য tree-sitter ব্যবহার করে; আপনি গ্রামার এবং হাইলাইটস কোয়েরি সরবরাহ করেন। code-editor ফিচারের মাধ্যমে সক্রিয় করা হয়। - MarkdownViewer কম্পোনেন্টের মাধ্যমে মার্কডাউন রেন্ডারিং (markdown ফিচার)। - Routable ডিরাইভ, লেআউট, লিংক এবং রাউটার কনটেক্সট সহ রাউটিং এবং নেভিগেশন (router ফিচার)। - freya-radio-এর মাধ্যমে গ্লোবাল স্টেট ম্যানেজমেন্ট, একটি চ্যানেল-ভিত্তিক সিস্টেম যেখানে কম্পোনেন্টগুলি চ্যানেলে সাবস্ক্রাইব করে এবং প্রাসঙ্গিক ডেটা পরিবর্তন হলেই আপডেট পায় (radio ফিচার)। - আইকন লাইব্রেরি ইন্টিগ্রেশন, বর্তমানে Lucide সমর্থন করে। - freya-testing-এর সাথে হেডলেস টেস্টিং, যা ইন্টারঅ্যাকশন সিমুলেট করতে পারে এবং UI স্টেট ফাইলে রেন্ডার করতে পারে; Freya নিজেই বিল্ট-ইন কম্পোনেন্ট পরীক্ষার জন্য এটি ব্যবহার করে। - Plotters লাইব্রেরির মাধ্যমে চার্ট এবং প্লটিং (ploters ফিচার)। - Fluent লোকালাইজেশন সিস্টেম ব্যবহার করে আন্তর্জাতিকীকরণ, অনুবাদ, বহুবচন এবং লোকেল পরিবর্তন সহ (i18n ফিচার)। - রিপল ইফেক্টের মতো Material Design-অনুপ্রাণিত স্টাইল মডিফায়ার (material-design ফিচার)। - নেটিভ UI-এর পাশাপাশি ওয়েব কনটেন্ট এম্বেড করার জন্য WebView ইন্টিগ্রেশন (webview ফিচার)। - ইন্টিগ্রেটেড টার্মিনাল বা SSH ক্লায়েন্টের জন্য PTY সমর্থন সহ টার্মিনাল ইমুলেশন (terminal-pty ফিচার)। - রিয়েল টাইমে কম্পোনেন্ট ট্রি পরিদর্শনের জন্য ডেভেলপার টুল (devtools ফিচার)। ব্যবহার: সর্বশেষ স্থিতিশীল রিলিজটি freya = "0.4" হিসাবে নির্দিষ্ট করা হয়েছে, সাথে 0.5.0-rc.7 প্রি-রিলিজ এবং main-ব্রাঞ্চ বিকল্প রয়েছে। রিপোজিটরিটি git সাবমডিউল ব্যবহার করে, তাই ক্লোন করার জন্য --recurse-submodules বা পরে git submodule update --init --recursive প্রয়োজন। উদাহরণগুলি cargo run --example counter দিয়ে চালানো যেতে পারে। ডক্স থেকে একটি ডেভেলপমেন্ট সেটআপ গাইড লিংক করা আছে। README-তে windows-gnu-এর সাথে Windows-এ সম্ভাব্য কম্পাইল সমস্যা উল্লেখ করা হয়েছে। প্রকল্পটি একটি ওয়েবসাইট, docs.rs ডকুমেন্টেশন, একটি Discord সার্ভার, অবদানের নির্দেশিকা এবং স্পনসরশিপ পেজ লিংক করে এবং Dioxus, rust-skia এবং অন্যান্য অবদানকারীদের কৃতিত্ব দেয়।