News

Version 0.4.1 Released

Added by سرمد خالد عبداللّه about 1 month 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 سرمد خالد عبداللّه about 1 month ago

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

Version 0.4.0 Released

Added by سرمد خالد عبداللّه about 1 month 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 سرمد خالد عبداللّه about 1 month ago

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

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

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

Work on Version 0.4.0 Close to Completion

Added by سرمد خالد عبداللّه 2 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 سرمد خالد عبداللّه 2 months ago

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

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

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

Work on Version 0.4.0 Starting Soon

Added by سرمد خالد عبداللّه 7 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 سرمد خالد عبداللّه 7 months ago

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

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

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

Version 0.3.0 Released

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

Version 0.3.0 of Alusus Language has been released and is available to download. This version comes with major refactoring in the Core and standard libraries intended to make future work on the language easier and more streamlined. In addition to the refactoring, this release comes with the following new features:

  • Complete set of basic data types matching what is provided by the C language.
  • New program control commands: `continue` and `break` in loops, in addition to the `else` clause in if statements.
  • Many improvements to expressions.
  • Support for function pointers.
  • Support for pointer comparisons in addition to casting between pointers and integers.
  • Treating modules as proper namespaces.
  • Ability to merge module and type definitions, allowing those modules or types to be split across multiple source files.
  • Run-time library that provides functions for system, memory, string, file, math, in addition to user input/output operations.
  • Improvements to implicit casting.
  • Support for defining modifiers in the grammar.
  • Improved build notifications.

In addition to this, many other fixes and smaller improvements are included. Visit the Downloads page to get the new release or to read the release notes.

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

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

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

  • أصناف أساسية أكثر تكاملاً توازي ما تقدمه لغة C.
  • أوامر تحكم جديدة: `أكمل` و `اقطع` في الحلقات، بالإضافة للمقطع `وإلا` في الجمل الشرطية.
  • تطوير التراكيب وجعلها أكثر تكاملاً.
  • دعم مؤشرات الدالات.
  • تمكين المقارنات على المؤشرات وتمكين تحويل المؤشرات إلى أعداد صحيحة والعكس.
  • معاملة الحزم كمجالات تسمية (namespace).
  • إمكانية دمج تعريفات الحزم وأصناف المستخدم مما يمكن من تجزئة الحزم إلى عدة ملفات مصدرية.
  • إضافة مكتبة تنفيذية توفر دالات للتعامل مع النظام والطرفية وسلاسل المحارف والذاكرة والملفات والعمليات الرياضية.
  • تحسينات لعملية التمثيل الضمني (implicit casting).
  • دعم إمكانية تعريف المبدلات في القواعد.
  • تحسين إشعارات البناء.
  • دعم أفضل للغة العربية.

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

1 2 3 Next »

Also available in: Atom