Skip to content

Comments

fix(deps): update dependency twig/twig to v3 (v4)#193

Closed
renovate[bot] wants to merge 1 commit intov4from
renovate/v4-major-twig-monorepo
Closed

fix(deps): update dependency twig/twig to v3 (v4)#193
renovate[bot] wants to merge 1 commit intov4from
renovate/v4-major-twig-monorepo

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Mar 3, 2025

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
twig/twig (source) ^1.0||^2.0 -> 3.20.0 age adoption passing confidence

Release Notes

twigphp/Twig (twig/twig)

v3.20.0

Compare Source

  • Fix support for ignoring syntax errors in an undefined handler in guard
  • Add configuration for Commonmark
  • Fix wrong array index
  • Bump minimum PHP version to 8.1
  • Add support for registering callbacks for undefined functions, filters or token parsers in the IntegrationTestCase
  • Use correct line number for ForElseNode
  • Fix timezone conversion on strings

v3.19.0

Compare Source

  • Fix a security issue where escaping was missing when using ??
  • Deprecate Token::getType(), use Token::test() instead
  • Add Token::toEnglish()
  • Add ForElseNode
  • Deprecate Twig\ExpressionParser::parseOnlyArguments() and
    Twig\ExpressionParser::parseArguments() (use
    Twig\ExpressionParser::parseNamedArguments() instead)
  • Fix constant() behavior when used with ??
  • Add the invoke filter
  • Make {} optional for the types tag
  • Add LastModifiedExtensionInterface and implementation in AbstractExtension to track modification of runtime classes
  • Ignore static properties when using the dot operator

v3.18.0

Compare Source

  • Fix unary operator precedence change
  • Ignore SyntaxError exceptions from undefined handlers when using the guard tag
  • Add a way to stream template rendering (TemplateWrapper::stream() and TemplateWrapper::streamBlock())

v3.17.1

Compare Source

  • Fix the null coalescing operator when the test returns null
  • Fix the Elvis operator when used as '? :' instead of '?:'
  • Support for invoking closures

v3.17.0

Compare Source

  • Fix ArrayAccess with objects as keys
  • Support underscores in number literals
  • Deprecate ConditionalExpression and NullCoalesceExpression (use ConditionalTernary and NullCoalesceBinary instead)

v3.16.0

Compare Source

  • Deprecate InlinePrint
  • Fix having macro variables starting with an underscore
  • Deprecate not passing a Source instance to TokenStream
  • Deprecate returning null from TwigFilter::getSafe() and TwigFunction::getSafe(), return [] instead

v3.15.0

Compare Source

  • [BC BREAK] Add support for accessing class constants with the dot operator;
    this can be a BC break if you don't use UPPERCASE constant names
  • Add Spanish inflector support for the plural and singular filters in the String extension
  • Deprecate TempNameExpression in favor of LocalVariable
  • Deprecate NameExpression in favor of ContextVariable
  • Deprecate AssignNameExpression in favor of AssignContextVariable
  • Remove MacroAutoImportNodeVisitor
  • Deprecate MethodCallExpression in favor of MacroReferenceExpression
  • Fix support for the "is defined" test on _self.xxx (auto-imported) macros
  • Fix support for the "is defined" test on inherited macros
  • Add named arguments support for the dot operator arguments (foo.bar(some: arg))
  • Add named arguments support for macros
  • Add a new guard tag that allows to test if some Twig callables are available at compilation time
  • Allow arrow functions everywhere
  • Deprecate passing a string or an array to Twig callable arguments accepting arrow functions (pass a \Closure)
  • Add support for triggering deprecations for future operator precedence changes
  • Deprecate using the not unary operator in an expression with *, /, //, or % without using explicit parentheses to clarify precedence
  • Deprecate using the ?? binary operator without explicit parentheses
  • Deprecate using the ~ binary operator in an expression with + or - without using parentheses to clarify precedence
  • Deprecate not passing AbstractExpression args to most constructor arguments for classes extending AbstractExpression
  • Fix power expressions with a negative number in parenthesis ((-1) ** 2)
  • Deprecate instantiating Node directly. Use EmptyNode or Nodes instead.
  • Add support for inline comments
  • Add Profile::getStartTime() and Profile::getEndTime()
  • Fix "ignore missing" when used on an "embed" tag
  • Fix the possibility to override an aliased block (via use)
  • Add template cache hot reload
  • Allow Twig callable argument names to be free-form (snake-case or camelCase) independently of the PHP callable signature
    They were automatically converted to snake-cased before
  • Deprecate the attribute function; use the . notation and wrap the name with parenthesis instead
  • Add support for argument unpackaging
  • Add JSON support for the file extension escaping strategy
  • Support Markup instances (and any other \Stringable) as dynamic mapping keys
  • Deprecate the sandbox tag
  • Improve the way one can deprecate a Twig callable (use deprecation_info instead of the other callable options)
  • Add the enum function
  • Add support for logical xor operator

v3.14.2

Compare Source

  • Fix an infinite recursion in the sandbox code

v3.14.1

Compare Source

  • [BC BREAK] Fix a security issue in the sandbox mode allowing an attacker to call attributes on Array-like objects
    They are now checked via the property policy
  • Fix a security issue in the sandbox mode allowing an attacker to be able to call toString()
    under some circumstances on an object even if the __toString() method is not allowed by the security policy

v3.14.0

Compare Source

  • Fix a security issue when an included sandboxed template has been loaded before without the sandbox context
  • Add the possibility to reset globals via Environment::resetGlobals()
  • Deprecate Environment::mergeGlobals()

v3.13.0

Compare Source

  • Add the types tag (experimental)
  • Deprecate the Twig\Test\NodeTestCase::getTests() data provider, override provideTests() instead.
  • Mark Twig\Test\NodeTestCase::getEnvironment() as final, override createEnvironment() instead.
  • Deprecate Twig\Test\NodeTestCase::getVariableGetter(), call createVariableGetter() instead.
  • Deprecate Twig\Test\NodeTestCase::getAttributeGetter(), call createAttributeGetter() instead.
  • Deprecate not overriding Twig\Test\IntegrationTestCase::getFixturesDirectory(), this method will be abstract in 4.0
  • Marked Twig\Test\IntegrationTestCase::getTests() and getLegacyTests() as final

v3.12.0

Compare Source

  • Deprecate the fact that the extends and use tags are always allowed in a sandboxed template.
    This behavior will change in 4.0 where these tags will need to be explicitly allowed like any other tag.
  • Deprecate the "tag" constructor argument of the "Twig\Node\Node" class as the tag is now automatically set by the Parser when needed
  • Fix precedence of two-word tests when the first word is a valid test
  • Deprecate the spaceless filter
  • Deprecate some internal methods from Parser: getBlockStack(), hasBlock(), getBlock(), hasMacro(), hasTraits(), getParent()
  • Deprecate passing null to Twig\Parser::setParent()
  • Update Node::__toString() to include the node tag if set
  • Add support for integers in methods of Twig\Node\Node that take a Node name
  • Deprecate not passing a BodyNode instance as the body of a ModuleNode or MacroNode constructor
  • Deprecate returning "null" from "TokenParserInterface::parse()".
  • Deprecate OptimizerNodeVisitor::OPTIMIZE_TEXT_NODES
  • Fix performance regression when use_yield is false (which is the default)
  • Improve compatibility when use_yield is false (as extensions still using echo will work as is)
  • Accept colons (:) in addition to equals (=) to separate argument names and values in named arguments
  • Add the html_cva function (in the HTML extra package)
  • Add support for named arguments to the block and attribute functions
  • Throw a SyntaxError exception at compile time when a Twig callable has not the minimum number of required arguments
  • Add a CallableArgumentsExtractor class
  • Deprecate passing a name to FunctionExpression, FilterExpression, and TestExpression;
    pass a TwigFunction, TwigFilter, or TestFilter instead
  • Deprecate all Twig callable attributes on FunctionExpression, FilterExpression, and TestExpression
  • Deprecate the filter node of FilterExpression
  • Add the notion of Twig callables (functions, filters, and tests)
  • Bump minimum PHP version to 8.0
  • Fix integration tests when a test has more than one data/expect section and deprecations
  • Add the enum_cases function

v3.11.3

Compare Source

v3.11.2

Compare Source

  • [BC BREAK] Fix a security issue in the sandbox mode allowing an attacker to call attributes on Array-like objects
    They are now checked via the property policy
  • Fix a security issue in the sandbox mode allowing an attacker to be able to call toString()
    under some circumstances on an object even if the __toString() method is not allowed by the security policy

v3.11.1

Compare Source

  • Fix a security issue when an included sandboxed template has been loaded before without the sandbox context

v3.11.0

Compare Source

  • Deprecate OptimizerNodeVisitor::OPTIMIZE_RAW_FILTER
  • Add Twig\Cache\ChainCache and Twig\Cache\ReadOnlyFilesystemCache
  • Add the possibility to deprecate attributes and nodes on Node
  • Add the possibility to add a package and a version to the deprecated tag
  • Add the possibility to add a package for filter/function/test deprecations
  • Mark ConstantExpression as being @final
  • Add the find filter
  • Fix optimizer mode validation in OptimizerNodeVisitor
  • Add the possibility to yield from a generator in PrintNode
  • Add the shuffle filter
  • Add the singular and plural filters in StringExtension
  • Deprecate the second argument of Twig\Node\Expression\CallExpression::compileArguments()
  • Deprecate Twig\ExpressionParser\parseHashExpression() in favor of
    Twig\ExpressionParser::parseMappingExpression()
  • Deprecate Twig\ExpressionParser\parseArrayExpression() in favor of
    Twig\ExpressionParser::parseSequenceExpression()
  • Add sequence and mapping tests
  • Deprecate Twig\Node\Expression\NameExpression::isSimple() and
    Twig\Node\Expression\NameExpression::isSpecial()

v3.10.3

Compare Source

  • Fix missing ; in generated code

v3.10.2

Compare Source

  • Fix support for the deprecated escaper signature

v3.10.1

Compare Source

  • Fix BC break on escaper extension
  • Fix constant return type

v3.10.0

Compare Source

  • Make CoreExtension::formatDate, CoreExtension::convertDate, and
    CoreExtension::formatNumber part of the public API

  • Add needs_charset option for filters and functions

  • Extract the escaping logic from the EscaperExtension class to a new
    EscaperRuntime class.

    The following methods from Twig\\Extension\\EscaperExtension are
    deprecated: setEscaper(), getEscapers(), setSafeClasses,
    addSafeClasses(). Use the same methods on the
    Twig\\Runtime\\EscaperRuntime class instead.

  • Fix capturing output from extensions that still use echo

  • Fix a PHP warning in the Lexer on malformed templates

  • Fix blocks not available under some circumstances

  • Synchronize source context in templates when setting a Node on a Node

v3.9.3

Compare Source

  • Add missing twig_escape_filter_is_safe deprecated function
  • Fix yield usage with CaptureNode
  • Add missing unwrap call when using a TemplateWrapper instance internally
  • Ensure Lexer is initialized early on

v3.9.2

Compare Source

  • Fix usage of display_end hook

v3.9.1

Compare Source

  • Fix missing $blocks variable in CaptureNode

v3.9.0

Compare Source

  • Add support for PHP 8.4
  • Deprecate AbstractNodeVisitor
  • Deprecate passing Template to Environment::resolveTemplate(), Environment::load(), and Template::loadTemplate()
  • Add a new "yield" mode for output generation;
    Node implementations that use "echo" or "print" should use "yield" instead;
    all Node implementations should be flagged with #[YieldReady] once they've been made ready for "yield";
    the "use_yield" Environment option can be turned on when all nodes have been made #[YieldReady];
    "yield" will be the only strategy supported in the next major version
  • Add return type for Symfony 7 compatibility
  • Fix premature loop exit in Security Policy lookup of allowed methods/properties
  • Deprecate all internal extension functions in favor of methods on the extension classes
  • Mark all extension functions as @​internal
  • Add SourcePolicyInterface to selectively enable the Sandbox based on a template's Source
  • Throw a proper Twig exception when using cycle on an empty array

v3.8.0

Compare Source

  • Catch errors thrown during template rendering
  • Fix IntlExtension::formatDateTime use of date formatter prototype
  • Fix premature loop exit in Security Policy lookup of allowed methods/properties
  • Remove NumberFormatter::TYPE_CURRENCY (deprecated in PHP 8.3)
  • Restore return type annotations
  • Allow Symfony 7 packages to be installed
  • Deprecate twig_test_iterable function. Use the native is_iterable instead.

v3.7.1

Compare Source

  • Fix some phpdocs

v3.7.0

Compare Source

  • Add support for the ...spread operator on arrays and hashes

v3.6.1

Compare Source

  • Suppress some native return type deprecation messages

v3.6.0

Compare Source

  • Allow psr/container 2.0
  • Add the new PHP 8.0 IntlDateFormatter::RELATIVE_* constants for date formatting
  • Make the Lexer initialize itself lazily

v3.5.1

Compare Source

  • Arrow functions passed to the "reduce" filter now accept the current key as a third argument
  • Restores the leniency of the matches twig comparison
  • Fix error messages in sandboxed mode for "has some" and "has every"

v3.5.0

Compare Source

  • Make Twig\ExpressionParser non-internal
  • Add "has some" and "has every" operators
  • Add Compile::reset()
  • Throw a better runtime error when the "matches" regexp is not valid
  • Add "twig *_names" intl functions
  • Fix optimizing closures callbacks
  • Add a better exception when getting an undefined constant via constant
  • Fix if nodes when outside of a block and with an empty body

v3.4.3

Compare Source

  • Fix a security issue on filesystem loader (possibility to load a template outside a configured directory)

v3.4.2

Compare Source

  • Allow inherited magic method to still run with calling class
  • Fix CallExpression::reflectCallable() throwing TypeError
  • Fix typo in naming (currency_code)

v3.4.1

Compare Source

  • Fix optimizing non-public named closures

v3.4.0

Compare Source

  • Add support for named closures

v3.3.10

Compare Source

  • Enable bytecode invalidation when auto_reload is enabled

v3.3.9

Compare Source

  • Fix custom escapers when using multiple Twig environments
  • Add support for "constant('class', object)"
  • Do not reuse internally generated variable names during parsing

v3.3.8

Compare Source

  • Fix a security issue when in a sandbox: the sort filter must require a Closure for the arrow parameter
  • Fix deprecation notice on round
  • Fix call to deprecated convertToHtml method

v3.3.7

Compare Source

  • Allow more null support when Twig expects a string (for better 8.1 support)
  • Only use Commonmark extensions if markdown enabled

v3.3.6

Compare Source

  • Only use Commonmark extensions if markdown enabled

v3.3.5

Compare Source

  • Allow CommonMark extensions to easily be added
  • Allow null when Twig expects a string (for better 8.1 support)
  • Make some performance optimizations
  • Allow Symfony translation contract v3+

v3.3.4

Compare Source

  • Bump minimum supported Symfony component versions
  • Fix a deprecated message

v3.3.3

Compare Source

  • Allow Symfony 6
  • Improve compatibility with PHP 8.1
  • Explicitly specify the encoding for mb_ord in JS escaper

v3.3.2

Compare Source

  • Revert "Throw a proper exception when a template name is an absolute path (as it has never been supported)"

v3.3.1

Compare Source

  • Enable bytecode invalidation when auto_reload is enabled

v3.3.0

Compare Source

  • Fix macro calls in a "cache" tag
  • Add the slug filter
  • Allow extra bundle to be compatible with Twig 2

v3.2.1

Compare Source

  • Fix extra bundle compat with older versions of Symfony

v3.1.1

Compare Source

  • Fix "include(template_from_string())"

v3.1.0

Compare Source

  • Fix sandbox support when using "include(template_from_string())"
  • Make round brackets optional for one argument tests like "same as" or "divisible by"
  • Add support for ES2015 style object initialisation shortcut { a } is the same as { 'a': a }

v3.0.5

Compare Source

  • Fix twig_compare w.r.t. whitespace trimming
  • Fix sandbox not disabled if syntax error occurs within {% sandbox %} tag
  • Fix a regression when not using a space before an operator
  • Restrict callables to closures in filters
  • Allow trailing commas in argument lists (in calls as well as definitions)

v3.0.4

Compare Source

  • Fix comparison operators
  • Fix options not taken into account when using "Michelf\MarkdownExtra"
  • Fix "Twig\Extra\Intl\IntlExtension::getCountryName()" to accept "null" as a first argument
  • Throw exception in case non-Traversable data is passed to "filter"
  • Fix context optimization on PHP 7.4
  • Fix PHP 8 compatibility
  • Fix ambiguous syntax parsing

v3.0.3

Compare Source

  • Add a check to ensure that iconv() is defined

v3.0.2

Compare Source

  • Avoid exceptions when an intl resource is not found
  • Fix implementation of case-insensitivity for method names

v3.0.1

Compare Source

  • fixed Symfony 5.0 support for the HTML extra extension

v3.0.0

Compare Source

  • fixed number formatter in Intl extra extension when using a formatter prototype

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
Copy link
Contributor Author

renovate bot commented Mar 3, 2025

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: composer.lock
Command failed: composer update twig/twig:3.20.0 --with-dependencies --ignore-platform-req='ext-*' --ignore-platform-req='lib-*' --no-ansi --no-interaction --no-scripts --no-autoloader --no-plugins
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires twig/twig 3.20.0 (exact version match: 3.20.0 or 3.20.0.0), found twig/twig[v3.20.0] but these were not loaded, likely because it conflicts with another require.
  Problem 2
    - symfony/symfony is locked to version v3.4.49 and an update of this package was not requested.
    - symfony/symfony v3.4.49 requires twig/twig ^1.41|^2.10 -> found twig/twig[v1.41.0, ..., v1.44.8, v2.10.0, ..., v2.16.1] but it conflicts with your root composer.json require (3.20.0).
  Problem 3
    - twig/extensions is locked to version v1.5.4 and an update of this package was not requested.
    - twig/extensions v1.5.4 requires twig/twig ^1.27|^2.0 -> found twig/twig[v1.27.0, ..., v1.44.8, v2.0.0, ..., v2.16.1] but it conflicts with your root composer.json require (3.20.0).
  Problem 4
    - sensio/generator-bundle is locked to version v3.1.7 and an update of this package was not requested.
    - sensio/generator-bundle v3.1.7 requires twig/twig ^1.28.2|^2.0 -> found twig/twig[v1.28.2, ..., v1.44.8, v2.0.0, ..., v2.16.1] but it conflicts with your root composer.json require (3.20.0).
  Problem 5
    - symfony/swiftmailer-bundle is locked to version v2.6.7 and an update of this package was not requested.
    - symfony/swiftmailer-bundle v2.6.7 requires symfony/config ~2.7|~3.0 -> satisfiable by symfony/symfony[v3.4.49].
    - symfony/symfony v3.4.49 requires twig/twig ^1.41|^2.10 -> found twig/twig[v1.41.0, ..., v1.44.8, v2.10.0, ..., v2.16.1] but it conflicts with your root composer.json require (3.20.0).

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.

@CybotTM CybotTM closed this Mar 15, 2025
@renovate
Copy link
Contributor Author

renovate bot commented Mar 15, 2025

Renovate Ignore Notification

Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for any future 3.x releases. But if you manually upgrade to 3.x then Renovate will re-enable minor and patch updates automatically.

If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.

@renovate renovate bot deleted the renovate/v4-major-twig-monorepo branch March 15, 2025 13:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant