Dennis Kobert
fdf13f91cb
Materialize a reducer's ranked input into a List and fold it
2026-08-14 21:19:20 +00:00
Dennis Kobert
65e0969721
Recognize a reducer's IList input level in build
2026-08-14 10:13:53 +00:00
Dennis Kobert
8f265e7660
Report a creator's pushed-level extent from its count
2026-08-14 09:56:31 +00:00
Dennis Kobert
98e6b97072
Reshape the extent trait to a written extent_at and a derived composite
2026-08-14 09:10:04 +00:00
Dennis Kobert
a3e9074955
Scatter a creator's per-copy attribute from the copy index
2026-08-14 08:24:44 +00:00
Dennis Kobert
04afada5b3
Lower a creator's IList return to a level-pushing record
2026-08-14 08:22:29 +00:00
Dennis Kobert
3e183fbd28
Read a creator's IList return level in build
2026-08-14 08:11:59 +00:00
Dennis Kobert
849d6a17be
Delete the Class taxonomy in favor of the intent IR
2026-08-13 23:46:07 +00:00
Dennis Kobert
20ba069fe0
Derive record-io construction wiring from the intent IR
2026-08-13 23:26:22 +00:00
Dennis Kobert
c82093f153
Derive codegen node-kind predicates from the intent IR
2026-08-13 23:09:48 +00:00
Dennis Kobert
010785d8db
Derive single-row registry entries from the intent IR
2026-08-13 22:08:04 +00:00
Dennis Kobert
69774d445c
Derive the eval tail from the intent IR
2026-08-13 21:08:41 +00:00
Dennis Kobert
b42c632474
Derive input bindings from the intent IR
2026-08-13 19:32:25 +00:00
Dennis Kobert
f195e363a5
Emit layout metadata from the intent IR
2026-08-13 16:11:58 +00:00
Dennis Kobert
40f99152ce
Bridge-verify build against the resolved class
2026-08-13 15:35:07 +00:00
Dennis Kobert
3b1170b148
Derive inputs, output, and monomorphizations in build
2026-08-13 15:18:35 +00:00
Dennis Kobert
3a20091d3a
Derive the node-level intent axes in build
2026-08-13 14:19:49 +00:00
Dennis Kobert
e5206c3b50
Add the node intent IR types
2026-08-13 14:00:15 +00:00
Dennis Kobert
fbc736e1cc
Verify computed layouts match construction at node construction
2026-08-13 10:25:00 +00:00
Dennis Kobert
d7da2ba9e7
Add the resolve_types and compute_layouts compiler passes
2026-08-13 10:24:59 +00:00
Dennis Kobert
a5784c8f0b
Port the create_context render test onto record wires
2026-08-12 13:11:48 +00:00
Dennis Kobert
83fbaca6f2
Unify the layout metadata model and collapse the single-row entry emitters
2026-08-12 13:11:48 +00:00
Dennis Kobert
b6f73b0691
Emit declarative LayoutMeta from the node macro into registry entries
2026-08-11 20:08:45 +00:00
Dennis Kobert
557f8020bb
Add the leveled extent_at/depth trait surface and the push_level context helper
2026-08-11 20:08:45 +00:00
Dennis Kobert
fb94d99807
Port the stale math-nodes and raster-nodes tests onto record wires
2026-08-11 09:54:48 +00:00
Dennis Kobert
264601c5f7
Return records from eval_batch through a RecordBatch view
2026-08-11 09:26:36 +00:00
Dennis Kobert
5db7e1816a
Make Node::layout non-optional, defaulting to a shared empty layout
2026-08-11 09:20:02 +00:00
Dennis Kobert
5b02edfd9a
Split the node macro codegen into classify, entries, and metadata modules
2026-08-10 16:15:31 +00:00
Dennis Kobert
7c0a4073e9
Select the eval tail form by class and dialect through an explicit Tail step
2026-08-10 15:57:58 +00:00
Dennis Kobert
275100eab0
Model the eval body as an EvalStep sequence with a structural stack discipline
2026-08-10 15:34:12 +00:00
Dennis Kobert
42cd2a4303
Resolve the dialect and input-role axes as node-model sum types
2026-08-10 15:21:59 +00:00
Dennis Kobert
e4f81fc947
Drive the node macro from a single analyze pass, NodePlan, and shared NodeFields
2026-08-10 13:33:58 +00:00
Dennis Kobert
492cf18cb0
Flip the passthrough node onto record wires by dropping its dead lifetime
2026-08-10 13:33:58 +00:00
Dennis Kobert
05630bab6e
Port the repeat node tests onto record-wire lazy inputs
2026-08-10 10:41:40 +00:00
Dennis Kobert
a465948ad4
Always-spill records, retiring inline-16 and reclaiming read-out record frames
2026-08-10 10:29:22 +00:00
Dennis Kobert
63cf0151e2
Change stack return to standart sret semantics
2026-08-08 07:33:33 +00:00
Dennis Kobert
9c7a633d5b
Adopt tuple attribute io and the carrier lowering, deleting the bridge adapters for record-only wires
2026-08-06 18:48:16 +00:00
Dennis Kobert
166241b0e8
Flip nested-generic nodes onto record wires by unifying row types against field types
2026-08-06 13:36:46 +00:00
Dennis Kobert
ea49f3c2fc
Delete the Ref wire type and its lend edge surface
2026-08-06 12:24:50 +00:00
Dennis Kobert
100f81c307
Retire the lend machinery and flip the clone node onto record wires
2026-08-06 11:57:18 +00:00
Dennis Kobert
886ff03ef2
Construct value nodes as native record sources
2026-08-06 10:24:44 +00:00
Dennis Kobert
7a1d1f3238
Define the frame memo through the record-opaque class over same-frame byte copies
2026-08-06 09:57:21 +00:00
Dennis Kobert
612afb7ebb
Capture the input context snapshot on the monitor io record
2026-08-06 09:37:48 +00:00
Dennis Kobert
daf3f25d21
Define the monitor through the record-opaque class and move introspection to element reads
2026-08-06 09:07:57 +00:00
Dennis Kobert
a2de2a9c09
Add the record-opaque kernel class to the node macro and define memoize through it
2026-08-06 08:28:52 +00:00
Dennis Kobert
98be2b8c79
Carry erased element and re-park glue on layouts and collapse memoize to a generic record row
2026-08-06 08:01:19 +00:00
Dennis Kobert
83fda4f08c
Update the core-types runtime tests to record wires
2026-08-06 06:46:28 +00:00
Dennis Kobert
20c6ba19d3
Flip async source nodes onto record wires by lifting their slot values
2026-08-05 23:54:42 +00:00
Dennis Kobert
7eeb7d84cd
Flip poll kernels and derived-context lazy nodes onto record wires and land record roots at the host rim
2026-08-05 23:42:24 +00:00
Dennis Kobert
7ddc66adbe
Flip lazy-input nodes onto record wires through the element lazy input
2026-08-05 23:12:43 +00:00
Dennis Kobert
c20a243fc2
Flip lend-parameter nodes onto record wires and keep the clone adapter plain
2026-08-05 22:57:51 +00:00
Dennis Kobert
3eecc31bfd
Flip generic value nodes onto record wires through phantom struct parameters
2026-08-05 22:39:25 +00:00
Dennis Kobert
7099f056dc
Flip concrete value nodes onto record wires with bridge rows for every value type
2026-08-05 22:18:50 +00:00
Dennis Kobert
9680d34abf
Carry record elements by the drop-glue rule and unify the lift and extract adapters
2026-08-05 22:17:50 +00:00
Dennis Kobert
592b2fbe32
Turn context modification into a generic record routing node and park droppable elements as arena references
2026-08-05 19:25:17 +00:00
Dennis Kobert
60f80682c5
Collapse duplicate proto nodes when assigning stable ids
2026-08-05 19:25:17 +00:00
Dennis Kobert
9fc4fcc7a0
Inline records of at most 16 bytes into the two-word RecordValue with layout-resolved storage
2026-08-05 17:23:09 +00:00
Dennis Kobert
7915800d73
Add per-field erased-read glue, the record monitor with introspection capture, and rename record constructors to new
2026-08-05 15:22:20 +00:00
Dennis Kobert
c91be74a55
Add the Record wire type, record registry rows, lift and extract adapters, and executor stack reservation
2026-08-05 12:24:20 +00:00
Dennis Kobert
abe2a565d1
Drop the list driver, make attribute values Copy over arena references, and land record-tier offset io on a per-thread record stack
2026-08-05 09:47:03 +00:00
Dennis Kobert
6154e4d219
Add the attribute census, node macro attribute io over list wires, and the rank-0 record tier
2026-08-04 22:05:02 +00:00
Dennis Kobert
62b7ccf40c
Support bare reference parameters and lending outputs in the node macro and make the clone node the clone-out adapter
2026-08-03 18:29:16 +00:00
Dennis Kobert
9b45af854a
Emit Ref wire types for lending rows and splice lend/clone_out adapters in the type checker
2026-08-03 16:33:27 +00:00
Dennis Kobert
562e6602eb
Poll source tasks once at spawn and land inline completions in the first eval
2026-08-03 10:21:46 +00:00
Dennis Kobert
8fb18012cf
Remove unuse allow dead code
2026-08-02 19:35:43 +02:00
Dennis Kobert
2b3161773f
Propagate tokio runtime creation failure in graphene-cli
2026-08-02 19:29:33 +02:00
Dennis Kobert
167d733f02
Wire the async source runtimes into the hosts
2026-08-02 19:24:51 +02:00
Dennis Kobert
ee499be31f
Add test coverage for the repeat nodes
2026-08-02 16:18:07 +00:00
Dennis Kobert
d385f3c69b
Fix warnings
2026-08-02 15:06:11 +00:00
Dennis Kobert
e372f78b7e
Address pr review
2026-08-02 14:31:13 +00:00
Dennis Kobert
8686b2c891
Export the async-source flag from the macro and dispatch superseded type deltas in tests
2026-08-02 14:09:27 +00:00
Dennis Kobert
e3aa32bc83
Fix wireing of async sources
2026-08-02 14:02:53 +02:00
Dennis Kobert
77d439ec35
Silence the dead-code warnings for groundwork the host wiring will use
2026-08-01 00:59:26 +02:00
Dennis Kobert
c30054579f
Adapt the cutover to the reviewed core-types API
2026-07-31 23:39:39 +02:00
Dennis Kobert
81a319430b
Cut over to the graphene execution model
2026-07-31 23:19:42 +02:00
Dennis Kobert
1fb6fcb447
Remove the unused CtxSnapshot scope reconstruction
2026-07-31 22:55:53 +02:00
Dennis Kobert
32d244e700
Make the sources fields private and normalize them on every mutation
2026-07-31 22:00:22 +02:00
Dennis Kobert
0877f9d50e
Park the arena during drop glue, guard filled batches, and normalize deserialized sources
2026-07-31 20:09:46 +02:00
Dennis Kobert
14c1dd0397
Guard the shared generation counter in tests and reject oversized batch ranges
2026-07-31 19:30:59 +02:00
Dennis Kobert
daf7b3e7b9
Make arena generation exhaustion fallible with an unsafe counter rewind
2026-07-31 19:08:09 +02:00
Dennis Kobert
bdf53070f2
Forward serialize through node wrappers and free abandoned frame table reservations
2026-07-31 18:12:53 +02:00
Dennis Kobert
0d0ec96709
Draw arena generations from a global counter so foreign handles never upgrade
2026-07-31 17:48:09 +02:00
Dennis Kobert
6feaf4ec9d
Drop arena entries in reverse allocation order and require Send + Sync payloads
2026-07-31 17:21:11 +02:00
Dennis Kobert
5541769dc5
Fix frame table key aliasing and arena handle offset truncation
2026-07-31 16:46:20 +02:00
Dennis Kobert
1fccb112cb
Add the core execution types, the borrowed context, and the seeded u64 fx hasher
2026-07-31 13:11:36 +00:00
Dennis Kobert
0f0f62c2e9
Enforce unwind safety on all public executor entry points ( #4356 )
2026-07-24 09:34:40 +00:00
Dennis Kobert and Timon
540a4ff273
Integrate document-format storage into the editor ( #4265 )
...
* Integrate document-format storage into the editor
* Address review feedback: drop redundant clones and dedupe metadata traversal
* Extract DocumentHistory and move storage-metadata tests to their own file
* Extract storage diffing/IO, gate validation and .gdd save behind preferences, restructure tests
* Address PR review: save-format/path consistency, autosave persistence, and view-settings/diff fixes
* Skip storage remount on .gdd open and split value/timestamp drift in attribute diff
* Rename storage tests module and surface .gdd open failures with per-resource diff detail
* Add debug-menu toggle to hide the storage preferences section
* Hopefully fix async tests
* Shorten comments
* Fix tests
* Review
* Review
* Review
* Block on future mesages in tests
* Review
* Shorten comments
---------
Co-authored-by: Timon <me@timon.zip >
2026-07-04 19:27:00 +00:00
Dennis Kobert
a979ccd5bd
Add document-format RFC draft ( #4264 )
...
* Add document-format RFC draft
* Align document-format RFC with graph-storage implementation
* Update writing style
* Recharacterize resource source chain as LWW-element-set, not add-wins OR-set
* Add Rev identity rationale framed against Git, plus patch-id future item
* Correct RFC inaccuracies found in implementation audit
* Mark unimplemented retirement coarsening and leader election as future; fix resurrection mechanism
* Add hot-log to the on-disk payload list in the architecture diagram
2026-06-28 19:05:30 +00:00
Dennis Kobert
03c33dc784
Fix error from running cargo check with a system global Cargo config.toml rustflags override ( #4277 )
...
Fix error caused by running cargo check in the workspace
2026-06-23 09:09:19 +00:00
Dennis Kobert
b45cc312dd
Add support for opening GDD documents from the CLI ( #4262 )
...
* Wire document-format into graphene-cli
* Support loading both legacy and new graphite files in the cli
* Address PR review: propagate CLI errors and use dyn resolver
* Fix CLI network wrap + preprocessor ordering
* Cleanup preprocessor
* Remove unused import
2026-06-21 18:17:01 +02:00
Dennis Kobert
de11d29d8e
Add document-format crate ( #4234 )
...
* Add document-format crate
* Adapt document-format to merged graph-storage and consolidate errors
* Fix resource write ordering, codec error masking, and export docs
* Remove document-format RFC; tracked in a dedicated PR
* Restructure document-format into gdd/persist/export/resource modules
Split the 963-line lib.rs by responsibility: persist path into persist.rs, resource I/O into resource.rs, export engine into export.rs. Rename the GddV1 layout struct to GddV1Layout and add a GddV1 = Gdd<GddV1Layout> alias.
* Feature-split document-format and graph-storage for minimal builds
* Address PR review: O(1) history-delta lookup and no-default-features test build
* Address PR review: propagate apply_hot_op persist error and assert resource hash
* Make decompression from archive streaming
* Share archive export body between export and export_to_bytes
* Review cleanup
* Export documents with un-retired hot ops losslessly
* Persist last_broadcast_rev in session.json, drop unused last_retired_at
* Move peer_id from manifest to session.json
* Rename gesture to interaction in document-format storage layer
2026-06-21 12:35:47 +00:00
Dennis Kobert
b1d8ac0e64
Add History type and merge-commit model to graph-storage ( #4238 )
...
* Add History type and merge-commit model to graph-storage
* Add History::merge with canonical-sort convergence to graph-storage
* Append merge delta without re-sorting the whole history
* Resurrect across merges by searching all ancestors, not the primary chain
2026-06-16 15:02:48 +02:00
Dennis Kobert and Timon
b56af15e5e
Add graph-storage crate ( #4198 )
...
* Add graph-storage crate
* Split graph-storage lib.rs into smaller modules
* Make graph_craft/core_types dependency optional
* Fix CRDT correctness issues flagged in graph-storage PR review
* Treat trailing empty export slots as value-equal in Network::value_equal
* Address graph-storage review: parameterize CrdtError, reject hot-log corruption, drop LamportClock Default
* Address graph-storage review: fix root-delta history walk, validate cross-network refs, make compute_deltas deterministic, harden Priority, index nodes by network
* Address graph-storage review: sort sources on deserialize, treat inputs_attributes length as structural, dedupe demo-artwork loader
* Add opt-in Delta rev validation, dedup resource sources on deserialize, fix doc grammar
* Persist scope injections through storage; harden gesture-end and embedded-source checks
* Review
* Review
* Review
* Use new types for NodeId and NetworkId
* Adress minor review comments
---------
Co-authored-by: Timon <me@timon.zip >
2026-06-13 16:47:04 +00:00
Dennis Kobert
d5c67eeb55
Drop MemoHash's std Hash impl and route cache-identity hashing through CacheHash ( #4209 )
2026-06-07 17:49:56 +00:00
Dennis Kobert and Timon
6fe1af3afe
Add document-container crate ( #4191 )
...
* Add document-container crate: container backends and archive codecs
* Address PR review: path/prefix split, safe size casts, OPFS stream aborts
* Address PR review round 2: mmap read check, UTF8 entry names, prefix normalization
* Make MmappedBytes::new fallible so mmap reads can't silently degrade
* Address PR review round 3: backend contract uniformity (symlinks, remove, list)
* Apply symlink-component check to FolderBackend listing paths
* Address PR review: idempotent OPFS delete logging, tar default-features, shared entry-size cap
* Fix validate_path doc: dotfiles pass, CurDir/ParentDir rejected
* Omit symlink entries from FolderBackend listings for consistency with resolve
* Preserve zip I/O errors and reject non-canonical paths in validate_path
* Extend archive apis to return the archive writer
* Rename document/document-container directory to document/container
* Add archive format sniffing and deserialize_auto
* Drop temporal hedge from checked_entry_size comment
* Tighten verbose doc comments in document-container
* Coalesce consecutive same-path OPFS appends to avoid O(n^2) file copies
* Review
* Update document-container for the deserialize/store_non_blocking renames
---------
Co-authored-by: Timon <me@timon.zip >
2026-06-05 13:28:02 -04:00
Dennis Kobert
7b9c480a8d
Make ResourceStorage trait &self-based and remove 'static requirement ( #4188 )
...
* Make ResourceStorage trait &self-based with elided-lifetime ResourceFuture
* Adress review comments
2026-06-01 10:37:05 +00:00
Dennis Kobert and Timon
78679a5ba2
Implement editor level future message handler ( #4182 )
...
* Implement proper editor level async message handler
* Take application_io and wake callback as Editor::new arguments
* Rename AsyncMessage -> FutureMessage
* add DesktopWrapperMessage::Wake
---------
Co-authored-by: Timon <me@timon.zip >
2026-05-31 21:26:29 +00:00
Dennis Kobert
e0368435b9
Add the "memoize" attribute to the node macro ( #4065 )
...
* Add memoization attribute to node macro
* Fix memoization insertion for networks without conversion nodes
2026-04-28 11:55:38 +00:00
Dennis Kobert and Keavon Chambers
3d84e63ef9
Migrate usage of the Hash trait for cache invalidation to the dedicated CacheHash trait ( #4051 )
...
* WIP start migrating usages of hash for cache invalidadion to dedicated trait
* Finish migrating usages
* Code review
* Add comments clearifying the reasoning for using random ids in the VectorModification cach hash impl
* Fix some remaining hash violations
* Finish migration and fix compilation
* Fix import ordering
* Cleanup
* Fix code review stuff
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-04-27 05:18:47 +00:00
Dennis Kobert
19aaeb374b
Remove sample based image hashing to avoid false equalities ( #3980 )
...
* Remove sample based image hashing to avoid false equalities
This was originally introduced to improve the performance of working with
image data, but since the memo hash wrapper got introduced this should no
longer be really necessary.
* Fix todo comment
2026-04-04 11:46:08 +00:00