Skip to content

Release 4.0.0: date the changelog entry - #4

Merged
zacala1 merged 1 commit into
mainfrom
release/4.0.0
Oct 22, 2026
Merged

zacala1 merged 1 commit into
mainfrom
release/4.0.0

Conversation

@zacala1

@zacala1 zacala1 commented Oct 22, 2026

Copy link
Copy Markdown
Owner

Summary

Replaces "4.0.0 (not released yet)" in CHANGELOG.md with the date, 2026-10-22. Nothing else changes: the version number, MIGRATION.md, the README and the package metadata already say 4.0.0 since #3.

main (a2f3e16) passed CI on Linux and Windows, and the Linux job's pack step produced InterprocessMemory.4.0.0.nupkg and .snupkg.

If the tag is created on a later day, change the date in this PR before merging.

After merging (not done by this PR)

git checkout main && git pull
git tag -a v4.0.0 -m "InterprocessMemory 4.0.0" <merge commit>
git push origin v4.0.0
# NuGet: take InterprocessMemory.4.0.0.nupkg / .snupkg from the `package` artifact of the CI run on the merge commit

Draft text for the GitHub release

InterprocessMemory 4.0.0

Fixes lock handling, torn reads, region creation races and several crash hazards found in three code reviews. The memory format is unchanged (format version 3).

Breaking:

  • StructuredMemory<T>.WriteLock / ReadLock are ref structs: no await inside a lock scope (it is a compile error now). Recompile against 4.0.0.
  • OrphanLockTimeout defaults to disabled; a lock whose owner process exited is still recovered.
  • MPMC queues need at least two slots; a region stored with capacity 1 must be removed (MemoryRegion.Remove).
  • StructuredMemory<T>.OpenExisting checks the schema version before the size; FilePath mode rejects a file of another size instead of growing it.

Important fixes:

  • Linux: a live write-lock owner was reported as an orphan and its lock taken over (3.0.0 and 4.0.0 processes must not share a region on Linux; update all processes together).
  • Small SharedArray<T> / StructuredMemory<T> values could be read torn by another process.
  • Region creation races, /dev/shm out of space (SIGBUS), PID namespaces of containers, Dispose racing waiting threads.

New: MemoryRegion.Remove, MemoryRegion.ForceResetLocks, MemoryRegion.DisposeGracePeriod, MemoryRegionOptions.UnixCreateMode, LockOwnerInfo.ReaderCount, SharedArray<T> lock guards.

See CHANGELOG.md for every change and MIGRATION.md for the upgrade notes.


Generated by Claude Code

Everything the entry lists is on main and passes CI on Linux and Windows
(the pack step builds InterprocessMemory.4.0.0.nupkg and .snupkg). Tagging
and publishing the package are separate steps.
@zacala1
zacala1 merged commit 4aec041 into main Oct 22, 2026
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