اكتب بالعربية. شغّل هنا.

جارٍ تحميل المحرر…

يجمع هذا البرنامج الأعداد من 1 إلى 10. عند نجاحه يطبع 55 ويعيد الحالة 0. عدّل المصدر ثم اضغط «شغّل».

تجري الترجمة والتنفيذ داخل متصفحك. لا يُرسل المصدر إلى خادم.

تابع إلى تعلّم اللغة

تعلّم من برنامج واحد

ارجع إلى العقد

البرنامج وحالة العملية

يحتوي ملف .aspl واحد على تعريفات الدوال والتصريحات الخارجية. دالة الرئيسية / main إلزامية بلا معاملات وبنتيجة i64. المجال الصحيح للحالة 0..255، وأي قيمة أخرى توقف التنفيذ ولا تُختزل.

مقبول: دوال على المستوى الأعلى. مرفوض: متغير عام، عبارة خارج دالة، دالة بداية مفقودة أو استدعاؤها من المصدر.

hello-ar · ASPL 0.1.0

المتصفح والمضيف الأصلي

دالة الرئيسية() -> صحيح64 {
    أرجع 0;
}

النتائج المتوقعة والخرج الحرفي

browser: check success; success / main 0; stdout ""
native: check 0; success / status 0; stdout ""
نزّل المصدر افتح في المحرر
aspl check hello.aspl
aspl run hello.aspl
hello-en · ASPL 0.1.0

المتصفح والمضيف الأصلي

fn main() -> i64 {
    return 0;
}

النتائج المتوقعة والخرج الحرفي

browser: check success; success / main 0; stdout ""
native: check 0; success / status 0; stdout ""
نزّل المصدر افتح في المحرر
aspl check hello.aspl
aspl run hello.aspl

الأسباب والنتائج: missing-entry-function, invalid-entry-signature, entry-call-not-allowed; trap / invalid-process-status

تطبيق المضيف: shared

الحدود المعيارية للإصدار

كتابة المصدر

المصدر UTF-8 صارم وفق Unicode 17.0. الأسماء حساسة لحالة الحروف وبتطبيع NFC، وبخط عربي أو لاتيني واحد لكل اسم. المفردات الإنجليزية بدائل مطابقة ويمكن مزجها. الأرقام والعوامل وعلامات الترقيم في الشيفرة من ASCII. ترتيب العرض لا يغير بايتات المصدر.

مقبول: كلمات عربية وإنجليزية في البرنامج نفسه. مرفوض: أرقام غير محولة خارج النصوص والتعليقات أو اسم يجمع الخطين. يعرض المحرر محارف التحكم غير المرئية بوضوح.

الأسباب والنتائج: non-ascii-digit, mixed-script-identifier

تطبيق المضيف: shared

اقرأ المثال وافحصه الحدود المعيارية للإصدار

الأنواع والتدفق

لا توجد تحويلات ضمنية. العدد الصحيح i64 موقّع وفائضه يوقف التنفيذ. العدد f64 هو IEEE 754 binary64. النص ثابت ومصدره قيمة حرفية، والمؤشر c_ptr معتم وقابل للقيمة الفارغة. لا يمكن تخزين unit. يتيح الربط المهيأ استنتاج النوع. لا يوجد حجب للأسماء؛ المعاملات والروابط ثابتة ما لم يصرّح الرابط المحلي بالتغيير. تتطلب if, while شرطا منطقيا، وreturn نتيجة من النوع المعلن.

مقبول: تعديل رابط معلن للتغيير، ومقارنة تنتج شرطا منطقيا. مرفوض: رابط بلا تهيئة، تعديل رابط ثابت أو مزج أنواع الأعداد ضمنيا.

sum-ar · ASPL 0.1.0

المتصفح والمضيف الأصلي

دالة الرئيسية() -> صحيح64 {
    متغير المجموع: صحيح64 = 0;
    متغير العدد: صحيح64 = 1;
    طالما (العدد <= 10) {
        المجموع = المجموع + العدد;
        العدد = العدد + 1;
    }
    إذا (المجموع == 55) {
        اطبع("55\n");
        أرجع 0;
    }
    أرجع 1;
}

النتائج المتوقعة والخرج الحرفي

browser: check success; success / main 0; stdout "55\n"
native: check 0; success / status 0; stdout "55\n"
نزّل المصدر افتح في المحرر
aspl check sum-ar.aspl
aspl run sum-ar.aspl
sum-en · ASPL 0.1.0

المتصفح والمضيف الأصلي

fn main() -> i64 {
    var المجموع: i64 = 0;
    var العدد: i64 = 1;
    while (العدد <= 10) {
        المجموع = المجموع + العدد;
        العدد = العدد + 1;
    }
    if (المجموع == 55) {
        print("55\n");
        return 0;
    }
    return 1;
}

النتائج المتوقعة والخرج الحرفي

browser: check success; success / main 0; stdout "55\n"
native: check 0; success / status 0; stdout "55\n"
نزّل المصدر افتح في المحرر
aspl check sum-en.aspl
aspl run sum-en.aspl
sum-mixed · ASPL 0.1.0

المتصفح والمضيف الأصلي

fn الرئيسية() -> صحيح64 {
    متغير المجموع: صحيح64 = 0;
    متغير العدد: صحيح64 = 1;
    طالما (العدد <= 10) {
        المجموع = المجموع + العدد;
        العدد = العدد + 1;
    }
    إذا (المجموع == 55) {
        print("55\n");
        return 0;
    }
    أرجع 1;
}

النتائج المتوقعة والخرج الحرفي

browser: check success; success / main 0; stdout "55\n"
native: check 0; success / status 0; stdout "55\n"
نزّل المصدر افتح في المحرر
aspl check sum-mixed.aspl
aspl run sum-mixed.aspl

الأسباب والنتائج: immutable-assignment, type-mismatch; trap / integer-overflow

تطبيق المضيف: shared

الحدود المعيارية للإصدار

الدوال

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

مقبول: دالة معرفة لاحقا أو استدعاء ذاتي. مرفوض: تحميل زائد، دالة متداخلة، عدد معاملات خاطئ أو مسار بلا إرجاع.

functions-ar · ASPL 0.1.0

المتصفح والمضيف الأصلي

دالة مضروب(القيمة: صحيح64) -> صحيح64 {
    إذا القيمة <= 1 {
        أرجع 1;
    }
    أرجع القيمة * مضروب(القيمة - 1);
}

دالة الرئيسية() -> صحيح64 {
    أرجع مضروب(5);
}

النتائج المتوقعة والخرج الحرفي

browser: check success; success / main 120; stdout ""
native: check 0; success / status 120; stdout ""
نزّل المصدر افتح في المحرر
aspl check functions-ar.aspl
aspl run functions-ar.aspl
functions-en · ASPL 0.1.0

المتصفح والمضيف الأصلي

fn مضروب(القيمة: i64) -> i64 {
    if القيمة <= 1 {
        return 1;
    }
    return القيمة * مضروب(القيمة - 1);
}

fn main() -> i64 {
    return مضروب(5);
}

النتائج المتوقعة والخرج الحرفي

browser: check success; success / main 120; stdout ""
native: check 0; success / status 120; stdout ""
نزّل المصدر افتح في المحرر
aspl check functions-en.aspl
aspl run functions-en.aspl

الأسباب والنتائج: argument-count-mismatch, type-mismatch, missing-return

تطبيق المضيف: shared

الحدود المعيارية للإصدار

التشخيص والتصحيح

يحمل التشخيص مفتاح سبب ثابت وشدة ومعاملات ذات أنواع ومواضع مصدر وتعديلا اختياريا. اللغة تغير الصياغة فقط. التحذير لا يمنع التشغيل. يربط التشغيل المباشر التشخيص بالمصدر؛ البرامج المبنية لا تحتوي خريطة المصدر. المثال الأول يحاول تعديل رابط ثابت. يستبدل المثال الثاني دع / let بـمتغير / var ويعيد الحالة 1 بصورة طبيعية.

مقبول: تصحيح الرابط ثم إعادة الفحص. مرفوض: اعتبار كل حالة غير صفرية خطأ مصدر. استخدم صنف النتيجة والتشخيص للتمييز.

diagnostic-ar · ASPL 0.1.0

المتصفح والمضيف الأصلي

دالة الرئيسية() -> صحيح64 {
    دع قيمة = 0;
    قيمة = 1;
    أرجع قيمة;
}

النتائج المتوقعة والخرج الحرفي

browser: check source-error; source-error / immutable-assignment; stdout ""
native: check 1; source-error / status 1 / immutable-assignment; stdout ""
نزّل المصدر افتح في المحرر
aspl check diagnostic-ar.aspl
diagnostic-en · ASPL 0.1.0

المتصفح والمضيف الأصلي

fn main() -> i64 {
    let قيمة = 0;
    قيمة = 1;
    return قيمة;
}

النتائج المتوقعة والخرج الحرفي

browser: check source-error; source-error / immutable-assignment; stdout ""
native: check 1; source-error / status 1 / immutable-assignment; stdout ""
نزّل المصدر افتح في المحرر
aspl check diagnostic-en.aspl
corrected-ar · ASPL 0.1.0

المتصفح والمضيف الأصلي

دالة الرئيسية() -> صحيح64 {
    متغير قيمة = 0;
    قيمة = 1;
    أرجع قيمة;
}

النتائج المتوقعة والخرج الحرفي

browser: check success; success / main 1; stdout ""
native: check 0; success / status 1; stdout ""
نزّل المصدر افتح في المحرر
aspl check corrected-ar.aspl
aspl run corrected-ar.aspl
corrected-en · ASPL 0.1.0

المتصفح والمضيف الأصلي

fn main() -> i64 {
    var قيمة = 0;
    قيمة = 1;
    return قيمة;
}

النتائج المتوقعة والخرج الحرفي

browser: check success; success / main 1; stdout ""
native: check 0; success / status 1; stdout ""
نزّل المصدر افتح في المحرر
aspl check corrected-en.aspl
aspl run corrected-en.aspl

الأسباب والنتائج: source-error / immutable-assignment; success / main 1

تطبيق المضيف: shared

الحدود المعيارية للإصدار

الطباعة الآمنة

التوقيع الوحيد المدمج هو اطبع / print: (string) -> unit. يكتب بايتات النص بالترتيب، بما فيها NUL، بلا سطر جديد أو تفريغ تلقائي. أضف \n صراحة. لا يمكن إعادة تعريف أي من الاسمين. يعرض المتصفح بايتات الخرج بأمان ولا يفسرها كترميز صفحة.

مقبول: نص واحد، بما فيه النص الفارغ. مرفوض: عدد أو معاملات متعددة أو تخزين النتيجة.

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

output-ar · ASPL 0.1.0

المتصفح والمضيف الأصلي

دالة الرئيسية() -> صحيح64 {
    اطبع("مرحبا\n");
    أرجع 0;
}

النتائج المتوقعة والخرج الحرفي

browser: check success; success / main 0; stdout "مرحبا\n"
native: check 0; success / status 0; stdout "مرحبا\n"
نزّل المصدر افتح في المحرر
aspl check output-ar.aspl
aspl run output-ar.aspl
output-en · ASPL 0.1.0

المتصفح والمضيف الأصلي

fn main() -> i64 {
    print("مرحبا\n");
    return 0;
}

النتائج المتوقعة والخرج الحرفي

browser: check success; success / main 0; stdout "مرحبا\n"
native: check 0; success / status 0; stdout "مرحبا\n"
نزّل المصدر افتح في المحرر
aspl check output-en.aspl
aspl run output-en.aspl

الأسباب والنتائج: type-mismatch, argument-count-mismatch; host-failure / host-operation-failed / write-program-output; limit-stop / output-limit

تطبيق المضيف: shared

الحدود المعيارية للإصدار

أوامر Linux ومراحلها

تقبل الأداة ملف مصدر واحدا. يفحص check المصدر، ويشغّل run داخل العملية، وينشر build برنامج ELF باستبدال ذري بعد التحقق. لا يفتح الفحص والبناء مكتبات البرنامج. لا يستدعي البناء مترجم C أو رابطا. تعيش البرامج المبنية مستقلة عن تثبيت الأداة.

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

الأسباب والنتائج: 0 success; 1 source-error; 2 usage-error; 3 policy-rejection; 4 load-failure; 5 trap; 6 limit-stop; 7 cancelled; 8 host-failure; 9 internal-failure

تطبيق المضيف: native

aspl --diagnostic-language=en check hello.aspl
aspl run hello.aspl
aspl build -o hello hello.aspl
./hello
اقرأ المثال وافحصه الحدود المعيارية للإصدار

المضيف وحدود التنفيذ

المتصفح يشغّل البايت كود محليا ويطبق سقف 10000000 تعليمة لكل تشغيل. الحلقة التالية تنتهي بالصنف limit-stop عند هذا السقف. يعرض الجدول حدود المضيفين. الوحدة MiB = 1048576 bytes والوحدة KiB = 1024 bytes. تعني none غياب سقف منتج، وتعني n/a عدم التطبيق.

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

سقوف الموارد الثابتة
المورد المضيف الأصلي المتصفح
بايتات المصدر16 MiB1 MiB
الوحدات المعجمية1048576131072
عقد الصياغة1048576131072
عمق الصياغة256128
ذاكرة المترجم العاملة512 MiB128 MiB
بايتات البايت كود64 MiB8 MiB
الدوال655364096
الاستيرادات الخارجية40960
ثوابت الأعداد الصحيحة1048576131072
ثوابت الأعداد العائمة1048576131072
مراجع النصوص1048576131072
بايتات النصوص16 MiB2 MiB
تعليمات البايت كود4194304524288
السجلات لكل دالة655368192
التعليمات المنفذةnone10000000
إطارات وقت التشغيل4096512
مواضع قيم وقت التشغيل1048576131072
ذاكرة التنفيذ المملوكة للآلة256 MiB64 MiB
الخرج الملتقطnone256 KiB
زمن الفحصnone2 s
زمن التنفيذnone3 s
الذاكرة الخطيةn/a256 MiB
وظائف العامل المتزامنةn/a1

يشمل المصدر كل بايت مقروء بما فيه علامة بداية النص. تشمل ذاكرة المترجم كل تخصيص حي للترجمة. تشمل ذاكرة التنفيذ الإطارات ومواضع القيم وإعارة النص، وتستبعد البرنامج الثابت والمكتبات وتخصيصات الشيفرة الخارجية. يتقدم فشل الحد البنيوي على حد الذاكرة عند العملية نفسها. فشل التخصيص دون السقف هو host-failure / allocation-failed.

يبدأ مؤقت الفحص حين يقبل العامل المحمّل المهمة، ومؤقت التنفيذ حين يقبل التشغيل بعد نجاح الفحص. لا يدخل التحميل في المؤقتين. أول حد ملحوظ يحدد النتيجة؛ بلوغ الموعد ينهي العامل بسبب time-limit. يرفض حد الخرج الاستدعاء الذي يتجاوزه بأكمله ويبقي الخرج السابق جزئيا. ليس للتنفيذ الأصلي سقف منتج للتعليمات أو الوقت أو الخرج، مع بقاء الحد التمثيلي لعداد التعليمات.

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

limit-ar · ASPL 0.1.0

المتصفح فقط

دالة الرئيسية() -> صحيح64 {
    طالما صواب {}
    أرجع 0;
}

النتائج المتوقعة والخرج الحرفي

browser: check success; limit-stop / execution-instruction-limit / ceiling 10000000; stdout ""
نزّل المصدر افتح في المحرر
limit-en · ASPL 0.1.0

المتصفح فقط

fn main() -> i64 {
    while true {}
    return 0;
}

النتائج المتوقعة والخرج الحرفي

browser: check success; limit-stop / execution-instruction-limit / ceiling 10000000; stdout ""
نزّل المصدر افتح في المحرر

الأسباب والنتائج: policy-rejection / foreign-imports-not-supported; limit-stop / execution-instruction-limit

تطبيق المضيف: browser

الحدود المعيارية للإصدار

الحدود المعيارية

حدود الإصدار 0.1.0 من متطلبات بيان المطابقة الموسومة كحدود. يربط كل معرّف بالنص المرجعي الذي يملكه.

ASPL-SEMANTIC-0403
يقتصر إصدار ASPL الأدنى على خمسة أنواع قابلة للتخزين، وتبقى النصوص ثابتة ومنشأة من القيم الحرفية فقط.
ASPL-SEMANTIC-0404
يقتصر إصدار ASPL الأدنى على خمسة أنواع قابلة للتخزين، وتبقى النصوص ثابتة ومنشأة من القيم الحرفية فقط.
ASPL-SEMANTIC-0405
يقتصر إصدار ASPL الأدنى على خمسة أنواع قابلة للتخزين، وتبقى النصوص ثابتة ومنشأة من القيم الحرفية فقط.
ASPL-SEMANTIC-0406
يقتصر إصدار ASPL الأدنى على خمسة أنواع قابلة للتخزين، وتبقى النصوص ثابتة ومنشأة من القيم الحرفية فقط.
ASPL-SEMANTIC-0407
يقتصر إصدار ASPL الأدنى على خمسة أنواع قابلة للتخزين، وتبقى النصوص ثابتة ومنشأة من القيم الحرفية فقط.
ASPL-SEMANTIC-0189
يقبل إصدار ASPL الأدنى ملف مصدر واحداً ولا يوفر الوحدات أو نظام حزم أو معاملات للبرنامج.
ASPL-BYTECODE-0531
صيغة ASPL bytecode خاصة ومتطابقة الإصدار وليست ABI عامة مستقرة.
ASPL-BYTECODE-0532
صيغة ASPL bytecode خاصة ومتطابقة الإصدار وليست ABI عامة مستقرة.
ASPL-BYTECODE-0533
صيغة ASPL bytecode خاصة ومتطابقة الإصدار وليست ABI عامة مستقرة.
ASPL-BYTECODE-0534
صيغة ASPL bytecode خاصة ومتطابقة الإصدار وليست ABI عامة مستقرة.
ASPL-BYTECODE-0535
صيغة ASPL bytecode خاصة ومتطابقة الإصدار وليست ABI عامة مستقرة.
ASPL-CLI-0605
لا يعزل التنفيذ الأصلي الشفرة الأجنبية غير الآمنة.
ASPL-CLI-0606
لا يعزل التنفيذ الأصلي الشفرة الأجنبية غير الآمنة.
ASPL-CLI-0607
لا يعزل التنفيذ الأصلي الشفرة الأجنبية غير الآمنة.
ASPL-CLI-0608
لا يعزل التنفيذ الأصلي الشفرة الأجنبية غير الآمنة.
ASPL-BROWSER-0347
لا تنشئ دالة إخراج المتصفح استيرادًا خارجيًا.
ASPL-BROWSER-0348
لا تضيف دالة إخراج المتصفح جسرًا لنظام الملفات.
ASPL-BROWSER-0349
لا تضيف دالة إخراج المتصفح جسرًا للشبكة.
ASPL-BROWSER-0350
لا تضيف دالة إخراج المتصفح جسرًا للخادم.
ASPL-DIST-0109
يستهدف الإصدار الأصلي الأول Linux x86-64 مع glibc 2.34 أو أحدث فقط.
ASPL-DIST-0144
يوفر SHA-256 فحص سلامة فقط، من دون مصادقة للناشر أو توقيع للإصدار.
ASPL-PERF-0161
تقتصر ادعاءات أداء البناء والمتصفح على الجهاز والبروتوكول والمتصفحات المثبتة في المواصفة.
ASPL-CONFORMANCE-0672
لا يدّعي إصدار ASPL الأدنى الجاهزية للإنتاج.
ASPL-CONFORMANCE-0673
لا يدّعي إصدار ASPL الأدنى الاستبدال الكامل للغة C.
ASPL-CONFORMANCE-0674
لا يَعِد إصدار ASPL الأدنى بمدة دعم أمني محددة.
ASPL-CONFORMANCE-0675
لا يدّعي إصدار ASPL الأدنى ثبات صيغة البايت كود العامة.

اعرف حدود C

المحوّلان وإعارة النص

على x86-64 Linux مع glibc، يستطيع برنامج ASPL أصلي تحميل أي مكتبة مشتركة يقبلها المحمّل الديناميكي لـglibc واستدعاء دالة مسماة حين يطابق نوعها الدقيق في C أحد محوّلات الاستدعاء الخارجي المدعومة. يدعم الإصدار الأدنى int(const char *) وdouble(double). تبقى إتاحة المكتبة وصلاحية المؤشر وسلوك الدالة الخارجية مسؤولية البرنامج.

مقبول: مكتبة ورمز حرفيان غير فارغين وبلا NUL، مع وسم عدم الأمان في الموضعين. مرفوض: تكرار المكتبة والرمز، توقيع لا يطابق المحوّل أو غياب الوسم.

المحوّل سي_صحيح__مؤشر_محرف_ثابت / c_int__const_char_ptr يحول (string) -> i64 إلى int (*)(const char *). قبل دخول C يرفض النص ذا NUL وينسخ البايتات ويضيف فاصلة النهاية. تنتهي الإعارة بعودة الدالة. يجوز القراءة فقط أثناء الاستدعاء ولا يجوز التعديل أو الاحتفاظ بالمؤشر. تحول نتيجة int بالقيمة، وتبقى القيم السالبة بيانات عادية.

المحوّل سي_مزدوج__مزدوج / c_double__double يطابق (f64) -> f64 مع double (*)(double). يمرر القيم الثنائية ويطبّع نتيجة NaN ويستعيد بيئة الحساب العائم. لا يفحص أي من المحوّلين errno أو أعلام الاستثناءات أو اصطلاحات أخطاء المكتبة.

يفحص check وbuild التصريحات بلا فتح مكتبات. يجهز التنفيذ كل الاستيرادات قبل دالة البداية بترتيب بايتات المكتبة ثم الرمز ثم رقم المحوّل. يفتح كل اسم مرة واحدة باستخدام RTLD_NOW | RTLD_LOCAL ثم يبحث عبر dlsym وdlerror. تمر الأسماء بلا تعديل وفق قواعد محمّل glibc. أول فشل يمنع دالة البداية ويغلق المقابض المفتوحة بالترتيب العكسي.

في مثال puts، نزّل المصدر وافحصه ثم شغّله على المضيف الأصلي. تضيف دالة المكتبة السطر الجديد. افحص النتيجة السالبة بنفسك ولا تستخدم القيمة الموجبة غير المحددة كحالة العملية. فشل تخصيص الإعارة فشل مضيف؛ ولا يضمن النظام تحويل انهيار الدالة الخارجية أو احتفاظها بالمؤشر إلى توقف مضبوط.

puts-ar · ASPL 0.1.0

المضيف الأصلي فقط

خاص بالمضيف الأصلي. يرفض المتصفح هذا الاستيراد بالصنف policy-rejection / foreign-imports-not-supported قبل التنفيذ، حتى إن لم يُستدع.

غير_آمن خارجي اطبع_سطر(رسالة: نص) -> صحيح64
    = سي_صحيح__مؤشر_محرف_ثابت("libc.so.6", "puts");

دالة الرئيسية() -> صحيح64 {
    دع النتيجة = غير_آمن اطبع_سطر("مرحبا");
    إذا النتيجة < 0 { أرجع 1; }
    أرجع 0;
}

النتائج المتوقعة والخرج الحرفي

browser: check policy-rejection; policy-rejection / foreign-imports-not-supported; stdout ""
native: check 0; success / status 0; stdout "مرحبا\n"
نزّل المصدر افحص رفض المتصفح
aspl check puts-ar.aspl
aspl run puts-ar.aspl
puts-en · ASPL 0.1.0

المضيف الأصلي فقط

خاص بالمضيف الأصلي. يرفض المتصفح هذا الاستيراد بالصنف policy-rejection / foreign-imports-not-supported قبل التنفيذ، حتى إن لم يُستدع.

unsafe foreign اطبع_سطر(رسالة: string) -> i64
    = c_int__const_char_ptr("libc.so.6", "puts");

fn main() -> i64 {
    let النتيجة = unsafe اطبع_سطر("مرحبا");
    if النتيجة < 0 { return 1; }
    return 0;
}

النتائج المتوقعة والخرج الحرفي

browser: check policy-rejection; policy-rejection / foreign-imports-not-supported; stdout ""
native: check 0; success / status 0; stdout "مرحبا\n"
نزّل المصدر افحص رفض المتصفح
aspl check puts-en.aspl
aspl run puts-en.aspl
double-ar · ASPL 0.1.0

المضيف الأصلي فقط

خاص بالمضيف الأصلي. يرفض المتصفح هذا الاستيراد بالصنف policy-rejection / foreign-imports-not-supported قبل التنفيذ، حتى إن لم يُستدع.

غير_آمن خارجي جذر(قيمة: عائم64) -> عائم64
    = سي_مزدوج__مزدوج("libm.so.6", "sqrt");

دالة الرئيسية() -> صحيح64 {
    دع النتيجة = غير_آمن جذر(4.0);
    إذا النتيجة == 2.0 { أرجع 0; }
    أرجع 1;
}

النتائج المتوقعة والخرج الحرفي

browser: check policy-rejection; policy-rejection / foreign-imports-not-supported; stdout ""
native: check 0; success / status 0; stdout ""
نزّل المصدر افحص رفض المتصفح
aspl check double-ar.aspl
aspl run double-ar.aspl
double-en · ASPL 0.1.0

المضيف الأصلي فقط

خاص بالمضيف الأصلي. يرفض المتصفح هذا الاستيراد بالصنف policy-rejection / foreign-imports-not-supported قبل التنفيذ، حتى إن لم يُستدع.

unsafe foreign جذر(قيمة: f64) -> f64
    = c_double__double("libm.so.6", "sqrt");

fn main() -> i64 {
    let النتيجة = unsafe جذر(4.0);
    if النتيجة == 2.0 { return 0; }
    return 1;
}

النتائج المتوقعة والخرج الحرفي

browser: check policy-rejection; policy-rejection / foreign-imports-not-supported; stdout ""
native: check 0; success / status 0; stdout ""
نزّل المصدر افحص رفض المتصفح
aspl check double-en.aspl
aspl run double-en.aspl

الأسباب والنتائج: unknown-foreign-adapter, foreign-signature-mismatch, invalid-foreign-library-name, invalid-foreign-symbol-name, duplicate-foreign-target, unsafe-required-on-foreign-declaration, unsafe-required-on-foreign-call; load-failure / foreign-library-open-failed, foreign-symbol-lookup-failed; trap / foreign-string-contains-nul; host-failure / allocation-failed; policy-rejection / foreign-imports-not-supported

تطبيق المضيف: native

الحدود المعيارية للإصدار

انتقل إلى Linux

تحقق من المضيف أولا

الهدف Linux x86-64 الأساسي مع glibc 2.34 أو أحدث. يجب أن تكون النتائج Linux وx86_64 وglibc 2.34 أو أحدث. فشل تحديد مكتبة GNU libc لا يثبت التوافق. راجع الحدود المعيارية للمضيف.

uname -s
uname -m
getconf GNU_LIBC_VERSION
الحدود المعيارية للإصدار

الأرشيف والتحقق

نُشر إصدار المشروع 0.1.0. نزّل aspl-0.1.0-x86_64-linux-gnu.tar.xz، وحجمه 126468 بايت وبصمته e022c777a6e3b61f721fdd02b0adb16a5a0dec25724b9daa545f476793d8fe61. يثبت حزم الأدلة ما اجتازه المرشح وما قبله مالك الإصدار بلا دليل؛ لذلك لا يدعي هذا النشر اكتمال مطابقة ASPL MVP الرسمية.

يتضمن مجلد التنزيل الأرشيف وSHA256SUMS والتراخيص. يحتوي المجلد المطابق داخل الأرشيف على aspl, LICENSE-MIT, LICENSE-APACHE وTHIRD-PARTY-NOTICES فقط. الترخيص باختيار MIT OR Apache-2.0.

نزّل الأرشيف وملف البصمة إلى المجلد نفسه. يحتوي ملف البصمة سطرا واحدا من 64 رقما سداسيا صغيرا ومسافتين ثم اسم الملف وسطر جديد. يجب أن يبلغ الفحص aspl-0.1.0-x86_64-linux-gnu.tar.xz: OK قبل الفك. البصمة تحقق سلامة المحتوى ولا تثبت هوية الناشر.

يتضمن هذا الأرشيف إشعارات Unicode لأن الأداة تحتوي جداول مشتقة منه. اقرأ النصوص الكاملة: MIT وApache-2.0 وإشعارات الطرف الثالث.

اعمل في مجلد تنزيل جديد لكل إصدار. افحص القائمة قبل الفك؛ يجب أن تطابق المجلد والملفات والصلاحيات المذكورة. توقف عند فشل أي أمر أو اختلاف القائمة أو النسخة، ولا تنفذ أوامر التثبيت التالية.

sha256sum --check SHA256SUMS &&
tar -tvJf aspl-0.1.0-x86_64-linux-gnu.tar.xz

tar -xJf aspl-0.1.0-x86_64-linux-gnu.tar.xz &&
./aspl-0.1.0-x86_64-linux-gnu/aspl --version
الحدود المعيارية للإصدار

ثبّت الأداة وتحقق من PATH

يجب أن تطبع الأداة المستخرجة aspl 0.1.0. المجلد والأداة بصلاحية 0755 والتراخيص بصلاحية 0644. الأرشيف بلا روابط أو مسارات مطلقة أو صعود للمجلد الأب. اختر موضع تثبيت واحدا. المسار الافتراضي ملكك ولا يحتاج صلاحيات مسؤول.

يجب أن يحل command -v aspl إلى $HOME/.local/bin/aspl. إن لم يحدث ذلك استخدم export PATH="$HOME/.local/bin:$PATH" في الصدفة الحالية. للاستمرار أضف السطر نفسه يدويا إلى ~/.bashrc في Bash أو ~/.zshrc في Zsh. في Fish استخدم fish_add_path "$HOME/.local/bin". افتح صدفة جديدة وأعد فحص المسار والنسخة.

للتثبيت بإدارة المسؤول بعد التحقق نفسه استبدل أمري التثبيت بـsudo install -m 0755 aspl-0.1.0-x86_64-linux-gnu/aspl /usr/local/bin/aspl. افحص المسار حتى لا تحجب نسخة قديمة الأداة المختارة.

test "$(./aspl-0.1.0-x86_64-linux-gnu/aspl --version)" = "aspl 0.1.0" &&
install -d "$HOME/.local/bin" &&
install -m 0755 aspl-0.1.0-x86_64-linux-gnu/aspl "$HOME/.local/bin/aspl"
command -v aspl
aspl --version
الحدود المعيارية للإصدار

الترقية والتراجع والإزالة

للترقية أعد فحص المضيف وتنزيل الإصدار الجديد والتحقق والفك وفحص النسخة المستخرجة ثم استبدل الأداة بأمر التثبيت نفسه. للتراجع اتبع الخطوات نفسها مع إصدار مؤرشف مختار وبصمته. كل إصدار منشور ثابت ولا يتغير تحت الاسم نفسه. لا توجد نسخة احتياطية آلية؛ احتفظ بالأرشيف إن أردت التراجع دون اتصال. أحدث إصدار فقط يتلقى الإصلاحات قبل 1.0.

الإزالة تحذف الأداة المختارة فقط، وتترك إعداد الصدفة والمصدر والبرامج المبنية والأرشيفات. احذف المسار الذي اخترته فقط.

بعد الإزالة شغّل command -v aspl لاكتشاف نسخة أخرى ما زالت على المسار.

rm -- "$HOME/.local/bin/aspl"

للموضع الذي يديره المسؤول فقط: sudo rm -- /usr/local/bin/aspl

الحدود المعيارية للإصدار
ارجع إلى المحرر