Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NativeScript/NativeScript
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: NativeScript/NativeScript
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: refs/pull/11371/head
Choose a head ref
  • 4 commits
  • 8 files changed
  • 1 contributor

Commits on Aug 28, 2026

  1. fix(core): keep attribute selectors matchable after a late assignment

    `AttributeSelector.mayMatch` dropped a selector whose attribute the node
    did not carry yet. Assigning a plain instance value raises no change
    event and does not invalidate the match, so the selector was never
    reconsidered and the rule never applied - the shape Angular's emulated
    view encapsulation produces when the `_ngcontent-*` marker lands after
    the view is inserted into a loaded tree.
    edusperoni committed Aug 28, 2026
    Configuration menu
    Copy the full SHA
    13e5ad7 View commit details
    Browse the repository at this point in the history
  2. fix(core): re-apply css a local value shadowed and released

    A `CssProperty` keeps a single value, so a local value both suppresses
    the css write and takes the slot: clearing it leaves the property at its
    default with the cascaded value gone. The css state recorded the value as
    applied either way, and the unchanged-value diff then skipped it for good
    - a full re-match included.
    
    It now records a value as applied only while the style still carries it,
    so the cascade writes it again on the next update. Values nothing
    disturbed are still skipped.
    edusperoni committed Aug 28, 2026
    Configuration menu
    Copy the full SHA
    9a8a26a View commit details
    Browse the repository at this point in the history
  3. test(core): VITEST_NO_OPT to benchmark without the optimizing compilers

    iOS runs V8 jitless, where these benchmarks read very differently - the
    css work is dominated by lookups and megamorphic reads that only the
    optimizing tiers hide.
    
    `--max-opt=0` is what `--jitless` does to javascript without also turning
    off the WebAssembly vite needs; plain `--no-opt` only drops turbofan and
    measures almost nothing on current node.
    edusperoni committed Aug 28, 2026
    Configuration menu
    Copy the full SHA
    4704f5e View commit details
    Browse the repository at this point in the history
  4. perf(core): only verify applied css values after a local write

    Checking the style for every recorded value on every update cost 30% of
    the re-apply benchmark without the optimizing compilers - a name lookup
    plus a megamorphic symbol read per property.
    
    A local write is the only thing that can drop a value the cascade
    applied, so the style now counts them and the css state records the count
    it applied against. The check runs only when the two differ, which for a
    view nothing writes to locally is never.
    
      re-apply 200 views, nothing changed     -30%  ->  -4%
      toggle a class on 200 views             -24%  ->  -6%
      toggle a pseudo class on 200 views      -23%  ->  -1%
    
    (node 24, --max-opt=0, against the same benchmarks before the fix.)
    edusperoni committed Aug 28, 2026
    Configuration menu
    Copy the full SHA
    594b265 View commit details
    Browse the repository at this point in the history
Loading