Repository navigation
Releases: CardResearchLab/Libmem.NET
Release list
Libmem.NET v2.5.0
Libmem.NET v2.5.0 is a Windows x64/x86 / .NET 8 official release of the reusable C++/CLI wrapper around the pinned rdbo/libmem native library.
Release highlights
Added
- Add session-bound
ScanManager.TryDataScan,TryPatternScanandTrySigScanwith boolean match results andout UInt64addresses (zero on a normal miss), avoiding architecture-dependent bad-address sentinel checks in consumers. - Cover x64/x86 scan hits, misses, exact-window final candidates, invalid inputs and detached sessions in the runtime smoke suite.
- Add session-bound
MemoryManager.TryRead(address, count, out data)andTryWrite(address, data, out bytesWritten): the boolean indicates a full transfer, while outputs retain partial read bytes / actual written byte counts. - Cover complete, zero-length and page-boundary incomplete operations, argument errors, detached sessions, external-process round trips and local NuGet consumers on x64/x86.
Fixed / hardened
- Preflight trampoline readability before the static local-process
HookHandle.Remove()path enters pinnedLM_UnhookCode, so an unreadable trampoline does not produce a false successful removal and discard the handle. Preserve live ownership, source bytes and page protection for retry. - Add deterministic VMT multi-entry partial-reset regression: a readable tracked slot is restored first, an inaccessible slot fails with ownership retained, and retry restores the remaining slot after recommit. No native VMT implementation change.
Compatibility
- Preserve existing
DataScan,PatternScan,SigScan,ReadandWritecontracts, pinned native libmem, Windows x64/x86 / .NET 8 support and existing public API signatures. The new methods are additive and are not available in the published 2.4.1 package. - Version metadata is advanced to
2.5.0for candidate verification; GitHub Release and nuget.org publication require separate explicit release gates. No ARM64, AnyCPU, cross-bitness, Linux/macOS, or game-specific functionality is added.
Platform and compatibility
- OS / architectures: Windows x64 and Windows x86
- Managed runtime: .NET 8
- Native backend: pinned rdbo/libmem revision
- AnyCPU: not supported; consumers must select x64 or x86 explicitly
Downloads
- Libmem.NET-windows-x64.zip — runtime package for Windows x64
- Libmem.NET-windows-x64.zip.sha256 — SHA-256 checksum for the x64 archive
- Libmem.NET-windows-x86.zip — runtime package for Windows x86
- Libmem.NET-windows-x86.zip.sha256 — SHA-256 checksum for the x86 archive
- Libmem.NET.2.5.0.nupkg — one PackageReference package carrying both architectures; nuget.org publication is a separate step
x64 package contents
CHANGELOG.mdIjwhost.dllLICENSELibmem.NET.dllLibmem.NET.pdbLibmem.NET.xmlMIGRATION.mdTHIRD_PARTY_NOTICES.mdVERSIONlibmem.dllmanifest.json
x86 package contents
CHANGELOG.mdIjwhost.dllLICENSELibmem.NET.dllLibmem.NET.pdbLibmem.NET.xmlMIGRATION.mdTHIRD_PARTY_NOTICES.mdVERSIONlibmem.dllmanifest.json
Integrity and provenance
- x64 archive SHA-256:
48d292938580a7b5284c6f9a665be9c14a2b35243e91c5d4c3e6423be94347aa - x86 archive SHA-256:
07a45b98d90de8142a152de3b6f20c9c04c9295e738eaaafee1b8cb7131b2f3e - Repository commit:
190ed68e3d420932e19a724edfdc0e9482518e14 - Pinned libmem commit:
a07c9942bf1358dabcc83eb0cd072736c749d7f8 - Both runtime manifests record each packaged file's size and SHA-256.
- Release publication verifies both package versions, repository commit, platform, configuration, archive contents, and checksums before upload.
Documentation
Libmem.NET remains a general-purpose libmem wrapper. Application snapshots, caches, game state, IPC, and other product-specific models belong in consuming projects.
Libmem.NET v2.4.1
Libmem.NET v2.4.1 is a Windows x64/x86 / .NET 8 official release of the reusable C++/CLI wrapper around the pinned rdbo/libmem native library.
Release highlights
Fixed
- Keep
AssemblyManager.ReadAlignedCodereliable when complete instructions end at a readable page boundary followed byPAGE_NOACCESS; use bounded partial-read decoding without changingCodeLength. - Reject stale process identities (PID plus process start time) before remote memory allocation/free, page protection, Hook installation, and module load/unload. Align static and session-Manager paths; add deterministic external-process regression coverage.
- Make the failed
HookHandle.Removeexternal-process trampoline regression deterministic by setting the still-allocated trampoline page toPAGE_NOACCESS, rather than relying on a freed address staying unreadable.
Compatibility and limitations
- Compatible 2.4.x maintenance only: unchanged Public API, native libmem revision, Windows x64/x86 / .NET 8 targets, multi-architecture NuGet layout, and existing Hook/VMT/Injector APIs.
- Process-identity preflights reduce stale-PID risk but do not make native PID-only calls atomic: target exit or PID reuse between validation and the native call remains possible. No handle-bound native redesign is included.
- No ARM64, AnyCPU, cross-bitness or game-specific features are added.
Platform and compatibility
- OS / architectures: Windows x64 and Windows x86
- Managed runtime: .NET 8
- Native backend: pinned rdbo/libmem revision
- AnyCPU: not supported; consumers must select x64 or x86 explicitly
Downloads
- Libmem.NET-windows-x64.zip — runtime package for Windows x64
- Libmem.NET-windows-x64.zip.sha256 — SHA-256 checksum for the x64 archive
- Libmem.NET-windows-x86.zip — runtime package for Windows x86
- Libmem.NET-windows-x86.zip.sha256 — SHA-256 checksum for the x86 archive
- Libmem.NET.2.4.1.nupkg — one PackageReference package carrying both architectures; nuget.org publication is a separate step
x64 package contents
CHANGELOG.mdIjwhost.dllLICENSELibmem.NET.dllLibmem.NET.pdbLibmem.NET.xmlMIGRATION.mdTHIRD_PARTY_NOTICES.mdVERSIONlibmem.dllmanifest.json
x86 package contents
CHANGELOG.mdIjwhost.dllLICENSELibmem.NET.dllLibmem.NET.pdbLibmem.NET.xmlMIGRATION.mdTHIRD_PARTY_NOTICES.mdVERSIONlibmem.dllmanifest.json
Integrity and provenance
- x64 archive SHA-256:
847d696319c783f56b713d40b7ac41ffa3d5a930a265f7ec542eaca91c8a990e - x86 archive SHA-256:
f1c65e651d3271ed6fc6ca086f748f17a57a5b8561363b66535f8bfdee13ff05 - Repository commit:
036556f6a508edee9401fe02fe0a8f7cdca39083 - Pinned libmem commit:
a07c9942bf1358dabcc83eb0cd072736c749d7f8 - Both runtime manifests record each packaged file's size and SHA-256.
- Release publication verifies both package versions, repository commit, platform, configuration, archive contents, and checksums before upload.
Documentation
Libmem.NET remains a general-purpose libmem wrapper. Application snapshots, caches, game state, IPC, and other product-specific models belong in consuming projects.
Libmem.NET v2.4.0
Libmem.NET v2.4.0 is a Windows x64/x86 / .NET 8 official release of the reusable C++/CLI wrapper around the pinned rdbo/libmem native library.
Release highlights
Added
- Add read-only
AssemblyManager.ReadAlignedCodeto inspect complete target instructions with explicit short-read protection. - Add
SymbolManager.TryFindAddressfor ordinary not-found results while preservingFindAddress's existing native sentinel contract. - Exercise both features in self-process and external-process runtime tests.
- Add 2.4 API argument/identity regression coverage and independent NuGet consumer API checks.
- Demonstrate native symbol discovery and read-only instruction inspection in C# consumer samples.
Compatibility
- No native ABI upgrades or 2.x breaking changes; x64/x86 remain the only supported targets.
Platform and compatibility
- OS / architectures: Windows x64 and Windows x86
- Managed runtime: .NET 8
- Native backend: pinned rdbo/libmem revision
- AnyCPU: not supported; consumers must select x64 or x86 explicitly
Downloads
- Libmem.NET-windows-x64.zip — runtime package for Windows x64
- Libmem.NET-windows-x64.zip.sha256 — SHA-256 checksum for the x64 archive
- Libmem.NET-windows-x86.zip — runtime package for Windows x86
- Libmem.NET-windows-x86.zip.sha256 — SHA-256 checksum for the x86 archive
- Libmem.NET.2.4.0.nupkg — one PackageReference package carrying both architectures; nuget.org publication is a separate step
x64 package contents
CHANGELOG.mdIjwhost.dllLICENSELibmem.NET.dllLibmem.NET.pdbLibmem.NET.xmlMIGRATION.mdTHIRD_PARTY_NOTICES.mdVERSIONlibmem.dllmanifest.json
x86 package contents
CHANGELOG.mdIjwhost.dllLICENSELibmem.NET.dllLibmem.NET.pdbLibmem.NET.xmlMIGRATION.mdTHIRD_PARTY_NOTICES.mdVERSIONlibmem.dllmanifest.json
Integrity and provenance
- x64 archive SHA-256:
40c8200010302c4ffc0cf3b227f1e531bd2258d71cb4f38a1dcee480a579225d - x86 archive SHA-256:
7436940c8580ade544c0987035fc0a0c9365b4766d733c99dbe2f6d69c154eb9 - Repository commit:
e73393d9805862db32c4e58dba1eadd91a191e56 - Pinned libmem commit:
a07c9942bf1358dabcc83eb0cd072736c749d7f8 - Both runtime manifests record each packaged file's size and SHA-256.
- Release publication verifies both package versions, repository commit, platform, configuration, archive contents, and checksums before upload.
Documentation
Libmem.NET remains a general-purpose libmem wrapper. Application snapshots, caches, game state, IPC, and other product-specific models belong in consuming projects.
Libmem.NET v2.3.0
Libmem.NET v2.3.0 is a Windows x64/x86 / .NET 8 official release of the reusable C++/CLI wrapper around the pinned rdbo/libmem native library.
Release highlights
Added
- Extend
MemoryManagerwithReadInt64/WriteInt64and target-bitness-awareReadPointer/WritePointerfor Windows x64/x86 consumers. - Cover new typed memory operations in self-process and external-process runtime tests.
- Add an executable pinned native-API audit: 71 C functions reviewed, 69 direct wrapper references, and two documented managed command-line workarounds.
Compatibility
- Add managed API members without changing existing 2.2.1 signatures, pinned libmem revision, or supported Windows x64/x86 targets. No ARM64 or cross-platform change.
Platform and compatibility
- OS / architectures: Windows x64 and Windows x86
- Managed runtime: .NET 8
- Native backend: pinned rdbo/libmem revision
- AnyCPU: not supported; consumers must select x64 or x86 explicitly
Downloads
- Libmem.NET-windows-x64.zip — runtime package for Windows x64
- Libmem.NET-windows-x64.zip.sha256 — SHA-256 checksum for the x64 archive
- Libmem.NET-windows-x86.zip — runtime package for Windows x86
- Libmem.NET-windows-x86.zip.sha256 — SHA-256 checksum for the x86 archive
- Libmem.NET.2.3.0.nupkg — one PackageReference package carrying both architectures; nuget.org publication is a separate step
x64 package contents
CHANGELOG.mdIjwhost.dllLICENSELibmem.NET.dllLibmem.NET.pdbLibmem.NET.xmlMIGRATION.mdTHIRD_PARTY_NOTICES.mdVERSIONlibmem.dllmanifest.json
x86 package contents
CHANGELOG.mdIjwhost.dllLICENSELibmem.NET.dllLibmem.NET.pdbLibmem.NET.xmlMIGRATION.mdTHIRD_PARTY_NOTICES.mdVERSIONlibmem.dllmanifest.json
Integrity and provenance
- x64 archive SHA-256:
739072f66b1ac48445d4ce4b2678ead54869665bb2dd56401362665fe45f145b - x86 archive SHA-256:
8d1be9577511da23265bde8f1792f32b5f811e79f0bac7b5505d19e320cc7359 - Repository commit:
561bf1dfa82b7df2da4dc649a016c103f3af71ff - Pinned libmem commit:
a07c9942bf1358dabcc83eb0cd072736c749d7f8 - Both runtime manifests record each packaged file's size and SHA-256.
- Release publication verifies both package versions, repository commit, platform, configuration, archive contents, and checksums before upload.
Documentation
Libmem.NET remains a general-purpose libmem wrapper. Application snapshots, caches, game state, IPC, and other product-specific models belong in consuming projects.
Libmem.NET v2.2.1
Libmem.NET v2.2.1 is a Windows x64/x86 / .NET 8 official release of the reusable C++/CLI wrapper around the pinned rdbo/libmem native library.
Release highlights
Fixed
- Prevent duplicate Release workflow runs for the same ref from publishing concurrently; preserve duplicate-package safeguards.
- Enable architecture-selectable x64/x86 manual Hook/VMT and Injector diagnostic workflows.
- Report existing-but-unloadable DLL injection as
LM_LoadModuleExfailure rather than a successful-enumerationLM_EnumModulesExfailure. - Recover the omitted final legal scan candidate for DataScan, PatternScan, and SigScan, including exact-size windows; reject address-width range wrap.
- Reject unsupported explicit NuGet
PlatformTargetvalues (includingAnyCPUandarm64) instead of silently falling back toPlatform.
Compatibility
- Preserve the 2.2.0 Public API, pinned native libmem revision, and Windows x64/x86 package layout.
- ARM64 and AnyCPU remain unsupported; x64/x86 consumers must select a supported architecture.
- This patch release does not add ARM64 or change the supported Public API; publish only after exact-version release validation.
Platform and compatibility
- OS / architectures: Windows x64 and Windows x86
- Managed runtime: .NET 8
- Native backend: pinned rdbo/libmem revision
- AnyCPU: not supported; consumers must select x64 or x86 explicitly
Downloads
- Libmem.NET-windows-x64.zip — runtime package for Windows x64
- Libmem.NET-windows-x64.zip.sha256 — SHA-256 checksum for the x64 archive
- Libmem.NET-windows-x86.zip — runtime package for Windows x86
- Libmem.NET-windows-x86.zip.sha256 — SHA-256 checksum for the x86 archive
- Libmem.NET.2.2.1.nupkg — one PackageReference package carrying both architectures; nuget.org publication is a separate step
x64 package contents
CHANGELOG.mdIjwhost.dllLICENSELibmem.NET.dllLibmem.NET.pdbLibmem.NET.xmlMIGRATION.mdTHIRD_PARTY_NOTICES.mdVERSIONlibmem.dllmanifest.json
x86 package contents
CHANGELOG.mdIjwhost.dllLICENSELibmem.NET.dllLibmem.NET.pdbLibmem.NET.xmlMIGRATION.mdTHIRD_PARTY_NOTICES.mdVERSIONlibmem.dllmanifest.json
Integrity and provenance
- x64 archive SHA-256:
91e68be67390dea91b7a833dd9f57db0069a594b920bce3fdcd9691d813503c5 - x86 archive SHA-256:
5637858b687b7af45ab409da39e2f8262e500da0e7407af955da2d768f446cd5 - Repository commit:
5e2b051a61943d0ac0825b2ac0125ffb29cf1721 - Pinned libmem commit:
a07c9942bf1358dabcc83eb0cd072736c749d7f8 - Both runtime manifests record each packaged file's size and SHA-256.
- Release publication verifies both package versions, repository commit, platform, configuration, archive contents, and checksums before upload.
Documentation
Libmem.NET remains a general-purpose libmem wrapper. Application snapshots, caches, game state, IPC, and other product-specific models belong in consuming projects.
Libmem.NET v2.2.0
Libmem.NET v2.2.0 is a Windows x64/x86 / .NET 8 official release of the reusable C++/CLI wrapper around the pinned rdbo/libmem native library.
Release highlights
Platform support
- Promote Windows x86 to a first-class supported release architecture alongside Windows x64 on .NET 8.
- Add required x86 CI coverage for smoke, Hook/VMT, Injector, runtime packaging, and architecture-aware external-process tests.
- Make the external-process TestTarget architecture-aware with isolated x64/x86 machine-code fixtures and an explicit extension seam for future ARM64 work.
- Package x64 and x86 C++/CLI assemblies plus matching native runtimes in one NuGet package, selecting assets from explicit
Platform/PlatformTargetand rejecting AnyCPU. - Extend formal Release output to include x64 and x86 runtime ZIPs/checksums plus one verified multi-architecture NuGet package.
Compatibility
- Preserve the 2.1.1 Public API and pinned rdbo/libmem revision; 2.2.0 does not intentionally introduce managed API breaking changes.
- Require consumers to select x64 or x86 explicitly. AnyCPU and cross-bitness operation remain unsupported.
- Keep ARM64 outside the 2.2.0 production support scope while preserving architecture-neutral shared packaging/test structure for later enablement.
Platform and compatibility
- OS / architectures: Windows x64 and Windows x86
- Managed runtime: .NET 8
- Native backend: pinned rdbo/libmem revision
- AnyCPU: not supported; consumers must select x64 or x86 explicitly
Downloads
- Libmem.NET-windows-x64.zip — runtime package for Windows x64
- Libmem.NET-windows-x64.zip.sha256 — SHA-256 checksum for the x64 archive
- Libmem.NET-windows-x86.zip — runtime package for Windows x86
- Libmem.NET-windows-x86.zip.sha256 — SHA-256 checksum for the x86 archive
- Libmem.NET.2.2.0.nupkg — one PackageReference package carrying both architectures; nuget.org publication is a separate step
x64 package contents
CHANGELOG.mdIjwhost.dllLICENSELibmem.NET.dllLibmem.NET.pdbLibmem.NET.xmlMIGRATION.mdTHIRD_PARTY_NOTICES.mdVERSIONlibmem.dllmanifest.json
x86 package contents
CHANGELOG.mdIjwhost.dllLICENSELibmem.NET.dllLibmem.NET.pdbLibmem.NET.xmlMIGRATION.mdTHIRD_PARTY_NOTICES.mdVERSIONlibmem.dllmanifest.json
Integrity and provenance
- x64 archive SHA-256:
57615efad451832584c510e83ff60656c8e6d81a241bd1d8d288d56e6f19eff3 - x86 archive SHA-256:
dbf07c4047f61505e95ca45f5a3cc0e93802bda933ac6713269c49220fa9e94e - Repository commit:
fefc0819d6b1c62a00f469ad64f98c64c4accc0f - Pinned libmem commit:
a07c9942bf1358dabcc83eb0cd072736c749d7f8 - Both runtime manifests record each packaged file's size and SHA-256.
- Release publication verifies both package versions, repository commit, platform, configuration, archive contents, and checksums before upload.
Documentation
Libmem.NET remains a general-purpose libmem wrapper. Application snapshots, caches, game state, IPC, and other product-specific models belong in consuming projects.
Libmem.NET v2.1.1
Libmem.NET v2.1.1 is a Windows x64 / .NET 8 official release of the reusable C++/CLI wrapper around the pinned rdbo/libmem native library.
Release highlights
Fixed
- Reject the libmem bad-address sentinel in
VmtManagerconstruction before native VMT state is retained, matching the managed Hook/VMT argument contract and preventing an invalid VTable base from being accepted. - Add regression coverage for the invalid VTable sentinel and source-contract checks that keep the guard in place.
- Lock the post-disposal VMT contract with runtime/source checks for
Hook,Unhook,GetOriginal, andReset, including disposed-state precedence over replacement-address validation. - Work around the pinned
LM_VmtUnhookuntracked-index protection leak: idempotentVmtManager.Unhooknow skips the native call when no hook entry exists, preserving the VTable page's original protection, with runtime regression coverage. - Record and close the post-release delivery gap: an initial nuget.org-only restore exposed only 2.0.0, then 2.1.0 was published and adopted as the public-NuGet smoke baseline.
- Refresh post-release README, roadmap, consumption, release-status, and package metadata; advance the automatic public-NuGet smoke baseline to 2.1.0 before the 2.1.1 publication.
Compatibility
- Preserve the 2.1.0 Public API and pinned rdbo/libmem revision.
- Keep Windows x64 / .NET 8 as the official support and release target.
Platform and compatibility
- OS / architecture: Windows x64
- Managed runtime: .NET 8
- Native backend: pinned rdbo/libmem revision
- x86: retained only as deferred/best-effort source compatibility; no x86 asset is published by this release
Downloads
- Libmem.NET-windows-x64.zip — runtime package for Windows x64
- Libmem.NET-windows-x64.zip.sha256 — SHA-256 checksum for the runtime archive
- Libmem.NET.2.1.1.nupkg — exact-version package for a local NuGet feed; nuget.org publication is a separate step
Package contents
CHANGELOG.mdIjwhost.dllLICENSELibmem.NET.dllLibmem.NET.pdbLibmem.NET.xmlMIGRATION.mdTHIRD_PARTY_NOTICES.mdVERSIONlibmem.dllmanifest.json
Integrity and provenance
- Archive SHA-256:
54ac1076da14de7f3260696bb7a7ac2cee9ce57b07b6046d3bc6db9cdfbe4bee - Repository commit:
6a03b9c8bd27950492416f23e70bae3da6fd052a - Pinned libmem commit:
a07c9942bf1358dabcc83eb0cd072736c749d7f8 - The runtime manifest records each packaged file's size and SHA-256.
- Release publication verifies the package version, repository commit, platform, configuration, archive contents, and checksum before upload.
Documentation
Libmem.NET remains a general-purpose libmem wrapper. Application snapshots, caches, game state, IPC, and other product-specific models belong in consuming projects.
Libmem.NET v2.1.0
Libmem.NET v2.1.0 is a Windows x64 / .NET 8 official release of the reusable C++/CLI wrapper around the pinned rdbo/libmem native library.
Release highlights
Hook / VMT hardening
- Preserve the Libmem.NET 2.0.0 Public API baseline while tightening managed Hook/VMT argument, state, ownership, and failure contracts.
- Add real external-process Hook lifecycle coverage for installation, redirection, trampoline execution, explicit removal, target exit, and ownership convergence.
- Validate
HookHandle.PatchedBytesagainst x64 instruction boundaries using a generated 10-byte + 5-byte instruction sequence. - Verify failed
HookManager.Installis atomic: it throwsLibmemException("LM_HookCodeEx"), exposes no handle, and leaves source bytes/behavior unchanged. - Harden remote
HookHandle.Removeby preflighting the full trampoline read before the pinnedLM_UnhookCodeExpath; failed removal preserves source protection and ownership for retry. - Add VMT restore-failure retry coverage so failed
Reset/Disposekeeps bookkeeping until restoration can succeed. - Expand Hook/VMT XML IntelliSense and API documentation, and add a buildable x64 Hook lifecycle consumer sample with CI execution.
- Document that duplicate/overlapping code-hook coordination and relative-control-flow trampoline safety remain caller/pinned-libmem responsibilities; 2.1.0 does not add a managed conflict registry or relocation engine.
- Keep Mono/Unity/game-specific patch systems and official x86 release support outside the 2.1.0 scope.
Platform and compatibility
- OS / architecture: Windows x64
- Managed runtime: .NET 8
- Native backend: pinned rdbo/libmem revision
- x86: retained only as deferred/best-effort source compatibility; no x86 asset is published by this release
Downloads
- Libmem.NET-windows-x64.zip — runtime package for Windows x64
- Libmem.NET-windows-x64.zip.sha256 — SHA-256 checksum for the runtime archive
- Libmem.NET.2.1.0.nupkg — exact-version package for a local NuGet feed; nuget.org publication is a separate step
Package contents
CHANGELOG.mdIjwhost.dllLICENSELibmem.NET.dllLibmem.NET.pdbLibmem.NET.xmlMIGRATION.mdTHIRD_PARTY_NOTICES.mdVERSIONlibmem.dllmanifest.json
Integrity and provenance
- Archive SHA-256:
879a4adcb433de3e6872501766a060b87cdcd3a6c6770419cfabd8a462cc7333 - Repository commit:
f38eb2810b9b7823ba0fd921372e506bdae07ceb - Pinned libmem commit:
a07c9942bf1358dabcc83eb0cd072736c749d7f8 - The runtime manifest records each packaged file's size and SHA-256.
- Release publication verifies the package version, repository commit, platform, configuration, archive contents, and checksum before upload.
Documentation
Libmem.NET remains a general-purpose libmem wrapper. Application snapshots, caches, game state, IPC, and other product-specific models belong in consuming projects.
Libmem.NET v2.0.0
Libmem.NET v2.0.0 is a Windows x64 / .NET 8 official release of the reusable C++/CLI wrapper around the pinned rdbo/libmem native library.
Release highlights
Stable release
- Promote the validated
2.0.0-preview.1line to the first stable release under theLibmem.NETidentity. - Preserve the public API baseline, native ABI mapping, ownership model, exception behavior, runtime layout, and pinned rdbo/libmem revision from the validated preview.
- Keep the official support target at Windows x64 / .NET 8; x86 remains outside the supported Release and NuGet scope.
Documentation / Packaging
- Add a NuGet-specific bilingual package README with English as the primary language and a complete Simplified Chinese translation.
- Update NuGet package description and bilingual English/Chinese release notes for
2.0.0. - Verify that the packaged README contains both English and Simplified Chinese sections.
- Retain the split release safety model: release branches dry-run exact artifacts, tags create GitHub downloads, and NuGet publication remains an explicit manual Trusted Publishing step.
Platform and compatibility
- OS / architecture: Windows x64
- Managed runtime: .NET 8
- Native backend: pinned rdbo/libmem revision
- x86: retained only as deferred/best-effort source compatibility; no x86 asset is published by this release
Downloads
- Libmem.NET-windows-x64.zip — runtime package for Windows x64
- Libmem.NET-windows-x64.zip.sha256 — SHA-256 checksum for the runtime archive
- Libmem.NET.2.0.0.nupkg — exact-version package for a local NuGet feed; nuget.org publication is a separate step
Package contents
CHANGELOG.mdIjwhost.dllLICENSELibmem.NET.dllLibmem.NET.pdbLibmem.NET.xmlMIGRATION.mdTHIRD_PARTY_NOTICES.mdVERSIONlibmem.dllmanifest.json
Integrity and provenance
- Archive SHA-256:
3259515a6bdc14db203f01b13d8c388ed611464c2334f8487272b26cd8aed30f - Repository commit:
792ddb206157a3f516785d14774d4c1eb3957c94 - Pinned libmem commit:
a07c9942bf1358dabcc83eb0cd072736c749d7f8 - The runtime manifest records each packaged file's size and SHA-256.
- Release publication verifies the package version, repository commit, platform, configuration, archive contents, and checksum before upload.
Documentation
Libmem.NET remains a general-purpose libmem wrapper. Application snapshots, caches, game state, IPC, and other product-specific models belong in consuming projects.
Libmem.NET v2.0.0-preview.1
Libmem.NET v2.0.0-preview.1 is a Windows x64 / .NET 8 preview release of the reusable C++/CLI wrapper around the pinned rdbo/libmem native library.
Release highlights
Breaking identity migration
- Unified the managed namespace, assembly, solution/project names, test projects and runtime assets as
Libmem.NET; the NuGet PackageId remainsLibmem.NET. - Existing
LibmemCliconsumers must update references, namespaces, paths and reflection strings, then recompile. Seedocs/MIGRATION.md. - Preserved public member signatures, native ABI mapping, ownership, exception behavior and the pinned native dependency. Static facade calls use an explicit type alias to avoid the new root namespace collision.
- Corrected runtime manifest provenance to
CardResearchLab/Libmem.NET. - Consolidated automatic PR validation into Build, including Release x64 by default, optional manual Debug, all runtime suites and local NuGet restore/run/publish. Specialized workflows retain manual entry points.
Release preparation
- Bumped the major version because the already released
LibmemCliv1.0.0 namespace and assembly identity are not binary compatible withLibmem.NET. Consumers must rebuild; renaming a DLL is insufficient. - Set
VERSIONand informational version to2.0.0-preview.1; numeric assembly/file versions are2.0.0.0. - Enabled prerelease version validation for runtime manifests, NuGet packaging and formal Release Notes; GitHub Release publication marks preview tags as prereleases.
- Included the changelog and migration guide in runtime ZIP and NuGet packages. Build artifacts include an exact-version
Libmem.NET.2.0.0-preview.1.nupkgfor local-feed acceptance. - Separated GitHub downloads from nuget.org publication. NuGet Trusted Publishing is explicitly invoked after the GitHub release and account setup are ready.
- Updated assembly company metadata to
CardResearchLaband NuGet author attribution toxiaohei7972. Updated repository URLs, reusable workflow references, manifest provenance, and publishing setup for the renamed organization.
This section prepares the preview; it does not claim that a release tag, downloadable release or nuget.org package has already been published. The existing v1.0.0 tag and assets remain unchanged.
CI and documentation follow-up
- Default automatic Build validation to Release x64; retain every Release runtime, example, consumer and package check. Manual
workflow_dispatchcan additionally enable Debug x64 build and smoke tests throughdebug. - Restrict GitHub Release creation to tags and NuGet OIDC login/push to an explicit manual run on an existing published tag.
release/v*branches validate artifacts and render notes without publishing or deleting branches. - Consolidate the unfinished documentation from #70 and release readiness work from #75: concise bilingual README, release/versioning guide, historical v1.0.0 notes and a checklist for the next release. Keep historical LibmemCli assets distinct from the current Libmem.NET identity.
Platform and compatibility
- OS / architecture: Windows x64
- Managed runtime: .NET 8
- Native backend: pinned rdbo/libmem revision
- x86: retained only as deferred/best-effort source compatibility; no x86 asset is published by this release
Downloads
- Libmem.NET-windows-x64.zip — runtime package for Windows x64
- Libmem.NET-windows-x64.zip.sha256 — SHA-256 checksum for the runtime archive
- Libmem.NET.2.0.0-preview.1.nupkg — exact-version package for a local NuGet feed; nuget.org publication is a separate step
Package contents
CHANGELOG.mdIjwhost.dllLICENSELibmem.NET.dllLibmem.NET.pdbLibmem.NET.xmlMIGRATION.mdTHIRD_PARTY_NOTICES.mdVERSIONlibmem.dllmanifest.json
Integrity and provenance
- Archive SHA-256:
89e1b7f6d4159b1bc7a179abf2ca5311d1af1bcf057ac031719f094c7a6d9c2e - Repository commit:
d7af803601ffae735ae5794b89a5864d8cdcb4f5 - Pinned libmem commit:
a07c9942bf1358dabcc83eb0cd072736c749d7f8 - The runtime manifest records each packaged file's size and SHA-256.
- Release publication verifies the package version, repository commit, platform, configuration, archive contents, and checksum before upload.
Documentation
Libmem.NET remains a general-purpose libmem wrapper. Application snapshots, caches, game state, IPC, and other product-specific models belong in consuming projects.