It's been a long time coming, but thanks to the intrepid efforts of several contributors, Sculpin 3 is finally here.

This new release brings the project a bit more in line with modern PHP features and introduces some new commands and parameters.

Shout out to the following folks for all of their contributions - thanks for your help!

New in Sculpin 3:

  • Supports PHP 7.2 and higher!
  • Initialize a bare-bones set of source/ files using the new init command
  • The generate command now supports --source-dir and --output-dir parameters
  • Create custom content types with the new content:create command
    • Generates a very basic skeleton of templates
    • Supports defining custom taxonomies (such as tags or categories or any other categorizations you need)

However, there are some changes that affect backwards compatibility.

  • PHP 7.2 is the minimum PHP version that Sculpin 3 will run on
    • Some new return typehints may require custom bundles to have their method signatures updated.
    • A number of core classes are now final and some methods have been moved to protected and private to help reduce the code's complexity.
  • Changes to the symfony/yaml component mean that certain YAML front matter values will need to be enclosed in quotes, particularly if they contain colons.
    • Sculpin is quite verbose when this happens. It outputs the name of the affected file, the affected line number, and an excerpt of the line, alongside an explanation of the YAML syntax issue that caused the error.
  • Changes to pagination mean that certain URLs, such as "/blog/page/2.html", will change to a folder (e.g., "/blog/page/2/").
  • Bundles that write to the sculpin.output_dir parameter should be updated to use the sculpin.writer service instead, in order to respect the --output-dir parameter.

Also, the Sculpin Blog Skeleton has begun being modernized, and the first stage of this involves setting things up with Yarn and Encore and Webpack instead of the previous solution for assets.

If you encounter issues with the new release or have suggestions, please use GitHub Issues or the comments below.