Commit Graph

398 Commits

Author SHA1 Message Date
Dennis Kobert
81d72b159b Write an attribute under a name the graph supplies
`Named<X>` in parameter position declares where a placeholder's name is
wired, and the macro gives that input constant text; `Attr<Named<X, V>>`
in the return writes under it. The kernel is handed the bare placeholder,
since the name is spent resolving the layout and a folded offset is all
the write needs, so the hot path matches a marker node's exactly.

A name-generic write names its value type through the wired generic,
which only an implementations row resolves, so those nodes emit their
layout meta per row rather than sharing one across rows.

`write_attribute` is the catalog's set half, restoring the identifier
master's documents carry with its input positions. Its name input is a
constant, so those documents resolve without migration, and the reset
marker that stood in for the missing node retires with it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-09 12:45:42 +00:00
Dennis Kobert
db9a59aa7d Fold attribute names out of their constant inputs when the graph compiles
`compute_layouts` resolves every name-from-input write against the text
its name input carries, so a folded meta is indistinguishable from a
marker node's and the layout holds a `&'static str` from there on. That
leaves nowhere for a name to be computed, which is the whole of the
rule: a name input that is not a constant is refused right here, per
node, with the path the editor pins its diagnostic to.

One name carries one value type, checked across the census and the
names a node folds together, so no graph can declare one field at two
widths. `compute_layouts` returns those refusals rather than panicking.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-09 12:44:42 +00:00
Dennis Kobert
35a34168d7 Accept any paint element on the fill and stroke inputs 2026-09-08 18:54:21 +00:00
Dennis Kobert
8555e6fb79 Drop the superseded rank promotion executor tests and cover brush stroke lists 2026-09-08 15:09:41 +00:00
Dennis Kobert
985f85baec Adapt the merged tree to our rank model and paint attributes 2026-09-08 15:06:05 +00:00
Dennis Kobert
f59ceba19f Merge origin/master into the async record refactor
Scaffolding merge for the reconcile; the final series to master is
authored fresh. Rank plumbing resolves to our axis-IR model, the node
macro and the LaneSource render walk stay ours, master's vector
restructure and gradient vocabulary are adopted, and the paint and
appearance adoption is deliberately deferred behind our fill and stroke
markers.
2026-09-08 15:03:57 +00:00
Dennis Kobert
b321c094d2 Keep the new assert messages inside the format width 2026-09-08 13:29:09 +00:00
Dennis Kobert
5e388cb38f Assert the deep element glue is registered before the executor evaluates 2026-09-08 13:15:06 +00:00
Dennis Kobert
33f7257e47 Rename record_edge_type to record_source_type 2026-09-06 16:27:11 +00:00
Dennis Kobert
daf0231c0c Rename the record_edge accessor to record_source 2026-09-06 16:26:33 +00:00
Dennis Kobert
92adc524ca Rename EdgeHandle to SourceHandle 2026-09-06 16:26:03 +00:00
Dennis Kobert
9f0e0ebc96 Clear the remaining clippy warnings on the diff surface 2026-09-06 16:25:17 +00:00
Dennis Kobert
e92faf763d Correct docs that misstate what the code does 2026-09-06 15:58:01 +00:00
Dennis Kobert
9d3abe385f Sweep the data-flow wire and edge wording to input and source 2026-09-06 15:14:55 +00:00
Dennis Kobert
8f7d3936f8 Rename serve_edge to serve_input 2026-09-06 15:12:46 +00:00
Dennis Kobert
c12f8f1115 Add changing-seasons to the gungraun benchmark arguments 2026-09-01 13:18:01 +00:00
Dennis Kobert
4e7d72d4b8 Flush the persistent region on its heap budget 2026-08-31 23:52:44 +00:00
Dennis Kobert
5a6192bbd6 Give the executor a persistent arena flushed between evaluations 2026-08-29 22:07:27 +00:00
Dennis Kobert
a955d6b458 Run cargo fmt 2026-08-29 18:40:02 +00:00
Dennis Kobert
97bc10e4c3 Pass frame space by argument and delete the record stack 2026-08-29 18:33:23 +00:00
Dennis Kobert
3af6834d3c Flip the Node trait from eval onto the frame claim's serve 2026-08-29 12:26:46 +00:00
Dennis Kobert
277641d27e Delete the plain edge kind 2026-08-29 10:07:10 +00:00
Dennis Kobert
f4d37524c8 Structure record stack rewinds as scope guards and make reserve unsafe 2026-08-28 18:02:50 +00:00
Timon
c7a64fff0c Add the 'Basic Brush' node and replace the legacy Brush tool implementation with it (#4469)
* Draw raster images with pad extension instead of repeat

* Add the GPU basic brush renderer

* Rework the brush tool around the GPU basic brush

* Remove the CPU brush implementation
2026-08-27 15:19:02 +00:00
Timon
10256dd22c Introduce the new brush stroke data types (#4467)
* Add the brush stroke format types

* Route brush strokes through the node graph

* Store brush style as per-item attributes instead of a struct
2026-08-27 15:19:01 +00:00
Dennis Kobert
50911a6a25 Recreate introspection data from the monitor's context snapshot 2026-08-27 13:53:25 +00:00
Dennis Kobert
20e70e7bc9 Exclude executor teardown from the measured bench regions 2026-08-27 10:09:18 +00:00
Dennis Kobert
694d3d34b3 Reduce measurement overhead for run_once benchmark 2026-08-27 00:37:25 +02:00
Dennis Kobert
dcc9059041 Give To Graphic a unit row so an unconnected content input renders as nothing 2026-08-24 12:02:46 +00:00
Dennis Kobert
aba941e81d Collapse typed levels in To Graphic like the pre-flip list conversion 2026-08-24 01:35:32 +00:00
Dennis Kobert
c0eb2ee4ff Remove the runtime-named attribute family and its type-erased bridges 2026-08-23 19:05:26 +00:00
Dennis Kobert
94b9d279a2 Retarget the palette executor test at the folded record wire 2026-08-23 17:29:43 +00:00
Dennis Kobert
5e918af371 Restore the sample_polyline test attribute and drop dead scaffolding 2026-08-23 08:31:40 +00:00
Dennis Kobert
58182bc2d3 Keep the executor arena at 128 MiB 2026-08-23 00:57:37 +00:00
Dennis Kobert
c33f8ae75b Convert mirror to a fold emitter and bridge levels into the erased list 2026-08-22 22:15:03 +00:00
Dennis Kobert
3126a5b278 Convert copy to points, sample polyline, scatter, spline, jitter, and assign colors 2026-08-22 20:59:37 +00:00
Dennis Kobert
5f6c18893e Grow the executor arena for per-copy paint parks 2026-08-22 20:59:37 +00:00
Dennis Kobert
6ab9d0360a Convert flatten path and solidify stroke to fold kernels 2026-08-22 19:11:48 +00:00
Dennis Kobert
01da817f61 Grow the executor arena for fold snapshots 2026-08-22 19:11:48 +00:00
Dennis Kobert
3da7f6cea3 Drop the legacy fill and stroke rows for single-typed paint 2026-08-22 17:29:51 +00:00
Dennis Kobert
4bceae26f2 Add the leveled fill rows and the graphic coercion entries 2026-08-22 16:13:01 +00:00
Dennis Kobert
0b2aa3798a Derive extent forwarding for level-preserving passthroughs 2026-08-22 15:34:22 +00:00
Dennis Kobert
fb71ea426d Bridge legacy seams and convert the transform family 2026-08-22 14:25:31 +00:00
Dennis Kobert
7fb36123e9 Point the render wrapper at the leveled intermediate 2026-08-22 12:50:47 +00:00
Dennis Kobert
5821816228 Add the leveled boundary helpers and the deep group element copy 2026-08-22 11:48:26 +00:00
Dennis Kobert
fbba0cd037 Gate the gpu converter imports the sweep wrongly removed 2026-08-17 10:56:45 +00:00
Dennis Kobert
ae7c51a964 Drop stale imports left behind by the record-wire port 2026-08-17 10:28:29 +00:00
Keavon Chambers
ef6d430f97 Replace the IntoPaint trait with direct Graphic-typed node inputs (#4442)
* Let the Fill and Stroke paint inputs take Item<Graphic>, replacing the IntoPaint trait

* Rename the FIll node's "fill" input to "paint"

* Let the graphic-consuming nodes take List<Graphic> directly, relying on the embedding adapters

* Remove outdated todo comments

* Re-save the demo art
2026-08-17 03:10:02 -07:00
Keavon Chambers
d63362718f Split 'To Graphic' and 'Wrap Graphic' into the 'As Graphic' type assertion and 'Into Group' reducer nodes (#4441)
* Split 'To Graphic' and 'Wrap Graphic' into the 'As Graphic' type assertion and 'Into Group' reducer nodes

* Make 'Into Group' reduce List<DVec2> not Item<DVec2>

* Reset the Merge definition for every legacy alias of its coercion nodes

* Improve test
2026-08-17 02:19:59 -07:00
Keavon Chambers
104b8b71e6 Support embedding whole items into Graphic variants so their attributes survive the conversion (#4440)
Add embedding conversion adapters that move a whole ranked value inside a Graphic variant
2026-08-16 19:51:58 -07:00