| libnbd-release-notes-1.16(1) | LIBNBD | libnbd-release-notes-1.16(1) |
نام (NAME)
libnbd-release-notes-1.16 - یادداشتهای انتشار برای libnbd نسخه 1.16
توضیحات (DESCRIPTION)
این سند، یادداشتهای انتشار نسخه پایدار 1.16 از libnbd است. در اینجا تغییرات عمده نسبت به نسخه 1.14 شرح داده شده است.
نسخه 1.16.0 از libnbd در تاریخ 18 آوریل 2023 منتشر شد.
امنیت (Security)
هیچ مشکل امنیتی در این نسخه یافت نشد.
اگر مشکل امنیتی پیدا کردید، لطفاً فایل SECURITY را در سورسکد مطالعه کنید (به صورت برخط در اینجا: https://gitlab.com/nbdkit/libnbd/blob/master/SECURITY). برای اطلاع از مشکلات امنیتی پیشین در libnbd، libnbd-security(3) را ببینید.
رابطهای برنامهنویسی جدید (New APIs)
رابط برنامهنویسی جدید nbd_supports_vsock(3) میتواند برای آزمایش اینکه آیا کلاینت از vsock پشتیبانی میکند یا خیر استفاده شود (Eric Blake).
رابط برنامهنویسی جدید nbd_poll2(3) که امکان ارسال یک توصیفگر فایل (file descriptor) اضافی را فراهم میکند (Ming Lei).
رابطهای برنامهنویسی جدید nbd_stats_bytes_sent(3)، nbd_stats_bytes_received(3)، nbd_stats_chunks_sent(3) و nbd_stats_chunks_received(3) که تعداد بایتها و پیامهای ارسالشده و دریافتشده روی اتصال فعلی را نمایش میدهند (Eric Blake).
رابطهای برنامهنویسی جدید nbd_opt_list_meta_context_queries(3) و nbd_aio_opt_list_meta_context_queries(3) به شما امکان میدهند تا بافتهای فراداده (meta contexts) موجود را در طول فاز مذاکره پروتکل بهصورت تعاملی از سرور استعلام کنید (Eric Blake).
تابع جدید nbd_set_request_meta_context(3) به شما امکان میدهد کنترل کنید که آیا بافت فراداده در حین مذاکره تنظیم شود یا خیر. این امر میتواند برخی عملیاتها را سریعتر کند، بهویژه "nbdinfo --list" (Eric Blake).
رابطهای برنامهنویسی جدید nbd_opt_set_meta_context(3)، nbd_opt_set_meta_context_queries(3)، nbd_aio_opt_set_meta_context(3) و nbd_aio_opt_set_meta_context_queries(3) هنگام استفاده از nbd_set_opt_mode(3) امکان درخواست بافتهای فراداده را فراهم میکنند (Eric Blake).
رابطهای برنامهنویسی جدید nbd_opt_structured_reply(3) و nbd_aio_opt_structured_reply(3) به شما امکان میدهند زمان درخواست پاسخهای ساختاریافته (structured replies) را در طول فاز مذاکره بهدقت تنظیم کنید (Eric Blake).
رابطهای برنامهنویسی جدید nbd_opt_starttls(3) و nbd_aio_opt_starttls(3) به شما اجازه میدهند زمان مذاکره STARTTLS را بهدقت تنظیم کنید (Eric Blake).
رابطهای برنامهنویسی جدید nbd_set_socket_activation_name(3) و nbd_get_socket_activation_name(3) که به شما امکان میدهند سوکت مورد استفاده برای راهاندازی سوکت (socket activation) را نامگذاری کنید. سرورهای خاصی مانند qemu-storage-daemon از این نام در خط فرمان و در اسکریپتها استفاده خواهند کرد (با تشکر از Laszlo Ersek).
بهبودهای رابطهای برنامهنویسی موجود (Enhancements to existing APIs)
فراخوانی nbd_connect_command(3) با آرگومان NULL برای پارامتر argv پیش از این منجر به خرابی (crash) میشد، اما اکنون یک خطا برمیگرداند (Eric Blake).
اکنون میتوان nbd_opt_list_meta_context(3) را بدون مذاکره از پیش در مورد پاسخهای ساختاریافته فراخوانی کرد (Eric Blake).
تابع nbd_set_strict_mode(3) دارای یک پرچم جدید "LIBNBD_STRICT_PAYLOAD" است که میتواند برای کنترل ارسال پیامهای بیشازحد بزرگ بهمنظور آزمایش سرورها استفاده شود (Eric Blake).
پارامترهای اشارهگر در رابط برنامهنویسی C که نمیتوانند NULL باشند، اکنون با "attribute((nonnull))" مشخص شدهاند (در صورتی که کامپایلر از آن پشتیبانی کند) تا در صورت استفاده نادرست، در زمان کامپایل هشدار دریافت کنید (با تشکر از Eric Blake).
توابع C که تخصیص حافظه انجام میدهند اکنون با "attribute((malloc))" و صفات مشابه نشانهگذاری شدهاند تا تحلیل ایستای برنامههای استفادهکننده از libnbd بهبود یابد (Eric Blake).
توابع C که مقادیر پرچمها را بیان میکنند اکنون از انواع داده بدون علامت (unsigned) استفاده میکنند، که برخی از رفتارهای نامعین در محاسبات بیتی روی اعداد صحیح علامتدار را برطرف میکند. این تغییر از نظر API و ABI با نسخههای پیشین سازگار است (Eric Blake).
ابزارها (Tools)
برنامه جدید nbdublk(1) که برای ایجاد یک دستگاه بلوکی لینوکس /dev/ublkb<N> از یک سرور NBD استفاده میشود (با تشکر از Ming Lei).
دستور nbdinfo(1) اکنون دارای خروجی رنگی است (برای غیرفعال کردن از --no-color استفاده کنید).
دستور nbdinfo دارای گزینههای جدید --is tls و --can structured-reply است تا به شما اجازه دهد وجود این قابلیتها را در سرور بررسی کنید (Eric Blake).
دستور nbdcopy(1) اکنون پیامهای پیشرفت را در stderr مینویسد (قبلاً در /dev/tty نوشته میشدند). این امر آن را با ابزارهای دیگر مانند dd هماهنگ میکند (Eric Blake).
گزینههای -c و -u در nbdsh(1) اکنون میتوانند بهصورت درهمآمیخته استفاده شوند، که تغییر وضعیت قابلیتهای اختیاری URI را سادهتر میکند (Eric Blake).
اتصالات زبانها (Language bindings)
مستندات بایندرهای OCaml اکنون شامل نام پارامترها است.
بایندرهای OCaml اکنون به جای کدهای خطای خام C errno، مقادیر خطای OCaml را در استثناها (exceptions) برمیگردانند.
بایندرهای OCaml اکنون از nbd_aio_connect(3) پشتیبانی میکنند که مستقیماً از نوع sockaddr استفاده میکند.
بایندرهای Python اکنون دارای یک متد صریح "h.close()" هستند. خارج شدن دستگیره (handle) از دامنه اعتبار (scope) همچنان برای بستن آن عمل میکند، اما اکنون این امکان را دارید که پیش از خروج از دامنه، دستگیره را بهطور صریح ببندید. اگر پس از بستن تلاش کنید از آن استفاده کنید، استثنای جدید "nbd.ClosedHandle" صادر خواهد شد.
بایندرهای Python اکنون تابعی با دکوراتور contextlib ارائه میدهند، بنابراین میتوانید ساختار طبیعیتر "with nbd.nbd() as h: ..." را بنویسید.
آزمونها (Tests)
پوشش گستردهتر در ادغام مداوم (CI) (توسط Eric Blake).
سایر بهبودها و رفع باگها (Other improvements and bug fixes)
ماشین وضعیت (state machine) اکنون میتواند با برخی پیامهای پاسخ ساختاریافته معیوب و کوکیهای ناشناخته ارسالشده از سوی سرور کنار بیاید و بازیابی شود (Eric Blake).
کتابخانه اکنون با "-z nodelete" نشانهگذاری شده است، که از باربرداری «واقعی» آن در هنگام فراخوانی dlclose(3) جلوگیری میکند. این تنها راه برای جلوگیری از خرابی (crash) در کدهای چندنخی (multithreaded) است. برای جزئیات بیشتر به کامیت 368e3d0d5a887 مراجعه کنید.
بهبود قابلیت اشکالزدایی زمانی که دستگیره وارد وضعیت %DEAD میشود.
کتابخانه اکنون هنگام اجرای زیرفرمانها بسیار بیشتر با POSIX سازگار و تابآور است، و دیگر به رفتارهای خاص پیادهسازی glibc از execvp و سایر توابع ناامن در برابر سیگنالهای ناهمگام (non-async-signal-safe) وابسته نیست (Laszlo Ersek).
فایلهای منبع برای رعایت حداکثر ۸۰ ستون مجدداً قالببندی شدند (Laszlo Ersek).
ساخت (Build)
رفع مشکل ساخت در Alpine Linux + musl که ثبات "AF_VSOCK" را اعلان میکند اما ساختارهای مرتبط با آن را تعریف نمیکند (Eric Blake).
ماژول distutils پایتون، که در نگارشهای ۳.۱۰ به بعد پایتون منسوخ شده است، با sysconfig جایگزین شد (با تشکر از Miro Hrončok).
همچنین ببینید (SEE ALSO)
نویسندگان (AUTHORS)
کپیرایت و تکثیر (COPYRIGHT)
Copyright Red Hat
مجوز (LICENSE)
این کتابخانه یک نرمافزار آزاد است؛ شما میتوانید آن را تحت شرایط «مجوز عمومی جامعتر گنو» (GNU Lesser General Public License) همانطور که توسط بنیاد نرمافزارهای آزاد منتشر شده است، چه نسخه 2 مجوز یا (به انتخاب خودتان) هر نسخه بعدی، بازتوزیع کرده و/یا تغییر دهید.
این کتابخانه با این امید توزیع شده است که مفید واقع شود، اما بدون هیچگونه ضمانتی؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر به «مجوز عمومی جامعتر گنو» مراجعه کنید.
شما باید به همراه این کتابخانه نسخهای از «مجوز عمومی جامعتر گنو» را دریافت کرده باشید؛ در غیر این صورت، به بنیاد نرمافزارهای آزاد به نشانی زیر بنویسید: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
| 2026-07-16 | libnbd-1.24.3 |