It’s been a fruitful year, as we take a look back at 2018 to see what we achieved and forward to 2019 to set our sights on bigger and better things.
Compatibility with PHP
The main theme of this year was to close the gap in missing functionalities of PHP in PeachPie. The goal is to be virtually entirely compatible with the standard PHP code, and we made great progress towards this objective in 2018. Among others, in 2018 we implemented the support for traits,
yield from, .NET generics, custom attributes, PHPDoc and many more functionalities. There aren’t too many more PHP features and extensions left for us to implement, as you can see in our Compatibility overview.
First performance benchmarks
As we’ll discuss later, performance will be a major theme of 2019, but we have already put PeachPie to the test a little. In our first WordPress benchmark all the way back in January, we did reasonably well against PHP with opcache turned off, and we also added PeachPie to the well-respected TechEmpower web framework benchmarks. So far, PeachPie is faring particularly well in some of these tests, and we believe the others are mostly just a matter of correct configuration.
Another benefit of running on ASP.NET Core is the amazing response caching middleware this framework brings to the table. Combined with the lightweight and extremely fast Kestrel web server, we can really offer some phenomenal out-of-the box performance enhancing tools.
Building on Andrey Shchekin’s TryRoslyn project, we are able to offer a really nice playground for anyone that’s interested in PeachPie.
try.peachpie.io allows you to paste PHP code and instantly dive into how the compiler sees it. In real time, you’ll get the diagnostics PeachPie offers, as well as the output in IL, C# or Syntax Tree. This online REPL allows you to quickly test snippets of your code and check what the compiler thinks of it; in fact, we often use it ourselves to diagnose code quickly and check the resulting IL.
MediaWiki on .NET
Definitely not as popular of an application as WordPress, but MediaWiki was the second major real-world PHP program we set our sights on. We were able to compile and run an unmodified version of the popular application that powers Wikipedia in February. We wrote a very detailed tutorial on how to run MediaWiki on .NET Core, and we really suggest taking a look at it to see how to bypass some common minor issues in order to get your apps to run on PeachPie more quickly. You can also watch the quick overview video below:
Peachpie.io runs on PeachPie
In March, we finally put our money where are mouth is and compiled our WordPress website to run on PeachPie, and therefore on .NET. As a result, you can now see our request headers, which indicate that we’re running on ASP.NET using the Kestrel web server and PeachPie:
Since moving over to PeachPie, we’ve had zero downtime (aside from one day, during which one of our other resources caused our entire Azure subscription to go down) and the ASP.NET Core response caching is definitely visibly powerful. As a matter of fact, we’ve recently moved over to our first product built on top of the PeachPie technology: WPdotNET. But more on that later.
Enhanced interop possibilities
2018 was also about improving our interoperability options between PHP and .NET. For example, we explored how to render PHP files within Razor Views, or how to render Razor Partials on a PHP page. Towards the tail end of the year, we also implemented .NET generics and custom attributes for even more interoperability options. To demonstrate the possibilities we get by compiling PHP to .NET Core, we also did a small POC of a tiny app written mostly in PHP running on an Android phone via Xamarin.
We also focused on improving our documentation and error messages. As a result, we launched docs.peachpie.io. While this is by no means a finished product and plenty of sections are still on our TODO list, we certainly put a lot of effort into ensuring that PeachPie is better documented than before.
Visual Studio Extension
It’s been long overdue for us to offer an easier way of working on the full Visual Studio IDE. We’ve had an extension into VS Code for years now, but we finally got around to creating one for Visual Studio as well.
The extension currently supports only basic features, such as project templates and the set .NET tooling: diagnostics, debugging, dependencies and publishing to the cloud. However, in the future we will focus heavily on improving the extension and offering a more complete development experience with PeachPie.
PHP on Android
Designed as a proof of concept, Jan Pavlovsky from our core development team published a great tutorial on how to run a simple PHP app on an Android phone via Xamarin. Note that with the implementation of .NET generics and custom attributes, the process is now significantly easier than what’s described in the article.
Conferences & speaking engagements
This year, we had numerous presentations and conference attendances. To name a few examples, we exhibited at Web Summit in Lisbon, spoke at phpCE and Update Conference in Prague, as well as .NET Conf. Next year, we plan on ramping up our conference appearances; the first couple of engagements that are already fixed are a smaller meetup in Prague in January and DeveloperWeek in Oakland, CA in February.
So much for a look back at the last year, but what do we have in store for 2019? With a project like ours, it’s virtually impossible to commit or predict, since so many external factors can influence our direction; however, there are certainly a few things we plan on achieving.
Not surprisingly, it’s about time to ship the first production-ready version of PeachPie in 2019. Not much is left, just a few libraries, architectural improvements and functions and we’ll be confident enough to release 1.0.
2019 will be heavily about increasing the performance of both the compiler and the runtime. Until now, we implemented everything in a very quick and dirty manner, focusing primarily on being compatible with PHP and supporting a few real-world apps. As a result, many constructs are implemented sub-optimally, which causes PeachPie’s performance to suffer. We will now shift our focus on optimizing and cleaning up the code in order to boost the performance compared to the ever-improving speed of PHP.
We’re particularly excited to ship our first tool that provides a managed and fully configured solution running on PeachPie: WPdotNET (as we call it right now). The service is currently being tested in a private beta and will be out for public testing rather soon. It will offer a hassle-free completely pre-configured instance of WordPress running on .NET Core with a few bonus features:
- One-click cloud deployment
- Our own marketplace with verified & secure plugins
- Seamless background updates
- A plugin installation mechanism just like in standard PHP
- An API for extending WordPress in C#
In fact, as suggested earlier in the article, our own website is already running on WPdotNET. Stay tuned for an announcement regarding this service, which will be hosted over at wpdotnet.com.
Major frameworks & app support
We will certainly do our best to implement missing functionalities and libraries required by major frameworks, such as Laravel or Symfony, or other PHP applications, like Drupal. Our goal is to actually support at least one of these by the time we ship PeachPie 1.0, but we definitely intend on getting these to run before the year’s end.
We wish you all a great end to the year and a fruitful 2019. Thanks for all your support and we hope to continue receiving it.