Jekyll 4.0.0 Released

Hi! 👋 I bring some good news! Jekyll 4.0.0 is finally here! 🎉

There’s quite a bit in this release to unpack, so let me hit the high points quickly:

  • Ruby 2.4.0 or greater is now required.
  • Rouge 3.0 or greater is now required for syntax highlighting.
  • Jekyll builds should be much faster.
  • Kramdown 2.1 is now the default markdown engine.
  • Sass processing should be faster.
  • We dropped support for a lot of stuff, specifically:
    • Pygments
    • RedCarpet
    • RDiscount

Alright, so with the high points out of the way, let’s get into the details a little bit.

Cache all the things! 💰

While some optimizations first made an appearance with Jekyll 3.8.0, Jekyll 4.0 takes it to another level altogether.

Jekyll 4.0 caches the processing done by Liquid in memory. So every Liquid template is processed only as required. If you have 10 pages depending on a single layout, the layout is cached and that data is then rendered as per the 10 different contexts of the individual files.

There’s also a disk cache! Jekyll can now cache data to disk to avoid repeated processing of content that doesn’t change between build sessions. Currently, this is limited to markdown. So while the very first build will take a certain amount of time, consequent builds for content that hasn’t changed will take much less time due to the disk-cache. Disk caching is disabled for safe mode, however.

Super-powered content transformations 💪

We’ve upgraded Sass support so it should be faster and support. There’s also support for sourcemaps now! Under the hood, our Sass support uses the SassC library now, which is supported directly by the Sass team, which should mean better support for everybody in the long run.

Kramdown is updated to version 2.1. This also brings with it a bunch of changes to the Kramdown configuration, as the Kramdown team have extracted a fair number of features into separate gems. Support for GitHub Flavored Markdown is enabled by default, but if you’re using another Kramdown extension in your site, you’ll likely need to update your plugin configuration. See the upgrade guide for more details.

The link and post_url tags no longer need site.baseurl prepended every time they’re used. Those tags now use our relative_url filter to take care of this for you. Existing uses of the prepending pattern will break though! Sorry! :sweat_smile:

A few other smaller features when it comes to content:

  • The link tag understands Liquid variables in the same fashion our include tag does now.
  • Disable Liquid processing for a particular page / document by adding render_with_liquid: false to it’s front matter.
  • Liquid’s binary and and or operations can be used in the where_exp filter for more powerful filtering

There’s some goodies for theme community as well. Developers may now bundle a config.yml into their theme-gem to provide some boilerplate configurations for the theme. Like other resources in the theme, these configuration values can also be customized at the user’s end.

Check out the full history and the various pull requests for more details on all the enhancements and bug-fixes.

Upgrading 📈

First, read the upgrade guide!

Next, Edit your project’s Gemfile to test Jekyll v4.x:

gem "jekyll", "~> 4.0"

Then run bundle update to update all dependencies. Unless you’re using third-party plugins that haven’t yet added support for Jekyll 4.0, you should be good to go.

Plugins and themes authors must relax the jekyll dependency in their gemspec file to allow for Jekyll v4.0:

spec.add_runtime_dependency "jekyll", ">= 3.6", "< 5.0"

If your favorite plugin hasn’t relaxed that dependency yet, please gently encourage them to do so. :slightly_smiling_face:

Have questions❓

Please reach out on our community forum

Thank you!! 🙇

Jekyll would not be possible without the many people who have taken the time to write issues, submit pull requests, create themes, answer questions for other users, or make their own sites using our project. Thanks to all of you who contribute, no matter how small you think your contribution might have been.

In addition, special thanks to the 139 contributors who made this release possible via a pull request submission (in alphabetical order): Aidan Fitzgerald, Akshat Kedia, Ale Muñoz, Alex Wood, Alexey Kopytko, Alexey Pelykh, Ali Thompson, Ana María Martínez Gómez, Ananthakumar, Andreas Möller, Andrew Lyndem, Andrew Marcuse, Andy Alt, Anne Gentle, Anny, Anuj Bhatnagar, argv-minus-one, Arjun Thakur, Arthur Attwell, Ashwin Maroli, Behrang, Belhassen Chelbi, Ben Keith, Ben Otte, Bilawal Hameed, Bjorn Krols, Boris Schapira, Boris van Hoytema, Brett C, Chris Finazzo, Chris Oliver, chrisfinazzo, Christian Oliff, Christoph Päper, Damien Solodow, Dan Allen, Dan Friedman, Daniel Höpfl, David J. Malan, David Kennell, David Zhang, Denis McDonald, Derek Smart, Derpy, Dusty Candland, Edgar Tinajero, Elvio Vicosa, ExE Boss, Fons van der Plas, Frank Taillandier, Gareth Cooper, Grzegorz Kaczorek, Haris Bjelic, Hodong Kim, ikeji, Isaac Goodman, Jacob Byers, Jakob Krigovsky, James Rhea, Jan Pobořil, jess, jingze_lu, Joe Shannon, Jordan Morgan, Jörg Steinsträter, Jorie Tappa, Josue Caraballo, jpasholk, Justin Vallelonga, Karel Bílek, Keith Mifsud, Kelly-Ann Green, Ken Salomon, Kevin Plattret, krissy, Kyle Barbour, Lars Kanis, Leandro Facchinetti, Liam Rosenfeld, Luis Enrique Perez Alvarez, Luis Guillermo Yáñez, Ma HongJun, makmm, Manu Mathew, Mario, Martin Scharm, Matt Kraai, Matt Massicotte, Matt Rogers, Matthew Rathbone, Maxwell Gerber, Mertcan Yücel, Michael Bishop, Michael Hiiva, Michelle Greer, Mike Kasberg, Mike Neumegen, mo khan, Monica Powell, Nicolas Hoizey, Nikhil Benesch, Nikhil Swaminathan, Nikita Skalkin, Niklas Eicker, ninevra, Olivia Hugger, Parker Moore, Pat Hawks, Patrick Favre-Bulle, Paul Kim, penguinpet, Philip Belesky, Preston Lim, Ralph, Robert Riemann, Rosário Pereira Fernandes, Sadik Kuzu, Samuel Gruetter, Scott Killen, Sri Pravan Paturi, Stephan Fischer, Stephen Weiss, Steven Westmoreland, strangehill, Sundaram Kalyan Vedala, Thanos Kolovos, Timo Schuhmacher, Tobias, Tom Harvey, Tushar Prajapati, Victor Afanasev, Vinicius Flores, Vitor Oliveira, Wouter Schoot, XhmikosR, Yi Feng Xie, Zhang Xiangze, 김정환, 104fps.

Happy Jekylling everyone!

Jekyll 4.0.0.pre.beta1 Released

Dear Jekyllers,

It’s time for another pre-release of Jekyll 4! 🎉

This pre-release moves us further down the path of releasing Jekyll 4.0.0. All the same goodies from the last pre-release are here, along with a few more things I want to highlight:

Jekyll 4.0 is a new major version and it comes with a few breaking changes, notably :

  1. We dropped support for Ruby 2.3 which EOL at the end of March 2019. GitHub Pages runs Ruby 2.5.x, services like Netlify or Forestry already upgraded to latest Ruby 2.6.x.
  2. link tag now include relative_url filter, hurray no more need to prepend {{ site.baseurl }} .
  3. {% highlight %} now behaves like {% raw %}, so you can no longer use include tags within.
  4. We dropped support for Pygments, RedCarpet and rdiscount.
  5. We bumped kramdown to v2.

If you’re a plugin developer, we still need your feedback! Your plugin may not work with version 4 and we’d like to fix those issues before we release.

Checkout the complete changelog for more details.

To test this pre version run:

gem install jekyll --pre

Please test this version thoroughly and file bugs as you encounter them.

Thanks to our dear contributors for helping making Jekyll better:

Aidan Fitzgerald, Akshat Kedia, Alex Wood, Alexey Kopytko, Alexey Pelykh, Ali Thompson, Ana María Martínez Gómez, Ananthakumar, Andreas Möller, Andrew Lyndem, Andy Alt, Anne Gentle, Anny, Arjun Thakur, Arthur Attwell, Ashwin Maroli, Behrang, Belhassen Chelbi, Ben Keith, Ben Otte, Bilawal Hameed, Boris Schapira, Boris van Hoytema, Brett C, Chris Finazzo, Christian Oliff, Damien Solodow, Dan Allen, Dan Friedman, Daniel Höpfl, David J. Malan, Denis McDonald, Derek Smart, Derpy, Dusty Candland, ExE Boss, Frank Taillandier, Gareth Cooper, Grzegorz Kaczorek, Isaac Goodman, Jacob Byers, Jakob Krigovsky, Jan Pobořil, Joe Shannon, Jordan Morgan, Jorie Tappa, Josue Caraballo, Justin Vallelonga, Jörg Steinsträter, Karel Bílek, Keith Mifsud, Kelly-Ann Green, Ken Salomon, Kevin Plattret, Kyle Barbour, Lars Kanis, Leandro Facchinetti, Luis Enrique Perez Alvarez, Luis Guillermo Yáñez, Ma HongJun, Manu Mathew, Mario, Martin Scharm, Matt Massicotte, Matthew Rathbone, Maxwell Gerber, Mertcan Yücel, Michael Hiiva, Mike Kasberg, Mike Neumegen, Monica Powell, Nicolas Hoizey, Nikhil Swaminathan, Nikita Skalkin, Olivia Hugger, Parker Moore, Pat Hawks, Patrick Favre-Bulle, Paul Kim, Philip Belesky, Preston Lim, Ralph, Robert Riemann, Rosário Pereira Fernandes, Samuel Gruetter, Scott Killen, Sri Pravan Paturi, Stephan Fischer, Stephen Weiss, Steven Westmoreland, Sundaram Kalyan Vedala, Thanos Kolovos, Timo Schuhmacher, Tobias, Tom Harvey, Tushar Prajapati, Victor Afanasev, Vitor Oliveira, Wouter Schoot, XhmikosR, Zhang Xiangze, _94gsc, argv-minus-one, chrisfinazzo, ikeji, jess, jpasholk, makmm, mo khan, ninevra, penguinpet, 김정환, 104fps

Happy Jekylling everyone!

Jekyll 3.8.6 Released

We have another patch release in the 3.8 series! This time, we have one security patch and a handful of bug patches, including:

  • Filter symlinks from theme gems
  • Fix excerpt handling of some Liquid tags
  • Handle case where a theme directory doesn’t exist
  • A few internal optimizations to reduce memory overhead

… and a few more! You can check out the patches and see all the details in the release notes

Happy Jekylling!

Jekyll 4.0.0.pre.alpha1 Released

Dear Jekyllers,

Time has come to release a first alpha for Jekyll 4!

This pre version fixes many bugs, and should improve your build times. Some of you already shared really good results. We hope your Jekyll sites will also benefit from these optimizations.

If you’re a plugin developer, we definitely need your feedback, especially if your plugin does not work with v4.

Jekyll now exposes a caching API, that some plugins could benefit from.

Also be aware that it’s a new major version, and it comes with a few breaking changes, notably :

  1. We dropped support for Ruby 2.3 who goes EOL at the end of the month. GitHub Pages runs Ruby 2.5.x, services like Netlify or Forestry already upgraded to latest Ruby 2.6.x.
  2. link tag now include relative_url filter, hurray no more need to prepend {{ site.baseurl }} .
  3. {% highlight %} now behaves like {% raw %}, so you can no longer use include tags within.
  4. We dropped support for Pygments, RedCarpet and rdiscount.
  5. We bumped kramdown to v2.

Checkout the complete changelog for more details.

To test this pre version run:

gem install jekyll --pre

Please test this version thoroughly and file bugs as you encounter them.

Thanks to our dear contributors for helping making Jekyll better:

Aidan Fitzgerald, Akshat Kedia, Alex Wood, Alexey Kopytko, Alexey Pelykh, Ali Thompson, Ana María Martínez Gómez, Ananthakumar, Andreas Möller, Andrew Lyndem, Andy Alt, Anne Gentle, Anny, Arjun Thakur, Arthur Attwell, Ashwin Maroli, Behrang, Belhassen Chelbi, Ben Keith, Ben Otte, Bilawal Hameed, Boris Schapira, Boris van Hoytema, Brett C, Chris Finazzo, Christian Oliff, Damien Solodow, Dan Allen, Dan Friedman, Daniel Höpfl, David J. Malan, Denis McDonald, Derek Smart, Derpy, Dusty Candland, ExE Boss, Frank Taillandier, Gareth Cooper, Grzegorz Kaczorek, Isaac Goodman, Jacob Byers, Jakob Krigovsky, Jan Pobořil, Joe Shannon, Jordan Morgan, Jorie Tappa, Josue Caraballo, Justin Vallelonga, Jörg Steinsträter, Karel Bílek, Keith Mifsud, Kelly-Ann Green, Ken Salomon, Kevin Plattret, Kyle Barbour, Lars Kanis, Leandro Facchinetti, Luis Enrique Perez Alvarez, Luis Guillermo Yáñez, Ma HongJun, Manu Mathew, Mario, Martin Scharm, Matt Massicotte, Matthew Rathbone, Maxwell Gerber, Mertcan Yücel, Michael Hiiva, Mike Kasberg, Mike Neumegen, Monica Powell, Nicolas Hoizey, Nikhil Swaminathan, Nikita Skalkin, Olivia Hugger, Parker Moore, Pat Hawks, Patrick Favre-Bulle, Paul Kim, Philip Belesky, Preston Lim, Ralph, Robert Riemann, Rosário Pereira Fernandes, Samuel Gruetter, Scott Killen, Sri Pravan Paturi, Stephan Fischer, Stephen Weiss, Steven Westmoreland, Sundaram Kalyan Vedala, Thanos Kolovos, Timo Schuhmacher, Tobias, Tom Harvey, Tushar Prajapati, Victor Afanasev, Vitor Oliveira, Wouter Schoot, XhmikosR, Zhang Xiangze, _94gsc, argv-minus-one, chrisfinazzo, ikeji, jess, jpasholk, makmm, mo khan, ninevra, penguinpet, 김정환, 104fps

Happy Jekylling everyone!

Security Fixes for series 3.6, 3.7 and 3.8

Hi Jekyllers,

We have patched a critical vulnerability reported to GitHub a couple of weeks ago and have released a set of new gems to bring that patch to you. The vulnerability allowed arbitrary file reads with the cunning use of the include: setting in the config file.

By simply including a symlink in the include array allowed the symlinked file to be read into the build when they shouldn’t actually be read in any circumstance.   Further details regarding the patch can be viewed at the pull request URL

The patch has been released as versions 3.6.3, 3.7.4 and 3.8.4.   Thanks to @parkr v3.7.4 was released a couple of weeks prior and has been bundled with github-pages-v192.

Please keep in mind that this issue affects all previously released Jekyll versions. If you have not had a good reason to upgrade to 3.6, 3.7 or 3.8 yet, we advise that you do so at the earliest.

As always, Happy Jekylling! :sparkles:

Sponsoring Jekyll's development

(TL;DR: We’re open for sponsorships on our OpenCollective page)

Hi Jekyllers,

As you may know, Jekyll is a completely free and open source project. We offer our software and its related plugins and documentation at no cost because we believe that good software should not cost anything. We’re not planning on changing that, but today I want to talk about a different monetary aspect of open source.

Open source developers being paid for the work they do is a rare sight. Most open source software is effectively the result of hundreds and thousands of hours of free labor provided by individuals who are passionate enough to work outside of their day job to create software that, ironically, is being used by almost every company that offers digital services. It’s a problem that has gotten more attention in recent years, with the open source community becoming more diverse and more and more companies actively investing in providing monetary support for open source developers.

Jekyll has always been a product of volunteers. Rarely has someone been paid to implement a certain plugin or feature. Today, we’re excited to announce that we will finally be able to fund our contributors! We are opening an OpenCollective to receive individual and corporate sponsorships. This is not unheard of, Hugo is also funded by sponsorships, as are many other similar projects, such as webpack, Babel or RuboCop.

OpenCollective is a service that makes it easy for open source projects to receive funding from individuals and companies alike. It’s specifically designed for open source and many other projects already use it for funding.

Sponsoring is, for us, a method to finally realize some of the more ambitious goals we’ve had with the project for years. The closest thing we want to realize is to release Jekyll 4.0, and to make it as polished as we can. In the future, we would also like to work on other things that will improve the Jekyll ecosystem. Here’s a couple of ideas:

  • Create a comprehensive official plugin and theme directory site
  • Improve tooling built around measuring and improving Jekyll’s performance
  • Improve maintenance for official plugins
  • Including the community into official decisions; making Jekyll more friendly to folks in the community

Again, these are just some ideas, but with the help of sponsoring, they are now one step closer to being realized :heart:

Forestry

With that, we would like to announce our very first sponsor: Forestry.io! Forestry is a CMS that integrates with your Jekyll sites and lets you update content using a beautiful interface, and then automatically commits it back to your GitHub repository. We’re excited to have them on board on a new, exciting step of our journey.

Will anything change for Jekyll users? The answer is no - this step does not impact the Jekyll software in any aspect. In fact, you might see positive changes, such as more features and better performance. Surprisingly, that’s what happens when you properly fund people for their work!

If you have been a long time user for Jekyll and would like to give something back to the project, you can consider a small monthly donation to our OpenCollective page. If your company heavily relies on Jekyll, do consider sponsoring us!

Contact matt@jekyllrb.com and we’ll figure something out together.

Thanks for sticking with us, and happy Jekylling! :tada:

Jekyll 3.8.3 Released

This release fixes a regression in 3.8 where collections with published: false do not show when using the --unpublished flag.

Thanks to @philipbelesky for reporting and fixing this issue; collections with published: false now behave the same way as Posts.

Jekyll 3.8.2 Released

Hello Jekyllers!!

Today we are releasing v3.8.2, which fixes the way Jekyll generates excerpts for posts when the first paragraph of the post contains Liquid tags that take advantage of Liquid’s whitespace control feature.

Big thanks to @kylebarbour, who first reported this issue and also very quickly submitted a fix. Also thanks to @nickskalkin for making sure that we are using the latest version of Rubocop to lint our code.

Jekyll 3.8.1 Released

Happy May Day :tada:

The Jekyll team is happy to announce the release of v3.8.1, which fixes a couple of bugs that were introduced two weeks ago in v3.8.0. If you have experienced trouble regarding post excerpts or non-published posts, this release should be the remedy. Thanks to @Chaosed0 and @domLocalHeroes for originally reporting these issues, and to @ashmaroli for fixing them so quickly.

As a reminder, we have started work on Jekyll 4.0. If there are any features that you would love to see added to Jekyll, or any pain points you would like to see removed, please do add your ideas to the Jekyll 4.0 idea list.

Jekyll 4.0 is on the Horizon!

With the release of Jekyll 3.8.0, it’s been 2 and a half years since the last major release. Jekyll 3.0.0 was released in late October of 2015! That’s a long time ago, and we’ve been working towards the next major release of Jekyll for a couple of months now. Here’s a small preview of what’s to come:

  • Dropping support for Ruby 2.1 and 2.2. Both versions have reached their EOL period.
  • Dropping Pygments as a dependency. We’re already defaulting to Rouge, and this removes the implicit Python dependency. (finally!)
  • Making the link tag use relative URLs. This is a big breaking change, but it’s the cleaner solution.

We’re open to more ideas, though. If the development cost isn’t too high, or if someone volunteers to take care of the implementation, it’s likely that your suggestion might make it into Jekyll 4.0. Head over to this issue for more details. Some interesting topics might be improving Internationalization support in Jekyll, creating convenience Liquid tags, et cetera.

That being said, the development period of version 4.0 begins now. This means a couple of things:

  • New features will only be implemented in Jekyll 4.0. There will be no 3.9.0 or the like.
  • Same with bug fixes, unless they concern something introduced in Jekyll 3.7 or 3.8, in which case we will backport the fixes and release a patch version.
  • Now is a great time to finally take on the feature you’ve wanted to see in Jekyll for ages! Just open an issue or experiment with the code to get going!

As for a release date, we’re currently aiming for late summer, around September or so. However, keep in mind that this project is purely volunteer-run, and as such, delays might occur and we might not hit that release date.

Finally, this is a great time for newcomers to open-source to make their first contribution. We’ll be doing our best to mark recommended contributions and create newcomer-friendly issues, as well as to provide mentoring throughout the contribution process (although we’d like to think that we’re already pretty proficient at that). So if you’ve always been hestitant about contributing to a large open-source project, Jekyll is a good place to start!

Happy Jekylling! :wave:

Jekyll 3.8.0 Released

Aloha Jekyllers!! :wave:

After months of toiling on the codebase and shipping a couple of release-candidates, the Jekyll Team is delighted to finally present v3.8.0, packed with optimizations, improvements, some new features and a couple of bug-fixes. Yay!!!

Under the hood, Jekyll has undergone many minor changes that will allow it to run more performantly in the coming years. :smiley: Rest assured, our users should see minor improvements in their site’s build times.

Speaking of improvements, users running a site containing a huge amount of posts or those who like to use our where filter frequently in a single template, are going to see a massive reduction in their total build times!! :tada:

Hold on, this version is not just about optimizations, there are some new features as well..:

  • Detect non-existent variables and filters specified in a template by enabling strict_variables and strict_filters under the liquid key in your config file.
  • Allow date filters to output ordinal days.
  • jekyll doctor now warns you if you have opted for custom collections_dir but placed _posts directory outside that directory.

..and yes, a couple of bug-fixes, notably:

  • Jekyll now handles future-dated documents properly.
  • Jekyll is able to handle Liquid blocks intelligently in excerpts.
  • A few methods that were not meant to be publically accessible have been entombed properly.
  • A few bugs that still plagued our collections_dir feature from v3.7 got crushed.

As always, the full list of changes since last release can be viewed here.

A big thanks to the following people who contributed to our repository with pull-requests that improved our codebase, documentation and tests:

Ana María Martínez Gómez, Antonio Argote, Ashwin Maroli, Awjin Ahn, Ben Balter, Benjamin Høegh, Christian Oliff, Damien Solodow, David Zhang, Delson Lima, Eric Cornelissen, Florian Thomas, Frank Taillandier, Heinrich Hartmann, Jakob Vad Nielsen, John Eismeier, Kacper Duras, KajMagnus, Mario Cekic, Max Vilimpoc, Michael H, Mike Kasberg, Parker Moore, Pat Hawks, Paweł Kuna, Robert Riemann, Roger Rohrbach, Semen Zhydenko, Stefan Dellmuth, Tim Carry, olivia, and steelman.

Happy Jekylling!! :sparkles:

Jekyll 3.7.3 Released

Hello Jekyllers!! :wave:

We’re pleased to announce the release of v3.7.3 which fixes a bug one might encounter while using Jekyll - 3.7.x along with a Jekyll plugin that in turn uses the I18n library.

When v3.7.0 enhanced our slugify filter with a latin option, we also hardcoded a default fallback locale for the I18n library to avoid an exception raised in the event the library fails to find any locale. This led to issues with third-party i18n plugins for Jekyll, especially since the default locale got assigned before the plugin was loaded, irrespective of whether the slugify filter was used.

Jekyll will henceforth set the default locale if and only if necessary.

Meet Jekyll's New Lead Developer

Jekyll has a new Lead Developer: Olivia!

After over 5 years of leading Jekyll, many releases from 0.12.1 to 3.6.0, and countless conversations in GitHub Issues, Pull Requests, Jekyll Talk, and more, I am passing on the torch as Lead Developer of Jekyll.

Olivia has been working with the Jekyll community for some time now. You may have seen her around in issues and pull requests on the various Jekyll repositories. She started as a contributor, then joined the Core team as our community lead. Olivia joined the Jekyll Core Team with experience in the Node.js community, both online and as a volunteer organizer with JSConf EU.

In my conversations with Olivia, it is clear that Jekyll’s vision of simplicity for the user (no magic!) and letting users’ content be king will remain a top priority. In just the last few weeks as the transition has been occurring, we have seen some incredible work on performance that will make future versions of Jekyll work better at scale. She will be prioritizing work on innovative improvements to make Jekyll that much better for all of us. Olivia balances an eye for quality with the need for shipping well.

When Tom Preston-Werner met me at GitHub HQ 2.0 in January 2013 to pass on the torch, I could never have dreamed of all the amazing experiences this community would share with me over the next 5 years. From visiting @qrush in Buffalo, NY for a hack night on Jekyll to attending a Jekyll planning session hosted by @benbalter at GitHub to Google Summer of Code which gave us jekyll-admin, I am eternally grateful to all of you for the opportunity to lead this excellent community. I’m confident Olivia will continue to lead Jekyll to even greater heights.

As always, Happy Jekylling!

Parker

Curious about who else runs this show? Check out our excellent team.

Jekyll 3.7.2 Released

Close on the heels of shipping 3.7.0, we were informed of a couple of regressions due to the changes made in that release. In due time, Team Jekyll set out to address those issues as early as possible.

Days later here we’re, announcing 3.7.2 (sorry for skipping 3.7.1, RubyGems didn’t want to play nice) that fixes numerous issues! :tada: The highlights being:

  • A major regression in 3.7.0 was that when a Front Matter Default was configured with a scope["path"] set to a directory, Jekyll would scan that directory for any subfolders and files, for each document in that path. Though this is intended, it increases build times in proportion to the size of the directory.

    We addressed this by having Jekyll scan the directory path only if the user explicitly configures the scope["path"] using wildcards.

    Read our documentation for more details.

    A huge shout-out to @mmistakes for bringing this to our notice and additionally providing us with a test repository to aid in resolving the issue.

  • Another regression reported was related to our “Custom collections directory” feature introduced in 3.7.0.

    Users setting collection_dir to a certain directory would have altered paths to their posts still at the root of their site’s source. This roughly translated to 404 errors on URLs to their posts.

    Props to @localheinz for bringing this regression to our notice.

    We decided to resolve this by having Jekyll ignore posts and drafts at the root of the site’s source directory if the user customizes the collection_dir setting.

    Ergo, if you set a custom location for your collections, please ensure you move all of your collections into that directory. This includes posts and drafts as well. Your links generated by {% post_url %} or {% link %} will adapt automatically.

  • We also found out that gem "wdm" boosts performance while directories are being watched on Windows. So we recommend having it included in your Gemfile for a better development experience on Windows. (Newly generated Gemfiles will hereafter have that gem listed automatically :wink:)

In addition to the above, numerous other minor fixes and documentation updates have been made that should improve your Jekyll experience. All of which, would not have been possible without our wonderful contributors:

Alexandr, Andreas Möller, Ashwin Maroli, Chayoung You, Florian Thomas, Frank Taillandier, Hendrik Schneider, Kacper Duras, Olivia, Parker Moore and Paul Robert Lloyd.

As always, you can see our full changelog on the History page.

Happy Jekylling! :sparkles:

Jekyll 3.7.0 Released

We’re happy to release a new minor for the new year. Here are a few of the latest additions from our contributors:

  • LiveReload is available as an option during development: with jekyll serve --livereload no more manual page refresh. A big thanks to @awood for this feature and to @andreyvit, LiveReload author.
  • New collections_dir configuration option allows you to store all your collections in a single folder. Your source root folder should now look cleaner :sparkles: .
  • If you’re using a gem-based theme in coordination with the --incremental option, you should notice some significant speed during the regeneration process, we did see build time went down from 12s to 2s with @mmistakes minimal-mistakes theme during our tests.
  • Jekyll will now check to determine whether host machine has internet connection.
  • A new latin option is available to better handle URLs slugs.
  • And of course many bug fixes and updates to our documentation — which you can now search thanks to our friends @Algolia.
  • Full history is here.

This release wouldn’t have been possible without all the following people:

Aaron Borden, Alex Tsui, Alex Wood, Alexey Pelykh, Andrew Dassonville, Angelika Tyborska, Ankit Singhaniya, Ashwin Maroli, bellvat, Brandon Dusseau, Chris Finazzo, Doug Beney, Dr. Wolfram Schroers, Edward Shen, Florian Thomas, Frank Taillandier, Gert-jan Theunissen, Goulven Champenois, János Rusiczki, Jed Fox, Johannes Müller, Jon Anning, Jonathan Hooper, Jordon Bedwell, Junko Suzuki, Kacper Duras, Kenton Hansen, Kewin Dousse, Matt Rogers, Maximiliano Kotvinsky, mrHoliday, Olivia, Parker Moore, Pat Hawks, Sebastian Kulig, Vishesh Ruparelia, Xiaoiver and Yashu Mittal.

A big thanks to everyone!

Oh, one last thing…

:pray: upgrade your Ruby

Prepare for the next major update, as next major version Jekyll 4.0 will drop support for Ruby 2.1 and 2.2.

Ruby 2.2 is now under the state of the security maintenance phase, until the end of the March of 2018. After the date, maintenance of Ruby 2.2 will be ended. We recommend you start planning migration to newer versions of Ruby, such as 2.4 or 2.3. — Ruby Core Team

We strongly encourage you to upgrade to at least Ruby 2.4.x like our friends at GitHub Pages or even go with Ruby 2.5.

Happy new year to all from the Jekyll team!