Skip to content

Add the new Typography graphical type#3152

Draft
adamgerhant wants to merge 3 commits intomasterfrom
typography
Draft

Add the new Typography graphical type#3152
adamgerhant wants to merge 3 commits intomasterfrom
typography

Conversation

@adamgerhant
Copy link
Collaborator

@adamgerhant adamgerhant commented Sep 8, 2025

Adds the Typography data type, which is part of the Graphic enum and rendered to svg as <Text/> and rendered to Vello with draw_glyphs

TODO: Replace FontCache with NewFontCache, update Text node to output Typography

Comment on lines +26 to +42
impl serde::Serialize for Graphic {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
let default: Table<Graphic> = Table::new();
default.serialize(serializer)
}
}

impl<'de> serde::Deserialize<'de> for Graphic {
fn deserialize<D>(_deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
Ok(Graphic::Graphic(Table::new()))
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So you just decided to not do any Serialization? Is there any reason to do this? This is a very confusing design decision and will likely lead to bugs in the future

Copy link
Collaborator Author

@adamgerhant adamgerhant Sep 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Layout within the Typography cannot be serialized. Also its not meant to be a Tagged value, as it can only be produced at runtime by the text node. It only has this implemented since Graphic needs a tagged value for layer inputs. Similar to the wgpu::Texture.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You have just successfully disabled serialization / deserialization for all Grahic data not just Typography

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Graphic data can never be serialized since it should never be anything other than an empty table (There is no widget to modify it)

@TrueDoctor
Copy link
Member

Did you mean to mark this as ready for review? This pr does not seem to be finished

@Keavon Keavon changed the title New Typography type Add the new Typography type Sep 10, 2025
@Keavon Keavon changed the title Add the new Typography type Add the new Typography graphical type Sep 10, 2025
@adamgerhant
Copy link
Collaborator Author

Did you mean to mark this as ready for review? This pr does not seem to be finished

Yes, this is only for use in the native node graph overlay node. There is no user integration yet to keep the scope small.

Comment on lines +26 to +42
impl serde::Serialize for Graphic {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
let default: Table<Graphic> = Table::new();
default.serialize(serializer)
}
}

impl<'de> serde::Deserialize<'de> for Graphic {
fn deserialize<D>(_deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
Ok(Graphic::Graphic(Table::new()))
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You have just successfully disabled serialization / deserialization for all Grahic data not just Typography

Comment on lines +64 to +68
impl PartialEq for Typography {
fn eq(&self, _other: &Self) -> bool {
true
}
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a dummy implementation required by TaggedValue::Graphic. It should never be called since a Graphic table should never be compared. a warn! message in here would be useful

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In that case Graphic should be removed from the Tagged Value enum, but this implementation is just non-sensical

// Hash the Font for a unique id and add it to the cached hash
vacant_entry.key().hash(&mut hasher);
let hash_value = hasher.finish();
self.hash = self.hash.wrapping_add(hash_value);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of performing an addition here, you should hash the font data + the previous hash value. FxHasher is very fast but not particularly collision resistant and this could cause issues. There is also the question of why you use FxHasher anyway, it can't really be for perf reasons since you do also compute the hash of the same data using the default hasher. If you were concerned about performance we should only compute the hash once and reuse it for both use cases but I can guarantee you that the perf is going to be completely irrelevant in this case so idk.
If your intent was to make sure the insertion order does not affect the hash value, that is fine in principle but should an explaining commend and a justification why this does not create collisions

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The idea is to create a hash key representing the unique state of all current fonts in the NewFontCache. This ensures the SNI of the tagged value input which supplies the cache is updated when the cache changes, and is also very fast/does not require hashing the entire font cache. I thought the FxHasher is the default hasher that is generally used, since its used in NodeNetwork and to calculate stable node ids.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The issue is that you are adding the hash codes that does not necessarily preserve the collision resistance. And FxHasher has a pretty low collision resistance to begin with so this likely amplify the issue. If you care about the position independence (and I don't think that we actually do) you could use the DefaultHasher here since it generates higher quality hashes and the amount of data we has is very small so perf should not be an issue. We only really use FxHasher if we expect to hash large amounts of data. If we cared more about collision resistance and still wanted to use FxHasher we could use a Diffie-Hellman group construction instead here by raising the generator group to the power of the hash value. But that would be a bit overkill since we don't really work in adversarial scenarios

@github-actions
Copy link

github-actions bot commented Sep 13, 2025

Performance Benchmark Results

🔧 Graph Compilation

compile_demo_art_iai::compile_group::compile_to_proto with_setup_0:load_from_name(isometric-fountain)
Instructions: 27,606,211 (master) → 27,258,461 (HEAD) : $$\color{lime}-1.26\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 4| 4 -0.39% D1mr 351,048| 345,616 -1.55% D1mw 108,842| 107,468 -1.26% DLmr 31,180| 30,548 -2.03% DLmw 53,536| 48,016 -10.31% Dr 6,824,424| 6,749,149 -1.10% Dw 4,778,742| 4,726,792 -1.09% EstimatedCycles 43,824,001| 43,101,618 -1.65% I1MissRate 0| 0 -16.04% I1mr 51,991| 43,100 -17.10% ILmr 854| 852 -0.23% Ir 27,606,211| 27,258,461 -1.26% L1HitRate 99| 99 +0.02% L1hits 38,697,496| 38,238,218 -1.19% LLHitRate 1| 1 -1.04% LLMissRate 0| 0 -6.05% LLdMissRate 1| 1 -6.23% LLhits 426,311| 416,768 -2.24% LLiMissRate 0| 0 +1.04% RamHitRate 0| 0 -6.05% RamHits 85,570| 79,416 -7.19% TotalRW 39,209,377| 38,734,402 -1.21% 

compile_demo_art_iai::compile_group::compile_to_proto with_setup_1:load_from_name(painted-dreams)
Instructions: 13,892,786 (master) → 13,779,837 (HEAD) : $$\color{lime}-0.81\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 4| 4 -4.77% D1mr 169,496| 162,668 -4.03% D1mw 53,381| 47,949 -10.18% DLmr 680| 592 -12.94% DLmw 14,194| 11,713 -17.48% Dr 3,442,011| 3,417,193 -0.72% Dw 2,400,218| 2,380,050 -0.84% EstimatedCycles 21,194,915| 20,893,378 -1.42% I1MissRate 0| 0 -16.89% I1mr 25,233| 20,800 -17.57% ILmr 708| 716 +1.13% Ir 13,892,786| 13,779,837 -0.81% L1HitRate 99| 99 +0.08% L1hits 19,486,905| 19,345,663 -0.72% LLHitRate 1| 1 -5.32% LLMissRate 0| 0 -15.76% LLdMissRate 0| 0 -16.63% LLhits 232,528| 218,396 -6.08% LLiMissRate 0| 0 +1.96% RamHitRate 0| 0 -15.76% RamHits 15,582| 13,021 -16.44% TotalRW 19,735,015| 19,577,080 -0.80% 

compile_demo_art_iai::compile_group::compile_to_proto with_setup_2:load_from_name(procedural-string-lights)
Instructions: 3,087,392 (master) → 3,075,250 (HEAD) : $$\color{lime}-0.39\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 4| 4 -0.26% D1mr 36,317| 36,038 -0.77% D1mw 10,713| 10,694 -0.18% DLmr 17| 16 -5.88% DLmw 2,925| 2,881 -1.50% Dr 752,769| 749,959 -0.37% Dw 526,591| 524,564 -0.38% EstimatedCycles 4,685,334| 4,662,867 -0.48% I1MissRate 0| 0 -14.36% I1mr 5,368| 4,579 -14.70% ILmr 691| 698 +1.01% Ir 3,087,392| 3,075,250 -0.39% L1HitRate 99| 99 +0.02% L1hits 4,314,354| 4,298,462 -0.37% LLHitRate 1| 1 -1.77% LLMissRate 0| 0 -0.66% LLdMissRate 0| 0 -1.16% LLhits 48,765| 47,716 -2.15% LLiMissRate 0| 0 +1.41% RamHitRate 0| 0 -0.66% RamHits 3,633| 3,595 -1.05% TotalRW 4,366,752| 4,349,773 -0.39% 

compile_demo_art_iai::compile_group::compile_to_proto with_setup_3:load_from_name(parametric-dunescape)
Instructions: 13,673,010 (master) → 13,599,729 (HEAD) : $$\color{lime}-0.54\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 4| 4 +0.10% D1mr 172,038| 171,342 -0.40% D1mw 49,536| 49,519 -0.03% DLmr 75| 72 -4.00% DLmw 10,469| 10,467 -0.02% Dr 3,341,806| 3,328,158 -0.41% Dw 2,355,999| 2,345,909 -0.43% EstimatedCycles 20,679,271| 20,567,612 -0.54% I1MissRate 0| 0 -14.07% I1mr 20,385| 17,423 -14.53% ILmr 810| 817 +0.86% Ir 13,673,010| 13,599,729 -0.54% L1HitRate 99| 99 +0.01% L1hits 19,128,856| 19,035,512 -0.49% LLHitRate 1| 1 -1.10% LLMissRate 0| 0 +0.52% LLdMissRate 0| 0 +0.37% LLhits 230,605| 226,928 -1.59% LLiMissRate 0| 0 +1.41% RamHitRate 0| 0 +0.52% RamHits 11,354| 11,356 +0.02% TotalRW 19,370,815| 19,273,796 -0.50% 

compile_demo_art_iai::compile_group::compile_to_proto with_setup_4:load_from_name(red-dress)
Instructions: 32,148,310 (master) → 32,158,951 (HEAD) : $$\color{red}+0.03\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 4| 4 -0.53% D1mr 406,913| 404,957 -0.48% D1mw 124,318| 123,849 -0.38% DLmr 42,393| 42,285 -0.25% DLmw 49,172| 51,842 +5.43% Dr 7,915,216| 7,921,800 +0.08% Dw 5,547,424| 5,551,181 +0.07% EstimatedCycles 50,738,670| 50,785,166 +0.09% I1MissRate 0| 0 -18.14% I1mr 57,594| 47,160 -18.12% ILmr 849| 852 +0.35% Ir 32,148,310| 32,158,951 +0.03% L1HitRate 99| 99 +0.03% L1hits 45,022,125| 45,055,966 +0.08% LLHitRate 1| 1 -3.15% LLMissRate 0| 0 +2.73% LLdMissRate 1| 1 +2.72% LLhits 496,411| 480,987 -3.11% LLiMissRate 0| 0 +0.32% RamHitRate 0| 0 +2.73% RamHits 92,414| 94,979 +2.78% TotalRW 45,610,950| 45,631,932 +0.05% 

compile_demo_art_iai::compile_group::compile_to_proto with_setup_5:load_from_name(valley-of-spires)
Instructions: 21,197,299 (master) → 21,106,835 (HEAD) : $$\color{lime}-0.43\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 4| 4 +0.03% D1mr 262,889| 262,108 -0.30% D1mw 77,642| 77,374 -0.35% DLmr 15,143| 15,142 -0.01% DLmw 33,178| 37,223 +12.19% Dr 5,240,732| 5,222,992 -0.34% Dw 3,665,749| 3,653,402 -0.34% EstimatedCycles 33,093,980| 33,062,907 -0.09% I1MissRate 0| 0 -17.92% I1mr 38,619| 31,565 -18.27% ILmr 799| 818 +2.38% Ir 21,197,299| 21,106,835 -0.43% L1HitRate 99| 99 +0.02% L1hits 29,724,630| 29,612,182 -0.38% LLHitRate 1| 1 -3.30% LLMissRate 0| 0 +8.71% LLdMissRate 1| 1 +8.74% LLhits 330,030| 317,864 -3.69% LLiMissRate 0| 0 +2.82% RamHitRate 0| 0 +8.71% RamHits 49,120| 53,183 +8.27% TotalRW 30,103,780| 29,983,229 -0.40% 

🔄 Executor Update

update_executor_iai::update_group::update_executor with_setup_0:setup_update_executor(isometric-fountain)
Instructions: 40,999,738 (master) → 40,749,851 (HEAD) : $$\color{lime}-0.61\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 3| 3 -0.13% D1mr 453,849| 449,029 -1.06% D1mw 99,001| 97,693 -1.32% DLmr 9,876| 9,330 -5.53% DLmw 25,995| 23,925 -7.96% Dr 10,414,452| 10,320,657 -0.90% Dw 7,021,573| 6,944,078 -1.10% EstimatedCycles 61,802,551| 61,383,916 -0.68% I1MissRate 0| 0 +147.38% I1mr 18,112| 44,533 +145.88% ILmr 227| 222 -2.20% Ir 40,999,738| 40,749,851 -0.61% L1HitRate 99| 99 -0.04% L1hits 57,864,801| 57,423,331 -0.76% LLHitRate 1| 1 +5.04% LLMissRate 0| 0 -6.59% LLdMissRate 0| 0 -6.37% LLhits 534,864| 557,778 +4.28% LLiMissRate 0| 0 -1.60% RamHitRate 0| 0 -6.59% RamHits 36,098| 33,477 -7.26% TotalRW 58,435,763| 58,014,586 -0.72% 

update_executor_iai::update_group::update_executor with_setup_1:setup_update_executor(painted-dreams)
Instructions: 21,585,211 (master) → 21,465,499 (HEAD) : $$\color{lime}-0.55\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 3| 3 +1.32% D1mr 232,575| 234,331 +0.76% D1mw 49,829| 49,604 -0.45% DLmr 1,143| 1,027 -10.15% DLmw 13,302| 12,103 -9.01% Dr 5,479,743| 5,442,876 -0.67% Dw 3,693,543| 3,660,298 -0.90% EstimatedCycles 32,365,191| 32,202,921 -0.50% I1MissRate 0| 0 +163.60% I1mr 9,387| 24,607 +162.14% ILmr 206| 206 +0.00% Ir 21,585,211| 21,465,499 -0.55% L1HitRate 99| 99 -0.06% L1hits 30,466,706| 30,260,131 -0.68% LLHitRate 1| 1 +7.18% LLMissRate 0| 0 -8.41% LLdMissRate 0| 0 -8.40% LLhits 277,140| 295,206 +6.52% LLiMissRate 0| 0 +0.56% RamHitRate 0| 0 -8.41% RamHits 14,651| 13,336 -8.98% TotalRW 30,758,497| 30,568,673 -0.62% 

update_executor_iai::update_group::update_executor with_setup_2:setup_update_executor(procedural-string-lights)
Instructions: 5,104,893 (master) → 4,904,044 (HEAD) : $$\color{lime}-3.93\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 3| 3 -2.48% D1mr 53,489| 49,423 -7.60% D1mw 12,062| 11,897 -1.37% DLmr 2| 3 +50.00% DLmw 641| 434 -32.29% Dr 1,290,055| 1,236,600 -4.14% Dw 870,014| 835,468 -3.97% EstimatedCycles 7,566,668| 7,265,508 -3.98% I1MissRate 0| 0 +83.71% I1mr 3,538| 6,244 +76.48% ILmr 202| 201 -0.50% Ir 5,104,893| 4,904,044 -3.93% L1HitRate 99| 99 -0.02% L1hits 7,195,873| 6,908,548 -3.99% LLHitRate 1| 1 +2.13% LLMissRate 0| 0 -21.37% LLdMissRate 0| 0 -29.15% LLhits 68,244| 66,926 -1.93% LLiMissRate 0| 0 +3.58% RamHitRate 0| 0 -21.37% RamHits 845| 638 -24.50% TotalRW 7,264,962| 6,976,112 -3.98% 

update_executor_iai::update_group::update_executor with_setup_3:setup_update_executor(parametric-dunescape)
Instructions: 17,682,312 (master) → 17,535,363 (HEAD) : $$\color{lime}-0.83\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 3| 3 +0.57% D1mr 181,841| 181,367 -0.26% D1mw 44,239| 44,219 -0.05% DLmr 113| 106 -6.19% DLmw 6,499| 4,927 -24.19% Dr 4,461,175| 4,424,802 -0.82% Dw 3,044,088| 3,021,401 -0.75% EstimatedCycles 26,325,283| 26,105,260 -0.84% I1MissRate 0| 0 +121.54% I1mr 7,392| 16,240 +119.70% ILmr 182| 180 -1.10% Ir 17,682,312| 17,535,363 -0.83% L1HitRate 99| 99 -0.04% L1hits 24,954,103| 24,739,740 -0.86% LLHitRate 1| 1 +5.24% LLMissRate 0| 0 -22.64% LLdMissRate 0| 0 -23.28% LLhits 226,678| 236,613 +4.38% LLiMissRate 0| 0 -0.27% RamHitRate 0| 0 -22.64% RamHits 6,794| 5,213 -23.27% TotalRW 25,187,575| 24,981,566 -0.82% 

update_executor_iai::update_group::update_executor with_setup_4:setup_update_executor(red-dress)
Instructions: 49,436,290 (master) → 49,302,947 (HEAD) : $$\color{lime}-0.27\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 3| 3 -0.01% D1mr 545,703| 544,075 -0.30% D1mw 124,636| 124,333 -0.24% DLmr 18,385| 18,940 +3.02% DLmw 44,449| 41,240 -7.22% Dr 12,707,772| 12,674,796 -0.26% Dw 8,684,435| 8,657,364 -0.31% EstimatedCycles 75,478,143| 75,318,063 -0.21% I1MissRate 0| 0 +168.31% I1mr 18,155| 48,581 +167.59% ILmr 355| 320 -9.86% Ir 49,436,290| 49,302,947 -0.27% L1HitRate 99| 99 -0.04% L1hits 70,140,003| 69,918,118 -0.32% LLHitRate 1| 1 +5.27% LLMissRate 0| 0 -3.99% LLdMissRate 0| 0 -3.95% LLhits 625,305| 656,489 +4.99% LLiMissRate 0| 0 -9.62% RamHitRate 0| 0 -3.99% RamHits 63,189| 60,500 -4.26% TotalRW 70,828,497| 70,635,107 -0.27% 

update_executor_iai::update_group::update_executor with_setup_5:setup_update_executor(valley-of-spires)
Instructions: 32,673,864 (master) → 32,606,167 (HEAD) : $$\color{lime}-0.21\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 3| 3 +0.49% D1mr 358,519| 359,393 +0.24% D1mw 78,387| 78,496 +0.14% DLmr 5,251| 5,214 -0.70% DLmw 24,377| 21,281 -12.70% Dr 8,308,588| 8,284,262 -0.29% Dw 5,622,479| 5,609,991 -0.22% EstimatedCycles 49,301,193| 49,195,686 -0.21% I1MissRate 0| 0 +167.29% I1mr 13,367| 35,655 +166.74% ILmr 211| 208 -1.42% Ir 32,673,864| 32,606,167 -0.21% L1HitRate 99| 99 -0.05% L1hits 46,154,658| 46,026,876 -0.28% LLHitRate 1| 1 +6.52% LLMissRate 0| 0 -10.31% LLdMissRate 0| 0 -10.34% LLhits 420,434| 446,841 +6.28% LLiMissRate 0| 0 -1.22% RamHitRate 0| 0 -10.31% RamHits 29,839| 26,703 -10.51% TotalRW 46,604,931| 46,500,420 -0.22% 

🚀 Render: Cold Execution

run_once_iai::run_once_group::run_once with_setup_0:setup_run_once(isometric-fountain)
Instructions: 22,127,576 (master) → 21,528,918 (HEAD) : $$\color{lime}-2.71\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 3| 3 +2.74% D1mr 250,267| 243,572 -2.68% D1mw 58,115| 53,894 -7.26% DLmr 10,726| 9,056 -15.57% DLmw 19,114| 17,139 -10.33% Dr 5,781,229| 5,467,087 -5.43% Dw 3,924,906| 3,645,852 -7.11% EstimatedCycles 34,613,079| 33,269,791 -3.88% I1MissRate 1| 1 +5.27% I1mr 122,385| 125,345 +2.42% ILmr 5,370| 5,028 -6.37% Ir 22,127,576| 21,528,918 -2.71% L1HitRate 99| 99 -0.03% L1hits 31,402,944| 30,219,046 -3.77% LLHitRate 1| 1 +2.85% LLMissRate 0| 0 -7.87% LLdMissRate 0| 0 -6.50% LLhits 395,557| 391,588 -1.00% LLiMissRate 0| 0 -3.77% RamHitRate 0| 0 -7.87% RamHits 35,210| 31,223 -11.32% TotalRW 31,833,711| 30,641,857 -3.74% 

run_once_iai::run_once_group::run_once with_setup_1:setup_run_once(painted-dreams)
Instructions: 79,332,794 (master) → 78,500,786 (HEAD) : $$\color{lime}-1.05\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 2| 2 +0.39% D1mr 416,269| 405,523 -2.58% D1mw 200,064| 193,130 -3.47% DLmr 5,673| 5,502 -3.01% DLmw 58,850| 55,204 -6.20% Dr 19,092,214| 18,561,205 -2.78% Dw 12,778,699| 12,275,594 -3.94% EstimatedCycles 116,537,909|114,496,837 -1.75% I1MissRate 0| 0 +4.04% I1mr 176,445| 181,655 +2.95% ILmr 7,580| 7,228 -4.64% Ir 79,332,794| 78,500,786 -1.05% L1HitRate 99| 99 -0.00% L1hits 110,410,929|108,557,277 -1.68% LLHitRate 1| 1 +0.54% LLMissRate 0| 0 -4.17% LLdMissRate 0| 0 -2.76% LLhits 720,675| 712,374 -1.15% LLiMissRate 0| 0 -3.63% RamHitRate 0| 0 -4.17% RamHits 72,103| 67,934 -5.78% TotalRW 111,203,707|109,337,585 -1.68% 

run_once_iai::run_once_group::run_once with_setup_2:setup_run_once(procedural-string-lights)
Instructions: 10,621,859 (master) → 9,766,402 (HEAD) : $$\color{lime}-8.05\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 2| 2 -14.22% D1mr 59,937| 42,786 -28.62% D1mw 22,295| 19,130 -14.20% DLmr 399| 303 -24.06% DLmw 3,516| 4,153 +18.12% Dr 2,571,867| 2,265,866 -11.90% Dw 1,834,465| 1,602,019 -12.67% EstimatedCycles 15,788,323| 14,328,053 -9.25% I1MissRate 0| 0 +15.03% I1mr 44,936| 47,528 +5.77% ILmr 4,467| 4,077 -8.73% Ir 10,621,859| 9,766,402 -8.05% L1HitRate 99| 99 +0.04% L1hits 14,901,023| 13,524,843 -9.24% LLHitRate 1| 1 -6.36% LLMissRate 0| 0 +12.21% LLdMissRate 0| 0 +29.66% LLhits 118,786| 100,911 -15.05% LLiMissRate 0| 0 -0.74% RamHitRate 0| 0 +12.21% RamHits 8,382| 8,533 +1.80% TotalRW 15,028,191| 13,634,287 -9.28% 

run_once_iai::run_once_group::run_once with_setup_3:setup_run_once(parametric-dunescape)
Instructions: 22,647,527 (master) → 22,279,364 (HEAD) : $$\color{lime}-1.63\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 2| 2 -0.86% D1mr 126,880| 117,621 -7.30% D1mw 60,501| 54,053 -10.66% DLmr 1,629| 1,470 -9.76% DLmw 16,309| 11,331 -30.52% Dr 5,349,257| 5,019,715 -6.16% Dw 3,588,411| 3,239,893 -9.71% EstimatedCycles 33,229,539| 31,947,586 -3.86% I1MissRate 0| 0 -1.71% I1mr 61,315| 59,287 -3.31% ILmr 3,714| 3,358 -9.59% Ir 22,647,527| 22,279,364 -1.63% L1HitRate 99| 99 +0.03% L1hits 31,336,499| 30,308,011 -3.28% LLHitRate 1| 1 -2.15% LLMissRate 0| 0 -22.81% LLdMissRate 0| 0 -22.78% LLhits 227,044| 214,802 -5.39% LLiMissRate 0| 0 -8.09% RamHitRate 0| 0 -22.81% RamHits 21,652| 16,159 -25.37% TotalRW 31,585,195| 30,538,972 -3.31% 

run_once_iai::run_once_group::run_once with_setup_4:setup_run_once(red-dress)
Instructions: 1,807,734,637 (master) → 1,799,181,494 (HEAD) : $$\color{lime}-0.47\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 0| 0 -5.41% D1mr 1,786,442| 1,711,804 -4.18% D1mw 863,909| 785,609 -9.06% DLmr 441,661| 384,442 -12.96% DLmw 571,034| 504,055 -11.73% Dr 427,180,978|425,395,140 -0.42% Dw 278,127,538|277,196,683 -0.33% EstimatedCycles 2,558,724,941|2,543,480,765 -0.60% I1MissRate 0| 0 +8.83% I1mr 1,132,996| 1,227,209 +8.32% ILmr 5,585| 5,135 -8.06% Ir 1,807,734,637|1,799,181,494 -0.47% L1HitRate 100| 100 +0.00% L1hits 2,509,259,806|2,498,048,695 -0.45% LLHitRate 0| 0 +2.85% LLMissRate 0| 0 -11.85% LLdMissRate 0| 0 -11.92% LLhits 2,765,067| 2,830,990 +2.38% LLiMissRate 0| 0 -7.62% RamHitRate 0| 0 -11.85% RamHits 1,018,280| 893,632 -12.24% TotalRW 2,513,043,153|2,501,773,317 -0.45% 

run_once_iai::run_once_group::run_once with_setup_5:setup_run_once(valley-of-spires)
Instructions: 20,575,111 (master) → 19,768,177 (HEAD) : $$\color{lime}-3.92\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 3| 3 +2.70% D1mr 207,841| 198,665 -4.41% D1mw 52,591| 46,152 -12.24% DLmr 6,008| 5,689 -5.31% DLmw 16,403| 13,753 -16.16% Dr 5,188,252| 4,797,126 -7.54% Dw 3,507,772| 3,162,578 -9.84% EstimatedCycles 31,491,787| 29,795,593 -5.39% I1MissRate 0| 1 +6.53% I1mr 99,641| 101,981 +2.35% ILmr 3,601| 3,242 -9.97% Ir 20,575,111| 19,768,177 -3.92% L1HitRate 99| 99 -0.02% L1hits 28,911,062| 27,381,083 -5.29% LLHitRate 1| 1 +2.42% LLMissRate 0| 0 -7.94% LLdMissRate 0| 0 -5.22% LLhits 334,061| 324,114 -2.98% LLiMissRate 0| 0 -6.29% RamHitRate 0| 0 -7.94% RamHits 26,012| 22,684 -12.79% TotalRW 29,271,135| 27,727,881 -5.27% 

⚡ Render: Cached Execution

run_cached_iai::run_cached_group::run_cached with_setup_0:setup_run_cached(isometric-fountain)
Instructions: 7,526,281 (master) → 16,207,263 (HEAD) : $$\color{red}+115.34\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 5| 3 -35.26% D1mr 175,046| 199,978 +14.24% D1mw 7,448| 17,206 +131.02% DLmr 3,692| 2,298 -37.76% DLmw 395| 581 +47.09% Dr 2,327,296| 4,118,786 +76.98% Dw 1,374,637| 2,686,328 +95.42% EstimatedCycles 12,089,558| 24,127,373 +99.57% I1MissRate 0| 0 +2143.72% I1mr 802| 38,750 +4731.67% ILmr 185| 163 -11.89% Ir 7,526,281| 16,207,263 +115.34% L1HitRate 98| 99 +0.53% L1hits 11,044,918| 22,756,443 +106.04% LLHitRate 2| 1 -31.08% LLMissRate 0| 0 -65.26% LLdMissRate 0| 0 -61.68% LLhits 179,024| 252,892 +41.26% LLiMissRate 0| 0 -59.08% RamHitRate 0| 0 -65.26% RamHits 4,272| 3,042 -28.79% TotalRW 11,228,214| 23,012,377 +104.95% 

run_cached_iai::run_cached_group::run_cached with_setup_1:setup_run_cached(painted-dreams)
Instructions: 5,830,772 (master) → 21,841,139 (HEAD) : $$\color{red}+274.58\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 4| 2 -48.30% D1mr 122,999| 165,378 +34.45% D1mw 8,962| 28,094 +213.48% DLmr 1,754| 1,627 -7.24% DLmw 42| 82 +95.24% Dr 1,911,669| 5,240,414 +174.13% Dw 1,187,623| 3,548,296 +198.77% EstimatedCycles 9,520,834| 31,706,911 +233.03% I1MissRate 0| 0 +1925.54% I1mr 814| 61,761 +7487.35% ILmr 193| 162 -16.06% Ir 5,830,772| 21,841,139 +274.58% L1HitRate 99| 99 +0.66% L1hits 8,797,289| 30,374,616 +245.27% LLHitRate 1| 1 -43.52% LLMissRate 0| 0 -72.57% LLdMissRate 0| 0 -66.44% LLhits 130,786| 253,362 +93.72% LLiMissRate 0| 0 -77.59% RamHitRate 0| 0 -72.57% RamHits 1,989| 1,871 -5.93% TotalRW 8,930,064| 30,629,849 +243.00% 

run_cached_iai::run_cached_group::run_cached with_setup_2:setup_run_cached(procedural-string-lights)
Instructions: 1,617,497 (master) → 7,860,394 (HEAD) : $$\color{red}+385.96\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 4| 1 -63.71% D1mr 29,969| 32,551 +8.62% D1mw 3,708| 8,784 +136.89% DLmr 7| 10 +42.86% DLmw 9| 194 +2055.56% Dr 557,896| 1,825,370 +227.19% Dw 364,520| 1,294,268 +255.06% EstimatedCycles 2,683,439| 11,293,126 +320.85% I1MissRate 0| 0 +779.46% I1mr 802| 34,276 +4173.82% ILmr 171| 151 -11.70% Ir 1,617,497| 7,860,394 +385.96% L1HitRate 99| 99 +0.68% L1hits 2,505,434| 10,904,421 +335.23% LLHitRate 1| 1 -49.24% LLMissRate 0| 0 -56.09% LLdMissRate 0| 0 +276.99% LLhits 34,292| 75,256 +119.46% LLiMissRate 0| 0 -81.83% RamHitRate 0| 0 -56.09% RamHits 187| 355 +89.84% TotalRW 2,539,913| 10,980,032 +332.30% 

run_cached_iai::run_cached_group::run_cached with_setup_3:setup_run_cached(parametric-dunescape)
Instructions: 3,082,174 (master) → 13,651,046 (HEAD) : $$\color{red}+342.90\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 4| 2 -51.17% D1mr 67,917| 82,397 +21.32% D1mw 7,590| 19,636 +158.71% DLmr 24| 34 +41.67% DLmw 132| 435 +229.55% Dr 1,099,327| 3,026,922 +175.34% Dw 737,079| 2,055,591 +178.88% EstimatedCycles 5,232,706| 19,194,879 +266.83% I1MissRate 0| 0 +161.61% I1mr 767| 8,887 +1058.67% ILmr 145| 119 -17.93% Ir 3,082,174| 13,651,046 +342.90% L1HitRate 98| 99 +0.97% L1hits 4,842,306| 18,622,639 +284.58% LLHitRate 2| 1 -61.87% LLMissRate 0| 0 -48.71% LLdMissRate 0| 0 +8.63% LLhits 75,973| 110,332 +45.23% LLiMissRate 0| 0 -81.47% RamHitRate 0| 0 -48.71% RamHits 301| 588 +95.35% TotalRW 4,918,580| 18,733,559 +280.87% 

run_cached_iai::run_cached_group::run_cached with_setup_4:setup_run_cached(red-dress)
Instructions: 34,073,856 (master) → 247,237,375 (HEAD) : $$\color{red}+625.59\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 5| 1 -73.61% D1mr 631,625| 1,046,982 +65.76% D1mw 98,997| 225,866 +128.15% DLmr 291,608| 379,781 +30.24% DLmw 55,599| 144,612 +160.10% Dr 9,719,948| 57,532,785 +491.90% Dw 5,222,620| 41,095,284 +686.87% EstimatedCycles 62,384,366|370,884,624 +494.52% I1MissRate 0| 0 +16180.69% I1mr 876| 1,034,832 +118031.51% ILmr 858| 1,889 +120.16% Ir 34,073,856|247,237,375 +625.59% L1HitRate 99| 99 +0.84% L1hits 48,284,926|343,557,764 +611.52% LLHitRate 1| 1 -34.16% LLMissRate 1| 0 -78.57% LLdMissRate 2| 1 -77.12% LLhits 383,433| 1,781,398 +364.59% LLiMissRate 0| 0 -69.66% RamHitRate 1| 0 -78.57% RamHits 348,065| 526,282 +51.20% TotalRW 49,016,424|345,865,444 +605.61% 

run_cached_iai::run_cached_group::run_cached with_setup_5:setup_run_cached(valley-of-spires)
Instructions: 6,079,399 (master) → 15,386,153 (HEAD) : $$\color{red}+153.09\%$$

Detailed metrics
Baselines: master| HEAD D1MissRate 5| 3 -40.70% D1mr 143,735| 164,576 +14.50% D1mw 7,614| 16,990 +123.14% DLmr 398| 303 -23.87% DLmw 400| 695 +73.75% Dr 1,896,574| 3,719,517 +96.12% Dw 1,132,958| 2,409,007 +112.63% EstimatedCycles 9,746,881| 22,405,855 +129.88% I1MissRate 0| 0 +1516.52% I1mr 796| 32,566 +3991.21% ILmr 181| 157 -13.26% Ir 6,079,399| 15,386,153 +153.09% L1HitRate 98| 99 +0.69% L1hits 8,956,786| 21,300,545 +137.81% LLHitRate 2| 1 -40.35% LLMissRate 0| 0 -50.05% LLdMissRate 0| 0 -38.18% LLhits 151,166| 212,977 +40.89% LLiMissRate 0| 0 -65.73% RamHitRate 0| 0 -50.05% RamHits 979| 1,155 +17.98% TotalRW 9,108,931| 21,514,677 +136.19% 
@github-actions github-actions bot temporarily deployed to graphite-dev (Preview) October 5, 2025 02:04 Inactive
@Keavon Keavon marked this pull request as draft November 24, 2025 10:50
@Keavon Keavon force-pushed the master branch 6 times, most recently from d6228da to e58c1de Compare March 16, 2026 23:03
@Keavon Keavon force-pushed the master branch 4 times, most recently from fcc53f5 to 9b97ab7 Compare March 19, 2026 10:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants