Skip to content

HSync 0.2.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 09:28
· 60 commits to main since this release
2b53cf0

0.2.0 (2026-10-13)

Features

  • uiharu: Add ticks, port schemas and bounded broadcast streams (766f8dc)
  • uiharu: Read samples and exchange events as resumable futures (1be29e5)
  • uiharu: Build checked decode graphs and run them to a fixpoint (51c8a62)
  • uiharu: Let a node look at the next item before taking it (a990835)
  • uiharu: Let the first item decide where a source starts (77446a3)
  • uiharu: Decode spi words and transactions from logic samples (7e5a2ab)
  • uiharu: Decode spi nor read commands over spi events (32ec255)
  • uiharu: Rebase a block of samples onto another start tick (2553714)
  • uiharu: Replay captures and export events as ndjson from the cli (1d04a9e)
  • uiharu: Measure throughput, latency and memory with a benchmark (a20e0c8)
  • uiharu: Add a harness for testing decoders (be52610)
  • uiharu: Seek, wait with a deadline and announce used-up blocks (6cf5819)
  • uiharu: Tell nodes their time base and what their inputs carry (763e8bd)
  • uiharu: Connect and expose ports by name for described graphs (65dc4b3)
  • uiharu: Accept boxed nodes in a graph (2d04bdd)
  • uiharu: Let an spi configuration leave fields out (6d96989)
  • uiharu: Describe a decode pipeline in a json file (f09a35c)
  • uiharu: Report edge intervals from logic samples (0e6e4dd)
  • uiharu: Measure pwm cycles from logic samples (ab65567)
  • uiharu: Decode parallel bus words from logic samples (44a204a)
  • uiharu: Decode i2s audio samples from logic samples (96d748d)
  • uiharu: Offer i2s, pwm, timing and parallel in pipeline files (c0d475d)
  • uiharu: Decode uart frames from logic samples (90b99d4)
  • uiharu: Decode modbus rtu frames over uart events (2eba1a9)
  • uiharu: Refuse sources too slow for the uart baud rate (0d667c8)
  • uiharu: Offer uart and modbus rtu in pipeline files (1f3f9d8)
  • uiharu: Announce where a stream starts (4f23a20)
  • uiharu: Decode i2c transfers from logic samples (35893fc)
  • uiharu: Decode 24xx eeprom commands over i2c events (6f97310)
  • uiharu: Offer i2c and 24xx eeprom in pipeline files (96f3b48)
  • uiharu: Decode jtag tap states and scans from logic samples (7e15b1d)
  • uiharu: Decode swd packets from logic samples (1fb4b82)
  • uiharu: Read jtag scans through a bus cursor (0212068)
  • uiharu: Read swd packets through a bus cursor (cb4c60f)
  • uiharu: Offer jtag and swd in pipeline files (b1b98a8)
  • uiharu: Decode the spi nor flash command set over spi events (1643f1b)
  • uiharu: Decode sd card spi mode commands over spi events (7b12ea8)
  • uiharu: Offer sd card spi and the nor command set in pipeline files (825d328)
  • uiharu: Decode can and can fd frames from logic samples (d0d1697)
  • uiharu: Read can frames through a bus cursor (2847ed2)
  • uiharu: Offer can in pipeline files (99cf617)
  • uiharu: Write event fields in camelCase (0b0bbe0)
  • uiharu: Add the 1-wire rom commands and crc-8 (3acd144)
  • uiharu: Decode 1-wire time slots from logic samples (c76979a)
  • uiharu: Decode 1-wire rom commands over link events (ad1d0a7)
  • uiharu: Decode ds18b20 commands over 1-wire events (b1bf8d2)
  • uiharu: Offer 1-wire and ds18b20 in pipeline files (e9c5c5e)
  • uiharu: Write the 1-wire and ds18b20 event fields in camelCase (0310a6e)
  • uiharu: Decode usb low and full speed packets from logic samples (42823ce)
  • uiharu: Group usb packets into transactions (b3d0dc2)
  • uiharu: Offer usb in pipeline files (41c9838)
  • uiharu: Write the usb event fields in camelCase (c7b1c93)
  • uiharu: Write wide integers as hex strings in json (24d5ee3)
  • uiharu: Decode lin frames over uart events (ae90f23)
  • uiharu: Decode midi messages over uart events (f0b50f8)
  • uiharu: Offer lin and midi in pipeline files (cd28fad)
  • uiharu: Decode ws281x led frames from logic samples (55dd035)
  • uiharu: Decode dmx512 packets over uart events (a446709)
  • uiharu: Decode apa102 and sk9822 led frames over spi events (3786c01)
  • uiharu: Offer ws281x, dmx512 and apa102 in pipeline files (765ad9b)
  • uiharu: Decode mdio management frames from logic samples (1ae00df)
  • uiharu: Decode avr serial programming instructions over spi (7770291)
  • uiharu: Decode nrf24l01+ commands over spi (6c73fc8)
  • uiharu: Offer mdio, avr-isp and nrf24l01 in pipeline files (a2df0ef)
  • uiharu: Decode usb power delivery messages from logic samples (7f8fb31)
  • uiharu: Read usb pd packets through a bus cursor (04ef590)
  • uiharu: Offer usb-pd in pipeline files (e8b2fb6)
  • uiharu: Decode nec infrared frames from receiver output (a3b99d8)
  • uiharu: Decode rc-5 infrared frames from receiver output (4868038)
  • uiharu: Decode rc-6 mode 0 infrared frames from receiver output (32f6804)
  • uiharu: Decode sony sirc infrared frames from receiver output (a654d8a)
  • uiharu: Offer the infrared decoders in pipeline files (7ec8f83)
  • uiharu: Let inputs require bounds, ranges and alternatives (8e5423f)
  • uiharu: Accept midi streams within one percent of 31.25 kbaud (c4529c2)
  • uiharu: Require lin bit rates between 1 and 20 kbit/s (55d1334)
  • uiharu: Require spi mode 0 or 3 for apa102 (f1cf98e)
  • uiharu: Open transaction 0 at its first word on an unframed spi bus (42741bb)
  • uiharu: Decode wiegand frames from logic samples (af6327a)
  • uiharu: Decode ps/2 frames in both directions from logic samples (25b9b35)
  • uiharu: Decode am2302, dht22 and dht11 sensor readings (27c0775)
  • uiharu: Decode microwire bits from logic samples (9060324)
  • uiharu: Decode 93cxx eeprom instructions over microwire (aef459d)
  • uiharu: Offer ps2, wiegand, am230x, microwire and eeprom93xx in pipeline files (48ec1e8)
  • uiharu: Open transaction 0 at its first bit on an unframed microwire bus (e998383)
  • uiharu: Check the promise of progress in the testing harness (13e99d5)
  • uiharu: Give outputs a progress sink cursors can pass progress through (8223815)
  • uiharu: Pass progress on through the contract cursors inside a frame (e005277)
  • uiharu: Let a node read several inputs in time order (e5525a1)
  • uiharu: Report a stalled pipeline instead of a full source (76f6291)
  • Run uiharu on captures through a registry and an adapter crate (#26) (e09f656)
  • Decode with uiharu in the app, live while capturing (#27) (953c46d)
  • Save captures in HSync's own .hsync format (#29) (9a79653)

Bug Fixes

  • uiharu: Settle a data batch when its flush is decided (c7292ca)
  • uiharu: Hold spi progress back while a word is in flight (05ac304)
  • decode: Follow the spi nor node's new name in the benchmark (5b393cf)
  • uiharu: Say what memory figure the benchmark reports (27bb83a)
  • uiharu: Stand at a block's end once it is used up (ffb83cc)
  • uiharu: Detect lin breaks from 11 bits as the specification says (7e38ad2)
  • uiharu: Accept an am2302 answering up to 200 us after the release (1180b8c)
  • uiharu: Hold 1-wire link progress back to the pulse under way (e5d557e)
  • uiharu: Hold i2c progress back to the byte under way (4e8e6e6)
  • uiharu: Hold i2s progress back to the word under way (41c16aa)
  • uiharu: Hold pwm progress back to the cycle under way (4e4ba13)
  • uiharu: Hold jtag progress back to the batch under way (1947e09)
  • uiharu: Hold swd progress back to the bits not reported yet (c5101e5)
  • uiharu: Hold can progress back to the frame under way (ec8bed4)
  • uiharu: Hold usb progress back to the packet or bus state under way (24b1bab)
  • uiharu: Leave gaps in place when a seek passes them (904b97c)

Performance

  • uiharu: Find the next edge without reading the levels three times (022de35)
  • uiharu: Transpose interleaved samples a 64-sample tile at a time (5fb166e)