Skip to content

deps(deps): bump taffy from 0.7.7 to 0.13.0 - #8391

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/taffy-0.13.0
Open

deps(deps): bump taffy from 0.7.7 to 0.13.0#8391
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/taffy-0.13.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 18, 2026

Copy link
Copy Markdown
Contributor

Bumps taffy from 0.7.7 to 0.13.0.

Release notes

Sourced from taffy's releases.

v0.13.0

The MSRV for this release is 1.71.

Added

  • Support for the self-start and self-end alignment keywords (AlignItems::SELF_START/SELF_END and safe variants). These resolve against the direction of the item itself rather than that of its container, so they only differ from start/end when the item's direction differs from its container's. Supported for align-self/align-items and justify-self/justify-items on both in-flow and absolutely positioned Flexbox and Grid items (#1074)

  • Support for display: flow-root. The new Display::FlowRoot variant lays out children using the block layout algorithm but always establishes a new block formatting context (its margins do not collapse with those of its children, it contains its own floats, and it avoids external floats)

Changed

  • Numeric style helpers (length, percent, fr, flex) now accept Input: Into<f64> instead of Input: Into<f32>. This allows bare float literals such as length(800.0) to be used without triggering the float_literal_f32_fallback future-compatibility lint, while widening the set of accepted numeric input types (#974)
  • Grid: grid_template_areas is now Option<GridTemplateAreas<S>>, where the new GridTemplateAreas struct includes row_count/column_count fields. This allows templates containing unnamed (.) cells beyond the extents of the named areas (e.g. grid-template-areas: "a .") to be represented.
  • Block/float: BlockContext::place_floated_box takes an additional adjoins_unresolved_strut: bool parameter indicating whether the float is being placed while the position of the current margin-collapse strut is still unresolved

Fixed

A large number of miscelaneous bug fixes are included in this release:

  • Flexbox: clamp the flex base size, automatic minimum size and hypothetical main/cross sizes with min/max sizes transferred through the aspect ratio, instead of baking them into the item's used min/max sizes (#989)
  • Flexbox: resolve justify-content: start/end and align-self: start/end/self-start/self-end as writing-mode relative (rather than flex-relative) in the static position of absolutely positioned children; use the flex-relative start for justify-content: space-between/normal, and a fallback of start for align-self: baseline (#1072)
  • Flexbox: only let auto margins on absolutely positioned children absorb free space when the box is inset-constrained in that axis; otherwise they resolve to zero per CSS2 §10.3.7/§10.6.4 (#1072)
  • Grid: jump the auto-placement search past entire colliding occupied intervals rather than advancing one track at a time (#1038)
  • Grid: resolve the grid lines used by absolutely positioned items to the edges of the adjacent tracks, so that free space distributed by align-content/justify-content is not included in the abspos grid area (#1071)
  • Grid: exclude absolutely positioned children from the implicit grid size estimate, as they do not take part in grid placement and must not create implicit tracks. Previously their out-of-range lines resolved to phantom implicit tracks instead of being treated as auto (#1075)
  • Grid: align an empty grid (one whose tracks have all collapsed) within its container, rather than always placing it at the start (#1078)
  • Grid: only distribute space "beyond limits" to tracks whose max track sizing function is max-content (or fit-content()) (#1033)
  • Grid: don't clamp an explicitly specified preferred or minimum size by the spanned tracks' fixed max track sizing functions when computing an item's minimum contribution (#1022)
  • Grid: ignore the tracks' growth limits when distributing an item's intrinsic size contribution "beyond limits" (#1022)
  • Grid: convert the container's min/max size to a content-box size before using it in the track sizing algorithm (#1023)
  • Grid: compute the flex factor sum over only the spanned tracks eligible to receive space when distributing intrinsic size contributions to flexible tracks (#1019)
  • Grid: don't grow tracks past their growth limits when distributing free space to multiple tracks with asymmetric limits (#1001)
  • Block/Grid: measure Layout::content_size from the container's padding-box origin and include the container's own end-side padding, matching Flexbox and browser scrollWidth/scrollHeight semantics. Grid items in tracks that overflow the container now also contribute their position within the container, not just their own size (#1051)
  • Block: don't stretch-size replaced elements; an auto width now resolves to the intrinsic size (#1002)
  • Block: don't let boxes that establish an independent formatting context overlap floats: they narrow to fit beside the float, or move down below it if they don't fit (#991)
  • Block: detect floats placed by the subtree of a preceding in-flow sibling, not just floats among direct siblings, when placing a box that establishes an independent formatting context (#1049)
  • Block: apply a negative margin as usual on a BFC root's float-free side, instead of clamping it to the containing block edge (#1061)
  • Block: compute clearance from the hypothetical position of the cleared element (including its collapsed top margin), supporting negative clearance (#1042)
  • Block: prevent the cleared element's top margin from collapsing with preceding margins and with the parent's top margin (#1043)
  • Block: force clearance for floats placed while the position of the enclosing margin-collapse strut is unresolved, and position such floats including the pending collapsible margins (#1046)
  • Block: collapse the top and bottom margins of a self-collapsing element with clearance with each other and apply them inside the parent, rather than collapsing them with the parent's bottom margin (#1044)
  • Block/float: treat clear as a no-op when no float has been placed on the relevant side(s) (#1041)
  • Block: allow elements containing only floated children to be collapsed through (#1040)
  • Block/float: record zero-width floats in the float context, so their edge acts as an obstacle for boxes establishing an independent formatting context (#1062)
  • Block/float: a float establishes a new block formatting context, so its margins no longer collapse with the margins of its children (#1065)
  • Block/float: honour CSS2 §9.5.1 rules 3 & 7 when placing floats: a float unconstrained by other floats may overflow its containing block, but one placed beside another float may not (#1064)
  • Block/float: apply CSS2 §9.5.1 rule 5 (float ceiling) and clear past zero-sized floats, which occupy no float segment and so were previously ignored when positioning later floats and cleared elements (#1056)
  • Block/float: sum float contributions when computing a float container's intrinsic width under definite available space (clamped between the widest single float and the available width), instead of dropping them entirely (#1055)

v0.12.2

... (truncated)

Changelog

Sourced from taffy's changelog.

0.13.0

The MSRV for this release is 1.71.

Added

  • Support for the self-start and self-end alignment keywords (AlignItems::SELF_START/SELF_END and safe variants). These resolve against the direction of the item itself rather than that of its container, so they only differ from start/end when the item's direction differs from its container's. Supported for align-self/align-items and justify-self/justify-items on both in-flow and absolutely positioned Flexbox and Grid items (#1074)

  • Support for display: flow-root. The new Display::FlowRoot variant lays out children using the block layout algorithm but always establishes a new block formatting context (its margins do not collapse with those of its children, it contains its own floats, and it avoids external floats)

Changed

  • Numeric style helpers (length, percent, fr, flex) now accept Input: Into<f64> instead of Input: Into<f32>. This allows bare float literals such as length(800.0) to be used without triggering the float_literal_f32_fallback future-compatibility lint, while widening the set of accepted numeric input types (#974)
  • Grid: grid_template_areas is now Option<GridTemplateAreas<S>>, where the new GridTemplateAreas struct includes row_count/column_count fields. This allows templates containing unnamed (.) cells beyond the extents of the named areas (e.g. grid-template-areas: "a .") to be represented.
  • Block/float: BlockContext::place_floated_box takes an additional adjoins_unresolved_strut: bool parameter indicating whether the float is being placed while the position of the current margin-collapse strut is still unresolved

Fixed

A large number of miscelaneous bug fixes are included in this release:

  • Flexbox: clamp the flex base size, automatic minimum size and hypothetical main/cross sizes with min/max sizes transferred through the aspect ratio, instead of baking them into the item's used min/max sizes (#989)
  • Flexbox: resolve justify-content: start/end and align-self: start/end/self-start/self-end as writing-mode relative (rather than flex-relative) in the static position of absolutely positioned children; use the flex-relative start for justify-content: space-between/normal, and a fallback of start for align-self: baseline (#1072)
  • Flexbox: only let auto margins on absolutely positioned children absorb free space when the box is inset-constrained in that axis; otherwise they resolve to zero per CSS2 §10.3.7/§10.6.4 (#1072)
  • Grid: jump the auto-placement search past entire colliding occupied intervals rather than advancing one track at a time (#1038)
  • Grid: resolve the grid lines used by absolutely positioned items to the edges of the adjacent tracks, so that free space distributed by align-content/justify-content is not included in the abspos grid area (#1071)
  • Grid: exclude absolutely positioned children from the implicit grid size estimate, as they do not take part in grid placement and must not create implicit tracks. Previously their out-of-range lines resolved to phantom implicit tracks instead of being treated as auto (#1075)
  • Grid: align an empty grid (one whose tracks have all collapsed) within its container, rather than always placing it at the start (#1078)
  • Grid: only distribute space "beyond limits" to tracks whose max track sizing function is max-content (or fit-content()) (#1033)
  • Grid: don't clamp an explicitly specified preferred or minimum size by the spanned tracks' fixed max track sizing functions when computing an item's minimum contribution (#1022)
  • Grid: ignore the tracks' growth limits when distributing an item's intrinsic size contribution "beyond limits" (#1022)
  • Grid: convert the container's min/max size to a content-box size before using it in the track sizing algorithm (#1023)
  • Grid: compute the flex factor sum over only the spanned tracks eligible to receive space when distributing intrinsic size contributions to flexible tracks (#1019)
  • Grid: don't grow tracks past their growth limits when distributing free space to multiple tracks with asymmetric limits (#1001)
  • Block/Grid: measure Layout::content_size from the container's padding-box origin and include the container's own end-side padding, matching Flexbox and browser scrollWidth/scrollHeight semantics. Grid items in tracks that overflow the container now also contribute their position within the container, not just their own size (#1051)
  • Block: don't stretch-size replaced elements; an auto width now resolves to the intrinsic size (#1002)
  • Block: don't let boxes that establish an independent formatting context overlap floats: they narrow to fit beside the float, or move down below it if they don't fit (#991)
  • Block: detect floats placed by the subtree of a preceding in-flow sibling, not just floats among direct siblings, when placing a box that establishes an independent formatting context (#1049)
  • Block: apply a negative margin as usual on a BFC root's float-free side, instead of clamping it to the containing block edge (#1061)
  • Block: compute clearance from the hypothetical position of the cleared element (including its collapsed top margin), supporting negative clearance (#1042)
  • Block: prevent the cleared element's top margin from collapsing with preceding margins and with the parent's top margin (#1043)
  • Block: force clearance for floats placed while the position of the enclosing margin-collapse strut is unresolved, and position such floats including the pending collapsible margins (#1046)
  • Block: collapse the top and bottom margins of a self-collapsing element with clearance with each other and apply them inside the parent, rather than collapsing them with the parent's bottom margin (#1044)
  • Block/float: treat clear as a no-op when no float has been placed on the relevant side(s) (#1041)
  • Block: allow elements containing only floated children to be collapsed through (#1040)
  • Block/float: record zero-width floats in the float context, so their edge acts as an obstacle for boxes establishing an independent formatting context (#1062)
  • Block/float: a float establishes a new block formatting context, so its margins no longer collapse with the margins of its children (#1065)
  • Block/float: honour CSS2 §9.5.1 rules 3 & 7 when placing floats: a float unconstrained by other floats may overflow its containing block, but one placed beside another float may not (#1064)
  • Block/float: apply CSS2 §9.5.1 rule 5 (float ceiling) and clear past zero-sized floats, which occupy no float segment and so were previously ignored when positioning later floats and cleared elements (#1056)
  • Block/float: sum float contributions when computing a float container's intrinsic width under definite available space (clamped between the widest single float and the available width), instead of dropping them entirely (#1055)
  • Block: a block container with a non-normal align-content establishes an independent formatting context (its margins do not collapse with its children's, it cannot be collapsed through, and it contains its own floats)

... (truncated)

Commits
  • 45a5629 Prepare for v0.13.0 release (#1080)
  • 7957808 Support self-start and self-end alignment keywords (#1077)
  • b11b1bd Add generated tests for float placement after sibling margins (#1079)
  • 9930638 Exclude absolutely positioned children from implicit grid size estimate (#1075)
  • 9d9dcff Align empty grids (all tracks collapsed) within the container (#1078)
  • 1dd3e83 Add generated tests for abspos grid items in grids with gaps (#1073)
  • 5f2d500 Fix static position of absolutely positioned flex children (#1072)
  • 1c539f8 Fix abspos grid line resolution under content alignment (#1071)
  • ac84daa Don't collapse float margins with the margins of its children (#1065)
  • a7fb1c2 Float placement: allow floats to overflow their containing block per CSS2 §9....
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [taffy](https://github.com/DioxusLabs/taffy) from 0.7.7 to 0.13.0.
- [Release notes](https://github.com/DioxusLabs/taffy/releases)
- [Changelog](https://github.com/DioxusLabs/taffy/blob/main/CHANGELOG.md)
- [Commits](DioxusLabs/taffy@v0.7.7...v0.13.0)

---
updated-dependencies:
- dependency-name: taffy
  dependency-version: 0.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file rust Pull requests that update rust code labels Aug 18, 2026
@proggeramlug

Copy link
Copy Markdown
Contributor

Validated locally on macOS: this does not compile. cargo check --workspace --all-targets
(host-compatible scope) is green on origin/main and fails with 30 errors on this branch,
all in crates/perry-runtime/src/yoga.rs. This is a jump across six 0.x releases
(0.7.7 -> 0.13.0), each of which may break API, and no call sites were adapted.

Two independent classes of breakage:

1. The alignment enums were restructured. JustifyContent now resolves to
AlignContent, whose variant set no longer carries the Flex* names:

error[E0599]: no associated function or constant named `FlexStart` found for struct `AlignContent`
   --> crates/perry-runtime/src/yoga.rs:243:30
    | 0 => JustifyContent::FlexStart,

...and the same for Center, FlexEnd, SpaceBetween, and the rest — the bulk of the 30.

2. A thread-safety regression that is not a mechanical rename:

error[E0277]: `*const ()` cannot be sent between threads safely
   --> crates/perry-runtime/src/yoga.rs:118:20
    | static YOGA_NODES: Mutex<Option<HashMap<u32, YogaNode>>> = Mutex::new(None);

The new node type holds a *const (), so it is no longer Send, and the existing global
Mutex<HashMap<u32, YogaNode>> cannot hold it. That one needs a design decision about how
layout nodes are owned across threads, not a find-and-replace.

Leaving this open. Given the size of the jump, stepping through intermediate taffy versions
would probably be easier to review than one 0.7 -> 0.13 port.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file rust Pull requests that update rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant