Skip to content

Conversation

@hamdaankhalid
Copy link
Contributor

@hamdaankhalid hamdaankhalid commented Dec 7, 2025

The original BTree and Streams code was written in the research branch by Raman Aneesh, and can be found in streams-original branch.

This PR aims to stabilize it with bugfixes, new features, and performance tuning.

ramananeesh and others added 6 commits July 10, 2025 11:16
* Streams API Work in progress

* Streams - sector aligned bufferpool for index work in progress

* sector aligned bufferpool integration works

* testing code wip

* bug fixed

* fixed major bug in btree

* updates

* fixed memory alloc by reverting to Marshal.AllocHGlobal

* code cleanup

* delete passes

* tying up the streams API

* added command to RespCommandsInfo

* basic test with XADD and XLEN works

* added XRANGE and XDEL - basic tests work

* fixed bug with stream id parsing/encode/decode

* added ACL Tests

* added RespStreamTests

* minor cleanup

* added cleaner command strings for incorrect arguments

* cleanup; removed TRIM code

* cleanup; added more documentation about node structure

* more cleanup

* reverted visibility change to ByteArrayComparer to instead use .Instance

* removed most of Unsafe.AsPointer() instances from BTree code

* swapped out memory allocation for B-tree to use NativeMemory.AlignedAlloc instead of Marshal.AllocHGlobal

* cleanup; removed unused imports + commented out code.

* bug fix - mismatch in allocates v/s deallocates for B-tree

* updates fixing PR comments

* reverted an earlier change in Build.props following PR comment + changes to fix build errors.

* applied changes to propagate modified RESP3 output

* added streams as an optional

* formatting fixes

* minor edit

* fixed minor bug in keeping streams optional

* cleanup

* updated XADD to return bulk string

* minor edits to error messages; used WriteAsciiBulkString for stream id output after XADD

* added back code for BTreeTrim (work in progress)

* fixed validCount bug in TrimByLength

* fuxed bug on validCount propagation + trimByID

* minor bug fix; added BTreeTrimTests

* return headValidKey as ReadOnlySpan<byte>

* cleanup

* connecting XTRIM to Streams API

* added XTrimTests

* stream commands error out in case streams is disabled

* cleanup + switched to ReadOnlySpan<byte> instead of byte[] where applicable

* matched error messages to Redis documentation

* added NOMKSTREAM support for XADD

* updated docs

* minor cleanup + refactor variable name

* minor edit

* minor bug fix - enableStreams for ACL tests in server setup

* support exact and approximate trimming of index

* added support for approximate trimming

* minor doc update
@hamdaankhalid hamdaankhalid mentioned this pull request Dec 7, 2025
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.

2 participants