پیش‌نویس:فری پاسکال

از ویکی‌پدیا، دانشنامهٔ آزاد

این مقاله در حال ترجمه از ویکی پدیا انگلیسی است، لطفا حذف نشود.

فری پاسکال
FPC ۳٫۱٫۱ در ویندوز
FPC ۳٫۱٫۱ در ویندوز
توسعه‌دهنده(ها)Florian Klämpfl & volunteers
انتشار ابتدایی۱۹۹۷؛ ۲۵ سال پیش (۱۹۹۷)
انتشار پایدار
۳٫۲٫۲
۲۰ مه ۲۰۲۱؛ ۸ ماه پیش (۲۰۲۱-۰۵-20)
انتشار آزمایشی
۳٫۳٫۱
نوشته‌شده باآبجکت پاسکال
سیستم‌عاملنرم‌افزار چندسکویی، سامانه تعبیه‌شده
گونهکامپایلر، سیستم عامل تعبیه‌شده
پروانهپروانه عمومی همگانی گنو برای کامپایلر و فایل‌های اجرایی کاربردی. GNU General Public License with static linking exception for the runtime, package, component and other libraries that become part of executables created with the compiler
وبگاه

[[:رده:کامپایلر ]]کامپایلر فری پاسکال (FPC) یک کامپایلر برای گویش‌های زبان برنامه‌نویسی نزدیک به پاسکال و آبجکت پاسکال است. این کامپایلر، نرم‌افزار رایگانی است که تحت پروانه عمومی همگانی گنو منتشر شده‌است، با بندهای استثنایی[[۱]] که اجازه می‌دهد پیوند ایستا با کتابخانه‌ها و بسته‌های زمان اجرای آن برای هر منظوری در ترکیب با هر مجوز نرم‌افزار دیگری ایجاد شود. این گویش از گویش آبجکت پاسکال و همچنین گویش‌های چندین کامپایلر خانواده پاسکال تا حدی پشتیبانی می‌کند، از جمله گویش‌های Borland Pascal (تا نسخه 6 1990 "توربو پاسکال"), Borland (بعدها Embarcadero) دلفی، و برخی از کامپایلرهای تاریخی مکینتاش. گویش بر اساس هر واحد (ماژول) انتخاب می‌شود و در هر برنامه می‌توان از بیش از یک گویش استفاده کرد. این کامپایلر، فلسفه‌ی «یکبار بنویس،هر جا کامپایل کن»را دنبال می‌کند و برای بسیاری از معماری‌ها و سیستم عامل‌های CPU در دسترس است. از زبان اسمبلی درون خطی پشتیبانی می‌کند و شامل یک اسمبلر داخلی است که قادر به تجزیه چندین گویش مانند AT&T و سبک اینتل است. پروژه‌های جداگانه ای برای تسهیل توسعه برنامه‌های کاربردی رابط کاربر گرافیکی (GUI) وجود دارد که برجسته‌ترین آنها محیط توسعه یکپارچه (IDE) لازاروس است.

گویش های تحت پشتیبانی[ویرایش]

در ابتدا، فری پاسکال از گویش استاندارد برنامه‌نویسان پاسکال، یعنی Borland Pascal، استفاده کرد. اما بعدها به آبجکت پاسکال دلفی روی آورد. از نسخه‌ی ۲.۰ به بعد سازگاری دلفی به کار برده شده یا بهبود یافته است. این پروژه مفهوم حالت کامپایل کردن دارد و توسعه دهندگان برنامه نویسی وصله های کاربردی برای گویش های استاندارد شده‌ی مؤسسه استاندارد ملی آمریکا (ANSI) و سازمان بین المللی استانداردسازی (ISO) را با هم ترکیب خواهند کرد تا به حالتی مطابق با استانداردها برسند. در این زمینه، تلاش هایی انجام شده است تا برخی از سینتکس های پاسکال اپل نیز تحت پشتیبانی قرار گیرند تا راحت تر با سیستم عامل های مک‌اواس کلاسیک و مک‌اواس ارتباط برقرار کنند. گویش اپل یک سری ویژگی های استاندارد پاسکال را پیاده‌سازی می‌کند که هر دوی توربو پاسکال و دلفی آن ها را حذف کردند. نسخه 2.2.x تفاوت چشمگیری در اهداف گویشی، با سطح سینتکس دلفی ۷ نداشت، در عوض بیشتر بر روی سازگاری آن تمرکز کرد.یک استثنای قابل توجه در این مورد، اضافه شدن پشتیبانی از Generics به فری پاسکال در نسخه 2.2.0 بود، چندین سال قبل از اینکه دلفی از هر ظرفیتی پشتیبانی کند. در سال ۲۰۱۱، چندین ویژگی خاص دلفی-۲۰۰۶ در بخش مربوط به توسعه‌، به فری پاسکال اضافه شد و کارهای اولیه برای ویژگی‌های جدید دلفی-۲۰۰۹ (به ویژه افزودن نوع UnicodeString) انجام شد. در شاخه‌ی توسعه همچنین یک بسط objective-pascal برای واسط آبجکتیو-سی (کاکائو) وجود دارد. در نسخه ۲.۷.۱، فری پاسکال حالت پایه ایزو پاسکال را پیاده‌سازی کرد، در حالی که همچنان بسیاری از موارد مانند رویه‌های get و put و همچنین مفهوم متغیر فایل-بافر در مدیریت فایل ها، وجود نداشت. از نسخه ۳.۰.۰،حالت ایزو پاسکال تکمیل شد و این گامپایلر بدون تغییری قادر است که زبان استاندارد پاسکال P5 را کامپایل کند.


تاریخچه[ویرایش]

سال‌های اولیه


ایده‌ی ساخت فری پاسکال زمانی مطرح شد که بورلند تأیید کرد که از نسخه ۷، دیگر Borland Pascal برای سیستم ام‌اس-داس توسعه نمی یابد تا با یک زبان فقط برای ویندوز جایگزین شود، که بعدها دلفی نامیده شد. فلورین پل کلمپفل، که در آن زمان دانشجو بود، خود اقدام به نوشتن کامپایلری در گویش توربو پاسکال کرد و یک کد ۳۲ بیتی برای بسط دهنده ام‌اس-داس GO32v1 تولید کرد که در آن زمان توسط پلتفرم برنامه نویسی DJ گنو مورد استفاده قرار گرفت و توسعه یافت. در واقع، این کامپایلر یک فایل اجرایی ۱۶ بیتی داس بود که توسط گویش توربو پاسکال کامپایل شده بود. بعد از دو سال، این کامپایلر توانست خودش را کامپایل کند و به یک فایل اجرایی ۳۲ بیتی تبدیل شد.

گسترش


نسخه اولیه‌ی ۳۲ بیتی ابتدا در اینترنت منتشر شد و اولین مشارکت کنندگان به این پروژه اضافه شدند. کمی بعد، یک درگاه لینوکس توسط مابکل ون کنیت ایجاد شد، پنج سال قبل از این که کامپایلر Borland کیلیکس پاسکال برای لینوکس در دسترس قرار گیرد، درگاه DOS برای استفاده در OS/2 با استفاده از Eberhard Mattes eXtender (EMX) سازگار شد که OS/2 را به دومین هدف پشتیبانی شده برای کامپایل تبدیل کرد. علاوه بر فلورین کلمپفل، نویسنده‌ی اصلی یعنی دنیل منتیونی نیز کمک قابل توجهی، با فراهم کردن درگاه اصلی کتابخانه‌ زمان اجرا برای OS/2 و EMX، به تحقق این امر کرد. کامپایلر به تدریج بهبود پیدا کرد و نسخه‌ی DOS به توسعه‌دهنده‌ی GO32v2 منتقل شد. این نسخه با نسخه 0.99.5 به اوج خود رسید که بسیار گسترده تر از نسخه های قبلی مورد استفاده قرار گرفت و آخرین نسخه‌ای بود که فقط کامپایل کردن مطابق با Borland Pascal را هدف قرار می داد. نسخه‌های بعدی با دلفی نیز سازگار شدند. این نسخه همچنین به سیستم‌هایی با پردازنده های خانواده موتورولا ۶۸۰۰۰ (m68k) منتقل شد. با انتشار 0.99.8 Win32 اضافه شد و شروع آن با ترکیب برخی از ویژگی های دلفی زده شد. تثبیت آن برای نسخه غیربتا آغاز شد و نسخه ۱.۰ در ژوئیه ۲۰۰۰ منتشر شد. سری 1.0.x به طور گسترده در تجارت و آموزش مورد استفاده قرار گرفت. برای نسخه‌های 1.0.x، پورت 68k CPU دوباره ساخته شد و کامپایلر کد پایداری برای چندین سیستم‌عامل 68k یونیکس و آمیگااواس تولید کرد.

نسخه 2


در طی تثبیت چیزی که بعدها به نسخه 1.0.x تبدیل شد، و همچنین هنگام انتقال به سیستم‌های موتورولا 68k، مشخص شد که طراحی مولد کد در بسیاری از جنبه‌ها بسیار محدود است. مشکلات اصلی این بود که افزودن پردازنده‌ها، به بازنویسی مولد کد منجر می شد و تخصیص رجیستر بر این اصل بود که همیشه سه رجیستر آزاد بین بلوک‌های ساختمان نگه داشته شوند، که غیرقابل انعطاف و نگهداری آن دشوار بود. به این دلایل، سری 1.1.x از شاخه اصلی 1.0.x در دسامبر ۱۹۹۹ منشعب شد. در ابتدا، تغییرات عمدتاً پاکسازی و بازنویسی-طراحی مجدد تمامی قسمت های کامپایلر بود. مولد کد و تخصیص ثبات ها نیز بازنویسی شدند. همه‌ی طراحی ها و ویژگی های باقی مانده اضافه شدند تا کامپایلر با دلفی سازگار شود. کار روی 1.1.x به آرامی اما پیوسته ادامه یافت. در اواخر سال ۲۰۰۳، یک درگاه PowerPC فعال در دسترس قرار گرفت، به دنبال آن یک درگاه ARM در تابستان ۲۰۰۴، یک درگاه SPARC در پاییز ۲۰۰۴، و یک درگاه x86-64-AMD64 در اوایل سال ۲۰۰۴، که کامپایلر را برای یک پلتفرم ۶۴ بیتی در دسترس قرار داد. در نوامبر ۲۰۰۳، اولین نسخه بتا از شاخه 1.1.x بسته بندی شد و شماره 1.9.0 به آن داده شد. این نسخه به سرعت توسط نسخه های 1.9.2 و 1.9.4 دنبال شد. دومی پشتیبانی از OS X را معرفی کرد. کار با نسخه‌های 1.9.6 (ژانویه ۲۰۰۵)، 1.9.8 (اواخر فوریه ۲۰۰۵)، 2.0.0 (مه ۲۰۰۵)، 2.0.2 (دسامبر ۲۰۰۵)، و 2.0.4 (اوت ۲۰۰۶) ادامه یافت.

نسخه 2.2.x


در سال 2006، برخی از کارهای اصلی برنامه ریزی شده برای 2.2، مانند بازنویسی سیستم واحد، هنوز آغاز نشده بود، و تصمیم گرفته شد که به جای آن، تثبیت ویژگی های قبلاً پیاده‌سازی شده، آغاز شود. برخی از انگیزه‌های این تغییر در تصمیم‌گیری، نیازهای پروژه محیط توسعه یکپارچه لازاروس، به ویژه رابط داخلی، پشتیبانی از Win64، Windows CE و OS X در x86 و ویژگی‌های مرتبط مانند DWARF بود. پس از نسخه های بتا 2.1.2 و 2.1.4، نسخه 2.2.0 در سپتامبر ۲۰۰۷ منتشر شد و پس از آن نسخه 2.2.2 در اوت ۲۰۰۸ و نسخه 2.2.4 در مارس ۲۰۰۹ منتشر شد. سری 2.2.x پشتیبانی از واسط ActiveX و Component Object Model (COM) و Object Linking and Embedding (OLE) را بهبود بخشید، اگرچه اشکالاتی هنوز در آن یافت می شد. تفویض اختیار به واسط (interface) با استفاده از کلیدواژه Implements تا حدی پیاده‌سازی شد، اما تا مارس ۲۰۱۱ کامل نشد. پشتیبانی کتابخانه از ActiveX نیز بهبود یافت. یکی دیگر از ویژگی‌های مهم، پیونددهنده داخلی برای Win32، Win64 و Windows CE بود که زمان پیوند و استفاده از حافظه را بسیار بهبود بخشید و چرخه کامپایل-لینک-اجرا را در لازاروس بسیار سریع‌تر کرد. کارایی پیوند هوشمند یا حذف کد مرده نیز بهبود یافت. ویژگی‌های جدید جزئی شامل پشتیبانی از فرمت اشکال زدایی DWARF (2/3) و بهینه‌سازی‌هایی مانند بازگشت مجدد، حذف فریم‌های پشته‌ای غیرضروری و بهینه‌سازی حذف زیرعبارت رایج مبتنی بر ثبات (CSE) بود. اولین پشتیبانی از پیاده‌سازی برنامه‌نویسی عمومی (generics) نیز در دسترس قرار گرفت، اما فقط به صورت آزمایشی.

نسخه 2.4.x


اهداف سری نسخه‌های 2.4.x نسبت به نسخه‌های قبلی مجموعه، کمتر روشن بودند. بازنویسی سیستم واحد دوباره به تعویق افتاد و شاخه‌ای که به 2.4 تبدیل شد، برای حفظ تعهدات مخاطره آمیز 2.2، در راستای تثبیت آن ایجاد شد. بیشتر این تعهدات مخاطره آمیز شامل بهبودهایی در پلتفرم های جدید، Mac PowerPC 64، Mac x86-64، iPhone، و بسیاری از اصلاحات در معماری های ARM و x86-64 به طور کلی، و همچنین DWARF بود. سایر پیشرفت‌های کامپایلر، شامل بهینه‌سازی کل برنامه (WPO) و غیر مجازی‌سازی و پشتیبانی از واسط باینری برنامه‌های تعبیه‌شده ARM (EABI) بود. بعداً، در طول چرخه 2.2، یک منبع پشتیبانی که بیشتر شبیه دلفی بود (بر اساس بخش‌های ویژه باینری به جای ثابت‌های پاسکال) اضافه شد. این ویژگی که به شدت مورد نیاز لازاروس بود، به نقطه‌ی برجسته اصلی این شاخه تبدیل شد. دیگر افزوده‌های جزئی‌تر شامل یک مدیر حافظه بود که عملکرد مدیریت پشته را در محیط‌های نخی بهبود بخشید، بهبود‌های کوچکی در سازگاری دلفی مانند OleVariant و نماینده رابط ایجاد شد. در اول ژانویه ۲۰۱۰، نسخه ۲.۴.۰ فری پاسکال منتشر شد، به دنبال آن در ۱۳ نوامبر ۲۰۱۰، نسخه اصلاح شده ۲.۴.۲ با پشتیبانی از حلقه for، کلاس‌های مهر و موم شده و انتزاعی و تغییرات دیگر عرضه شد.

نسخه 2.6.x


در ژانویه ۲۰۱۲، فری پاسکال ۲.۶ منتشر شد. اولین نسخه از این سری ۲.۶ آبجکتیو پاسکال را در سیستم‌های OS X و iOS نیز پشتیبانی می‌کردند و بسیاری اصلاحات و بهبودهای کوچک در آن پیاده‌سازی شد. در فوریه ۲۰۱۳، فری پاسکال ۲.۶.۲ منتشر شد. این سری شامل نسخه‌های NetBSD و OpenBSD برای اولین بار از زمان 1.0.10 بود اما این بار بر اساس درگاه‌های تازه. در مارس ۲۰۱۴، آخرین نسخه از سری ۲.۶، ۲.۶.۴، راه اندازی شد که عمدتاً شامل به روز رسانی‌های پایگاه داده (fcl-db) بود.

نسخه 3.0.x


نسخه ۳.۰.۰ در ۲۵ نوامبر ۲۰۱۵ منتشر شد و اولین نسخه اصلی از زمان انتشار در ۱ ژانویه ۲۰۱۲ بود و این سری، بسیاری از ویژگی‌های زبان جدید را معرفی کرد. نسخه ۳.۰.۲ در ۱۵ فوریه ۲۰۱۷ منتشر شد و شامل رفع اشکال و به روز رسانی های جزئی کامپایلر بود. نسخه ۳.۰.۴ در ۲۸ نوامبر ۲۰۱۷ منتشر شد. این نسخه، شامل بسیاری از پیشرفت‌های زبانی نسبت به نسخه‌های قبلی، از جمله پیوند دهنده داخلی برای فرمت اجرایی و پیوند پذیر (ELF)، Arm AARCH64 برای iOS و لینوکس، پلتفرم احیا شده i8086، کتابخانه‌های توسعه‌یافته و موارد دیگر بود.

نسخه x.3.2


نسخه اصلی بعدی، نسخه ۳.۲.۰، در ۱۹ ژوئن ۲۰۲۰ منتشر شد. بسیاری از ویژگی‌های زبانی جدید، از جمله روتین‌های عمومی، فضای نام استاندارد، رکوردهای مدیریت شده و قابلیت‌های گسترده برای آرایه ‌پویا، علاوه بر ظهور واحدهای استاندارد جدید و پشتیبانی از پلتفرم‌های اضافی را معرفی کرد.

محیط‌های توسعه یکپارچه[ویرایش]

مانند اکثر کامپایلرهای مدرن، فری‌پاسکال را می توان با یک محیط توسعه یکپارچه (IDE) استفاده کرد. علاوه بر IDE های مستقل، پلاگین هایی نیز برای IDE های موجود وجود دارد:

  • فری پاسکال دارای IDE حالت متنی، شبیه IDE توربو پاسکال است، که با استفاده از چارچوب نرم‌افزاری free vision ساخته شد که یک کلون turbo vision است. علاوه بر بسیاری از ویژگی‌های IDE توربو پاسکال، دارای تکمیل کننده کد و پشتیبانی از چندین فرمت فایل راهنما (HTML، Microsoft Compiled HTML Help (CHM)، امکانات ارائه اطلاعات (IPF)) است. به جای استفاده از ابزارهای خط فرمان، IDE از کامپایلر تعبیه شده خود، بر اساس همان منبع کامپایلر خط فرمان و دیباگر (با استفاده از libgdb یا GDBMI) برای ارائه عملکرد خود استفاده می کند.
  • لازاروس محبوب‌ترین IDEای است که توسط برنامه‌نویسان فری پاسکال استفاده می‌شود. ظاهر و حس کار کردن با آن شبیه به IDE دلفی است و می‌توان از آن برای ایجاد برنامه‌های کنسولی و گرافیکی، سرویس های ویندوز، دیمون ها و برنامه‌های وب استفاده کرد. لازاروس یک چارچوب نرم‌افزاری رابط کاربری چندسکویی به نام کتابخانه اجزای لازاروس (LCL) ارائه می‌کند. برنامه‌های گرافیکی ایجاد شده با LCL را می‌توان از طریق کامپایل مجدد یا کامپایل متقابل به پلتفرم دیگری منتقل کرد.
  • Dev-Pascal یک IDE رایگان فقط برای Windows برای فری پاسکال و گنو پاسکال است که پس از نسخه 2004 FPC و نسخه GPC 2005 توسعه بیشتری ندارد.

مرجع[ویرایش]

[۱]

  1. https://en.wikipedia.org/wiki/Free_Pascal