Project

General

Profile

News

Version 0.5.0 Released

Added by سرمد خالد عبداللّه 4 months ago

Version 0.5.0 of Alusus Language is released and now available for download. This release adds few important changes and fixes including:

  • Enable code execution in the root scope, outside of modules or functions.
  • Added a simple package manager that allows users to import dependencies directly from GitHub. This package manager is still experimental and missing few important features that will come in future releases.
  • Enabled shorter syntax for functions, modules, types, and macros. You can now define functions using the `function` keyword directly without the need for `def`. The same applies to modules, types, and macros.
  • Many additions to the Standard Runtime Library including dealing with regex and sending web GET requests.
  • Enabled multi-line comments.
  • Fixed handling of missing return statements or unreachable code.
  • Behind the scenes, Alusus now uses LLVM 7.0.1 instead of version 3.3 that was used in the previous version.

That's in addition to many other fixes. More info can be found in the changelogs that can be downloaded from the Downloads page, along with DEB and RPM packages for the new release.

إطلاق الإصدار 0.5.0

Added by سرمد خالد عبداللّه 4 months ago

أتم فريق العمل إطلاق الإصدار 0.5.0 من لغة الأسس. هذا الإصدار يشمل بعض التعديلات والإضافات المهمة منها:

  • تمكين تنفيذ الشفرة المصدرية في المجال الرئيسي، أي خارج الدالات والوحدات.
  • إضافة مدير للحزم لتمكين المستخدم من تنصيب الاعتماديات مباشرة من GitHub. مدير الحزم ما زال نسخة تجريبية وينقصه بعض المزايا المهمة التي ستأتي في إصدارات لاحقة.
  • تمكين صيغة أقصر لتعريف الدالات والوحدات والماكروهات والأصناف. يمكنك الآن تعريف الدالات باستخدام الأمر `دالة` لوحده دون الحاجة لكتابة `عرف`. والأمر نفسه ينطبق على الوحدات والماكروهات وأصناف المستخدم.
  • إضافات متعددة على مكتبة التنفيذ المعيارية مثل التعامل مع التعبيرات النمطية والقراءة من الشبكة.
  • تمكين الملاحظات متعددة الأسطر.
  • تصحيح التعامل مع فقدان عبارة `أرجع` والشفرات المنقطعة التي لا يمكن الوصول إليها.
  • وفيما يتعلق بالتعديلات التي خلف الكواليس فقد تم تحديث إصدار LLVM المعتمد من 3.3 إلى الإصدار 7.0.1.

هذا بالإضافة للعديد من التعديلات والإصلاحات الأخرى. راجع سجل التغييرات من صفحة التنزيل لمزيد من المعلومات.

Version 0.4.1 Released

Added by سرمد خالد عبداللّه 6 months ago

This minor update adds the ability to receive process arguments in the user's code. The release includes the following changes:
  • Added support for passing process arguments to the running start function.
  • If the start function returns a non-zero value the result is used as an exit code for the Core.

إطلاق الإصدار الفرعي 0.4.1

Added by سرمد خالد عبداللّه 6 months ago

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

Version 0.4.0 Released

Added by سرمد خالد عبداللّه 7 months ago

Version 0.4.0 of Alusus Language has been released and is now available to download from the `Download` page. This release brings a lot of additions and fixes. Most importantly:

  • Added support for macros which allow the programmer to put a group of commands into a macro that can then be reused elsewhere. This feature is conceptuatlly similar to C macros, but its implementation is different. While macros in C are executed as a preprocessor working on characters, in Alusus macros are part of the parsing process, which leads to the following differences:
    - In Alusus macros are limited to the scope in which they are defined unlike C macros which can't be scoped. In other words, if you define a macro in Alusus within a certain scope (a module for example) then tried to use it outside of that scope the compiler will error out unless you mention the full path leading to that macro.
    - In Alusus you can define multiple macros with the same name if they are defined in different scopes. In C you can't do that.
    - In Alusus parsing errors inside macros are detected during the parsing of the macro itself, whereas in C parsing errors won't be detected until the macro is used somewhere.
    - In Alusus you can't define macros containing partial commands or partial rules like you can in C.
  • Added the command `use` which allows the programmer to tell the compiler to search for identifiers within a certain scope by default. For example, instead of having to mention `Srl.Console.print` multiple times, the user can type `use Srl.Console` and then elsewhere only type `print`.
  • Added support for constant definitions, which allow the user to give a name to a certain constant value. For example: `def PI: 3.141592`.
  • Allow the definition of global vars and functions inside the bodies of user types. This is similar to the use of `static` keyword in C++ class members.
  • Added an experimental GUI library based on GTK. This is still expecimental and it only includes a small subset of GTK, but the user can easily add any missing parts. The included elements are windows, header bars, message dialogs, buttons, toggle buttons, checkboxes, menus, entry fields as well as images. If the user needs anything outside of this it can be added by simply definining the needed functions. The user can refer to Alusus GTK library to know how it's done

More information about this release can be found in the changelog available on the `Download` page. Please report to us any issues you face during installation or usage of this release either by using the `Contact Us` page, using the forum, or through Alusus social media pages.

إطلاق الإصدار 0.4.0 من لغة الأسس

Added by سرمد خالد عبداللّه 7 months ago

تم بعون الله إطلاق الإصدار 0.4.0 من لغة الأسس والذي يقدم العديد من الإضافات والإصلاحات أهمها:

  • إضافة خاصية الماكروهات التي تتيح للمبرمج وضع مجموعة من الأوامر في ماكرو لتسهيل تكرارها في أماكن متعددة. هذه الخاصية مشابهة لخاصية الماكرو في لغة السي من ناحية المبدأ لكنها تختلف اختلافاً جذرياً في التصميم، حيث أن الماكرو في لغة السي يعالَج نصياً في مرحلة تسبق الإعراب بينما ماكرو الأسُس يعمل كجزء من مرحة الإعراب نفسها وهذا يؤدي إلى الفروقات التالية:
    - في لغة الأسُس الماكرو تأثيره محدود ضمن مجال تعريفه بعكس الماكر في لغة السي حيث يكون غير محدود بأي مجال. بمعنى آخر، في لغة الأسُس إذا عرفت ماكرو داخل مجال معين وحاولت استخدامه داخل مجال آخر فسيمنعك المترجم من ذلك ما لم تذكر المسار الكامل المؤدي لذلك الماكرو.
    - يمكن في لغة الأسُس تعريف عدة ماكروهات بنفس الاسم طالما أنها معرفة ضمن مجالات مختلفة، وهذا غير ممكن في لغة السي.
    - في لغة الأسُس الأخطاء الإعرابية داخل الماكرو يتم استشعارها مباشرة بعكس لغة السي حيث لا تُستشعر الأخطاء الإعرابية إلا بعد انتهاء معالجة الماكرو والبدء بمرحلة الإعراب.
    - في لغة الأسُس لا يمكن تعريف ماكرو يحتوي متنه على أجزاء غير مكتملة من القواعد بعكس لغة السي التي تتيح ذلك. مثلاً، في لغة السي يمكن تعريف ماكرو يحتوي على جزء غير مكتمل من القواعد ويقوم المستخدم يتجميع ماكروهات متعددة للحصول على برنامج صحيح قواعدياً وهذا الأمر غير ممكن في لغة الأسس التي تمنع أن يكون متن أي ماكرو غير مكتمل قواعدياً.
  • إضافة الأمر `استخدم` (use) الذي يُخبر المترجم بالبحث عن الرموز تلقائياً داخل مجالات معينة بدل اضطرار المبرمج لكتابة المسار الكامل عند استخدام العناصر. على سبيل المثال، بدل أن يكتب المستخدم `مـتم.طـرفية.اطبع` بشكل متكرر يمكنه استخدام الأمر `استخدم مـتم.طـرفية` وبعدها الاكتفاء بكتابة `اطبع`.
  • إضافة الدعم للثوابت. أي يمكن للمبرمج ان يعطي اسماً لقيمة ثابتة (رقم أو سلسلة محارف) ثم استخدام ذلك الإسم لاحقاً بدل كتابة القيمة الثابتة. مثال: `عرف النسبة_الثابتة: 3.141592`.
  • تمكين تعريف المتغيرات والدالات العمومية داخل أصناف المستخدم. هذه تقابل تعريف الدالات والمتغيرات داخل الأصناف باستخدام المبدل static في لغة السي++.
  • إضافة مكتبة تجريبية لواجهة المستخدم مبنية على أدوات جتك (GTK). هذه المكتبة تجريبية فقط وتشمل فقط جزءًا بسيطاً من مكتبة جتك، ولكن بإمكان المستخدم إضافة ما ينقصه بسهولة. المكتبة توفر دعماً للنوافذ والنوافذ الحوارية والأزرار والقوائم وقوائم الأوامر وحقل الإدخال وشريط الحاشية بالإضافة إلى الصور. إذا احتاج المستخدم إلى عناصر غير متوفرة فكل ما يحتاجه إضافة تعريف للدالات المعنية ويمكن مراجعة مكتبة الأسس الخاصة بجتك لمعرفة كيفية فعلها.

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

Work on Version 0.4.0 Close to Completion

Added by سرمد خالد عبداللّه 7 months ago

The team is adding the final touches to version 0.4.0 of Alusus Language. This version adds many new features, but some features that were planned to be part of this release were postponed to the next release in favor of other features that turned out to be more important. The highlights of this release are:

  • Added support for macros which allow the programmer to put a group of commands into a macro that can then be reused elsewhere. This feature is conceptuatlly similar to C macros, but its implementation is different. While macros in C are executed as a preprocessor working on characters, in Alusus macros are part of the parsing process, which leads to the following differences:
    - In Alusus macros are limited to the scope in which they are defined unlike C macros which can't be scoped. In other words, if you define a macro in Alusus within a certain scope (a module for example) then tried to use it outside of that scope the compiler will error out unless you mention the full path leading to that macro.
    - In Alusus you can define multiple macros with the same name if they are defined in different scopes. In C you can't do that.
    - In Alusus parsing errors inside macros are detected during the parsing of the macro itself, whereas in C parsing errors won't be detected until the macro is used somewhere.
    - In Alusus you can't define macros containing partial commands or partial rules like you can in C. * Added the command `use` which allows the programmer to tell the compiler to search for identifiers within a certain scope by default. For example, instead of having to mention `Srl.Console.print` multiple times, the user can type `use Srl.Console` and then elsewhere only type `print`. * Added support for constant definitions, which allow the user to give a name to a certain constant value. For example: `def PI: 3.141592`. * Allow the definition of global vars and functions inside the bodies of user types. This is similar to the use of `static` keyword in C++ class members. * Added an experimental GUI library based on GTK. This is still expecimental and it only includes a small subset of GTK, but the user can easily add any missing parts. The included elements are windows, header bars, message dialogs, buttons, toggle buttons, checkboxes, menus, entry fields as well as images. If the user needs anything outside of this it can be added by simply definining the needed functions. The user can refer to Alusus GTK library to know how it's done.

This is in addition to many bug fixes and other smaller changes. This version is expected to be released this month.

الاستعداد لإطلاق الإصدار 0.4.0 من لغة الأسس

Added by سرمد خالد عبداللّه 7 months ago

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

  • إضافة خاصية الماكروهات التي تتيح للمبرمج وضع مجموعة من الأوامر في ماكرو لتسهيل تكرارها في أماكن متعددة. هذه الخاصية مشابهة لخاصية الماكرو في لغة السي من ناحية المبدأ لكنها تختلف اختلافاً جذرياً في التصميم، حيث أن الماكرو في لغة السي يعالَج نصياً في مرحلة تسبق الإعراب بينما ماكرو الأسُس يعمل كجزء من مرحة الإعراب نفسها وهذا يؤدي إلى الفروقات التالية:
    - في لغة الأسُس الماكرو تأثيره محدود ضمن مجال تعريفه بعكس الماكر في لغة السي حيث يكون غير محدود بأي مجال. بمعنى آخر، في لغة الأسُس إذا عرفت ماكرو داخل مجال معين وحاولت استخدامه داخل مجال آخر فسيمنعك المترجم من ذلك ما لم تذكر المسار الكامل المؤدي لذلك الماكرو.
    - يمكن في لغة الأسُس تعريف عدة ماكروهات بنفس الاسم طالما أنها معرفة ضمن مجالات مختلفة، وهذا غير ممكن في لغة السي.
    - في لغة الأسُس الأخطاء الإعرابية داخل الماكرو يتم استشعارها مباشرة بعكس لغة السي حيث لا تُستشعر الأخطاء الإعرابية إلا بعد انتهاء معالجة الماكرو والبدء بمرحلة الإعراب.
    - في لغة الأسُس لا يمكن تعريف ماكرو يحتوي متنه على أجزاء غير مكتملة من القواعد بعكس لغة السي التي تتيح ذلك. مثلاً، في لغة السي يمكن تعريف ماكرو يحتوي على جزء غير مكتمل من القواعد ويقوم المستخدم يتجميع ماكروهات متعددة للحصول على برنامج صحيح قواعدياً وهذا الأمر غير ممكن في لغة الأسس التي تمنع أن يكون متن أي ماكرو غير مكتمل قواعدياً. * إضافة الأمر `استخدم` (use) الذي يُخبر المترجم بالبحث عن الرموز تلقائياً داخل مجالات معينة بدل اضطرار المبرمج لكتابة المسار الكامل عند استخدام العناصر. على سبيل المثال، بدل أن يكتب المستخدم `مـتم.طـرفية.اطبع` بشكل متكرر يمكنه استخدام الأمر `استخدم مـتم.طـرفية` وبعدها الاكتفاء بكتابة `اطبع`. * إضافة الدعم للثوابت. أي يمكن للمبرمج ان يعطي اسماً لقيمة ثابتة (رقم أو سلسلة محارف) ثم استخدام ذلك الإسم لاحقاً بدل كتابة القيمة الثابتة. مثال: `عرف النسبة_الثابتة: 3.141592`. * تمكين تعريف المتغيرات والدالات العمومية داخل أصناف المستخدم. هذه تقابل تعريف الدالات والمتغيرات داخل الأصناف باستخدام المبدل static في لغة السي++. * إضافة مكتبة تجريبية لواجهة المستخدم مبنية على أدوات جتك (GTK). هذه المكتبة تجريبية فقط وتشمل فقط جزءًا بسيطاً من مكتبة جتك، ولكن بإمكان المستخدم إضافة ما ينقصه بسهولة. المكتبة توفر دعماً للنوافذ والنوافذ الحوارية والأزرار والقوائم وقوائم الأوامر وحقل الإدخال وشريط الحاشية بالإضافة إلى الصور. إذا احتاج المستخدم إلى عناصر غير متوفرة فكل ما يحتاجه إضافة تعريف للدالات المعنية ويمكن مراجعة مكتبة الأسس الخاصة بجتك لمعرفة كيفية فعلها.

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

Work on Version 0.4.0 Starting Soon

Added by سرمد خالد عبداللّه 12 months ago

Work on the next release of Alusus language, which is 0.4.0, is set to start soon. This will be the start of a new pattern in releases in which releases are more frequent with less changes. The next release will focus on the following:

  • Provide support for macros.
  • Implement the command `use` that allows the elements of one namespace to be reachable directly from another namespace.
  • Provide support for building executables, in addition to the JIT compilation that is available now.
  • Provide a module for dealing with GTK to enable the user to write GUI applications.
  • Provie a simpel IDE.

No date is set yet for this release. Release date will be announced later.

بدء العمل على الإصدار 0.4.0

Added by سرمد خالد عبداللّه 12 months ago

العمل على الإصدار القادم من لغة الأسُس، وهو الإصدار 0.4.0، سيبدأ قريباً، وسيكون هذا الإصدار بإذن الله بداية لنمط جديد من الإصدارات يعتمد على إصدارات متقاربة بتغييرات أصغر من تلك اللتي في الإصدار 0.3.0. الإصدار القادم سيركز على توفير ما يلي:

  • توفير الدعم للماكروهات (macros)، وهي عناصر يكتب فيها المبرمج مجموعة من العناصر ليسهل إعادة استخدامها.
  • إنشاء الأمر `استخدم` (use) الذي يمكن المستخدم من توفير عناصر مجال معين داخل مجال آخر.
  • تمكين إنشاء ملفات تنفيذية إلى جانب الترجمة الآنية المتوفرة حالياً.
  • إنشاء حزمة للتعامل مع GTK لتمكين المستخدم من بناء واجهات مستخدم.
  • إنشاء بيئة تطوير بسيطة (IDE).

لم يُحدد بعد موعد إطلاق الإصدار، وسنعلن عن ذلك في وقت لاحق. يُمكن متاعبة سير العمل من صفحة ردماين الخاصة بهذا الإصدار: https://redmine.alusus.org/versions/10

(1-10/25)

Also available in: Atom