زليب

زليب
الإصدار الأولي1 مايو 1995 ( 1995-05-01 )
إصدار مستقر
1.3.1 [1] / 22 يناير 2024 ؛ منذ 11 شهرًا ( 22 يناير 2024 )
مستودع
  • github.com/madler/zlib
مكتوب فيج
نظام التشغيلمتعدد المنصات
يكتبضغط البيانات
رخصةرخصة zlib
موقع إلكترونيzlib.net

zlib ( / ˈziːlɪb / أو " zeta - lib/ ˈziːtəˌlɪb / ) [ 2] [3] هي مكتبة برمجية تستخدم لضغط البيانات بالإضافة إلى تنسيق البيانات. [ 4] كتب zlib جان لوب جايلي ومارك أدلر وهو تجريد لخوارزمية ضغط DEFLATE المستخدمة في برنامج ضغط الملفات gzip الخاص بهما . zlib هو أيضًا مكون أساسي للعديد من منصات البرامج، بما في ذلك Linux و macOS و iOS . كما تم استخدامه في وحدات تحكم الألعاب مثل PlayStation 4 و PlayStation 3 و Wii U و Wii و Xbox One و Xbox 360 .

تم إصدار أول إصدار عام من Zlib، 0.9، في 1 مايو 1995 وكان مخصصًا في الأصل للاستخدام مع مكتبة الصور libpng . وهو برنامج مجاني ، يتم توزيعه بموجب ترخيص zlib .

القدرات

التغليف

عادةً ما يتم كتابة البيانات المضغوطة الخام DEFLATE (RFC 1951) [5] باستخدام غلاف zlib أو gzip يغلف البيانات، عن طريق إضافة رأس وتذييل. يوفر هذا تحديدًا للتدفق واكتشافًا للأخطاء التي لا توفرها بيانات DEFLATE الخام.

غلاف zlib (RFC 1950) [4] أصغر من غلاف gzip (RFC 1952)، [6] حيث يقوم الأخير بتخزين اسم الملف ومعلومات نظام الملفات الأخرى.

خوارزمية

اعتبارًا من سبتمبر 2018 ، يدعم zlib خوارزمية واحدة فقط تسمى DEFLATE ، والتي تستخدم مزيجًا من تباين LZ77 (Lempel–Ziv 1977) وترميز Huffman . [7] توفر هذه الخوارزمية ضغطًا جيدًا على مجموعة كبيرة ومتنوعة من البيانات مع الحد الأدنى من استخدام موارد النظام. هذه هي أيضًا الخوارزمية المستخدمة في تنسيق أرشيف Zip . يسمح الرأس بخوارزميات أخرى، ولكن لا يتم تنفيذ أي منها حاليًا.

استخدام الموارد

توفر zlib تسهيلات للتحكم في استخدام المعالج والذاكرة. يمكن توفير قيمة مستوى ضغط تستبدل السرعة بالضغط. هناك أيضًا تسهيلات للحفاظ على الذاكرة، وهي مفيدة في بيئات الذاكرة المقيدة، مثل بعض الأنظمة المضمنة.

الاستراتيجية

يمكن تحسين الضغط لأنواع معينة من البيانات. إذا كنت تستخدم المكتبة لضغط أنواع معينة من البيانات دائمًا، فقد يؤدي استخدام استراتيجية معينة إلى تحسين الضغط والأداء. على سبيل المثال، إذا كانت البيانات تحتوي على أطوال طويلة من البايتات المتكررة، فقد تعطي استراتيجية الترميز بطول التشغيل (RLE) نتائج جيدة بسرعة أعلى. بالنسبة للبيانات العامة، تُفضَّل الاستراتيجية الافتراضية.

معالجة الأخطاء

يمكن اكتشاف الأخطاء في البيانات المضغوطة وتخطيها. علاوة على ذلك، إذا تمت كتابة نقاط "التنظيف الكامل" في التدفق المضغوط، فيمكن تخطي البيانات التالفة، وستتم إعادة مزامنة فك الضغط عند نقطة التنظيف التالية - على الرغم من عدم توفير استرداد الخطأ للبيانات التالفة. تعد نقاط التنظيف الكامل مفيدة لتدفقات البيانات الكبيرة على قنوات غير موثوقة، حيث يكون فقدان بعض البيانات غير مهم، كما هو الحال في بعض تطبيقات الوسائط المتعددة. ومع ذلك، فإن إنشاء العديد من نقاط التنظيف يمكن أن يؤثر على السرعة وكذلك على مقدار (نسبة) الضغط.

طول البيانات

لا يوجد حد لطول البيانات التي يمكن ضغطها أو فك ضغطها. تسمح الاستدعاءات المتكررة للمكتبة بالتعامل مع عدد غير محدود من كتل البيانات. قد تعاني بعض التعليمات البرمجية المساعدة (العدادات) من الفيضانات في تدفقات البيانات الطويلة، لكن هذا لا يؤثر على الضغط أو فك الضغط الفعلي.

عند ضغط مجرى بيانات طويل (أو غير محدود)، فمن المستحسن كتابة نقاط تدفق كاملة منتظمة.

التطبيقات

اليوم، أصبح zlib بمثابة معيار فعلي ، إلى الحد الذي أصبح فيه zlib وDEFLATE يُستخدمان بالتبادل في مستندات المعايير، مع اعتماد آلاف التطبيقات عليه للضغط، إما بشكل مباشر أو غير مباشر. [8] وتشمل هذه:

  • نواة لينكس ، حيث يتم استخدام zlib لتنفيذ بروتوكولات الشبكة المضغوطة، وأنظمة الملفات المضغوطة ، وفك ضغط صورة النواة في وقت التمهيد.
  • GNU Binutils و GNU Debugger (GDB)
  • libpng ، هو التنفيذ المرجعي لتنسيق صورة PNG ، والذي يحدد DEFLATE كضغط التدفق لبيانات الخريطة النقطية الخاصة به .
  • libwww ، وهي واجهة برمجة تطبيقات لتطبيقات الويب مثل متصفحات الويب .
  • خادم Apache HTTP ، والذي يستخدم zlib لتنفيذ HTTP/1.1 .
  • على نحو مماثل، تستخدم مكتبة cURL برنامج zlib لفك ضغط استجابات HTTP. [9]
  • عميل وخادم OpenSSH ، اللذان يعتمدان على zlib لأداء الضغط الاختياري الذي يوفره بروتوكول Secure Shell .
  • مكتبات الأمان OpenSSL و GnuTLS ، والتي يمكنها بشكل اختياري استخدام zlib لضغط اتصالات TLS .
  • مكتبة الوسائط المتعددة FFmpeg ، والتي تستخدم zlib لقراءة وكتابة الأجزاء المضغوطة DEFLATE من تنسيقات البث ، مثل Matroska .
  • مزامن الملفات عن بعد rsync ، والذي يستخدم zlib لتطبيق ضغط البروتوكول الاختياري.
  • مديرو الحزم dpkg و RPM ، الذين يستخدمون zlib لفك ضغط الملفات من حزم البرامج المضغوطة.
  • أنظمة التحكم في الإصدارات Apache Subversion و CVS ، والتي تستخدم zlib لضغط حركة المرور من وإلى المستودعات البعيدة.
  • يستخدم تنسيق تخزين البيانات الموجه نحو الأعمدة Apache ORC ZLib كطريقة ضغط افتراضية. [10]
  • يستخدم نظام التحكم في إصدار Git zlib لتخزين محتويات كائنات البيانات الخاصة به (الكائنات الكبيرة، والأشجار، والالتزامات، والعلامات).
  • يستخدم نظام إدارة قواعد البيانات العلائقية PostgreSQL مكتبة zlib مع تنسيق تفريغ مخصص (pg_dump -Fc) للنسخ الاحتياطية لقاعدة البيانات.
  • الفئة System.IO.Compression.DeflateStream من Microsoft .NET Framework 2.0 والإصدارات الأحدث. [11]
  • تستخدم أداة "deflate" في برنامج TORNADO كجزء من نظام التشغيل VxWorks الذي تصنعه شركة Wind River Systems برنامج zlib لضغط صور ROM الخاصة بالتمهيد.
  • zlib-flate، [12] برنامج ضغط zlib الخام، جزء من qpdf [13]
  • يستخدم MySQL RDBMS ZLib LZ77 للضغط في جداول InnoDB [ 14]

يتم استخدام zlib أيضًا في العديد من الأجهزة المضمنة، مثل Apple iPhone وSony PlayStation 3 ، لأن الكود محمول، ومرخص بحرية، وله بصمة ذاكرة صغيرة نسبيًا.

شوك

zlib هي مكتبة مستخدمة بشكل شائع تم إنشاؤها على قاعدة بيانات قديمة، كما يتم تقسيمها بشكل متكرر بواسطة جهات خارجية تدعي إجراء تحسينات على هذه المكتبة:

انظر أيضا

مراجع

  1. ^ Adler, Mark (22 يناير 2024). "[Zlib-announce] zlib 1.3.1 released" . تم الاسترجاع في 23 يناير 2024 .
  2. ^ ستوتز، مايكل (22 أكتوبر 2004). كتاب الطبخ الخاص بنظام Linux، الإصدار الثاني: نصائح وتقنيات للاستخدام اليومي. No Starch Press. ISBN 9781593270315. مؤرشف من الأصل في 25 يناير 2023. تم الاسترجاع 28 أكتوبر 2021 – عبر Google Books.
  3. ^ Loki Software; Hall, John R. (22 أكتوبر 2001). برمجة ألعاب لينكس. No Starch Press. ISBN 9781886411494. مؤرشف من الأصل في 11 يوليو 2024. تم الاسترجاع في 28 أكتوبر 2021 – عبر Google Books.
  4. ^ حسب RFC 1950. doi : 10.17487/RFC1950 .
  5. ^ RFC 1951. doi : 10.17487/RFC1951 .
  6. ^ RFC 1952. doi : 10.17487/RFC1952 .
  7. ^ RFC 1951. doi : 10.17487/RFC1951 .
  8. ^ Gailly, Jean-loup; Adler, Mark (2002-04-18), zlib Applications, تم أرشفة النسخة الأصلية في 2019-06-10 , تم استرجاعها في 2007-12-09
  9. ^ "c++ - لماذا يستخدم cURL zlib؟". Stack Overflow .
  10. ^ "ORCFile in HDP 2: Better Compression, Better Performance". 6 سبتمبر 2013. مؤرشف من الأصل في 6 أغسطس 2020. تم الاسترجاع 16 مايو 2020 .
  11. ^ System.IO.Compression.DeflateStream محفوظ في 2016-02-06 على موقع Wayback Machine . مكتبة MSDN.
  12. ^ zlib-flate(1)  –  دليل الأوامر العامة في ديبيان
  13. ^ "qpdf". مؤرشف من الأصل في 2024-07-11 . تم الاسترجاع 2021-03-28 .
  14. ^ "MySQL :: MySQL 8.0 Reference Manual :: 15.9.1.5 How Compression Works for InnoDB Tables". dev.mysql.com . مؤرشف من الأصل في 2021-08-01 . تم الاسترجاع في 2021-07-14 .
  15. ^ "github Intel ZLIB". github . 25 يناير 2024. مؤرشف من الأصل في 25 يناير 2024 . استرجاع 25 يناير 2024 .
  16. ^ "محاربة السرطان: الفائدة غير المتوقعة من إتاحة الكود الخاص بنا مجانًا". مدونة Cloudflare . 8 يوليو 2015. مؤرشف من الأصل في 21 سبتمبر 2019. تم الاسترجاع في 18 يناير 2020 .
  17. ^ Rosbach, HK (24 فبراير 2023). "zlib-ng/zlib-ng: استبدال zlib بالتحسينات لأنظمة "الجيل القادم"". GitHub . zlib-ng. مؤرشف من الأصل في 20 أبريل 2020 . تم الاسترجاع في 18 يناير 2020 .
  • الموقع الرسمي
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=Zlib&oldid=1240039723"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate