سایکلون (زبان برنامه‌نویسی)

زبان برنامه‌نویسی سایکلون  به عنوان گویش امن زبان cدر نظر گرفته شده‌است. سایکلون برای جلوگیری از سرریز بافر و سایر آسیب‌پذیری‌هایی که در برنامه‌های C امکان‌پذیر است، بدون از دست دادن قدرت و راحتی C به عنوان ابزاری برای برنامه‌نویسی سیستم، طراحی شده‌است.

توسعه سایکلون به عنوان پروژه مشترک پژوهش AT&T Labs و گروه Greg Morrisett در دانشگاه کرنل در سال ۲۰۰۱ آغاز شد. نسخه ۱٫۰ در ۸ می ۲۰۰۶ منتشر شد.

ویژگی‌های زبان 
سایکلون سعی می‌کند از برخی از مشکلات رایج C جلوگیری کند، در حالی که همچنان ظاهر و عملکرد خود را حفظ می‌کند. برای این منظور، سایکلون محدودیت‌های زیر را برای برنامه‌ها اعمال می‌کند:

-چک‌های NULL برای جلوگیری از خطاهای تقسیم‌بندی درج می‌شوند.

-اشاره گر محاسباتی محدود است.

-اشاره گرها باید قبل از استفاده مقداردهی اولیه شوند (این امر با تجزیه و تحلیل تخصیص قطعی اعمال می‌شود).

-اشاره گرهای معلق از طریق تجزیه و تحلیل منطقه و محدودیت در ()free جلوگیری می‌شود.

-فقط بازیگران و اتحادیه‌های "safe" مجاز هستند.

-go to در محدوده غیرمجاز است.

-برچسب‌های switch در حوزه‌های مختلف غیرمجاز هستند.

-توابع بازگشت کننده اشاره گر باید return را اجرا کنند.

-setjmp و longjmp پشتیبانی نمی‌شوند.

برای حفظ مجموعه ابزاری که برنامه نویسان C به آن عادت دارند، Cyclone پسوندهای زیر را ارائه می‌دهد:

اشاره گرهای Never-NULL به بررسی NULL نیاز ندارند.

اشاره گرهای "Fat" از محاسبات اشاره گر با بررسی محدوده زمان اجرا پشتیبانی می‌کنند.

مناطق قابل رشد از نوعی مدیریت حافظه دستی ایمن پشتیبانی می‌کنند.

جمع آوری زباله برای مقادیر تخصیص داده شده به پشته

اتحادیه‌های برچسب گذاری شده از آرگومان‌های متغیر پشتیبانی می‌کنند.

تزریق‌ها به استفاده خودکار از اتحادیه‌های برچسب گذاری شده برای برنامه نویسان کمک می‌کند.

چند ریختی جایگزین برخی از کاربردهای * void می‌شود.

varargs به عنوان نشانگرهای چاق پیاده‌سازی می‌شوند.

استثناها جایگزین برخی از کاربردهای setjmp و longjmp می‌شوند.

Cyclone، به‌طور کلی، بسیار شبیه به C است، اما باید به عنوان یک زبان شبه C در نظر گرفته شود.

انواع اشاره‌گرها 
Cyclone سه نوع اشاره گر را پیاده‌سازی می‌کند:

* نوع معمولی

@ نشانگر never-NULL، و

? تنها نوع با اشاره گر محاسباتی مجاز، نشانگرهای "fat"

منابع 

زبان‌های برنامه‌نویسی خانواده سی