Jekyll v4.0.0 Release Notes

Release Date: 2019-08-20 // over 4 years ago
  • Major Enhancements

    • ⬇️ Drop ruby 2.3 (#7454)
    • ⬇️ Drop support for Ruby 2.1 and 2.2 (#6560)
    • ⬇️ Drop support for older versions of Rouge (#6978)
    • ⬇️ Drop support for pygments as syntax-highlighter (#7118)
    • ⬇️ Drop support for Redcarpet (#6987)
    • ⬇️ Drop support for rdiscount (#6988)
    • ⬇️ Drop support for jekyll-watch-1.4.0 and older (#7287)
    • Incorporate relative_url filter in link tag (#6727)
    • ⬆️ Upgrade kramdown dependency to v2.x (#7492)
    • ⬆️ Upgrade jekyll-sass-converter to v2.x - Sassc + sourcemaps (#7778)
    • ⬆️ Upgrade i18n to v1.x (#6931)
    • ➕ Add Jekyll::Cache class to handle caching on disk (#7169)
    • Cache converted markdown (#7159)
    • Cache: Do not dump undumpable objects (#7190)
    • 0️⃣ Cache matched defaults sets for given parameters (#6888)
    • Ignore cache directory (#7184)
    • Add Site#in_cache_dir helper method (#7160)
    • ✂ Remove 'cache_dir' during jekyll clean (#7158)
    • 📜 Cache parsed Liquid templates in memory (#7136)
    • Only read layouts from source_dir or theme_dir (#6788)
    • 👍 Allow custom sorting of collection documents (#7427)
    • Always exclude certain paths from being processed (#7188)
    • ✂ Remove Jekyll::Utils#strip_heredoc in favor of a Ruby > 2.3 built in (#7584)
    • Incorporate relative_url within post_url tag (#7589)
    • ✂ Remove patch to modify config for kramdown (#7699)

    Minor Enhancements

    • ✨ Enhance --blank scaffolding (#7310)
    • 👉 Use jekyll-compose if installed (#6932)
    • Disable Liquid via front matter (#6824)
    • 🔧 Configure cache_dir (#7232)
    • ISO week date drops (#5981)
    • 🛠 Fix custom 404 page for GitHub pages (#7132)
    • Load config file from within current theme-gem (#7304)
    • Suggest re-running command with --trace on fail (#6551)
    • 👌 Support for binary operators in where_exp filter (#6998)
    • Automatically load _config.toml (#7299)
    • ➕ Add vendor folder to a newly installed site's .gitignore (#6968)
    • Output Jekyll Version while debugging (#7173)
    • 📝 Memoize computing excerpt's relative_path (#6951)
    • Skip processing posts that can not be read (#7302)
    • 📝 Memoize the return value of Site#documents (#7273)
    • 0️⃣ Cache globbed paths in front matter defaults (#7345)
    • Cache computed item property (#7301)
    • Cleanup Markdown converter (#7519)
    • Do not process Liquid in post excerpt when disabled in front matter (#7146)
    • Liquefied link tag (#6269)
    • ⚡️ Update item_property to return numbers as numbers instead of strings (#6608)
    • 👉 Use .markdown extension for page templates (#7126)
    • ➕ Add support for *.xhtml files (#6854)
    • 👍 Allow i18n v0.9.5 and higher (#7044)
    • Ignore permission error of /proc/version (#7267)
    • Strip extra slashes via Jekyll.sanitized_path (#7182)
    • 🚚 Site template: remove default config for markdown (#7285)
    • ➕ Add a custom inspect string for StaticFile objects (#7422)
    • Remind user to include gem in the Gemfile on error (#7476)
    • 0️⃣ Search Front matter defaults for Page objects with relative_path (#7261)
    • 🔒 Lock use of tzinfo gem to v1.x (#7521, #7562)
    • Utilize absolute paths of user-provided file paths (#7450)
    • Detect nil and empty values in objects with where filter (#7580)
    • 🎉 Initialize mutations for Drops only if necessary (#7657)
    • ⬇️ Reduce Array allocations via Jekyll::Cleaner (#7659)
    • Encode and unencode urls only as required (#7654)
    • ⬇️ Reduce string allocations with better alternatives (#7643)
    • ⬇️ Reduce allocations from Jekyll::Document instances (#7625)
    • ➕ Add type attribute to Document instances (#7406)
    • ⬇️ Reduce allocations from where-filter (#7653)
    • 📝 Memoize SiteDrop#documents to reduce allocations (#7697)
    • ➕ Add PathManager class to cache interim paths (#7732)
    • ✂ Remove warnings and fixes for deprecated config (#7440)
    • Delegate --profile tabulation to terminal-table (#7627)

    🐛 Bug Fixes

    • 🔒 Security: fix include bypass of EntryFilter#filter symlink check (#7226)
    • Theme gems: ensure directories aren't symlinks (#7419)
    • ➕ Add call to unused method validate_options in commands/serve.rb (#7122)
    • Check if scope applies to type before given path (#7263)
    • Document two methods, simplify one of the methods (#7270)
    • Check key in collections only if it isn't "posts" (#7277)
    • Interpolate Jekyll::Page subclass on inspection (#7203)
    • Measure the no. of times a template gets rendered (#7316)
    • ⬇️ Reduce array traversal in Jekyll::Reader (#7157)
    • Re-implement handling Liquid blocks in excerpts (#7250)
    • Documents should be able to render their date (#7404)
    • 🛠 Fix Interpreter warning from Jekyll::Renderer (#7448)
    • Loggers should accept both numbers and symbols (#6967)
    • Replace regex arg to :gsub with a string arg (#7189)
    • Dont write static files from unrendered collection (#7410)
    • Excerpt handling of custom and intermediate tags (#7382)
    • 🔄 Change future post loglevel to warn to help user narrow down issues (#7527)
    • 🖐 Handle files with trailing dots in their basename (#7315)
    • 🛠 Fix unnecessary allocations via StaticFileReader (#7572)
    • Don't check if site URL is absolute if it is nil (#7498)
    • Avoid unnecessary duplication of pages array (#7272)
    • Memoize Site#post_attr_hash (#7276)
    • 📝 Memoize Document#excerpt_separator (#7569)
    • Optimize Document::DATE_FILENAME_MATCHER to match valid filenames (#7292)
    • Escape valid special chars in a site's path name (#7568)
    • Replace name in Page#inspect with relative_path (#7434)
    • ⚠ Log a warning when the slug is empty (#7357)
    • Push Markdown link refs to excerpt only as required (#7577)
    • 🛠 Fix broken include_relative usage in excerpt (#7633)
    • 🎉 Initialize and reset glob_cache only as necessary (#7658)
    • Revert memoizing Site#docs_to_write and #documents (#7684)
    • Backport #7684 for v3.8.x: Revert memoizing Site#docs_to_write and refactor #documents (#7689)
    • Backport #7213 and #7633 for v3.8.x: Fix broken include_relative usage in excerpt (#7690)
    • Don't read symlinks in site.include in safe mode (#7711)
    • Replace String#=~ with String#match? (#7723)
    • ⚡️ Update log output for an invalid theme directory (#7679)
    • ✂ Remove configuration of theme sass files from Core (#7290)
    • Actually conditionally include liquid-c (#7792)
    • ✅ Test number_like regex on stringified property (#7788)

    🛠 Development Fixes

    • ⬆️ Upgrade liquid-c to v4.0 (#7375)
    • ⬆️ Bump RuboCop to v0.71.0 (#7687)
    • 💎 Target Ruby 2.4 syntax (#7583)
    • 🛠 Fix: RuboCop offenses (#7769)
    • 👉 Use communicative method parameters (#7566)
    • Scan assert_equal methods and rectify any offenses with a custom RuboCop cop (#7130)
    • ✅ CI: Test with Ruby 2.6 (#7438)
    • ✅ CI: Test with Ruby 2.6 on AppVeyor (#7518)
    • ⚡️ CI: Update RuboCop config (#7050)
    • 📄 CI: Add a script to profile docs (#7540)
    • 👯 CI(Appveyor): shallow clone with 5 last commits (#7312)
    • ✅ CI: Test with oldest and latest Ruby only (#7412)
    • ⚡️ CI: Update excludes for CodeClimate Analyses (#7365)
    • 🔒 CI: Lock Travis to Bundler-1.16.2 (#7144)
    • ✅ CI: Bump tested version of JRuby to 9.2.7.0 (#7612)
    • ⚡️ CI: Do not install docs on updating gems on Travis (#7706)
    • ⚡️ Update gemspec (#7425)
    • deps: relax version constraint on classifier-reborn gem (#7471)
    • ⚡️ deps: update yajl-ruby (#7278)
    • 💎 deps: bump yajl-ruby to v1.4.0 (#6976)
    • Create symlink only if target is accessible (#7429)
    • Switch to :install_if for wdm gem (#7372)
    • ➕ Add cucumber feature to test include_relative tag (#7213)
    • 🔨 Small benchmark refactoring (#7211)
    • 🛠 Fix incorrectly passed arguments to assert_equal (#7134)
    • 🛠 fix up refute_equal call (#7133)
    • 🛠 Fix RuboCop offences in test files (#7128)
    • 👉 Use assert_include (#7093)
    • 🚀 Remember to release docs gem (#7066)
    • 🚚 Useless privates removed (#6768)
    • ✅ Load Rouge for TestKramdown (#7007)
    • ⚡️ Update instructions for releasing docs Gem (#6975)
    • 💎 We are not using Ruby 2.2 anymore (#6977)
    • ✂ Remove unnecessary Jekyll::Page constant (#6770)
    • ✂ Remove unused error class (#6511)
    • ➕ Add a Cucumber feature for post_url tag (#7586)
    • 🏗 Generate a "TOTAL" row for build-profile table (#7614)
    • 🔨 Refactor Jekyll::Cache (#7532)
    • Store list of expected extnames in a constant (#7638)
    • 🏗 Profile allocations from a build session (#7646)
    • ⚡️ Update small typo in contributing.md (#7671)
    • ✂ Remove override to Jekyll::Document#respond_to? (#7695)
    • ⚡️ Update TestTags in sync with Rouge v3.4 (#7709)
    • 👉 Use regexp to filter special entries (#7702)
    • ⬇️ Reduce Array objects generated from utility method (#7749)
    • ⚡️ Update mime.types (#7756)
    • Replace redundant Array#map with Array#each (#7761)
    • Reduce allocations by using #each_with_object (#7758)
    • 📝 Memoize fallback_data for Drop (#7728)
    • 👉 Use String#end_with? to check if entry is a backup (#7701)

    📚 Documentation

    • 🔨 Refactor docs (#7205)
    • ➕ Add a link to Giraffe Academy's tutorial (#7325)
    • Do not advise users to install Jekyll outside of Bundler (#6927)
    • ✂ Remove documentation for using Redcarpet (#6990)
    • 🍎 Install Docs that Work on MacOS 10.14 (#7561)
    • ➕ Add Installation Instructions for Ubuntu (#6925)
    • Don't prompt for sudo when installing with Ubuntu WSL (#6781)
    • Installation instructions for Fedora (#7198)
    • ⚡️ Update Windows install docs (#6926)
    • List all standard liquid filters (#7333)
    • List all static files variables (#7002)
    • 👌 Improve how to include Rouge stylesheets (#7752)
    • 🔌 Mention CommonMark plugins (#7418)
    • ➕ Add TSV to list of supported _data files. (#7168)
    • 🚀 How to deploy using pre-push git hook (#7179)
    • Hosting with AWS Amplify (#7510)
    • 🚀 CircleCI deployment through CircleCI v2 (#7024)
    • GitHub Pages: use themes from other repos (#7112)
    • Document page.dir and page.name (#7373)
    • Document custom tag blocks (#7359)
    • Document converter methods (#7289)
    • Document {{ page.collection }} (#7430)
    • Document Jekyll Filters with YAML data (#7335)
    • Document where Jekyll looks for layouts in a site (#7564)
    • 🔌 plugin: liquid tag jekyll-flickr (#6946)
    • 🔌 plugin: jekyll-target-blank (#7046)
    • 🔌 plugin: json-get. (#7086)
    • 🔌 plugin: jekyll-info (#7091)
    • 🔌 plugin: jekyll-xml-source (#7114)
    • 🔌 plugin: jekyll-firstimage filter (#7127)
    • 🔌 plugin: CAT (#7011)
    • Resources: Statictastic (#7593)
    • Resources: Bonsai Search (#7543)
    • Resources: Formspark (#7601)
    • Resources: Jekpack(#7598)
    • Resources: formX (#7536)
    • Resources: 99inbound's Jekyll post (#7348)
    • Resources: CloudSh (#7497)
    • Community: DEV Community's Jekyll tag (#7139)
    • 👉 Showcase: developer.spotify.com (#7217)
    • 👉 Showcase: Isomer (#7300)
    • Add version number for group_by_exp doc (#6956)
    • 📚 Updated nginx configuration for custom-404-page documentation (#6994)
    • Clarify definition of 'draft' (#7037)
    • _drafts need to be contained within the custom collection directory (#6985)
    • ⚡️ Updated to supported version (#7031)
    • ➕ Add Hints for some Improved Travis Config in Doc (#7049)
    • ⚡️ Update travis-ci.md to point out "this is an example Gemfile" (#7089)
    • 🐧 Instructions to view theme’s files under Linux (#7095)
    • 👉 Use a real theme in the example (#7125)
    • ⚡️ Update docs about post creation (#7138)
    • 🎉 Initialize upgrading doc for v4.0 (#7140)
    • ➕ Add version badge for date filters with ordinal (#7162)
    • Corrected sample usage of postfiles (#7181)
    • 📦 Resolve "Unable to locate package ruby2.4" error (#7196)
    • 💅 Correct stylesheet url in tutorial step 7 (#7210)
    • ✂ Removes quotes from markdown for assets (#7223)
    • Clarified front matter requirement (#7234)
    • Explicit location of where to create blog.html (#7241)
    • 🏗 Reference the build command options that allows multiple config files (#7266)
    • ➕ Add more issue template(s) and pull request template (#7269)
    • 👷 Suggest sites use OpenSSL instead of GnuTLS for their site's CI (#7010)
    • 🛠 Fix broken Contributors link in README.markdown (#7200)
    • ➕ Add title tag to item in RSS template (#7282)
    • ➕ Add link tag to item in RSS template (#7291)
    • ✂ Remove redundant instruction comment (#7342)
    • 🔌 Textile is only supported through a converter plugin (#7003)
    • ➕ Add recursive navigation tutorial (#7720)
    • ✂ Remove installation instructions with Homebrew (#7381)
    • 🛠 Fix dead link and misleading prose (#7383)
    • 🛠 Fix content management section (#7385)
    • 💎 Apply ruby official guide documents (#7393)
    • Fix group_by_exp filter example (#7394)
    • ✂ Remove alt attribute from a tags (#7407)
    • 🛠 Fix BASH code-block in ubuntu.md (#7420)
    • zlib is missing (#7428)
    • 🛠 Fixed unnecessary aticles and pronouns (#7466)
    • Store SSL key and cert in site source (#7473)
    • 🛠 Fix typo in tutorial for converting existing site (#7524)
    • Check if var exists before include tag (#7530)
    • 📄 Clarify docs on collections regarding the need for front matter (#7538)
    • 🛠 Fix incorrect Windows path in themes.md (#7525)
    • ➕ Addresses bundle not found. (#7351)
    • ⚡️ Update the contribution docs for draft pull requests (#7619)
    • Data file section adds TSV (#7640)
    • 0️⃣ Indicate where the _sass folder is by default (#7644)
    • 📄 Docs: add version tags to new placeholders (#5981) for permalinks (#7647)
    • 🚀 Solve "GitHub Page build failure" in 10-deployment.md (#7648)
    • 🛠 fix link to Site Source config (#7708)
    • Introduce frontmatter in step 2 (#7704)
    • ➕ Add @ashmaroli to Core Team listing (#7398)
    • Lnk to Tidelift in site's footer (#7377)
    • 🔗 Link to OpenCollective backing (#7378
    • 🔗 Link to sponsor listing in README (#7405)
    • Adjust team page listings (#7395)
    • ⚡️ Updates to CODE OF CONDUCT (v1.4.0) (#7105)
    • More inclusive writing (#7283)
    • ⚡️ Update Ruby version used in Travis-CI example (#7783)
    • 📚 Documentation for binary operators in where_exp (#7786)
    • ➕ Adding SmartForms as Forms service (#7794)

    Site Enhancements

    • 👍 Better Performance (#7388)
    • ➕ Add some minor improvements to image loading in Showcase page (#7214)
    • 📄 Simplify assigning classname to docs' aside-links (#7609)
    • 📄 Simplify couple of includes in the docs site (#7607)
    • Avoid generating empty classnames (#7610)
    • Minimize rendering count (#7343)

    🚀 Release

    • 🚀 Release post for v4.0.0 beta1 (#7716)
    • 🚀 Release post for v4.0.0.pre.alpha1 (#7574)
    • 🚀 Release post for v3.8.0 (#6849)
    • 🚀 Release post for v3.6.3, v3.7.4 and v3.8.4 (#7259)
    • Post: v4.0 development (#6934)