معرفی PHP نسخه 8.0
۵ مرداد ۱۳۹۹

PHP7 برای توسعهدهندگان بسیار جذاب بوده است، پیشرفتهای بسیار زیادی نسبت به PHP5 داشته و در مورد سرعت و عملکرد آن صحبت شدهاست. همچنین بسیاری از نیازهای مورد انتظار توسعهدهندگان در بخش تجربه کاربری را برآورده کرده است.
بااینحال، اگر بگوییم که هیچ زبانی عالی و کامل نیست، اشتباه نگفتهایم و هر زبانی نیاز به بهروزرسانیهای مختلف دارد. بنابراین وقتی صحبت از PHP نسخه 8 شود، انتظار کاربران بسیار زیاد است. یکی از چیزهایی که توسعهدهندگان دوست دارند در PHP8 ببینند، حرکت به سمت ویژگیهای real-time است. به این دلیل که این ویژگی به شما کمک میکند تا نیازی به استفاده از زبانهای دیگر در پروژه خود، بخاطر ویژگی real-time نداشته باشید.
با توجه به فواید قابلیت real-time، اینترنت به سمت این قابلیت در حال حرکت است و کاربران میخواهند محتوا را سریعتر دریافت کنند. تعداد کمی از زبانهای برنامهنویسی مانند JavaScript به کمک Node.js یا Python با Tornado، دارای ویژگی real-time هستند، اما PHP هنوز حرفی برای گفتن ندارد. خب با توجه به اطلاعیهها میتوان گفت که PHP در نسخه 8 خود با افزودن قابلیت JIT (Jist-in-Time)، با این موضوع درگیر شده است.
بیایید ابتدا با معرفی مختصری از PHP و نسخههای قبلی این زبان، آن را بهتر درک کنیم.
زبان برنامهنویسی PHP
PHP مخفف عبارت Hypertext Preprocessor، به عنوان یک پروژه متنباز کوچک شروع به کار کرد، سرانجام تکامل یافت و افراد بیشتری از فواید این زبان آگاه شدند. در سال 1994، Rasmus Lerdorf، برنامهنویسی کانادایی-دانمارکی اولین نسخه PHP را رونمایی کرد. PHP، یک زبان برنامهنویسی تعبیه شده (embedded) در HTML و سمت سرور است که امروزه بسیار محبوب شده.
از این زبان برای مدیریت محتوای پویا، session tracking، دیتابیس و حتی ساخت سایتهای تجارت الکترونیک، استفاده میکنند همچنین با دیتابیسهای محبوبی مانند MySQL, Oracle, PostgreSQL, Sybase, Microsoft SQL Server و Informix هماهنگ شده است.
PHP به خصوص زمانی که به عنوان ماژول Apache در سمت یونیکس کامپایل شد، اجرای موفقی از خود به نمایش گذاشت. در شروع کار با MySQL server هم کوئریهای پیچیدهای را در حجم زیادی از دادهها در مدت زمان کوتاهی اجرا کرد.
علاوه بر اینها از پروتکلهای IMAP, POP3 و LDAP پشتیبانی میکند. برای اولین بار، توسعه N-Tier در PHP قابل انجام شدن بود و در PHP4 پشتیبانی از Java و معماری توزیع شده آبجکت (COM و CORBA) را فراهم کرد. همچنین سینتکس برنامهنویسی شبیه زبان C را داراست.
چیز دیگری که در رابطه با این زبان وجود دارد، راحتی استفاده از آن است زیرا نه تنها توسعهدهندگان پیشرفته بلکه تازهکارها هم میتوانند از آن استفاده کنند. باید بگوییم این زبان برای توسعهدهندگان حرفهای هم ویژگیهای جالبی را با خودش به همراه داشته است.
نسخههای قبلی PHP تا به امروز
از گذشته تا به امروز، نسخههای مختلفی عرضه شدهاند، در این قسمت نسخههای پیشین این زبان را که در حال حاضر در دسترس هستند و اینکه تا چه زمانی در توسعه استفاده میشدهاند را بررسی میکنیم.
1.0 هشتم ژوئن سال 1995
2.0 یکم نوامبر 1997
3.0 ششم ژوئن 1998 تا بیست اکتبر 2000
4.0 بیستودوم می 2000 تا بیستوسوم ژوئن 2001
4.1 ده دسامبر 2001 تا دوازدهم مارس 2002
4.2 بیستودوم آوریل 2002 تا ششم سپتامبر 2002
4.3 بیستوهفتم دسامبر 2002 تا سیویکم مارس 2005
4.4 یازدهم ژوئیه 2005 تا هفتم آگوست 2008
5.0 سیزدهم ژوئیه 2004 تا پنج سپتامبر 2005
5.1 24 نوامبر 2005 تا 24 آگوست 2006
5.2 2 نوامبر 2006 تا ششم ژانویه 2011
5.3 30 ژوئن 2009 تا 14 آگوست 2014
5.4 1 مارس 2012 تا 3 سپتامبر 2015
5.5 20 ژوئن 2013 تا 21 ژوئیه 2016
5.6 28 آگوست 2014 تا 31 دسامبر 2018
7.0 3 دسامبر 2015 تا 3 دسامبر 2018
7.1 1 دسامبر 2016 تا اول دسامبر 2019
7.2 30 نوامبر 2017 تا 30 نوامبر 2020
7.3 ششم دسامبر 2018 تا دسامبر 2021
قابلیت Just In Time (JIT) در PHP 8.0
هنوز هیچ اطلاعاتی کاملی در مورد ویژگیهای آتی PHP 8.0 در دست نیست. با این وجود، احتمال اضافه شدن JIT در نسخه 8.0 PHP وجود دارد. برای درک بهتر JIT در PHP باید خلاصهای از آن بگوییم. just in time قابلیتی برای بهینهسازی کد اجرایی به هنگام کامپایل است.
این روش محبوب در جاوا با JVM یا همان ماشین مجازی جاوا و در V8 JavaScript VM هم که توسط گوگل ارائه شده و همچنین HHVM وجود دارد. پس اصطلاحا میتوان گفت، JIT گلوله نقرهای نیست (اشاره به خاص نبودن افزوده شدن این قابلیت)، زیرا هر دوی این زبانها از قبل از آن استفاده میکردهاند.
قبل از تکمیل شدن نسخه فعلی PHP 7.x، توسعه PHP بر روی بهبود عملکرد این زبان با استفاده از JIT متمرکز شده بود. این تلاش باعث بهبود چشمگیر رتبه در benchmarkها شد، با این حال ثابت شده است که پیشرفتهای جزئی باعث ارتقا برنامههای واقعی مانند Joomla و WordPress شده است. با توجه به پیشرفتهایی که در PHP نسخه 7.0 ارائه شد، عملکرد در PHP نسخههای 7.1 و 7.2 نسبتا متوسط شده و به همین دلیل تیم توسعه PHP دوباره شروع به کار بر روی پیادهسازی JIT کردند. هیچ تحلیل عمیقی از JIT در پروژههای PHP وجود ندارد، اما نتایج دلگرم کنندهای با خود به همراه دارد.
مقدمه مختصری از JIT (Just-in-Time Compilation)
در محاسبات، اجرای کدهای کامپیوتر که شامل کامپایل در طول اجرا (به هنگام اجرا یا run time) و نه قبل از اجرا، just-in-time میگویند (همچنین ترجمه پویا یا کامپایل run-time نامیده میشود).
به کمک این قابلیت سورسکد برنامه ما یا به عبارت دیگر bytecodeها به کدهای ماشین ترجمه میشوند و اجرای آنها به صورت مستقیم انجام میشود. سیستم پیاده سازی شده کامپایلر JIT به طور مداوم کدهای در حال اجرا را آنالیز میکند.
چرا JIT در PHP معرفی شده است؟
همانطور که قبلا اشاره کردیم، HHVM (رانتایم جایگزینی که توسط فیسبوک توسعه داده شده و از آن استفاده میکند) از JIT استفاده میکند و در مقایسه با موتور رسمی PHP، سریعتر و بهتر است.
بنابراین، به دلیل محبوبیت شدید HHVM یا تقاضای زیاد جامعه PHP در سراسر جهان، مجدداً نظرها به JIT Engine، جلب شد و گروههای توسعه Zend و PHP تصمیم گرفتند که این قابلیت را در نسخه 8.0 PHP معرفی کنند.
اگر کدهایی که در PHP5 نوشته شدهاند را بدون هیچ تغییری با PHP7 اجرا کنید، عملکرد دو برابر میشود. این تغییر عملکرد به دلیل تغییر در موتور PHP نبوده بلکه بهینه سازیهای دیگری در PHP7 انجام شده. از این رو میتوانیم باور داشته باشیم، که مطمئنا بهروزرسانی در موتور PHP، باعث بهبود عملکرد در قسمتهای مختلفی شود. همانطور که از استانداردهای HHVM میدانیم، سطح عملکرد میتواند دو برابر شود یا به عبارت دیگر زمان اجرای برنامههایی که با PHP7 نوشته شدهاند، نصف میشوند.
به عبارت دیگر برای کامپایل در زمان اجرای برنامه یا رانتایم، Jit یا Just-in-Time یکی از بهترین راهحلهای این کار است زیرا قبل از اجرا نیازی به پرداختن به بحث کامپایل نیست و در مواردی که زمان بسیاری مصرف میشود، این گزینه اهمیت بیشتری پیدا میکند. که میتوان آن را یک عملیات کامپایل پویا دانست که نتیجههای سریعتری را در مقابل کامپایل کدها قبل از اجرا، ارائه میدهد.
از آنجایی که بسیاری از فریمورکهای Java و .NET با JIT پیاده سازی شدهاند، خوب است که PHP هم در قدمهای بعد خود از مزیتهای کامپایل پویا و عملکرد بهتر آن استفاده کند.
برای درک بهتر این موضوع، به بررسی جزئی دلایل میپردازیم.
۱) PHP در تکامل خود با مانع روبرو شده است
از آنجایی که در PHP 7.0 بسیاری از پیشرفتهای مورد نیاز انجام شدهاند، مانند بهینهسازی HashTable، تخصصیتر شدن کامپایلر برای بعضی توالیها، خاصتر شدن Zend VM برای کدهای خاص (OpCodes) و …
با این پیشرفتها، PHP توانایی بیشتری برای ایجاد تغییرهای بزرگتر بوجود آورده است.
۲) PHP برای سناریوهای غیر از وب
پس از افزوده شدن JIT به PHP، امکان استفاده از آن در سناریوهایی که حتی امروزه درنظر گرفته نمیشوند، فراهم میشود. در سناریوهای غیر از وب یا سناریو CPU-intensive یا به خصوص در مواردی که عملکرد بسیار ضروری باشد.
۳) پیادهسازی ایمنتر، نوآوریهای سریعتر
به دلیل پشتیبانی از JIT، تیم توسعه میتوانند توابع داخلی را به زبان PHP، بهجای زبان C بدون از دست رفتن عملکرد، ایجاد کنند. PHP با استفاده از مزیتهای JIT، میتواند با مشکلهای کمتری در overflow، مدیریت حافظه و سایر موارد مشابهی که در زبان C اتفاق میافتد، روبرو شود.
برنامههای PHP، چگونه کامپایل میشوند؟
برای این کار یک ماشین مجازی بهنام Zend VM وجود دارد. اسکریپتهای قابل خواندن توسط انسان را به دستوراتی که آن را OpCodes میشناسند، تبدیل میشود که این کدها برای ماشین مجازی قابل درک است.
دستورهای کامپایل شده یا همان OpCodeها، در مقایسه با کدهای اصلی PHP برای ترجمه شدن به کدهای ماشین، سریعتر هستند زیرا این دستورات سطح پایین (low-level) به شمار میآیند. این مرحله در زمان کاپایل، execution stage خوانده میشود. اجرای این دستورات کامپایل شده که گفتیم OpCodes نام دارند، توسط Zend Vm در runtime stage انجام میپذیرد.
تاریخ انتشار PHP 8.0
با توجه به روند بهروزرسانیهای قبلی PHP، چند سال زمان میبرد تا تیم توسعه PHP یک نسخه جدید را ارائه دهند. آخرین نسخه Major زبان PHP درDecember سال 2015 ارائه شده است اگرچه هر سال چند آپدیت جزئی (minor) مانند 7.0، 7.1، 7.2 ارائه میشود میتوانیم بگوییم که بهروزرسانی Major بعدی همان PHP 8.0 خواهد بود.
اگر درمورد نسخههای minor و Major چیزی نمیدانید، مقاله: نسخهگذاری معنادار (Semantic Versioning) چیست و چرا باید از آن استفاده کنیم؟ به شما کمک میکند.
PHP نسخه 8 در تاریخ 26 November سال 2020 یا به تاریخ شمسی خودمان، ششم آذرماه سال 1399 انتشار پیدا میکند.
نتیجهگیری
یکی از مهمترین مزیتهای PHP این است که هم در سیستمهای لینوکسی و هم در وبسرورهای ویندوزی اجرا میشود. احتمال دارد که این زبان مدت زمان زیادی در اکوسیستم ساخت وب بماند. این زبان در فهرست TIOBE در رتبه هشتم قرار گرفته است و این نشانگر علاقه توسعهدهندگان به این زبان است.
براساس گزارشهای ماهانه Netcraft، حضور این زبان بیشتر در میان وب سرورهای Nginx (29 درصد)، Microsoft (19 درصد) و Apache (29 درصد) بوده است.
منبع: https://www.covetus.com/blog/php-80-the-upcoming-version-of-php-and-the-inclusion-of-jit