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

better-duck হলো DuckDB-এর জন্য একটি Rust ক্লায়েন্ট, যা এমবেডেড ব্যবহারের জন্য ডিজাইন করা হয়েছে, যেখানে ডেটাবেসটি আলাদা সার্ভার হিসেবে নয় বরং অ্যাপ্লিকেশনের ভেতরেই চলে। DuckDB C লাইব্রেরি কম্পাইল করা হয়, তাই কোনো সিস্টেম প্যাকেজ বা রানটাইম নির্ভরতার প্রয়োজন হয় না — এটি ডেস্কটপ অ্যাপ, মোবাইল ক্রস-বিল্ড এবং অনুরূপ পরিবেশের জন্য উপযুক্ত। প্রকল্পটি 여러 ক্রেটে বিভক্ত: better-duck-core (সংযোগ, প্রিপেয়ার্ড স্টেটমেন্ট, বাল্ক অ্যাপেন্ডার, টাইপ কভারেজ, ইউজার-ডিফাইন্ড ফাংশন), better-duck-diesel (Diesel 2.3 ব্যাকএন্ড, যেখানে কুয়েরি DSL, মাইগ্রেশন, r2d2 পুল এবং DuckDB-নির্দিষ্ট SQL ফাংশন, অ্যাগ্রিগেট ও অপারেটর রয়েছে), better-duck-macros (UDF ও ডেটা ডেরাইভের জন্য প্রসিডিউরাল ম্যাক্রো, যা ফিচার ফ্ল্যাগের মাধ্যমে যুক্ত হয়), এবং better-duck-sys (ভেন্ডর করা DuckDB C API বাইন্ডিং)। মূল সক্ষমতার মধ্যে রয়েছে সারি-ভিত্তিক, Arrow-মুক্ত উপায়ে সারি ও ভ্যালু অ্যাক্সেস; মোড়ানো FFI, যাতে ব্যবহারকারীর কোডে কোনো unsafe কোড প্রবেশ না করে; DuckDB টাইপের কভারেজ, যেমন সব প্রস্থের ইন্টিজার, DECIMAL, UUID, BIT, BIGNUM, টেম্পোরাল এবং কম্পোজিট LIST/ARRAY/STRUCT/MAP/UNION/ENUM টাইপ; প্যারামিটারাইজড কুয়েরি; একটি বাল্ক Appender; r2d2 পুলিংসহ শেয়ারড Database হ্যান্ডেল এবং একটি Tokio অ্যাসিঙ্ক ফ্যাসাড; এবং এক্সটেনশন ম্যানেজমেন্ট হেল্পার। অ্যাট্রিবিউট ম্যাক্রো সাধারণ Rust ফাংশনকে স্কেলার, টেবিল, অ্যাগ্রিগেট বা কাস্ট ফাংশন হিসেবে রেজিস্টার করে, যেখানে সিগনেচার থেকে টাইপ অনুমান করা হয়। ডেরাইভ ম্যাক্রো স্ট্রাক্ট ও এনামকে সারি এবং DuckDB টাইপে ম্যাপ করে (FromRow, ToRow, DuckEnum, DuckStruct), আর হেল্পার ম্যাক্রো ট্রানজ্যাকশন ও প্যারামিটার কভার করে। Diesel ব্যাকএন্ড স্ট্যান্ডার্ড CRUD, ট্রানজ্যাকশন, DuckDB-নির্দিষ্ট SQL টাইপ, DuckDB ফাংশন ও অপারেটরের DSL, স্পেশিয়াল হেল্পার এবং পুলিং ম্যানেজার যোগ করে। ফিচার ফ্ল্যাগ বান্ডলিং, chrono ও decimal রূপান্তর, JSON ও Parquet এক্সটেনশন, অ্যাসিঙ্ক, পুলিং, UDF, ডেরাইভ এবং বিল্ড-টাইম bindgen নিয়ন্ত্রণ করে। README-তে প্রকল্পটিকে বিটা হিসেবে চিহ্নিত করা হয়েছে, যেখানে বলা হয়েছে 1.0-এর আগে ব্রেকিং পরিবর্তন সম্ভব।