معرفی زبان برنامه‌نویسی سیستمی جدید hare

خرگوش دوست داشتنی من ❤️
خرگوش دوست داشتنی من ❤️


آوریل همین سال بی سر و صدا یه زبان برنامه‌نویسی اون هم سیستمی معرفی شده بود که خیلی آرزوی همچین چیزی رو داشتم حالا به دلایلی که بعداً میگم چرا برام مهم شده :

البته من دیروز خبر دار شدم ?


https://harelang.org/blog/2022-04-25-announcing-hare/

حالا سازنده اش کیه ؟ اتفاقا خیلی هم آشنا بود

Drew DeVault

همون کسی که sourcehut رو راه‌اندازی کرده و کلا تو دنیای نرم‌افزار آزاد رسم و نشانی داره واسه خودش و از خوندن بلاگ های اون واقعا لذت می‌بردم.

حالا اینکه چرا مهم شده برام :

۱. بلاخره یک زبان سیستمی معرفی شده که از ال‌ال‌وی‌ام(llvm) به عنوان بک‌اند(backend) استفاده نمی‌کنه , والا خسته شدم اینقدر دیدم زبونای سیستمی زیادی ازش استفاده میکنن ? ، اگه از مموری منجیمتش فاکتور بگیریم (خوشبختانه مثل زیگ مدیریت حافظه‌ای مثل گاربیج کالکتور یا همون gc که قراره داشته باشین وجود نداره ، کلا مثل سی دستیه و خوب طبیعی هم هست زبان سیستمی هست و مثل راست هم متاسفانه از اون طرف اونرشیپ (ownership) و بارُوینگ چک ( borrow checker ) و ... وجود نداره پس مثل راست نمی تونه سیفیتی رو تضمین کنه ، خب پس آیا مثل سوئیفت رفرنس کانتین داره ؟ نه arc هم نداره گفتیم زبان سیستمیه

حالا این که چطوری سیفیتی رو تضمین می‌کنه تو این بلاگ بخونین :

https://harelang.org/blog/2022-06-21-safety-features/

یه فیچر هایی رو برای سیفیتی خودش داره اما مشخصه که هدف زبان این نیست .


۲.هر زبون سیستمی که میاد ادعا می‌کنه که روزی تاج و تخت رو از زبان سی میگیره در حالی که اولین باری بود که تو این معرفی زبان hare دیدم گفته بودن که نتها قرار نیست جای سی رو بگیره بلکه نمی‌تونه حتی جای راست رو بگیره نه زیگ نه زبان های سیستمی دیگه‌ای رو !


۳. بلاخره زبانی رو دیدم که از لایسنس های کپی‌لفت دار استفاده می‌کنه ، مجوز کامپایلرش به جای MIT از جی‌پی‌ال نسخه ۳ و برای کتابخونه هاش از ام‌پی‌ال نسخه ۲ که اتفاقا نسخه ۲‌اش با گنو جی‌پی‌ال سازگاره ، استفاده می‌کنه ؛ می‌تونم چند سطر یا حتی مقاله‌ای در این باره بنویسم که بگم چرا برام مهمه این قضیه !


۴. قراره از تمامی سیستم‌عامل های آزاد حتی پلان ۹ هم پشتیبانی بشه ! این مورد آخری واقعا جای شکر داره چون واقعا من یکی از طرفداران زبان گو و فلسفه پلان ۹ هستم و مورد جالب اینکه قرار نیست از سیستم‌عامل های کلوزسورس مثل ویندوز و مک پشتیبانی بشه !:)


۵.گفتیم خوشبختانه بر خلاف خیلی از زبونای سیستمی از ال‌ال‌وی‌ام به عنوان بک‌اند استفاده نمی‌کنه ولی متاسفانه و بدبختانه از لیب‌جی‌سی‌سی‌جیت (libgccjit) هم استفاده نمی‌کنه :`( (یه بار آرزو کردم یه زبانی ازش به عنوان بک‌اند استفاده کنه) و این زبان به جای ال‌ال‌وی‌ام از qbe استفاده می‌کنه (من اطلاعاتی در موردش ندارم اما هر چی باشه از ال‌ال‌وی‌ام بهتره D: ) ال‌ال‌وی‌ام سرعت کامپایل رو به طرز وحشتناکی طولانی می‌کنه چیزی که توی راست و زبون های دیگه شاهدش هستیم .



۶. مورد جالب و آخر ( که بیشتر من رو مجاب می‌کنه که ازش استفاده کنم ) پشتیبانی از معماری ریسک‌فایو , RISCV (معماری دوست داشتنی من )هست ! همین یه مورد رو بس که راست و زبون های دیگه رو ول کنم بیام سمتش !

زبون باحالی به نظر میاد و برای نصبش کافیه این توضیحاتی که پایین دادم رو بخونین ، در واقع کامپایل باید کنین :


و یه نکته مهم اینکه همینجوری نرین سراغ کامپایلش ، باید قبلش یه سری چیز هایی رو تو سیستمتون داشته باشین :

مرحله صفرم انشا... که یه کامپایلر (ترجیحاً جی‌سی‌سی) تو سیستمتون که دارین .

۱.اولین چیزی که باید تو سیستمتون داشته باشین qbe هست که باید کامپایلش کنین :

https://c9x.me/compile/

۲.دومین مورد scdoc هست که باید کامپایلش کنین :

https://sr.ht/~sircmpwn/scdoc


بعد اینکه اون دو تا رو تو سیستمتون کامپایل کردین حالا میرین سراغ کامپایلرش:

https://git.sr.ht/~sircmpwn/harec

بعد کامپایلش میرین سراغ استاندارد لایبرری‌ها و درایور راه‌اندازیش :

https://git.sr.ht/~sircmpwn/hare



به غیر از لیب‌جی‌سی‌سی‌جیت که متاسفانه ازش استقبال نکرده هر چیزی که تو ذهنم از یه زبان رویایی که قبلاً ساخته بودمش از لایسنس جی‌پی‌الش بگیر تا پشتیبانی از معماری ریسک فایو و نوع ساپورتش از سیستم‌عامل های آزاد و اینکه oop نیست ، این رو اون چیزی که می‌خواستم رو میده .

و اینکه به برنامه نویسش بیشتر اعتماد می‌کنه تا کامپایلرش این تایه جایی خوبه و تا یه جایی بد .

خوبیش اینه که زبون رو مثل سی می‌کنه بدیش اینکه که نگران سیفیتی برنامه‌ات باید باشی .

امیدوارم که از این زبان لذت برده باشین .