From 378147d7615b5bc1e95591c9af8fbb12186f3295 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Tue, 19 Mar 2019 08:03:57 +0100 Subject: [PATCH] Release v4.0.0.pre.alpha1 (#7574) Merge pull request 7574 --- History.markdown | 323 +++++++++--------- docs/_config.yml | 1 + docs/_docs/history.md | 4 +- docs/_docs/installation.md | 2 +- docs/_docs/installation/macos.md | 63 ++-- docs/_docs/liquid/tags.md | 19 +- docs/_docs/troubleshooting.md | 6 +- docs/_docs/upgrading.md | 1 + docs/_docs/upgrading/3-to-4.md | 70 ++-- ...-jekyll-4-0-0-pre-alpha1-released.markdown | 42 +++ docs/_tutorials/cache_api.md | 1 - jekyll.gemspec | 4 +- lib/jekyll/version.rb | 2 +- 13 files changed, 281 insertions(+), 257 deletions(-) create mode 100644 docs/_posts/2019-03-18-jekyll-4-0-0-pre-alpha1-released.markdown diff --git a/History.markdown b/History.markdown index e4838c73957..a0abb7444fb 100644 --- a/History.markdown +++ b/History.markdown @@ -1,13 +1,139 @@ ## HEAD +### 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) + * Refactor `highlight` tag to behave like the `raw` tag (#6821) + * Upgrade kramdown dependency to v2.x (#7492) + * 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) + * 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) + + ### 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) + +### Minor Enhancements + + * Enhance `--blank` scaffolding (#7310) + * Fix custom 404 page for GitHub pages (#7132) + * Load config file from within current theme-gem (#7304) + * Use `jekyll-compose` if installed (#6932) + * 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) + * Cache globbed paths in front matter defaults (#7345) + * Cache computed item property (#7301) + * Cleanup Markdown converter (#7519) + * Disable Liquid via front matter (#6824) + * 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) + * Search Front matter defaults for Page objects with relative_path (#7261) + * Configure cache_dir (#7232) + * Lock use of `tzinfo` gem to v1.x (#7521, #7562) + * Utilize absolute paths of user-provided file paths (#7450) + +### Development Fixes + + * Use communicative method parameters (#7566) + * Scan `assert_equal` methods and rectify any offenses with a custom RuboCop cop (#7130) + * Add a script to profile docs with CI (#7540) + * Test with Ruby 2.6 on AppVeyor (#7518) + * Update gemspec (#7425) + * Upgrade liquid-c to v4.0 (#7375) + * Bump RuboCop to v0.63.x (#7489) + * Bump RuboCop to v0.62.x (#7449) + * Bump RuboCop to v0.61.x (#7401) + * Bump RuboCop to v0.60.x (#7338) + * Bump RuboCop to v0.59.0 (#7237) + * Bump RuboCop to v0.57.x (#7078) + * Relax version constraint on classifier-reborn gem (#7471) + * Test with Ruby v2.6 (#7438) + * Create symlink only if target is accessible (#7429) + * Test with oldest and latest Ruby only (#7412) + * Switch to `:install_if` for wdm gem (#7372) + * Update excludes for CodeClimate Analyses (#7365) + * CI(Appveyor): shallow clone with 5 last commits (#7312) + * update yajl-ruby (#7278) + * Add cucumber feature to test include_relative tag (#7213) + * Small benchmark refactoring (#7211) + * Lock Travis to Bundler-1.16.2 (#7144) + * 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) + * Update RuboCop's config (#7050) + * Useless privates removed (#6768) + * Load Rouge for TestKramdown (#7007) + * yajl-ruby update to v1.4.0 (#6976) + * 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) + ### Documentation - * Release post for v3.8.0 (#6849) * Add Installation Instructions for Ubuntu (#6925) * add liquid tag jekyll-flickr (#6946) - * Add 4.0 development post (#6934) * Updated copy - fixed casing of SaaS on resources page. (#6949) - * WIP: Do not advise users to install Jekyll outside of Bundler (#6927) + * Do not advise users to install Jekyll outside of Bundler (#6927) * Don't prompt for sudo when installing with Ubuntu WSL (#6781) * Fix typo (#6969) * Add version number for group_by_exp doc (#6956) @@ -16,8 +142,8 @@ * Updated nginx configuration for custom-404-page documentation (#6994) * List all static files variables (#7002) * Document that _drafts need to be contained within the custom collection directory (#6985) - * proposed change for passive voice. (#7005) - * added the CAT plugin to the plugin list (#7011) + * Change for passive voice. (#7005) + * Added the CAT plugin to the plugin list (#7011) * Updated to supported version (#7031) * Clarify definition of 'draft' (#7037) * Listed the jekyll-target-blank plugin in plugins list. (#7046) @@ -29,7 +155,7 @@ * GitHub enables you to use themes from other repos (#7112) * Updates to CODE OF CONDUCT (v1.4.0) (#7105) * Instructions to view theme’s files under Linux (#7095) - * add jekyll-xml-source (#7114) + * Add jekyll-xml-source (#7114) * Add the jekyll-firstimage filter plugin (#7127) * Use a real theme in the example (#7125) * Update docs about post creation (#7138) @@ -41,215 +167,84 @@ * Corrected sample usage of postfiles (#7181) * Add missing html end tag for code example in section 'For loops' (#7199) * Resolve "Unable to locate package ruby2.4" error (#7196) - * installation instructions for Fedora (#7198) + * Installation instructions for Fedora (#7198) * New docs (#7205) + * List all standard liquid filters (#7333) * Correct stylesheet url in tutorial step 7 (#7210) * Add some minor improvements to image loading in Showcase page (#7214) * Fix minor grammatical error (#7215) * Add developer.spotify.com to the Jekyll Showcase (#7217) - * removes quotes from markdown for assets (#7223) - * clarified front matter requirement (#7234) + * Removes quotes from markdown for assets (#7223) + * Clarified front matter requirement (#7234) * Minor whitespace fixes (#7238) - * explicit location of where to create blog.html (#7241) + * Explicit location of where to create blog.html (#7241) * Fix a small grammar error/typo in the docs (#7260) - * environments.md: reference the build command options that allows multiple config files (#7266) + * Reference the build command options that allows multiple config files (#7266) * Update 10-deployment.md (#7268) * 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) - * Docs: Add title tag to item in RSS template (#7282) - * Docs: more inclusive writing (#7283) + * Add title tag to item in RSS template (#7282) + * More inclusive writing (#7283) * Document converter methods (#7289) - * Docs: Add link tag to item in RSS template (#7291) + * Add link tag to item in RSS template (#7291) * Add Isomer to showcase (#7300) * Added missing semicolon (#7306) * "This restricts you..." to "This restricts your" (#7307) * Add a link to Giraffe Academy's tutorial (#7325) - * grammar correction (#7327) - * docs: list all standard liquid filters (#7333) + * Grammar correction (#7327) * Document Jekyll Filters with YAML data (#7335) * Remove redundant instruction comment (#7342) - * docs: minimize rendering count (#7343) + * Minimize rendering count (#7343) * Update posts.md (#7360) * Add info how to deploy using pre-push git hook (#7179) * Textile is only supported through a converter plugin (#7003) * Add documentation for custom tag blocks (#7359) * Added 99inbound's Jekyll post to form resources (#7348) - * docs: document page.dir and page.name (#7373) + * Document page.dir and page.name (#7373) * Remove installation instructions with Homebrew (#7381) * Fix dead link and misleading prose (#7383) * Fix content management section (#7385) - * Site: Better Performance (#7388) * Proposed re-wording of Sass note. :) (#7392) * Apply ruby official guide documents (#7393) - * docs: Fix group_by_exp filter example (#7394) - * adjust team page listings (#7395) + * Fix group_by_exp filter example (#7394) + * Adjust team page listings (#7395) * Update resources.md (#7396) * Update resources.md (#7397) * Remove alt attribute from a tags (#7407) * Fix grammatical error in permalinks.md (#7409) - * [Docs] Fix BASH code-block in ubuntu.md (#7420) + * Fix BASH code-block in ubuntu.md (#7420) * zlib is missing (#7428) * Include docs for `{{ page.collection }}` (#7430) * Permalink docs typo fixes (#7459) * Fixed unnecessary aticles and pronouns (#7466) * Grammatical correction (#7464) * Update resources.md (#7472) - * Docs: store SSL key and cert in site source (#7473) + * Store SSL key and cert in site source (#7473) * Minor doc fixes (#7495) * Changed order of steps (#7503) * Hosting with AWS Amplify (#7510) * Fix typo in tutorial for converting existing site (#7524) * Add CloudSh to resource page. (#7497) - * Docs: check if var exists before include tag (#7530) + * Check if var exists before include tag (#7530) * Added formX to form-backend resources (#7536) * Clarify docs on collections regarding the need for front matter (#7538) * Fix incorrect Windows path in themes.md (#7525) * Document where Jekyll looks for layouts in a site (#7564) - * docs: mention CommonMark plugins (#7418) + * Mention CommonMark plugins (#7418) * Addresses bundle not found. (#7351) - -### Minor Enhancements - - * use jekyll-compose if installed (#6932) - * Memoize computing excerpt's relative_path (#6951) - * Liquefied link tag (#6269) - * Suggest re-running command with --trace on fail (#6551) - * Update item_property to return numbers as numbers instead of strings (#6608) - * Use .markdown for page templates (#7126) - * Fix custom 404 page for GitHub pages (#7132) - * Add support for `*.xhtml` files (#6854) - * Cache matched defaults sets for given parameters (#6888) - * Ignore permission error of /proc/version (#7267) - * Strip extra slashes via `Jekyll.sanitized_path` (#7182) - * Site template: remove default config for markdown (#7285) - * Cache: Do not dump undumpable objects (#7190) - * Optimize rendering Liquid templates (#7136) - * Automatically load _config.toml (#7299) - * feat: enhance --blank scaffolding (#7310) - * Skip processing posts that can not be read (#7302) - * Memoize Site#post_attr_hash (#7276) - * Load config file from within current theme-gem (#7304) - * Memoize the return value of Site#documents (#7273) - * Upgrade liquid-c to v4.0 (#7375) - * Add a custom inspect string for StaticFile objects (#7422) - * Remind user to include gem in the Gemfile on error (#7476) - * Search Front matter defaults for Page objects with relative_path (#7261) - * Support for binary operators in where_exp filter (#6998) - * Configure cache_dir (#7232) - * Lock use of `tzinfo` gem to v1.x (#7521, #7562) - * Utilize absolute paths of user-provided file paths (#7450) - * Cache globbed paths in front matter defaults (#7345) - * Cache computed item property (#7301) - * Memoize Document#excerpt_separator (#7569) - * Cleanup Markdown converter (#7519) - * Optimize Document::DATE_FILENAME_MATCHER to match valid filenames (#7292) - -### Major Enhancements - - * Remove unused error class (#6511) - * Drop support for Ruby 2.1 and 2.2 (#6560) - * Add vendor folder to a newly installed site's .gitignore (#6968) - * bump i18n (#6931) - * We are not using Ruby 2.2 anymore (#6977) - * Drop support for older versions of Rouge (#6978) - * Remove support for Redcarpet (#6987) - * Remove support for rdiscount (#6988) - * Remove 'cache_dir' during `jekyll clean` (#7158) - * Output Jekyll Version while debugging (#7173) - * Drop support for pygments as syntax-highlighter (#7118) - * Add Cache class (#7169) - * Cache converted markdown (#7159) - * Ignore cache directory (#7184) - * Incorporate `relative_url` filter in `link` tag (#6727) - * 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) - * Add `Site#in_cache_dir` helper method (#7160) - * Refactor `highlight` tag to behave like the `raw` tag (#6821) - * Upgrade kramdown dependency to v2.x (#7492) - * Feat: drop ruby 2.3 (#7454) - -### Development Fixes - - * Remove unnecessary Jekyll::Page constant (#6770) - * Loggers should accept both numbers and symbols (#6967) - * Update instructions for releasing docs Gem (#6975) - * yajl-ruby update to v1.4.0 (#6976) - * Load Rouge for TestKramdown (#7007) - * Useless privates removed (#6768) - * Allow i18n v0.9.5 and higher (#7044) - * Update Rubocop's config (#7050) - * Remember to release docs gem (#7066) - * Use assert_include (#7093) - * Update rubocop version to 0.57.x ### -docs (#7078) * Example of CircleCI deployment through CircleCI v2 (#7024) - * Fix Rubocop offences in test files (#7128) - * fix up refute_equal call (#7133) - * Fix incorrectly passed arguments to assert_equal (#7134) - * Lock Travis to Bundler-1.16.2 (#7144) - * Replace regex arg to :gsub with a string arg (#7189) - * Interpolate Jekyll::Page subclass on inspection (#7203) - * Small benchmark refactoring (#7211) - * Add cucumber feature to test include_relative tag (#7213) - * Bump Rubocop to v0.59.0 (#7237) - * update yajl-ruby (#7278) - * Drop support for `jekyll-watch-1.4.0` and older (#7287) - * CI(Appveyor): shallow clone with 5 last commits (#7312) - * Bump RuboCop to v0.60.x (#7338) - * Update excludes for CodeClimate Analyses (#7365) - * Switch to `:install_if` for wdm gem (#7372) - * Bump RuboCop to v0.61.x (#7401) - * dev: test oldest and latest Ruby only (#7412) - * Reduce array traversal in Jekyll::Reader (#7157) - * Create symlink only if target is accessible (#7429) - * Test with the new Ruby v2.6 (#7438) - * Bump RuboCop to v0.62.x (#7449) - * Relax version constraint on classifier-reborn gem (#7471) - * Update rubocop to ~> 0.63.1 (#7489) - * dev: update gemspec (#7425) - * Test with Ruby 2.6 on AppVeyor [skip travis] (#7518) - * Add a script to profile docs with CI (#7540) - * Scan `assert_equal` methods and rectify any offenses with a custom Rubocop cop (#7130) - -### Bug Fixes - - * Add call to unused method `validate_options` in `commands/serve.rb` (#7122) - * Security: fix `include` bypass of `EntryFilter#filter` symlink check (#7226) - * 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) - * Revert "Cache converter in renderer" (#7326) - * Measure the no. of times a template gets rendered (#7316) - * Re-implement handling Liquid blocks in excerpts (#7250) - * Theme gems: ensure directories aren't symlinks (#7419) - * Documents should be able to render their date (#7404) - * Fix Interpreter warning from Jekyll::Renderer (#7448) - * Dont write static files from unrendered collection (#7410) - * Excerpt handling of custom and intermediate tags (#7382) - * changed 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) - * Use communicative method parameters (#7566) - * Avoid unnecessary duplication of pages array (#7272) - * 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) - -### feature - - * Disable Liquid via front matter (#6824) - * Do not process Liquid in post excerpt when disabled in front matter (#7146) + * v4.0 development post (#6934) + * Release post for v3.8.0 (#6849) + * Release Post for v3.6.3, v3.7.4 and v3.8.4 (#7259) ### Site Enhancements - * Add Release Post for v3.6.3, v3.7.4 and v3.8.4 (#7259) - * Fix link to Tidelift in site's footer (#7377) - * :sparkles: Add a link to OpenCollective backing (#7378) * Add @ashmaroli to Core Team listing (#7398) - * link site to sponsor listing in readme (#7405) + * Lnk to Tidelift in site's footer (#7377) + * Link to OpenCollective backing (#7378 + * Link to sponsor listing in README (#7405) + * Better Performance (#7388) ## 3.8.5 / 2018-11-04 @@ -306,10 +301,10 @@ * Minimize array allocations in the `where` filter (#6860) * Bump JRuby (#6878) * Assert existence of <collection>.files (#6907) - * Bump Rubocop to 0.54.x (#6915) + * Bump RuboCop to 0.54.x (#6915) * Regenerate unconditionally unless its an incremental build (#6917) * Centralize require statements (#6910) - * Bump to Rubocop 0.55 (#6929) + * Bump to RuboCop 0.55 (#6929) * Refactor private method `HighlightBlock#parse_options` (#6822) ### Minor Enhancements diff --git a/docs/_config.yml b/docs/_config.yml index f89e2eac52d..61fb8b8a503 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -1,5 +1,6 @@ --- version: 3.8.5 +min_ruby_version: 2.4.0 name: Jekyll • Simple, blog-aware, static sites description: Transform your plain text into static websites and blogs url: https://jekyllrb.com diff --git a/docs/_docs/history.md b/docs/_docs/history.md index e1b5c42fd0a..8d646bfe3fd 100644 --- a/docs/_docs/history.md +++ b/docs/_docs/history.md @@ -77,10 +77,10 @@ note: This file is autogenerated. Edit /History.markdown instead. - Minimize array allocations in the `where` filter ([#6860]({{ site.repository }}/issues/6860)) - Bump JRuby ([#6878]({{ site.repository }}/issues/6878)) - Assert existence of <collection>.files ([#6907]({{ site.repository }}/issues/6907)) -- Bump Rubocop to 0.54.x ([#6915]({{ site.repository }}/issues/6915)) +- Bump RuboCop to 0.54.x ([#6915]({{ site.repository }}/issues/6915)) - Regenerate unconditionally unless its an incremental build ([#6917]({{ site.repository }}/issues/6917)) - Centralize require statements ([#6910]({{ site.repository }}/issues/6910)) -- Bump to Rubocop 0.55 ([#6929]({{ site.repository }}/issues/6929)) +- Bump to RuboCop 0.55 ([#6929]({{ site.repository }}/issues/6929)) - Refactor private method `HighlightBlock#parse_options` ([#6822]({{ site.repository }}/issues/6822)) ### Minor Enhancements diff --git a/docs/_docs/installation.md b/docs/_docs/installation.md index aa0c3f92c99..e40cebd7f7b 100644 --- a/docs/_docs/installation.md +++ b/docs/_docs/installation.md @@ -8,7 +8,7 @@ Jekyll is a [Ruby Gem](/docs/ruby-101/#gems) that can be installed on most syste ## Requirements -* [Ruby](https://www.ruby-lang.org/en/downloads/) version 2.2.5 or above, including all development headers (ruby version can be checked by running `ruby -v`) +* [Ruby](https://www.ruby-lang.org/en/downloads/) version {{ site.min_ruby_version }} or above, including all development headers (ruby version can be checked by running `ruby -v`) * [RubyGems](https://rubygems.org/pages/download) (which you can check by running `gem -v`) * [GCC](https://gcc.gnu.org/install/) and [Make](https://www.gnu.org/software/make/) (in case your system doesn't have them installed, which you can check by running `gcc -v`,`g++ -v` and `make -v` in your system's command line interface) diff --git a/docs/_docs/installation/macos.md b/docs/_docs/installation/macos.md index 33f855630e1..9401f56cf24 100644 --- a/docs/_docs/installation/macos.md +++ b/docs/_docs/installation/macos.md @@ -9,41 +9,10 @@ First, you need to install the command-line tools to be able to compile native e xcode-select --install ``` -{: .note } -We strongly recommend that you install Ruby gems in your home directory to avoid file permissions problems and using `sudo`. - -You can do this with the `--user-install` option, for instance by running: - -```sh -gem install --user-install bundler jekyll -``` - -Or you can change the default gem path, by adding those lines to your shell config file, .e.g. `~/.bash_profile` or `~/.bashrc` if your shell is bash: - -``` -export GEM_HOME=$HOME/gems -export PATH=$HOME/gems/bin:$PATH -``` - -Relaunch your terminal and run `gem env` to check that default gem paths point to your home directory by default. - -## Set up Ruby included with the OS - -Jekyll requires Ruby > 2.2.5. We recommend that you run Ruby > 2.3 though, as more and more dependencies ask for that requirement. You're good to go on macOS Mojave 10.14: - -```sh -sw_vers -productVersion -10.14 - -ruby -v -ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18] -``` - -Install [Bundler](/docs/ruby-101/#bundler) and Jekyll by running: +## Set up Ruby -```sh -gem install bundler jekyll -``` +Jekyll requires Ruby > {{ site.min_ruby_version }}. +As macOS Mojave 10.14 comes only with ruby 2.3.x, you'll have to install Ruby through Homebrew. ### Install latest stable Ruby with Homebrew {#brew} @@ -69,7 +38,7 @@ which ruby /usr/local/opt/ruby/bin/ruby ruby -v -ruby 2.6.1p33 (2019-01-30 revision 66950) [x86_64-darwin18] +ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-darwin18] ``` Yay, we are now running current stable Ruby! @@ -82,6 +51,24 @@ gem install bundler jekyll That's it, you're ready to roll! +{: .note } +We strongly recommend that you install Ruby gems in your home directory to avoid file permissions problems and using `sudo`. + +You can do this with the `--user-install` option, for instance by running: + +```sh +gem install --user-install bundler jekyll +``` + +Or you can change the default gem path, by adding those lines to your shell config file, .e.g. `~/.bash_profile` or `~/.bashrc` if your shell is bash: + +``` +export GEM_HOME=$HOME/gems +export PATH=$HOME/gems/bin:$PATH +``` + +Relaunch your terminal and run `gem env` to check that default gem paths point to your home directory by default. + ### Manage multiple Ruby environments with rbenv {#rbenv} People often use [rbenv](https://github.com/rbenv/rbenv) to manage multiple @@ -105,10 +92,10 @@ Restart your terminal for changes to take effect. Now you can install the Ruby version of our choice, let's go with current latest stable Ruby: ```sh -rbenv install 2.5.3 -rbenv global 2.5.3 +rbenv install 2.6.2 +rbenv global 2.6.2 ruby -v -ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-darwin18] +ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-darwin18] ``` That's it! Head over [rbenv command references](https://github.com/rbenv/rbenv#command-reference) to learn how to use different versions of Ruby in your projects. diff --git a/docs/_docs/liquid/tags.md b/docs/_docs/liquid/tags.md index 90b654b83da..d402a8558c2 100644 --- a/docs/_docs/liquid/tags.md +++ b/docs/_docs/liquid/tags.md @@ -90,10 +90,10 @@ You must include the file's original extension when using the `link` tag. Here a {% raw %} ```liquid -{{ site.baseurl }}{% link _collection/name-of-document.md %} -{{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %} -{{ site.baseurl }}{% link news/index.html %} -{{ site.baseurl }}{% link /assets/files/doc.pdf %} +{% link _collection/name-of-document.md %} +{% link _posts/2016-07-26-name-of-post.md %} +{% link news/index.html %} +{% link /assets/files/doc.pdf %} ``` {% endraw %} @@ -101,14 +101,15 @@ You can also use the `link` tag to create a link in Markdown as follows: {% raw %} ```liquid -[Link to a document]({{ site.baseurl }}{% link _collection/name-of-document.md %}) -[Link to a post]({{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %}) -[Link to a page]({{ site.baseurl }}{% link news/index.html %}) -[Link to a file]({{ site.baseurl }}{% link /assets/files/doc.pdf %}) +[Link to a document]({% link _collection/name-of-document.md %}) +[Link to a post]({% link _posts/2016-07-26-name-of-post.md %}) +[Link to a page]({% link news/index.html %}) +[Link to a file]({% link /assets/files/doc.pdf %}) ``` {% endraw %} -(Including `{% raw %}{{ site.baseurl }}{% endraw %}` is optional — it depends on whether you want to preface the page URL with the `baseurl` value.) +{: .note } +Since {% include docs_version_badge.html version="v4.0"%} you don't need to prepend `link` tags with `site.baseurl` The path to the post, page, or collection is defined as the path relative to the root directory (where your config file is) to the file, not the path from your existing page to the other page. diff --git a/docs/_docs/troubleshooting.md b/docs/_docs/troubleshooting.md index cff5a07b4f7..31103e5154b 100644 --- a/docs/_docs/troubleshooting.md +++ b/docs/_docs/troubleshooting.md @@ -21,7 +21,7 @@ the header files for compiling extension modules for Ruby 2.x This can be done on Ubuntu or Debian by running: ```sh -sudo apt-get install ruby2.3-dev +sudo apt-get install ruby2.6-dev ``` On Red Hat, CentOS, and Fedora systems you can do this by running: @@ -138,10 +138,10 @@ jekyll new test Running bundle install in /home/user/test... -Your user account isn't allowed to install to the system RubyGems. +Your user account is not allowed to install to the system RubyGems. You can cancel this installation and run: - bundle install --path vendor/bundle + bundle install --path vendor/bundle to install the gems into ./vendor/bundle/, or you can enter your password and install the bundled gems to RubyGems using sudo. diff --git a/docs/_docs/upgrading.md b/docs/_docs/upgrading.md index 3029c0724e9..37138000069 100644 --- a/docs/_docs/upgrading.md +++ b/docs/_docs/upgrading.md @@ -10,6 +10,7 @@ guides to aid your upgrade: - [From 0.x to 1.x and 2.x](/docs/upgrading/0-to-2/) - [From 2.x to 3.x](/docs/upgrading/2-to-3/) +- [From 3.x to 4.x](/docs/upgrading/3-to-4/) ## Minor updates diff --git a/docs/_docs/upgrading/3-to-4.md b/docs/_docs/upgrading/3-to-4.md index 41c44fce5ca..f483e64aa1d 100644 --- a/docs/_docs/upgrading/3-to-4.md +++ b/docs/_docs/upgrading/3-to-4.md @@ -3,34 +3,36 @@ title: Upgrading from 3.x to 4.x permalink: /docs/upgrading/3-to-4/ --- -Upgrading from an older version of Jekyll? A few things have changed in Jekyll 4 -that you'll want to know about. +A few things have changed in Jekyll 4. -Before we dive in, you need to have at least Ruby 2.3.0 installed. Run the following -in your terminal to check +Before we dive in, you need to have at least Ruby {{ site.min_ruby_version }} +installed. + +Run the following in your terminal to check ```sh ruby -v +ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-darwin18] ``` -If you're using Ruby >= 2.3.0, go ahead and fetch the latest version of Jekyll: +If you're using a supported Ruby version > {{ site.min_ruby_version }}, go ahead +and fetch the latest version of Jekyll: ```sh gem update jekyll ``` ---- - -### Template rendering +## Template rendering -We've slightly altered the way Jekyll parses and renders your various templates to improve -the overall build times. Jekyll now parses a template once, caches it internally and then -renders the parsed template multiple times as required by your pages and documents. +We've slightly altered the way Jekyll parses and renders your various templates +to improve the overall build times. Jekyll now parses a template once, caches it +internally and then renders the parsed template multiple times as required by +your pages and documents. -The downside to this is that some of the community-authored plugins may not work as they -previously used to. +The downside to this is that some of the community-authored plugins may not work +as they previously used to. -#### For Plugin-authors +## For plugin authors * If your plugin depends on the following code: `site.liquid_renderer.file(path).parse(content)`, note that the return value (`template`, an instance of *`Liquid::Template`*), from that line will @@ -46,11 +48,10 @@ you can invoke *`Liquid::Template`* directly: + template = Liquid::Template.parse(content) ``` ---- - -### Exclusion changes +## Exclusion changes -We've enhanced our default exclusion array. It now looks like the following: +We've enhanced our default exclusion array. +It now looks like the following: ```yaml # default excludes @@ -81,27 +82,26 @@ include: - node_modules/uglifier/index.js ``` -The above configuration directs Jekyll to handle only `node_modules/uglifier/index.js` -while ignoring every other file in the `node_modules` directory since that directory is -"excluded" by default. +The above configuration directs Jekyll to handle only +`node_modules/uglifier/index.js` while ignoring every other file in the +`node_modules` directory since that directory is "excluded" by default. -Note that the default `include` array still gets overridden by the `include` array in your -config file. So, be sure to add `.htaccess` to the list if you need that file to be -present in the generated site. +Note that the default `include` array still gets overridden by the `include` +array in your config file. So, be sure to add `.htaccess` to the list if you +need that file to be present in the generated site. ---- - -### kramdown v2 +## Kramdown v2 Jekyll has dropped support for `kramdown-1.x` entirely. -From [`v2.0` onwards](https://kramdown.gettalong.org/news.html#kramdown-200-released) kramdown requires -specific extensions to be additionally installed to use certain features are desired outside of kramdown's -core functionality. +From [`v2.0` onwards](https://kramdown.gettalong.org/news.html#kramdown-200-released) +kramdown requires specific extensions to be additionally installed to use +certain features are desired outside of kramdown's core functionality. -Out of all the extensions listed in the report linked above, gem `kramdown-parser-gfm` is automatically -installed along with Jekyll 4.0. The remaining extensions will have to be manually installed by the user -depending on desired funtionality, by listing the extension's gem-name in their `Gemfile`. +Out of all the extensions listed in the report linked above, gem +`kramdown-parser-gfm` is automatically installed along with Jekyll 4.0. The +remaining extensions will have to be manually installed by the user depending on +desired funtionality, by listing the extension's gem-name in their `Gemfile`. Notes: * `kramdown-converter-pdf` will be ignored by Jekyll Core. To have Jekyll convert Markdown to PDF @@ -135,7 +135,3 @@ Notes: ``` * Vendors that provide a versioned Jekyll Environment Image (e.g. Docker Image, GitHub Pages, etc) will have to manually whitelist kramdown's extension gems in their distributions for Jekyll 4.0. - ---- - -*Did we miss something? Please click "Improve this page" above and add a section. Thanks!* diff --git a/docs/_posts/2019-03-18-jekyll-4-0-0-pre-alpha1-released.markdown b/docs/_posts/2019-03-18-jekyll-4-0-0-pre-alpha1-released.markdown new file mode 100644 index 00000000000..d4a2470997f --- /dev/null +++ b/docs/_posts/2019-03-18-jekyll-4-0-0-pre-alpha1-released.markdown @@ -0,0 +1,42 @@ +--- +title: Jekyll 4.0.0.pre.alpha1 Released +date: 2019-03-18 18:17:31 +0100 +author: dirtyf +version: 4.0.0.pre.alpha1 +category: release +--- + +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](https://forestry.io/blog/how-i-reduced-my-jekyll-build-time-by-61/) [good](https://boris.schapira.dev/2018/11/jekyll-build-optimization/) 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](/tutorials/cache-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](https://www.ruby-lang.org/en/downloads/). + GitHub Pages runs Ruby 2.5.x, services lile 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 `{% raw %}{{ site.baseurl }}{% endraw %}` ](https://github.com/jekyll/jekyll/pull/6727). +3. [`{% raw %}{% highlight %}{% endraw %}` now behaves like `{% raw %}{% raw %}{% endraw %}`](https://github.com/jekyll/jekyll/pull/6821), 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](https://github.com/jekyll/jekyll/blob/master/History.markdown#minor-enhancements) for more details. + +To test this pre version run: + +```sh +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! diff --git a/docs/_tutorials/cache_api.md b/docs/_tutorials/cache_api.md index 6e2692e463c..2690dc1639a 100644 --- a/docs/_tutorials/cache_api.md +++ b/docs/_tutorials/cache_api.md @@ -2,7 +2,6 @@ layout: tutorials permalink: /tutorials/cache-api/ title: Cache API -published: false --- Jekyll includes a caching API, which is used both internally as well as exposed diff --git a/jekyll.gemspec b/jekyll.gemspec index 66bcd7e0094..801d764e8ee 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -49,7 +49,9 @@ Gem::Specification.new do |s| s.post_install_message = <<~MSG ---------------------------------------------------------------------------------- - This version of Jekyll comes with some major changes. Most notably: + This version of Jekyll comes with some major changes. + + Most notably: * Our `link` tag now comes with the `relative_url` filter incorporated into it. You should no longer prepend `{{ site.baseurl }}` to `{% link foo.md %}` For further details: https://github.com/jekyll/jekyll/pull/6727 diff --git a/lib/jekyll/version.rb b/lib/jekyll/version.rb index b24d27d851c..226550da3b1 100644 --- a/lib/jekyll/version.rb +++ b/lib/jekyll/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Jekyll - VERSION = "3.8.5" + VERSION = "4.0.0.pre.alpha1" end