Skip to content

fix: bump CommonLibF4 to fix C++23 aligned_storage deprecation#37

Merged
alandtse merged 2 commits into
masterfrom
fix/commonlibf4-aligned-storage
Jun 2, 2026
Merged

fix: bump CommonLibF4 to fix C++23 aligned_storage deprecation#37
alandtse merged 2 commits into
masterfrom
fix/commonlibf4-aligned-storage

Conversation

@alandtse

@alandtse alandtse commented Jun 2, 2026

Copy link
Copy Markdown
Owner

Problem

The 1.38.0 Semantic Release run failed at the Build Release step, so the Upload to Nexus Mods step never ran (it's gated on a successful build).

Root cause: GitHub's runner image updated MSVC's STL, which now emits C4996 / STL4034 for the deprecated std::aligned_storage_t used in CommonLibF4's RE/msvc/functional.h. Buffout4 sets /WX globally in CMakePresets.json, promoting it to a hard error:

RE\msvc\functional.h(42,8): error C2220: the following warning is treated as an error
warning C4996: 'std::aligned_storage_t': warning STL4034: ... deprecated in C++23.

This is not related to the Nexus workflow migration (#36) — that step is fine; the build simply never got there.

Fix

Bump the CommonLibF4 submodule to include alandtse/CommonLibF4#43, which replaces std::aligned_storage_t<3 * sizeof(void*), alignof(long double)> with the MSVC-recommended alignas(long double) std::byte _storage[3 * sizeof(void*)]. Layout is byte-identical (24 bytes, align 8, _fn at 0x18), so the ABI mirror of std::_Func_class is unchanged. No Buffout4 source changes required.

Verification

Bonus: ESL support

The bumped CommonLibF4 carries the ESL-aware FormID handling (smallFileCompileIndex / 0xFE light-plugin decoding). Buffout4 already calls these APIs (e.g. the [FE:xxx] plugin lines in crash logs), so this release ships correct ESL attribution with no further changes.

🤖 Generated with Claude Code

The 1.38.0 release build failed: the updated MSVC STL on GitHub's runners
emits C4996/STL4034 for the deprecated std::aligned_storage_t in CommonLibF4's
RE/msvc/functional.h, which Buffout4's global /WX promotes to an error. This
blocked the build and, in turn, the Nexus upload.

Bump the submodule to include alandtse/CommonLibF4#43, which replaces the
deprecated type with the recommended alignas(T) std::byte buffer (identical
layout). No Buffout4 source changes are required; the bump also brings in the
already-present ESL FormID handling for crash logs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 2, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@alandtse, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 31 minutes and 35 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a9cfb482-0917-4e7c-b989-6281f5a0de94

📥 Commits

Reviewing files that changed from the base of the PR and between 826a66d and 1104583.

📒 Files selected for processing (2)
  • .github/workflows/pr-test.yml
  • external/CommonLibF4
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/commonlibf4-aligned-storage

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

The path filter watched `extern/**`, but the CommonLibF4 submodule lives at
`external/CommonLibF4` (see .gitmodules `path =`). As a result, submodule
bumps never triggered the build test — including the bump in this PR. Point
the filter at `external/**` so dependency updates are actually built.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@alandtse
alandtse merged commit 4d1ca4d into master Jun 2, 2026
5 checks passed
@alandtse
alandtse deleted the fix/commonlibf4-aligned-storage branch June 2, 2026 06:26
github-actions Bot pushed a commit that referenced this pull request Jun 2, 2026
## [1.38.1](v1.38.0...v1.38.1) (2026-06-02)

### Bug Fixes

* bump CommonLibF4 to fix C++23 aligned_storage deprecation ([#37](#37)) ([4d1ca4d](4d1ca4d))
@github-actions

github-actions Bot commented Jun 2, 2026

Copy link
Copy Markdown

🎉 This PR is included in version 1.38.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant