Skip to content

feat(module): add C++20 module support for kcenon.container (#222)#224

Merged
kcenon merged 2 commits into
mainfrom
feature/222-cpp20-modules
Jan 3, 2026
Merged

feat(module): add C++20 module support for kcenon.container (#222)#224
kcenon merged 2 commits into
mainfrom
feature/222-cpp20-modules

Conversation

@kcenon

@kcenon kcenon commented Jan 3, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add C++20 module files for container_system as part of the Tier 1 core libraries
  • Create src/modules/container.cppm with complete module interface
  • Update CMakeLists.txt with CONTAINER_BUILD_MODULES option for module build

Changes

Module Structure

  • Primary module: kcenon.container
  • Dependencies: kcenon.common (Tier 0)
  • File: src/modules/container.cppm

Exported Types

  • value_types enumeration
  • value_variant (SOO storage type)
  • optimized_value structure
  • pool_stats structure
  • value_container class with full API
  • variant_helpers namespace (JSON/XML encoding utilities)

CMake Configuration

  • New option: CONTAINER_BUILD_MODULES (default: OFF)
  • Requires CMake 3.28+ for module scanning
  • Requires Ninja or Visual Studio 2022 17.4+ generator
  • Creates container_system_modules target with kcenon::container_modules alias

Requirements

  • CMake 3.28 or later
  • Ninja generator (or VS 2022 17.4+)
  • Clang 16+, GCC 14+, or MSVC 2022 17.4+
  • kcenon.common module (from common_system)

Test Plan

  • Header-based build continues to work
  • All 85 existing tests pass
  • CMake configuration succeeds with CONTAINER_BUILD_MODULES=OFF
  • CMake configuration succeeds with CONTAINER_BUILD_MODULES=ON (with appropriate generator)
  • Module-based build compiles (requires Ninja + common_system modules)

Related Issues

kcenon added 2 commits January 3, 2026 15:29
- Create src/modules/container.cppm with complete module interface
- Export value_types, value_variant, optimized_value, pool_stats
- Export value_container class with full API
- Add variant_helpers namespace with json_escape, xml_encode utilities
- Import kcenon.common module for Result<T> pattern support
- Update CMakeLists.txt with CONTAINER_BUILD_MODULES option
- Add container_system_modules target with CMake 3.28+ module scanning

Part of issue #222
- Document C++20 module support feature (#222)
- Add module file structure and CMake configuration details
- Note CMake 3.28+ and Ninja generator requirements
- Update both English and Korean changelogs
@github-actions

github-actions Bot commented Jan 3, 2026

Copy link
Copy Markdown
Contributor

Performance Benchmark Report

Summary

  • Total benchmarks: 0
  • Regressions: 0 ✅
  • Improvements: 0
  • Unchanged: 0 (within 10% threshold)

Status: No significant performance regressions detected.

@kcenon kcenon merged commit feaa6a6 into main Jan 3, 2026
26 checks passed
@kcenon kcenon deleted the feature/222-cpp20-modules branch January 3, 2026 07:33
kcenon added a commit that referenced this pull request Apr 13, 2026
)

* feat(module): add C++20 module support for kcenon.container

- Create src/modules/container.cppm with complete module interface
- Export value_types, value_variant, optimized_value, pool_stats
- Export value_container class with full API
- Add variant_helpers namespace with json_escape, xml_encode utilities
- Import kcenon.common module for Result<T> pattern support
- Update CMakeLists.txt with CONTAINER_BUILD_MODULES option
- Add container_system_modules target with CMake 3.28+ module scanning

Part of issue #222

* docs: update changelog for C++20 module support

- Document C++20 module support feature (#222)
- Add module file structure and CMake configuration details
- Note CMake 3.28+ and Ninja generator requirements
- Update both English and Korean changelogs
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.

[MODULE] Create C++20 module files for kcenon.container

1 participant