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 inlink
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
withinpost_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 withwhere
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 ofEntryFilter#filter
symlink check (#7226) - Theme gems: ensure directories aren't symlinks (#7419)
- ➕ Add call to unused method
validate_options
incommands/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#=~
withString#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