Skip to content

Conversation

@engineering87
Copy link
Owner

Overview

This pull request introduces full support for .NET 10, expands the TemporalCollections library with two new high-performance temporal data structures, and includes several general improvements to documentation and internal organization.

The goal of this PR is to modernize the project, improve performance capabilities, and expand the set of temporal containers available to developers.

✨ What's New

✅ .NET 10 Support

The project now targets .NET 10, benefiting from:

  • improved JIT optimizations
  • better baseline performance
  • enhanced memory and threading primitives
  • expanded language/runtime features

All existing tests have been run against the new target framework.

🆕 New Temporal Data Structures

TemporalSegmentedArray

A high-performance, append-optimized, time-ordered segmented array designed for ingestion-heavy scenarios.

Key features:

  • Amortized O(1) append for in-order timestamps
  • Segmented storage with efficient retention (RemoveOlderThan)
  • Fast time-based search: O(log S + K)
  • Ideal for telemetry, event streams, logs, and high-volume time series

TemporalMultimap<TKey, TValue>

A thread-safe multimap associating each key with multiple timestamped values, while still enabling global time-range queries.

Key features:

  • Per-key ordered lists with monotonic timestamps
  • Supports both per-key and global temporal queries
  • Efficient time-based trimming and windowing
  • Useful for event grouping, entity histories, audit logs, and stream processing

📚 Documentation Improvements

Updated README

The README.md now includes:

  • new entries for the two data structures in:
    • Available Collections
    • Usage Guidance
    • Threading Model & Big-O Cheatsheet
  • extended explanations and usage scenarios
  • updated comparison table of all collections

These enhancements improve navigability and clarity for new users.

🛠 General Improvements

  • refactored internal logic for clarity and maintainability
  • improved time-based boundary checks across all ITimeQueryable implementations
  • enhanced consistency in timestamp semantics and ordering guarantees

✔️ Checklist

  • Added .NET 10 support
  • Implemented TemporalSegmentedArray<T>
  • Implemented TemporalMultimap<TKey, TValue>
  • Updated documentation
  • Improved internal logic and consistency
  • All tests pass

@engineering87 engineering87 merged commit 021a933 into main Nov 22, 2025
2 checks 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.

2 participants