According to GitHub, Jekyll 3.0 will make GitHub Pages faster and easier to use, though the switch will not be painless for all existing sites due to some features being removed in the process.
Besides lots of performance improvements, Jekyll 3.0 adoption will also bring a couple of new features to GitHub Pages, such as:
- incremental regeneration of pages through the (still experimental)
--incremental
switch, which promises to make builds even faster. - liquid profiler, enabled through a
--profile
switch to thebuild
orserve
commands. This will analyze a site’s build time and show where improvements are desirable.
Other changes that GitHub is enforcing to Pages will, though, shrink the options available to developers. First and foremost, GitHub Pages will exclusively support kramdown, Jekyll’s default engine, starting May 1st, 2016. This means that alternative engines, such as Rdiscount and RedCarpet will not be supported anymore. According to GitHub, Pages will provide the features of the two deprecated engine, so to make the transition painless. Yet, developers on Reddit complained that kramdown does not support all the features available from the other engines. In the process, alternative markup language Textile will also become unsupported from May 1st.
As a workaround to that, a few developers suggested on Reddit to generate locally the web site and then push it to GitHub by using a command like git subtree push --prefix build_folder origin gh-pages
. An useful hint at this regard, is using two branches, one to host all sources, and another, master
, for the rendered web site.
Another potentially breaking change concerns Pages syntax highlighter. Indeed, the only option available with the new GitHub Pages is Ruby-based Rouge, which rules out Python-based Pygments and other highlighter such as highlight.js.
Finally, Jekyll 3.0 does no support relative permalinks anymore, thus requiring that all paths be relative to the site’s root directory.