Skip to content

Upgrade Core to 57e8c91ed68e3ee903526fd2f45cb16ca46759d8#909

Merged
jviotti merged 1 commit intomainfrom
core-static
Mar 31, 2026
Merged

Upgrade Core to 57e8c91ed68e3ee903526fd2f45cb16ca46759d8#909
jviotti merged 1 commit intomainfrom
core-static

Conversation

@jviotti
Copy link
Copy Markdown
Member

@jviotti jviotti commented Mar 31, 2026

Signed-off-by: Juan Cruz Viotti jv@jviotti.com

Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 64 files

Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
@augmentcode
Copy link
Copy Markdown

augmentcode bot commented Mar 31, 2026

🤖 Augment PR Summary

Summary: Upgrades vendored Sourcemeta Core to 57e8c91 and syncs downstream build/config changes.
Key changes:

  • Adds new Core ip component (IPv4/IPv6 validation) and wires it into URI utilities.
  • Bumps Core default C++ standard to C++23 and adopts newer stdlib features (std::ranges, std::to_chars/from_chars, std::unreachable).
  • Adds std::formatter specializations for Core JSON and vocabularies to enable std::format.
  • Improves JSON parsing/stringifying and schema analysis using ranges algorithms and explicit branch prediction.
  • Extends JSON Schema support with $vocabulary parsing and new alterschema lints (forbid_empty_enum, invalid_external_ref).
  • Enhances URI parsing/recomposition with IP-literal tracking and avoids exception-based numeric conversions.
  • Extends URI Template router with per-route argument storage and v2 binary serialization support.
Notes: Core URI now depends on the new IP library, and serialized router files written by this version use a new format version.

🤖 Was this summary useful? React with 👍 or 👎

Copy link
Copy Markdown

@augmentcode augmentcode bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. 3 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

endif()

target_link_libraries(sourcemeta_core_uri
PRIVATE sourcemeta::core::ip)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vendor/core/src/core/uri/CMakeLists.txt:11 — Linking sourcemeta_core_uri to sourcemeta::core::ip as PRIVATE can break consumers when core::uri is built as a static library (the dependency won’t propagate, leading to unresolved symbols at final link). Consider making this dependency part of the public link interface if uri’s object code calls into ip.

Severity: high

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

auto add(const std::string_view uri_template, const Identifier identifier)
-> void;
auto add(const std::string_view uri_template, const Identifier identifier,
const std::span<const Argument> arguments = {}) -> void;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vendor/core/src/core/uritemplate/include/sourcemeta/core/uritemplate_router.h:80Argument uses std::string_view and add() persists the passed arguments, so passing temporary strings (argument names or string values) can leave dangling views and cause UB later. The lifetime note currently only mentions uri_template, so callers may not realize the same constraint applies to arguments.

Severity: medium

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

elseif(component STREQUAL "ip")
include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_core_ip.cmake")
elseif(component STREQUAL "uri")
include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_core_ip.cmake")
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vendor/core/config.cmake.in:66sourcemeta_core_ip.cmake is included both for the ip component and again as a dependency of uri, so the default component list will attempt to include it twice. If the generated sourcemeta_core_ip.cmake isn’t idempotent (e.g., guarded with if(NOT TARGET ...) / include_guard()), this can break find_package(core) for default installs.

Severity: medium

Other Locations
  • vendor/core/config.cmake.in:64

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

@jviotti jviotti merged commit 2fe6502 into main Mar 31, 2026
13 checks passed
@jviotti jviotti deleted the core-static branch March 31, 2026 19:51
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.

1 participant