إصدار جديد من مترجم GNU Awk 5.2

تم تقديم إصدار جديد لتطبيق مشروع GNU للغة برمجة AWK، Gawk 5.2.0. تم تطوير لغة AWK في سبعينيات القرن الماضي ولم تشهد تغييرات كبيرة منذ منتصف الثمانينيات، حيث تم تحديد العمود الفقري الأساسي للغة، مما سمح لها بالحفاظ على الاستقرار والبساطة الأصليين للغة على مدى الماضي عقود. على الرغم من عمره المتقدم، لا يزال المسؤولون يستخدمون AWK بشكل نشط لأداء الأعمال الروتينية المتعلقة بتحليل أنواع مختلفة من الملفات النصية وإنشاء إحصائيات بسيطة ناتجة.

التغييرات الرئيسية:

  • تمت إضافة دعم تجريبي لمدير الذاكرة pma (المستمر malloc)، والذي يسمح لك بحفظ قيم المتغيرات والمصفوفات والوظائف المحددة من قبل المستخدم بين عمليات التشغيل المختلفة لـ awk.
  • لقد تم إخراج الدعم الحسابي عالي الدقة الذي توفره مكتبة MPFR من مسؤولية مشرف GNU Awk وتم الاستعانة بمصادر خارجية لعشاق خارجيين. تجدر الإشارة إلى أن تطبيق وضع MPFR في GNU Awk يعتبر خطأً. في حالة استمرار تغيير الحالة، تتمثل الخطة في إزالة هذه الميزة بالكامل من GNU Awk.
  • تم تحديث مكونات البنية التحتية للتجميع Libtool 2.4.7 وBison 3.8.2.
  • تم تغيير منطق مقارنة الأرقام، وهو ما يتماشى مع المنطق المستخدم في لغة C. بالنسبة للمستخدمين، يؤثر التغيير بشكل أساسي على مقارنة قيم Infinity وNaN بالأرقام العادية.
  • من الممكن استخدام دالة التجزئة FNV1-A في المصفوفات الترابطية، والتي يتم تمكينها عند تعيين متغير البيئة AWK_HASH على "fnv1a".
  • تمت إزالة دعم البناء باستخدام CMake (لم يكن رمز دعم Cmake مطلوبًا ولم يتم تحديثه لمدة خمس سنوات).
  • تمت إضافة الدالة mkbool() لإنشاء قيم منطقية، وهي عبارة عن أرقام ولكن يتم التعامل معها على أنها منطقية.
  • في وضع BWK، يؤدي تحديد العلامة "--traditional" بشكل افتراضي إلى تمكين دعم التعبيرات لتحديد النطاقات التي تم تمكينها مسبقًا بواسطة خيار "-r" ("--re-interval").
  • يوفر ملحق rwarray وظائف writeall() وreadall() جديدة لكتابة وقراءة كافة المتغيرات والمصفوفات مرة واحدة.
  • تمت إضافة البرنامج النصي gawkbug للإبلاغ عن الأخطاء.
  • يتم توفير إيقاف التشغيل الفوري في حالة اكتشاف أخطاء في بناء الجملة، مما يحل المشكلات المتعلقة باستخدام أدوات اختبار التشويش.
  • تم إيقاف دعم أنظمة التشغيل OS/2 وVAX/VMS.

المصدر: opennet.ru

إضافة تعليق