ForHosting KIT · أدوات المطورين

مقارنة أرقام الإصدارات الدلالية وفق قواعد SemVer

اعرف أي الإصدارين يأتي أولاً فعلاً: 1.0.0-alpha.1 أصغر من 1.0.0-alpha.beta، لأن المعرّف الرقمي يأتي دائماً قبل الكلمة، ويتفوق 2.10.0 على 2.9.0 كما ينبغي. مجاناً في متصفحك.

  • مجاني
  • يعمل في متصفحك
  • دون تسجيل
  • بياناتك لا تغادر جهازك
استخدمها من الويبAPIالبريدTelegramالتطبيق قريبًا
إذا أدخلت
الإصدار الأول
1.0.0-alpha.1
الإصدار الثاني
1.0.0-alpha.beta
تحصل على
المقارنة
less
الأسبقية
‎-1
الإصدار الأحدث
1.0.0-alpha.beta

قارنوا رقمي إصدار دلاليين من دون الاعتماد على الفرز المعجمي أو التحويل إلى أعداد الفاصلة العائمة أو الاختصارات الخاصة بمديري الحزم. تتحقق هذه الإمكانية من المدخلين وفق Semantic Versioning 2.0.0، ثم تطبق قواعد الأسبقية الرسمية على مكونات الإصدار الرئيسي والثانوي والتصحيحي وما قبل الإصدار. وتبيّن ما إذا كان الإصدار الأول أدنى أو أعلى أو مساويا للثاني في الأسبقية، مع تجاهل بيانات البناء على النحو الصحيح. أما سلاسل الإصدارات غير الصالحة أو الناقصة فتنتج خطأ إدخال واضحا بدلا من ترتيب مضلل.

قارنوا الإصدارات بالقواعد المستخدمة فعليا في نشر البرمجيات

تعطي مقارنة السلاسل العادية نتيجة خاطئة لكثير من أرقام الإصدارات. فقد يضع الفرز المعجمي 2.10.0 قبل 2.9.0 لأنه يقارن المحرف 1 بالمحرف 9، بينما يفقد التحويل العددي المعنى المنفصل لمواضع الإصدار الرئيسي والثانوي والتصحيحي. يحلل هذا المقارن كل موضع إلزامي على حدة، ثم يقارن المواضع من اليسار إلى اليمين.

كما يرفض الصيغ المتساهلة، مثل غياب المكون التصحيحي، أو إضافة v في البداية، أو وضع صفر بادئ في معرّف رقمي أساسي. وتفيد هذه الصرامة في نصوص النشر البرمجية وسجلات الحزم وخدمات التحديث وفحوص CI، لأنها تمنع البيانات المشوهة من المرور بصمت على أنها إصدار مشروع. أرسلوا الإصدارين الأول والثاني تماما كما نُشرا.

تتضمن النتيجة قيمة أسبقية ذات إشارة: تعني -1 أن الأول أدنى، وتعني 0 أنهما متساويان، وتعني 1 أن الأول أعلى. كما يجعل حقل المقارنة الوصفي النتيجة نفسها ملائمة للواجهات وشروط مسارات العمل.

افهموا ترتيب ما قبل الإصدار وبيانات البناء

معرّفات ما قبل الإصدار هي الموضع الذي تخفق فيه أدوات المقارنة المبسطة غالبا. فالإصدار الذي يحمل لاحقة أولية أدنى أسبقية من الإصدار ذي الأرقام الرئيسية والثانوية والتصحيحية نفسها من دون تلك اللاحقة؛ لذلك يكون 1.0.0-rc.1 أدنى من 1.0.0. وعندما يكون الإصداران أوليين، تُقارن المعرّفات بالتتابع.

تُقارن المعرّفات الرقمية بحسب القيمة العددية، وغير الرقمية بحسب الترتيب المعجمي ASCII، ويكون المعرّف الرقمي دائما أدنى من غير الرقمي. وإذا تطابقت جميع المعرّفات المشتركة، كان الإصدار الذي يضم معرّفات إضافية أعلى أسبقية. تعيد هذه القواعد إنتاج التسلسل المعتاد من alpha إلى beta ثم الإصدارات المرشحة، من دون افتراض معنى خاص لكلمات بعينها.

يجري التحقق من بيانات البناء بعد علامة الجمع، لكنها تُستبعد عمدا من الأسبقية. ولهذا يتساوى 1.0.0+linux و1.0.0+windows رغم اختلاف السلسلتين.

استخدموا المقارنة الصارمة بأمان في الأتمتة

يمكن أن تصبح نتيجة المقارنة الحتمية نقطة قرار صغيرة وموثوقة داخل الأنظمة الأكبر. إذ يمكن لمسار نشر أن يشترط كون الإصدار المقترح أعلى من الإصدار المنشور. ويمكن لبرنامج تحديث أن يقرر ما إذا كان البيان المنزّل يمثل ترقية أو رجوعا أو بناء متساوي الأسبقية.

كما يمكن لمجموعة اختبارات تغطية تسلسل ما قبل الإصدار القياسي ورفض الوسوم غير الصالحة قبل نشر المنتجات البرمجية. لا يرسل التنفيذ طلبات عبر الشبكة، ولا يقرأ الساعة، ولا يستخدم قيما عشوائية، ولذلك تنتج المدخلات نفسها المخرجات نفسها دائما. وتُقارن المعرّفات الرقمية كسلاسل من الأرقام بدلا من تحويلها إلى أعداد JavaScript، مما يحافظ على الترتيب الصحيح حتى إذا تجاوز معرّف صالح نطاق الأعداد الصحيحة الآمنة.

طول المدخلات محدود لإبقاء المعالجة مقيدة.

احموا مسار نشر الإصدارات

تأكدوا قبل النشر من أن إصدار الحزمة المقترح أعلى أسبقية من الإصدار المنشور حاليا.

قيّموا بيانات التحديث

حددوا ما إذا كان الإصدار البعيد ترقية أو رجوعا أو بناء متساوي الأسبقية من دون أن تؤثر بيانات البناء في القرار.

تحققوا من تسلسلات ما قبل الإصدار

اختبروا ترتيب إصدارات alpha وbeta والإصدارات المرشحة والنهائية، وارفضوا سلاسل Semantic Versioning المشوهة.

ما معنى قيمة المقارنة؟

تعني أسبقية -1 أن الإصدار الأول أدنى، وتعني 0 أن الإصدارين متساويان، وتعني 1 أن الإصدار الأول أعلى.

هل تؤثر بيانات البناء في النتيجة؟

لا. يجري التحقق منها، لكن Semantic Versioning يستبعدها من مقارنات الأسبقية.

هل إصدار ما قبل النشر أدنى من الإصدار النهائي المقابل؟

نعم. عند تطابق الأرقام الرئيسية والثانوية والتصحيحية، يكون الإصدار ذو المعرّفات الأولية أدنى أسبقية من الإصدار النهائي.

هل الأصفار البادئة مسموحة؟

لا يجوز أن تبدأ المعرّفات الرقمية الرئيسية والثانوية والتصحيحية والأولية بصفر، باستثناء الرقم 0 منفردا.

هل يمكن إضافة v في البداية أو حذف رقم التصحيح؟

لا. يجب أن تكون المدخلات سلاسل Semantic Versioning 2.0.0 صارمة، مثل 1.2.3 أو 1.2.3-rc.1.

كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.

POSThttps://api.kit.forhosting.com/dev2/semver-compare

صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.

curl -X POST https://api.kit.forhosting.com/dev2/semver-compare \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"first_version":"2.1.0-rc.1","second_version":"2.1.0"}'
{
  "first_version": "2.1.0-rc.1",
  "second_version": "2.1.0"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev2.semver_compare",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.

لكل طلب$0.002

السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.

max_chars_per_version1024
HTTPالرمزالمعنى
401unauthorizedمفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك.
402insufficient_balanceرصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة.
404unknown_typeنوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب.
429rate_limitedتجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة.

افهموا ترتيب ما قبل الإصدار وبيانات البناء

وعند تساوي الأسبقية تكون greater_version بالقيمة null، لأن أيا من المدخلين لا يتفوق على الآخر.

استخدموا المقارنة الصارمة بأمان في الأتمتة

استخدموا مشغّل المتصفح للفحص التفاعلي، أو استدعوا API بسعر $0.002 عندما تكون المقارنة جزءا من مسار قابل للتكرار. تعاملوا مع invalid_input بوصفه مشكلة في جودة البيانات يجب تصحيحها، لا بوصفه دليلا على أن أحد الإصدارين أدنى.

ما التكلفة؟

سعر API هو $0.002 لكل مقارنة. ويتوفر مشغّل المتصفح لإجراء الفحوص التفاعلية.

اطّلع على توثيق KIT الكامل ←