Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/website-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ jobs:
-DBLAZE_DOCUMENTATION:BOOL=OFF
-DBLAZE_EDITOR:BOOL=OFF
-DBLAZE_FOUNDATION:BOOL=OFF
-DBLAZE_FRAME:BOOL=OFF
-DBLAZE_BUNDLE:BOOL=OFF
-DBLAZE_FORMAT:BOOL=OFF
-DBLAZE_TESTS:BOOL=OFF
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/website-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ jobs:
-DBLAZE_DOCUMENTATION:BOOL=OFF
-DBLAZE_EDITOR:BOOL=OFF
-DBLAZE_FOUNDATION:BOOL=OFF
-DBLAZE_FRAME:BOOL=OFF
-DBLAZE_BUNDLE:BOOL=OFF
-DBLAZE_FORMAT:BOOL=OFF
-DBLAZE_TESTS:BOOL=OFF
Expand Down
9 changes: 9 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ option(BLAZE_CODEGEN "Build the Blaze codegen library" ON)
option(BLAZE_DOCUMENTATION "Build the Blaze documentation generator library" ON)
option(BLAZE_EDITOR "Build the Blaze editor schema compatibility library" ON)
option(BLAZE_FOUNDATION "Build the Blaze foundation JSON Schema library" ON)
option(BLAZE_FRAME "Build the Blaze frame library" ON)
option(BLAZE_BUNDLE "Build the Blaze bundle library" ON)
option(BLAZE_FORMAT "Build the Blaze format library" ON)
option(BLAZE_TESTS "Build the Blaze tests" OFF)
Expand Down Expand Up @@ -53,6 +54,10 @@ if(BLAZE_FOUNDATION)
add_subdirectory(src/foundation)
endif()

if(BLAZE_FRAME)
Copy link
Copy Markdown

@augmentcode augmentcode Bot May 21, 2026

Choose a reason for hiding this comment

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

BLAZE_FRAME is currently independently toggleable, but several other components now unconditionally link against sourcemeta::blaze::frame; if BLAZE_FRAME=OFF while (e.g.) BLAZE_COMPILER/BLAZE_BUNDLE are ON, configuration or linking will fail because the frame target isn’t defined.

Severity: high

Other Locations
  • src/bundle/CMakeLists.txt:16
  • src/compiler/CMakeLists.txt:30
  • src/output/CMakeLists.txt:20
  • src/alterschema/CMakeLists.txt:173

Fix This in Augment

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

add_subdirectory(src/frame)
endif()

if(BLAZE_BUNDLE)
add_subdirectory(src/bundle)
endif()
Expand Down Expand Up @@ -147,6 +152,10 @@ if(BLAZE_TESTS)
add_subdirectory(test/foundation)
endif()

if(BLAZE_FRAME)
add_subdirectory(test/frame)
endif()

if(BLAZE_BUNDLE)
add_subdirectory(test/bundle)
endif()
Expand Down
8 changes: 8 additions & 0 deletions benchmark/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ if(BLAZE_FOUNDATION)
list(APPEND BENCHMARK_SOURCES foundation.cc)
endif()

if(BLAZE_FRAME)
list(APPEND BENCHMARK_SOURCES frame.cc)
endif()

if(BLAZE_BUNDLE)
list(APPEND BENCHMARK_SOURCES bundle.cc)
endif()
Expand Down Expand Up @@ -61,6 +65,10 @@ if(BENCHMARK_SOURCES)
target_link_libraries(sourcemeta_blaze_benchmark
PRIVATE sourcemeta::blaze::foundation)
endif()
if(BLAZE_FRAME)
target_link_libraries(sourcemeta_blaze_benchmark
PRIVATE sourcemeta::blaze::frame)
endif()
if(BLAZE_BUNDLE)
target_link_libraries(sourcemeta_blaze_benchmark
PRIVATE sourcemeta::blaze::bundle)
Expand Down
153 changes: 2 additions & 151 deletions benchmark/foundation.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,118 +2,12 @@

#include <cassert> // assert
#include <filesystem> // std::filesystem
#include <vector> // std::vector
#include <functional> // std::ref

#include <sourcemeta/blaze/foundation.h>

#include <sourcemeta/core/json.h>
#include <sourcemeta/core/uri.h>

static void Schema_Frame_WoT_References(benchmark::State &state) {
const auto schema{
sourcemeta::core::read_json(std::filesystem::path{CURRENT_DIRECTORY} /
"files" / "draft7_w3c_wot_td_v1_1.json")};

for (auto _ : state) {
sourcemeta::blaze::SchemaFrame frame{
sourcemeta::blaze::SchemaFrame::Mode::References};
frame.analyse(schema, sourcemeta::blaze::schema_walker,
sourcemeta::blaze::schema_resolver);
benchmark::DoNotOptimize(frame);
}
}

static void Schema_Frame_OMC_References(benchmark::State &state) {
const auto schema{
sourcemeta::core::read_json(std::filesystem::path{CURRENT_DIRECTORY} /
"files" / "2019_09_omc_json_v2.json")};

for (auto _ : state) {
sourcemeta::blaze::SchemaFrame frame{
sourcemeta::blaze::SchemaFrame::Mode::References};
frame.analyse(schema, sourcemeta::blaze::schema_walker,
sourcemeta::blaze::schema_resolver);
benchmark::DoNotOptimize(frame);
}
}

static void Schema_Frame_OMC_Locations(benchmark::State &state) {
const auto schema{
sourcemeta::core::read_json(std::filesystem::path{CURRENT_DIRECTORY} /
"files" / "2019_09_omc_json_v2.json")};

for (auto _ : state) {
sourcemeta::blaze::SchemaFrame frame{
sourcemeta::blaze::SchemaFrame::Mode::Locations};
frame.analyse(schema, sourcemeta::blaze::schema_walker,
sourcemeta::blaze::schema_resolver);
benchmark::DoNotOptimize(frame);
}
}

static void Schema_Frame_ISO_Language_Locations(benchmark::State &state) {
const auto schema{sourcemeta::core::read_json(
std::filesystem::path{CURRENT_DIRECTORY} / "files" /
"2020_12_iso_language_2023_set_3.json")};

for (auto _ : state) {
sourcemeta::blaze::SchemaFrame frame{
sourcemeta::blaze::SchemaFrame::Mode::Locations};
frame.analyse(schema, sourcemeta::blaze::schema_walker,
sourcemeta::blaze::schema_resolver);
benchmark::DoNotOptimize(frame);
}
}

static void Schema_Frame_KrakenD_References(benchmark::State &state) {
const auto schema{
sourcemeta::core::read_json(std::filesystem::path{CURRENT_DIRECTORY} /
"files" / "2019_09_krakend.json")};

for (auto _ : state) {
sourcemeta::blaze::SchemaFrame frame{
sourcemeta::blaze::SchemaFrame::Mode::References};
frame.analyse(schema, sourcemeta::blaze::schema_walker,
sourcemeta::blaze::schema_resolver);
benchmark::DoNotOptimize(frame);
}
}

static void Schema_Frame_KrakenD_Reachable(benchmark::State &state) {
const auto schema{
sourcemeta::core::read_json(std::filesystem::path{CURRENT_DIRECTORY} /
"files" / "2019_09_krakend.json")};

sourcemeta::blaze::SchemaFrame frame{
sourcemeta::blaze::SchemaFrame::Mode::References};

for (auto _ : state) {
state.PauseTiming();
frame.reset();
frame.analyse(schema, sourcemeta::blaze::schema_walker,
sourcemeta::blaze::schema_resolver);
state.ResumeTiming();

for (const auto &entry : frame.locations()) {
if (entry.second.type ==
sourcemeta::blaze::SchemaFrame::LocationType::Pointer) {
continue;
}

for (const auto &subentry : frame.locations()) {
if (subentry.second.type ==
sourcemeta::blaze::SchemaFrame::LocationType::Resource ||
subentry.second.type ==
sourcemeta::blaze::SchemaFrame::LocationType::Subschema) {
auto result{frame.is_reachable(subentry.second, entry.second,
sourcemeta::blaze::schema_walker,
sourcemeta::blaze::schema_resolver)};
benchmark::DoNotOptimize(result);
}
}
}
}
}
#include <sourcemeta/core/jsonpointer.h>

static void Schema_Iterator_ISO_Language(benchmark::State &state) {
const auto schema{sourcemeta::core::read_json(
Expand All @@ -130,27 +24,6 @@ static void Schema_Iterator_ISO_Language(benchmark::State &state) {
}
}

static void
Schema_Frame_ISO_Language_Locations_To_JSON(benchmark::State &state) {
sourcemeta::core::PointerPositionTracker tracker;
sourcemeta::core::JSON schema{nullptr};
sourcemeta::core::read_json(std::filesystem::path{CURRENT_DIRECTORY} /
"files" /
"2020_12_iso_language_2023_set_3.json",
schema, std::ref(tracker));

sourcemeta::blaze::SchemaFrame frame{
sourcemeta::blaze::SchemaFrame::Mode::Locations};
frame.analyse(schema, sourcemeta::blaze::schema_walker,
sourcemeta::blaze::schema_resolver);

for (auto _ : state) {
auto result{frame.to_json(tracker)};
assert(result.is_object());
benchmark::DoNotOptimize(result);
}
}

static void Schema_Tracker_ISO_Language(benchmark::State &state) {
for (auto _ : state) {
sourcemeta::core::PointerPositionTracker tracker;
Expand Down Expand Up @@ -179,28 +52,6 @@ static void Schema_Tracker_ISO_Language_To_JSON(benchmark::State &state) {
}
}

static void Schema_Frame_Many_Resources_References(benchmark::State &state) {
const auto schema{
sourcemeta::core::read_json(std::filesystem::path{CURRENT_DIRECTORY} /
"files" / "2020_12_many_resources.json")};

for (auto _ : state) {
sourcemeta::blaze::SchemaFrame frame{
sourcemeta::blaze::SchemaFrame::Mode::References};
frame.analyse(schema, sourcemeta::blaze::schema_walker,
sourcemeta::blaze::schema_resolver);
benchmark::DoNotOptimize(frame);
}
}

BENCHMARK(Schema_Frame_WoT_References);
BENCHMARK(Schema_Frame_OMC_References);
BENCHMARK(Schema_Frame_OMC_Locations);
BENCHMARK(Schema_Frame_ISO_Language_Locations);
BENCHMARK(Schema_Frame_KrakenD_References);
BENCHMARK(Schema_Frame_KrakenD_Reachable);
BENCHMARK(Schema_Iterator_ISO_Language);
BENCHMARK(Schema_Frame_ISO_Language_Locations_To_JSON);
BENCHMARK(Schema_Tracker_ISO_Language);
BENCHMARK(Schema_Tracker_ISO_Language_To_JSON);
BENCHMARK(Schema_Frame_Many_Resources_References);
Loading
Loading