Skip to content

True streaming packages: format entities as Packages (#35) - #36

Merged
fanfeilong merged 1 commit into
masterfrom
cursor/true-streaming-packages-f4db
Sep 23, 2026
Merged

fanfeilong merged 1 commit into
masterfrom
cursor/true-streaming-packages-f4db

Conversation

@fanfeilong

@fanfeilong fanfeilong commented Sep 23, 2026 •

Copy link
Copy Markdown
Collaborator

Closes #35

Design

Network-oriented streaming: Parser recognizes a local complete format unit and emits it as a Package immediately so a renderer can progress without waiting for EOF.

Stream → PackageParser → Package (complete local fragment) → Renderer / DataSet

Changes

  • XlsBiffRecord : BinaryPackage — Binary format entities are packages (no wrapper type)
  • BinaryPackageParser — emits one-record owned byte slices via TryRead / Parse (OLE sector assemble still needed for compound files; record emit is one-package-at-a-time)
  • Xml packages under Reader/Xml — cell/row/merge/hyperlink are XmlPackage format units
  • ZipWorker — keeps ZIP open and streams entry inflate (GetInputStream); no full extract-to-temp
  • docs/streaming-packages.md — progressive parse/render contract + known gap for non-seekable network ZIP

Verify

  • src/test.sh — all Done! (exit 0)
Open in Web Open in Cursor 

- XlsBiffRecord is BinaryPackage; parser emits one-record owned slices
- Xml cell/row/merge/hyperlink types live under Reader/Xml as XmlPackage
- ZipWorker streams ZIP entries (no full extract-to-temp)
- Document progressive parse/render contract in docs/streaming-packages.md

Co-authored-by: Fan Feilong <fanfeilong@gmail.com>
@fanfeilong
fanfeilong marked this pull request as ready for review September 23, 2026 16:07
@fanfeilong
fanfeilong merged commit 936b09a into master Sep 23, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

True streaming packages: Binary/Xml format entities as Packages for progressive parse/render

2 participants