Yii 2.0.27, Debug 2.1.9 and Yii 3 progress

Published on September 18, 2019 by Alexander Makarov

Hello everyone reading our development reports!

Yii 2

Yii 2 is getting release after release mostly containing bugfixes. This time version 2.0.27 is a bit different. Two enhancements sneaked in. These are both from old pull requests that were checked in depth and finally merged.

Additionally, debug extension release 2.1.9 was tagged. It contains a single bugfix but it's important enough fixing "since previous" timings in "logs".

We plan to reduce number of opened pull requests to zero in the coming month. To achieve that we'll spend $500 from foundation funds to get extra time from a developer focused on checking/merging pull requests. It is a first experiment that, in case of success, would result in having clear decisions for remaining 36 PRs.

Yii 3

  • Wilmer Arambula continues porting Yii 2 packages to Yii 3 with widgets.
  • Tests are very important part of framework stability. romkatsu contributed tests for CSRF middleware and a callback middleware.
  • yiisoft/data went from prototype to working state thanks to contributions from Pavel Chaplygin and Somogyi Márton. There are still changes planned but overall it's a solid base to build REST APIs and data-widgets, such as GridView, upon.
  • yiisoft/core package was eliminated. The repository itself was actually deleted and then restored to keep issues history. There is no "core" doing everything as in Yii 2. Yii 3 has some "glue" packages such as yiisoft/yii-web but these are more focused and instead of doing everything these are tailored to common use cases such as building "classical" web apps or building console apps.
  • An experiment about using Cycle ORM was conducted. First results are looking promising and likely Cycle will be one of the officially endorsed database abstraction layers of Yii 3.
  • Another experiment about using RoadRunner as web server that gave great performance numbers moved further since Session was fixed to work well in such environment. While the approach requires being more careful about state, performance gain definitely worth it so we are going to check framework against such environment so it works out of the box.
  • yiisoft/strings was polished a bit more.
  • Error handler got ability to get stack trace for fatal errors that was present in Yii 2.
  • Another cool thing is the concept of "friendly exception". One can implement FriendlyExceptionInterface and provide a possible solution to the problem exception represents. Error handler would display it along with usual exception information.
  • Roadmap was updated to reflect current state of things.

There are interesting discussions happen in "Using Cycle ORM" and "Yii3 Properties" about the general direction of Yii 3 and about future of our own database abstraction layer. There are multiple people who actually want to port Yii 2 DBAL to Yii 3 so if everything would go right, we will have it as well as other options such as Cycle and Doctrine.

Thanks, community

Thanks to all backers funding Yii development. Current progress would've been impossible without you!

Contributing financially is not the only way to support Yii. Other ways are as valuable. We'd like to specially thank our long-term contributors who are giving valuable insights, reviewing code, translating documentation and making great pull requests.