Skip to content

[TASK] Update devtheorem/php-handlebars to v1#15

Merged
eliashaeussler merged 2 commits intomainfrom
renovate/devtheorem-php-handlebars-1.x
Mar 23, 2026
Merged

[TASK] Update devtheorem/php-handlebars to v1#15
eliashaeussler merged 2 commits intomainfrom
renovate/devtheorem-php-handlebars-1.x

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate bot commented Mar 23, 2026

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
devtheorem/php-handlebars ^0.9.8^0.9.8 || ^1.0.0 age adoption passing confidence

Release Notes

devtheorem/php-handlebars (devtheorem/php-handlebars)

v1.0.0

Compare Source

Rewrote the parser and compiler to use an abstract syntax tree, based on the same lexical analysis
and grammar specification as Handlebars.js. This eliminates a large class of edge cases and parsing
bugs that the old regex-based approach failed to handle correctly.

This release is 35-40% faster than v0.9.9 and LightnCandy at compiling and executing complex templates,
and uses almost 30% less memory. The code is also significantly simpler and easier to maintain.

Added
  • Support for nested inline partials.
  • Support for closures in data and helper arguments.
  • helperMissing and blockHelperMissing hooks: handle calls to unknown helpers with the same API
    as in Handlebars.js, replacing the old helperResolver option.
  • knownHelpers compile option: tell the compiler which helpers will be available at runtime for
    more efficient execution (helper existence checks can be skipped).
  • assumeObjects compile option: a subset of strict mode that generates optimized templates when
    the data inputs are known to be safe.
  • Support for deprecated {{person/firstname}} path expressions for parity with Handlebars.js
    (avoid using this syntax in new code, though).
Changed
  • Custom helpers must now be passed at runtime when invoking a template (via the helpers runtime
    option key), rather than via the Options object passed to compile or precompile. This is a
    significant optimization, since it eliminates the overhead of reading and tokenizing PHP files to
    extract helper functions. It also enables sharing helper closures across multiple templates and
    renders, and removes limitations on what they can access and do
    (e.g. it resolves zordius/lightncandy#342).
  • Exceptions thrown by custom helpers are no longer caught and re-thrown, so the original exception
    can now be caught in your own code for easier debugging (#​13).
  • The partialResolver closure signature no longer receives an internal Context argument.
    Now only the partial name is passed.
  • knownHelpersOnly now works as in Handlebars.js, and an exception will be thrown if the template
    uses a helper which is not in the knownHelpers list.
  • Updated various error messages to align with those output by Handlebars.js.
Removed
  • Options::$helpers: instead pass custom helpers when invoking a template, using the helpers key
    in the runtime options array (the second argument to the template closure).
  • Options::$helperResolver: use the helperMissing / blockHelperMissing runtime helpers instead.
Fixed
  • Fatal error with deeply nested else if using custom helper (#​2).
  • Incorrect rendering of float values (#​11).
  • Conditional @partial-block expressions.
  • Support for @partial-block in nested partials (zordius/lightncandy#292).
  • Ability to precompile partials and pass them at runtime (zordius/lightncandy#341).
  • Fatal error when a string parameter to a partial includes curly braces (zordius/lightncandy#316).
  • Behavior when modifying root context in a custom helper (zordius/lightncandy#350).
  • Escaping of block params and partial names.
  • Inline partials defined inside a {{#with}} or other block leaking out of that block's scope after it closes.
  • Numerous other bugs related to scoping, block params, inverted block helpers, section iteration, and depth-relative paths.

Configuration

📅 Schedule: Branch creation - Monday through Friday ( * * * * 1-5 ) (UTC), Automerge - At any time (no schedule defined).

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

Rebasing: Whenever PR is behind base branch, 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.

| datasource | package                   | from  | to    |
| ---------- | ------------------------- | ----- | ----- |
| packagist  | devtheorem/php-handlebars | 0.9.9 | 1.0.0 |
@renovate renovate bot added the dependencies Updates project dependencies label Mar 23, 2026
@renovate renovate bot added the dependencies Updates project dependencies label Mar 23, 2026
@renovate
Copy link
Copy Markdown
Contributor Author

renovate bot commented Mar 23, 2026

⚠️ 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 devtheorem/php-handlebars:1.0.0 --with-dependencies --ignore-platform-req ext-intl --no-ansi --no-interaction --no-scripts --no-autoloader --no-plugins --minimal-changes
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 devtheorem/php-handlebars ^0.9.8 || ^1.0.0, found devtheorem/php-handlebars[v0.9.8, v0.9.9, v1.0.0] but these were not loaded, likely because it conflicts with another require.
  Problem 2
    - Root composer.json requires cpsit/typo3-handlebars ^1.0 -> satisfiable by cpsit/typo3-handlebars[1.x-dev (alias of dev-main)].
    - cpsit/typo3-handlebars dev-main requires devtheorem/php-handlebars ^0.9.8 -> found devtheorem/php-handlebars[v0.9.8, v0.9.9] but it conflicts with your temporary update constraint (devtheorem/php-handlebars:1.0.0).
    - cpsit/typo3-handlebars 1.x-dev is an alias of cpsit/typo3-handlebars dev-main and thus requires it to be installed too.

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

@coveralls
Copy link
Copy Markdown
Collaborator

coveralls commented Mar 23, 2026

Pull Request Test Coverage Report for Build 23430209341

Details

  • 0 of 0 changed or added relevant lines in 0 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage remained the same at 0.0%

Totals Coverage Status
Change from base Build 23417047603: 0.0%
Covered Lines: 0
Relevant Lines: 870

💛 - Coveralls

@eliashaeussler eliashaeussler merged commit 688c42b into main Mar 23, 2026
11 checks passed
@eliashaeussler eliashaeussler deleted the renovate/devtheorem-php-handlebars-1.x branch March 23, 2026 09:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Updates project dependencies

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants