* master: (38 commits)
Mention where it came from. [ci skip]
Update history to reflect merge of #4944 [ci skip]
Update history to reflect merge of #4943 [ci skip]
Mention where it came from. [ci skip]
Update history to reflect merge of #4942 [ci skip]
Update history to reflect merge of #4941
External: remove &block arg, use block_given?
Update history to reflect merge of #4936 [ci skip]
lib/jekyll.rb: require document_drop to ease our pain
Sort the results of the require_all glob.
Rubocop fixes
Reset {{ layout }} between each render & merge layout data properly
Add failing test for layout data inheritance bug (#4433)
Add failing test for layout bug (#4897)
Fix tests for plugins in configuration.
Define Drop#each so we can use the new frozen/duping behavior
Don't default 'include' and 'exclude' to an empty array
Fix some minor things in the tests
Freeze configuration defaults & duplicate in deep_merge_hashes if need be.
Remove merge conflicts I forgot to fix.
...
Previously you could do, e.g. {{ site | jsonify }}, but with the introduction of Liquid Drops, this didn't work anymore.
This PR adds the ability to render drops as JSON. You can safely run drop.to_json and it should Do the Right Thing.
The properties of Liquid::Drops are only evaluated when they're asked for
and therefore save computation time. This prevents a lot of GC time cleaning
up objects that are not needed, because they're not created unless requested.
Additionally, this saves time for actual computation of those values because
they can be computed only if needed.
It's funny how much it helps when you only do what is needed. Far less overhead.