Skip to content

Commit

Permalink
Get rid of Noa in this project (#1489)
Browse files Browse the repository at this point in the history
Signed-off-by: Juan Cruz Viotti <[email protected]>
  • Loading branch information
jviotti authored Jan 28, 2025
1 parent c3f7d13 commit a03319d
Show file tree
Hide file tree
Showing 198 changed files with 298 additions and 54,459 deletions.
6 changes: 0 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,12 +120,6 @@ jobs:
${{ matrix.platform.options }}
- run: cmake --build ./build --config Release --target clang_format_test
- run: cmake --build ./build --config Release --parallel 4
- run: >
cmake --install ./build --prefix ./build/dist --config Release --verbose
--component sourcemeta_noa
- run: >
cmake --install ./build --prefix ./build/dist --config Release --verbose
--component sourcemeta_noa_dev
- run: >
cmake --install ./build --prefix ./build/dist --config Release --verbose
--component sourcemeta_core
Expand Down
12 changes: 6 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ option(SOURCEMETA_CORE_INSTALL "Install the Sourcemeta Core library" ON)
option(SOURCEMETA_CORE_ADDRESS_SANITIZER "Build Sourcemeta Core with an address sanitizer" OFF)
option(SOURCEMETA_CORE_UNDEFINED_SANITIZER "Build Sourcemeta Core with an undefined behavior sanitizer" OFF)

include(./vendor/noa/cmake/noa.cmake)
include(Sourcemeta)

# TODO: Turn this into a re-usable utility CMake function
if(SOURCEMETA_CORE_INSTALL)
Expand Down Expand Up @@ -74,22 +74,22 @@ if(SOURCEMETA_CORE_EXTENSION_ALTERSCHEMA)
endif()

if(SOURCEMETA_CORE_ADDRESS_SANITIZER)
noa_sanitizer(TYPE address)
sourcemeta_sanitizer(TYPE address)
elseif(SOURCEMETA_CORE_UNDEFINED_SANITIZER)
noa_sanitizer(TYPE undefined)
sourcemeta_sanitizer(TYPE undefined)
endif()

if(SOURCEMETA_CORE_DOCS)
noa_target_doxygen(CONFIG "${PROJECT_SOURCE_DIR}/doxygen/Doxyfile.in"
sourcemeta_target_doxygen(CONFIG "${PROJECT_SOURCE_DIR}/doxygen/Doxyfile.in"
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/website")
endif()

if(PROJECT_IS_TOP_LEVEL)
noa_target_clang_format(SOURCES
sourcemeta_target_clang_format(SOURCES
src/*.h src/*.cc
benchmark/*.h benchmark/*.cc
test/*.h test/*.cc)
noa_target_clang_tidy(SOURCES
sourcemeta_target_clang_tidy(SOURCES
src/*.h src/*.cc)
endif()

Expand Down
1 change: 0 additions & 1 deletion DEPENDENCIES
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
vendorpull https://github.com/sourcemeta/vendorpull 70342aaf458e6cb80baeb5b718901075fc42ede6
noa https://github.com/sourcemeta/noa b2c8e362a5c4c138eb708603a351df2b2d79a1c9
jsontestsuite https://github.com/nst/JSONTestSuite d64aefb55228d9584d3e5b2433f720ea8fd00c82
jsonschema-2020-12 https://github.com/json-schema-org/json-schema-spec 769daad75a9553562333a8937a187741cb708c72
jsonschema-2019-09 https://github.com/json-schema-org/json-schema-spec 41014ea723120ce70b314d72f863c6929d9f3cfd
Expand Down
4 changes: 0 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ configure: .always
compile: .always
$(CMAKE) --build ./build --config $(PRESET) --target clang_format
$(CMAKE) --build ./build --config $(PRESET) --parallel 4
$(CMAKE) --install ./build --prefix ./build/dist --config $(PRESET) --verbose \
--component sourcemeta_noa
$(CMAKE) --install ./build --prefix ./build/dist --config $(PRESET) --verbose \
--component sourcemeta_noa_dev
$(CMAKE) --install ./build --prefix ./build/dist --config $(PRESET) --verbose \
--component sourcemeta_core
$(CMAKE) --install ./build --prefix ./build/dist --config $(PRESET) --verbose \
Expand Down
Binary file removed assets/logo.png
Binary file not shown.
15 changes: 0 additions & 15 deletions assets/logo.svg

This file was deleted.

2 changes: 1 addition & 1 deletion benchmark/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ if(SOURCEMETA_CORE_JSONPOINTER)
endif()

if(BENCHMARK_SOURCES)
noa_googlebenchmark(NAMESPACE sourcemeta PROJECT core
sourcemeta_googlebenchmark(NAMESPACE sourcemeta PROJECT core
FOLDER "Core" SOURCES ${BENCHMARK_SOURCES})

target_compile_definitions(sourcemeta_core_benchmark
Expand Down
2 changes: 1 addition & 1 deletion cmake/FindBoostRegex.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ if(NOT BoostRegex_FOUND)

target_compile_definitions(boost_regex INTERFACE BOOST_REGEX_STANDALONE)

if(SOURCEMETA_CORE_UNDEFINED_SANITIZER AND NOA_COMPILER_LLVM)
if(SOURCEMETA_CORE_UNDEFINED_SANITIZER AND SOURCEMETA_COMPILER_LLVM)
# Boost Regex doesn't pass the LLVM Undefined Behavior sanitizer otherwise
# vendor/boost-regex/include/boost/regex/v5/cpp_regex_traits.hpp:1022:60:
# runtime error: implicit conversion from type 'unsigned char' of value 128
Expand Down
2 changes: 1 addition & 1 deletion cmake/Findyaml.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ if(NOT Yaml_FOUND)

add_library(yaml ${YAML_SOURCES})

if(NOA_COMPILER_LLVM OR NOA_COMPILER_GCC)
if(SOURCEMETA_COMPILER_LLVM OR SOURCEMETA_COMPILER_GCC)
target_compile_options(yaml PRIVATE -Wno-implicit-function-declaration)
target_compile_options(yaml PRIVATE -Wno-int-to-pointer-cast)
endif()
Expand Down
16 changes: 16 additions & 0 deletions cmake/Sourcemeta.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
set(SOURCEMETA_UTILITIES_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/common")
include("${SOURCEMETA_UTILITIES_DIRECTORY}/shim.cmake")
include("${SOURCEMETA_UTILITIES_DIRECTORY}/variables.cmake")
include("${SOURCEMETA_UTILITIES_DIRECTORY}/defaults.cmake")
include("${SOURCEMETA_UTILITIES_DIRECTORY}/compiler/sanitizer.cmake")
include("${SOURCEMETA_UTILITIES_DIRECTORY}/compiler/options.cmake")
include("${SOURCEMETA_UTILITIES_DIRECTORY}/options/enum.cmake")
include("${SOURCEMETA_UTILITIES_DIRECTORY}/commands/copy-file.cmake")
include("${SOURCEMETA_UTILITIES_DIRECTORY}/targets/library.cmake")
include("${SOURCEMETA_UTILITIES_DIRECTORY}/targets/executable.cmake")
include("${SOURCEMETA_UTILITIES_DIRECTORY}/targets/clang-format.cmake")
include("${SOURCEMETA_UTILITIES_DIRECTORY}/targets/clang-tidy.cmake")
include("${SOURCEMETA_UTILITIES_DIRECTORY}/targets/shellcheck.cmake")
include("${SOURCEMETA_UTILITIES_DIRECTORY}/targets/doxygen.cmake")
include("${SOURCEMETA_UTILITIES_DIRECTORY}/targets/googletest.cmake")
include("${SOURCEMETA_UTILITIES_DIRECTORY}/targets/googlebenchmark.cmake")
17 changes: 17 additions & 0 deletions cmake/common/commands/copy-file.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
function(sourcemeta_command_copy_file)
cmake_parse_arguments(SOURCEMETA_COMMAND_COPY_FILE "" "FROM;TO" "" ${ARGN})

if(NOT SOURCEMETA_COMMAND_COPY_FILE_FROM)
message(FATAL_ERROR "You must pass the file to copy using the FROM option")
endif()
if(NOT SOURCEMETA_COMMAND_COPY_FILE_TO)
message(FATAL_ERROR "You must pass the destination to copy to using the TO option")
endif()

add_custom_command(
OUTPUT "${SOURCEMETA_COMMAND_COPY_FILE_TO}"
COMMAND "${CMAKE_COMMAND}" -E copy "${SOURCEMETA_COMMAND_COPY_FILE_FROM}" "${SOURCEMETA_COMMAND_COPY_FILE_TO}"
MAIN_DEPENDENCY "${SOURCEMETA_COMMAND_COPY_FILE_FROM}"
DEPENDS "${SOURCEMETA_COMMAND_COPY_FILE_FROM}"
COMMENT "Copying ${SOURCEMETA_COMMAND_COPY_FILE_FROM} ot ${SOURCEMETA_COMMAND_COPY_FILE_TO}")
endfunction()
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
function(noa_add_default_options visibility target)
if(NOA_COMPILER_MSVC)
function(sourcemeta_add_default_options visibility target)
if(SOURCEMETA_COMPILER_MSVC)
# See https://learn.microsoft.com/en-us/cpp/build/reference/compiler-options-listed-by-category
target_compile_options("${target}" ${visibility}
/options:strict
Expand All @@ -8,7 +8,7 @@ function(noa_add_default_options visibility target)
/WL
/MP
/sdl)
elseif(NOA_COMPILER_LLVM OR NOA_COMPILER_GCC)
elseif(SOURCEMETA_COMPILER_LLVM OR SOURCEMETA_COMPILER_GCC)
target_compile_options("${target}" ${visibility}
-Wall
-Wextra
Expand Down Expand Up @@ -54,7 +54,7 @@ function(noa_add_default_options visibility target)
-fwrapv)
endif()

if(NOA_COMPILER_LLVM)
if(SOURCEMETA_COMPILER_LLVM)
target_compile_options("${target}" ${visibility}
-Wbool-conversion
-Wint-conversion
Expand All @@ -80,7 +80,7 @@ function(noa_add_default_options visibility target)
-fvectorize
# Enable vectorization of straight-line code for performance
-fslp-vectorize)
elseif(NOA_COMPILER_GCC)
elseif(SOURCEMETA_COMPILER_GCC)
target_compile_options("${target}" ${visibility}
-fno-trapping-math
# Newer versions of GCC (i.e. 14) seem to print a lot of false-positives here
Expand All @@ -95,13 +95,13 @@ endfunction()
# For studying failed vectorization results
# - On Clang , seems to only take effect on release shared builds
# - On GCC, seems to only take effect on release shared builds
function(noa_add_vectorization_diagnostics target)
if(NOA_COMPILER_LLVM)
function(sourcemeta_add_vectorization_diagnostics target)
if(SOURCEMETA_COMPILER_LLVM)
# See https://llvm.org/docs/Vectorizers.html#id6
target_compile_options("${target}" PRIVATE
-Rpass-analysis=loop-vectorize
-Rpass-missed=loop-vectorize)
elseif(NOA_COMPILER_GCC)
elseif(SOURCEMETA_COMPILER_GCC)
target_compile_options("${target}" PRIVATE
-fopt-info-vec-missed
-fopt-info-loop-missed)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
function(noa_sanitizer)
cmake_parse_arguments(NOA_SANITIZER "" "TYPE" "" ${ARGN})
function(sourcemeta_sanitizer)
cmake_parse_arguments(SOURCEMETA_SANITIZER "" "TYPE" "" ${ARGN})

if(NOT NOA_SANITIZER_TYPE)
if(NOT SOURCEMETA_SANITIZER_TYPE)
message(FATAL_ERROR "You must pass the intended sanitizer")
endif()

if(NOA_COMPILER_LLVM AND "${NOA_SANITIZER_TYPE}" STREQUAL "address")
if(SOURCEMETA_COMPILER_LLVM AND "${SOURCEMETA_SANITIZER_TYPE}" STREQUAL "address")
# See https://clang.llvm.org/docs/AddressSanitizer.html
message(STATUS "Enabling sanitizer: Clang AddressSanitizer")
add_compile_options(-fsanitize=address -fsanitize-address-use-after-scope)
add_link_options(-fsanitize=address)
# Get nicer stack traces with the Address sanitizer
add_compile_options(-fno-omit-frame-pointer -fno-optimize-sibling-calls)
add_compile_options(-O1)
elseif(NOA_COMPILER_LLVM AND "${NOA_SANITIZER_TYPE}" STREQUAL "memory")
elseif(SOURCEMETA_COMPILER_LLVM AND "${SOURCEMETA_SANITIZER_TYPE}" STREQUAL "memory")
if(APPLE)
message(FATAL_ERROR "Clang MemorySanitizer is not available on Apple platforms")
endif()
Expand All @@ -25,7 +25,7 @@ function(noa_sanitizer)
# Get nicer stack traces with the Memory sanitizer
add_compile_options(-fno-omit-frame-pointer -fno-optimize-sibling-calls)
add_compile_options(-O1)
elseif(NOA_COMPILER_LLVM AND "${NOA_SANITIZER_TYPE}" STREQUAL "undefined")
elseif(SOURCEMETA_COMPILER_LLVM AND "${SOURCEMETA_SANITIZER_TYPE}" STREQUAL "undefined")
# See https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html
message(STATUS "Enabling sanitizer: Clang UndefinedBehaviorSanitizer")
add_compile_options(-fsanitize=undefined,nullability,integer,implicit-conversion,local-bounds
Expand Down
22 changes: 11 additions & 11 deletions vendor/noa/cmake/noa/defaults.cmake → cmake/common/defaults.cmake
Original file line number Diff line number Diff line change
@@ -1,38 +1,38 @@
# Standards (sane modern defaults)
if("CXX" IN_LIST NOA_LANGUAGES)
if("CXX" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_CXX_STANDARD 20)
endif()
if("C" IN_LIST NOA_LANGUAGES)
if("C" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_C_STANDARD 11)
endif()
if("OBJCXX" IN_LIST NOA_LANGUAGES)
if("OBJCXX" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_OBJCXX_STANDARD "${CMAKE_CXX_STANDARD}")
endif()

# Hide symbols from shared libraries by default
# In certain compilers, like GCC and Clang,
# symbols are visible by default.
set(CMAKE_VISIBILITY_INLINES_HIDDEN YES)
if("CXX" IN_LIST NOA_LANGUAGES)
if("CXX" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
endif()
if("C" IN_LIST NOA_LANGUAGES)
if("C" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_C_VISIBILITY_PRESET hidden)
endif()
if("OBJCXX" IN_LIST NOA_LANGUAGES)
if("OBJCXX" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_OBJCXX_VISIBILITY_PRESET hidden)
endif()

# By default, stay within ISO C++
if("CXX" IN_LIST NOA_LANGUAGES)
if("CXX" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
endif()
if("C" IN_LIST NOA_LANGUAGES)
if("C" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
endif()
if("OBJCXX" IN_LIST NOA_LANGUAGES)
if("OBJCXX" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_OBJCXX_STANDARD_REQUIRED ON)
set(CMAKE_OBJCXX_EXTENSIONS OFF)
endif()
Expand Down Expand Up @@ -79,15 +79,15 @@ endif()
# - https://gcc.gnu.org/onlinedocs/gccint/LTO-Overview.html
# - https://llvm.org/docs/FatLTO.html

if(NOA_COMPILER_GCC AND CMAKE_BUILD_TYPE STREQUAL "Release" AND NOT BUILD_SHARED_LIBS)
if(SOURCEMETA_COMPILER_GCC AND CMAKE_BUILD_TYPE STREQUAL "Release" AND NOT BUILD_SHARED_LIBS)
message(STATUS "Enabling Fat LTO")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -ffat-lto-objects")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -flto")
endif()

# TODO: Make this work on Linux on LLVM
if(NOA_COMPILER_LLVM AND CMAKE_BUILD_TYPE STREQUAL "Release" AND NOT BUILD_SHARED_LIBS AND APPLE)
if(SOURCEMETA_COMPILER_LLVM AND CMAKE_BUILD_TYPE STREQUAL "Release" AND NOT BUILD_SHARED_LIBS AND APPLE)
message(STATUS "Enabling Fat LTO")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto=full")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto=full")
Expand Down
32 changes: 32 additions & 0 deletions cmake/common/options/enum.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
function(sourcemeta_option_enum)
cmake_parse_arguments(SOURCEMETA_OPTION_ENUM "" "NAME;DEFAULT;DESCRIPTION" "CHOICES" ${ARGN})

if(NOT SOURCEMETA_OPTION_ENUM_NAME)
message(FATAL_ERROR "You must pass the option name as NAME")
endif()
if(NOT SOURCEMETA_OPTION_ENUM_DEFAULT)
message(FATAL_ERROR "You must pass the option default value as DEFAULT")
endif()
if(NOT "${SOURCEMETA_OPTION_ENUM_DEFAULT}" IN_LIST SOURCEMETA_OPTION_ENUM_CHOICES)
message(FATAL_ERROR "Default value of ${SOURCEMETA_OPTION_ENUM_NAME} must be one of these: ${SOURCEMETA_OPTION_ENUM_CHOICES}")
endif()
if(NOT SOURCEMETA_OPTION_ENUM_DESCRIPTION)
message(FATAL_ERROR "You must pass the option description as DESCRIPTION")
endif()
if(NOT SOURCEMETA_OPTION_ENUM_CHOICES)
message(FATAL_ERROR "You must pass the option enum choices as CHOICES")
endif()

# Declare the option
set("${SOURCEMETA_OPTION_ENUM_NAME}" "${SOURCEMETA_OPTION_ENUM_DEFAULT}"
CACHE STRING "${SOURCEMETA_OPTION_ENUM_DESCRIPTION}")

# Display a nice set of options in `cmake-gui`
set_property(CACHE "${SOURCEMETA_OPTION_ENUM_NAME}"
PROPERTY STRINGS ${SOURCEMETA_OPTION_ENUM_CHOICES})

# Perform validation
if(NOT "${${SOURCEMETA_OPTION_ENUM_NAME}}" IN_LIST SOURCEMETA_OPTION_ENUM_CHOICES)
message(FATAL_ERROR "Value of ${SOURCEMETA_OPTION_ENUM_NAME} must be one of these: ${SOURCEMETA_OPTION_ENUM_CHOICES}")
endif()
endfunction()
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
function(noa_target_clang_format)
cmake_parse_arguments(NOA_TARGET_CLANG_FORMAT "REQUIRED" "" "SOURCES" ${ARGN})
function(sourcemeta_target_clang_format)
cmake_parse_arguments(SOURCEMETA_TARGET_CLANG_FORMAT "REQUIRED" "" "SOURCES" ${ARGN})

if(NOA_TARGET_CLANG_FORMAT_REQUIRED)
if(SOURCEMETA_TARGET_CLANG_FORMAT_REQUIRED)
find_program(CLANG_FORMAT_BIN NAMES clang-format REQUIRED)
else()
find_program(CLANG_FORMAT_BIN NAMES clang-format)
endif()

# This covers the empty list too
if(NOT NOA_TARGET_CLANG_FORMAT_SOURCES)
if(NOT SOURCEMETA_TARGET_CLANG_FORMAT_SOURCES)
message(FATAL_ERROR "You must pass file globs to format in the SOURCES option")
endif()
file(GLOB_RECURSE NOA_TARGET_CLANG_FORMAT_FILES
${NOA_TARGET_CLANG_FORMAT_SOURCES})
file(GLOB_RECURSE SOURCEMETA_TARGET_CLANG_FORMAT_FILES
${SOURCEMETA_TARGET_CLANG_FORMAT_SOURCES})

set(CLANG_FORMAT_CONFIG "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/clang-format.config")
if(CLANG_FORMAT_BIN)
add_custom_target(clang_format
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
VERBATIM
COMMAND "${CLANG_FORMAT_BIN}" "--style=file:${CLANG_FORMAT_CONFIG}"
-i ${NOA_TARGET_CLANG_FORMAT_FILES}
-i ${SOURCEMETA_TARGET_CLANG_FORMAT_FILES}
COMMENT "Formatting sources using ClangFormat")
add_custom_target(clang_format_test
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
VERBATIM
COMMAND "${CLANG_FORMAT_BIN}" "--style=file:${CLANG_FORMAT_CONFIG}"
--dry-run -Werror
-i ${NOA_TARGET_CLANG_FORMAT_FILES}
-i ${SOURCEMETA_TARGET_CLANG_FORMAT_FILES}
COMMENT "Checking for ClangFormat compliance")
else()
add_custom_target(clang_format
Expand Down
File renamed without changes.
Loading

5 comments on commit a03319d

@github-actions
Copy link

Choose a reason for hiding this comment

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

Benchmark (macos/llvm)

Benchmark suite Current: a03319d Previous: c3f7d13 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.359439903746205 ns/iter 2.494957021061062 ns/iter 0.95
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.171360300362049 ns/iter 2.075127971530879 ns/iter 1.05
Regex_Period_Asterisk 2.2326952996441163 ns/iter 2.0601802426652203 ns/iter 1.08
Regex_Group_Period_Asterisk_Group 1.9972954677003754 ns/iter 2.242151665268885 ns/iter 0.89
Regex_Period_Plus 2.3265591234916005 ns/iter 2.5269916009839517 ns/iter 0.92
Regex_Period 2.4219171984709527 ns/iter 2.5112614719182806 ns/iter 0.96
Regex_Caret_Period_Plus_Dollar 2.359749712545609 ns/iter 2.6750222956780845 ns/iter 0.88
Regex_Caret_Group_Period_Plus_Group_Dollar 2.1352822649316896 ns/iter 2.5462592245250875 ns/iter 0.84
Regex_Caret_Period_Asterisk_Dollar 2.0931438409196392 ns/iter 2.222477466630095 ns/iter 0.94
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.2038631063352567 ns/iter 2.028173310573809 ns/iter 1.09
Regex_Caret_X_Hyphen 9.56624281250717 ns/iter 9.614149990548526 ns/iter 1.00
Regex_Period_Md_Dollar 80.34666197796727 ns/iter 98.64739060716767 ns/iter 0.81
Regex_Caret_Slash_Period_Asterisk 6.129682977140709 ns/iter 6.742438921858088 ns/iter 0.91
Regex_Caret_Period_Range_Dollar 2.6113228181090906 ns/iter 3.0774216089922564 ns/iter 0.85
Regex_Nested_Backtrack 844.0449047539735 ns/iter 944.3422682348213 ns/iter 0.89
JSON_Array_Of_Objects_Unique 380.27700696688066 ns/iter 414.7655569954979 ns/iter 0.92
JSON_Parse_1 25355.016422706507 ns/iter 29926.416327546922 ns/iter 0.85
JSON_Fast_Hash_Helm_Chart_Lock 54.0236775340477 ns/iter 64.62216481032635 ns/iter 0.84
JSON_Equality_Helm_Chart_Lock 134.49495535106246 ns/iter 162.56040403716747 ns/iter 0.83
JSON_String_Equal/10 8.305302751841463 ns/iter 11.982139638939037 ns/iter 0.69
JSON_String_Equal/100 6.836269026276113 ns/iter 8.285041226231394 ns/iter 0.83
JSON_String_Equal_Small_By_Perfect_Hash/10 0.3766908137025292 ns/iter 0.41381714940002867 ns/iter 0.91
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.355291277015263 ns/iter 3.8433054999469176 ns/iter 0.87
JSON_String_Fast_Hash/10 1.8606840705844192 ns/iter 2.1888788725308927 ns/iter 0.85
JSON_String_Fast_Hash/100 2.322312489094655 ns/iter 2.6001563817183952 ns/iter 0.89
JSON_String_Key_Hash/10 1.5116080648555634 ns/iter 1.541642183844547 ns/iter 0.98
JSON_String_Key_Hash/100 1.4501479345237078 ns/iter 1.6664660506620932 ns/iter 0.87
JSON_Object_Defines_Miss_Same_Length 2.6929201347901452 ns/iter 2.7872262093033333 ns/iter 0.97
JSON_Object_Defines_Miss_Too_Small 2.5774364210222194 ns/iter 3.0676584047911835 ns/iter 0.84
JSON_Object_Defines_Miss_Too_Large 2.4237190194371814 ns/iter 2.946687232950357 ns/iter 0.82
Pointer_Object_Traverse 17.76642908244213 ns/iter 21.08938453581296 ns/iter 0.84
Pointer_Object_Try_Traverse 24.356672276037603 ns/iter 35.894195104321795 ns/iter 0.68
Pointer_Push_Back_Pointer_To_Weak_Pointer 197.38758949496787 ns/iter 255.78165865882337 ns/iter 0.77

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

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

Benchmark (linux/llvm)

Benchmark suite Current: a03319d Previous: c3f7d13 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.2108394908084903 ns/iter 2.206860129402071 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.1789006681584557 ns/iter 2.2023453329986378 ns/iter 0.99
Regex_Period_Asterisk 2.18305096988056 ns/iter 2.2068845743075642 ns/iter 0.99
Regex_Group_Period_Asterisk_Group 2.183817681368354 ns/iter 2.205261510956338 ns/iter 0.99
Regex_Period_Plus 2.7980311589210323 ns/iter 2.4904715288827735 ns/iter 1.12
Regex_Period 2.797951550349651 ns/iter 2.4926240872392333 ns/iter 1.12
Regex_Caret_Period_Plus_Dollar 2.7983778075718555 ns/iter 2.500691686794072 ns/iter 1.12
Regex_Caret_Group_Period_Plus_Group_Dollar 2.7464085773125118 ns/iter 2.496714569605122 ns/iter 1.10
Regex_Caret_Period_Asterisk_Dollar 2.4876862716767665 ns/iter 2.1997771334758824 ns/iter 1.13
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.487592631939716 ns/iter 2.2240872675619756 ns/iter 1.12
Regex_Caret_X_Hyphen 12.51987950895026 ns/iter 12.660468249310965 ns/iter 0.99
Regex_Period_Md_Dollar 81.65822190431628 ns/iter 81.46748431952038 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 6.849936078421474 ns/iter 5.598332573594535 ns/iter 1.22
Regex_Caret_Period_Range_Dollar 4.040417177017533 ns/iter 2.8072280440647837 ns/iter 1.44
Regex_Nested_Backtrack 504.6840500320302 ns/iter 511.58405946636105 ns/iter 0.99
JSON_Array_Of_Objects_Unique 409.46931055514324 ns/iter 441.6879730737701 ns/iter 0.93
JSON_Parse_1 30537.45712921843 ns/iter 30806.144912957097 ns/iter 0.99
JSON_Fast_Hash_Helm_Chart_Lock 58.444520250816815 ns/iter 58.6035345441144 ns/iter 1.00
JSON_Equality_Helm_Chart_Lock 163.87001253153116 ns/iter 161.9189438300567 ns/iter 1.01
JSON_String_Equal/10 7.4611600534743445 ns/iter 7.467667388330703 ns/iter 1.00
JSON_String_Equal/100 8.103839591567633 ns/iter 8.089831496875433 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9344158907995163 ns/iter 0.937021978305616 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 10.258242309093424 ns/iter 14.602535631743637 ns/iter 0.70
JSON_String_Fast_Hash/10 2.4939351666730474 ns/iter 2.4887345404090984 ns/iter 1.00
JSON_String_Fast_Hash/100 2.489765936439025 ns/iter 2.4914599084074105 ns/iter 1.00
JSON_String_Key_Hash/10 2.179704631548387 ns/iter 2.698924248066495 ns/iter 0.81
JSON_String_Key_Hash/100 1.8701579790437612 ns/iter 1.8881164753965105 ns/iter 0.99
JSON_Object_Defines_Miss_Same_Length 3.7378677863340912 ns/iter 3.749136185402371 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.7375162997286777 ns/iter 3.735620105472967 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.7358238760745 ns/iter 3.738044530716799 ns/iter 1.00
Pointer_Object_Traverse 44.57159539812479 ns/iter 43.907214501607164 ns/iter 1.02
Pointer_Object_Try_Traverse 52.358282169834965 ns/iter 52.41123663315436 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 345.8686613257165 ns/iter 290.7968978510983 ns/iter 1.19

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

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

Benchmark (windows/msvc)

Benchmark suite Current: a03319d Previous: c3f7d13 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 6.865965401784889 ns/iter 7.508713392858064 ns/iter 0.91
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 7.252735491071353 ns/iter 7.11468638392887 ns/iter 1.02
Regex_Period_Asterisk 6.94632924107097 ns/iter 6.978803571427201 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 6.924772321428614 ns/iter 6.983318080356429 ns/iter 0.99
Regex_Period_Plus 7.21863504464285 ns/iter 7.218214285714453 ns/iter 1.00
Regex_Period 7.246089285715129 ns/iter 7.591947544643825 ns/iter 0.95
Regex_Caret_Period_Plus_Dollar 7.210183896381421 ns/iter 7.731741929770602 ns/iter 0.93
Regex_Caret_Group_Period_Plus_Group_Dollar 7.230632812498884 ns/iter 7.175816964285327 ns/iter 1.01
Regex_Caret_Period_Asterisk_Dollar 7.052488839285331 ns/iter 7.130583928571354 ns/iter 0.99
Regex_Caret_Group_Period_Asterisk_Group_Dollar 7.168039062498568 ns/iter 6.918321397686153 ns/iter 1.04
Regex_Caret_X_Hyphen 11.848919642858391 ns/iter 11.74122656250276 ns/iter 1.01
Regex_Period_Md_Dollar 148.73767857146447 ns/iter 148.63101568613277 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 10.363962500000362 ns/iter 10.382592187500705 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 7.661562500000941 ns/iter 7.586963805415974 ns/iter 1.01
Regex_Nested_Backtrack 617.6604464286584 ns/iter 629.9098214285997 ns/iter 0.98
JSON_Array_Of_Objects_Unique 451.6074445553107 ns/iter 455.2196874999481 ns/iter 0.99
JSON_Parse_1 80218.88308558159 ns/iter 81406.43973213458 ns/iter 0.99
JSON_Fast_Hash_Helm_Chart_Lock 68.19685267857827 ns/iter 65.66140178571393 ns/iter 1.04
JSON_Equality_Helm_Chart_Lock 201.09095545455196 ns/iter 204.14725929886487 ns/iter 0.99
JSON_String_Equal/10 9.611128082091888 ns/iter 9.899246428574315 ns/iter 0.97
JSON_String_Equal/100 10.046943705145722 ns/iter 9.97802138402619 ns/iter 1.01
JSON_String_Equal_Small_By_Perfect_Hash/10 2.190041250000263 ns/iter 2.1693886359716954 ns/iter 1.01
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.754778695838608 ns/iter 14.708200571148083 ns/iter 1.00
JSON_String_Fast_Hash/10 3.7488197544645523 ns/iter 3.745432493311201 ns/iter 1.00
JSON_String_Fast_Hash/100 3.7313244576233164 ns/iter 3.814576450892813 ns/iter 0.98
JSON_String_Key_Hash/10 7.6545089285724135 ns/iter 7.852645089285102 ns/iter 0.97
JSON_String_Key_Hash/100 4.035029962562829 ns/iter 4.029047641123108 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.7245989450732195 ns/iter 3.7120574933722335 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.76222392185337 ns/iter 3.7181630290747574 ns/iter 1.01
JSON_Object_Defines_Miss_Too_Large 5.026629999999841 ns/iter 4.976899999999205 ns/iter 1.01
Pointer_Object_Traverse 53.03770535714339 ns/iter 52.55801999999221 ns/iter 1.01
Pointer_Object_Try_Traverse 68.20866964285902 ns/iter 67.91716517857388 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 188.10390072355744 ns/iter 179.70127497332487 ns/iter 1.05

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

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

Benchmark (linux/gcc)

Benchmark suite Current: a03319d Previous: c3f7d13 Ratio
Pointer_Object_Traverse 49.16450821820135 ns/iter 50.407436701162275 ns/iter 0.98
Pointer_Object_Try_Traverse 26.467257704072704 ns/iter 26.503382566553746 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 143.95171935104347 ns/iter 137.481482759377 ns/iter 1.05
JSON_Array_Of_Objects_Unique 426.9227006705325 ns/iter 406.40633940533536 ns/iter 1.05
JSON_Parse_1 33684.34300028726 ns/iter 33831.722454872855 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 68.88124173795326 ns/iter 64.26943168596114 ns/iter 1.07
JSON_Equality_Helm_Chart_Lock 144.65165624605538 ns/iter 141.75240778884836 ns/iter 1.02
JSON_String_Equal/10 6.082893609077382 ns/iter 5.991053185782867 ns/iter 1.02
JSON_String_Equal/100 6.610477878484417 ns/iter 6.622040803091287 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.6240997270649936 ns/iter 0.6240244357175735 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.29082411472038 ns/iter 14.289600592500387 ns/iter 1.00
JSON_String_Fast_Hash/10 0.9328125879885107 ns/iter 0.933688650752307 ns/iter 1.00
JSON_String_Fast_Hash/100 0.9350728133761819 ns/iter 0.9353421456905343 ns/iter 1.00
JSON_String_Key_Hash/10 1.7122818900184684 ns/iter 1.7109706281516923 ns/iter 1.00
JSON_String_Key_Hash/100 2.024177174334585 ns/iter 2.022307888395911 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.1118761056741864 ns/iter 3.108705834736169 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 2.801317883761255 ns/iter 2.7970593573310065 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 2.4903101638054554 ns/iter 2.492997143290285 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 2.799534577655293 ns/iter 2.795593014691357 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.797976234288363 ns/iter 2.7979446433239326 ns/iter 1.00
Regex_Period_Asterisk 2.798875099407723 ns/iter 2.797047577895719 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 2.8009036642936453 ns/iter 2.796649479813564 ns/iter 1.00
Regex_Period_Plus 3.4218760700219706 ns/iter 3.4260232155751535 ns/iter 1.00
Regex_Period 3.4234128323269086 ns/iter 3.428785697228287 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 3.42180286045312 ns/iter 3.4216687945916147 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 3.4213978110002605 ns/iter 3.4203252030456803 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 4.0398292040416965 ns/iter 4.042263261094652 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 4.041135160550024 ns/iter 4.042110671077007 ns/iter 1.00
Regex_Caret_X_Hyphen 12.433151112448211 ns/iter 12.432320677600773 ns/iter 1.00
Regex_Period_Md_Dollar 93.95893547763863 ns/iter 93.87024886846018 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 6.528721334991597 ns/iter 6.527690958930233 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 4.351555813619017 ns/iter 4.349436998871858 ns/iter 1.00
Regex_Nested_Backtrack 826.2021786553929 ns/iter 825.7030197705104 ns/iter 1.00

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

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

Benchmark (macos/gcc)

Benchmark suite Current: a03319d Previous: c3f7d13 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.7983595926291285 ns/iter 1.9422334319404766 ns/iter 1.44
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.9289608364277693 ns/iter 1.9248250354764807 ns/iter 1.52
Regex_Period_Asterisk 2.690688733582172 ns/iter 1.9186656331599659 ns/iter 1.40
Regex_Group_Period_Asterisk_Group 2.791487374009105 ns/iter 1.9303102351047885 ns/iter 1.45
Regex_Period_Plus 2.2375182619239715 ns/iter 1.6337959023616806 ns/iter 1.37
Regex_Period 2.3642151014833765 ns/iter 1.6431496139025195 ns/iter 1.44
Regex_Caret_Period_Plus_Dollar 2.392316963627823 ns/iter 1.65681634924508 ns/iter 1.44
Regex_Caret_Group_Period_Plus_Group_Dollar 2.1996964337171274 ns/iter 1.6539180955007715 ns/iter 1.33
Regex_Caret_Period_Asterisk_Dollar 2.5025595281084976 ns/iter 1.9572065285170237 ns/iter 1.28
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.6596624662557646 ns/iter 1.9473115540718464 ns/iter 1.37
Regex_Caret_X_Hyphen 7.451776614304587 ns/iter 6.186587392815636 ns/iter 1.20
Regex_Period_Md_Dollar 87.47202414111246 ns/iter 71.41027770751175 ns/iter 1.22
Regex_Caret_Slash_Period_Asterisk 5.391657804852589 ns/iter 4.594091960392208 ns/iter 1.17
Regex_Caret_Period_Range_Dollar 2.52889273058107 ns/iter 1.934369992521681 ns/iter 1.31
Regex_Nested_Backtrack 1158.9030498235893 ns/iter 855.0031236709585 ns/iter 1.36
JSON_Array_Of_Objects_Unique 292.91318326669125 ns/iter 212.47629564857675 ns/iter 1.38
JSON_Parse_1 35017.9387754344 ns/iter 23841.04615052382 ns/iter 1.47
JSON_Fast_Hash_Helm_Chart_Lock 31.802487782654318 ns/iter 24.392625255910623 ns/iter 1.30
JSON_Equality_Helm_Chart_Lock 157.9048818962297 ns/iter 116.90236071109466 ns/iter 1.35
JSON_String_Equal/10 7.49350355262558 ns/iter 5.495133046372576 ns/iter 1.36
JSON_String_Equal/100 7.550058573125443 ns/iter 5.341123184624311 ns/iter 1.41
JSON_String_Equal_Small_By_Perfect_Hash/10 1.4660575753113896 ns/iter 0.9811750500905899 ns/iter 1.49
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 4.683385615438262 ns/iter 3.579323197136499 ns/iter 1.31
JSON_String_Fast_Hash/10 2.508562861208083 ns/iter 1.9748506302144149 ns/iter 1.27
JSON_String_Fast_Hash/100 2.517574461058276 ns/iter 1.933911187320243 ns/iter 1.30
JSON_String_Key_Hash/10 2.0024037396989516 ns/iter 1.471081857742513 ns/iter 1.36
JSON_String_Key_Hash/100 2.491118370248562 ns/iter 1.971392376207168 ns/iter 1.26
JSON_Object_Defines_Miss_Same_Length 2.5115639789301105 ns/iter 1.7700459693013506 ns/iter 1.42
JSON_Object_Defines_Miss_Too_Small 2.585175118637691 ns/iter 1.928390988822747 ns/iter 1.34
JSON_Object_Defines_Miss_Too_Large 2.29935530331651 ns/iter 1.761070880311814 ns/iter 1.31
Pointer_Object_Traverse 66.20535408624788 ns/iter 54.0052243645939 ns/iter 1.23
Pointer_Object_Try_Traverse 44.36734626076721 ns/iter 36.83958358776272 ns/iter 1.20
Pointer_Push_Back_Pointer_To_Weak_Pointer 212.9278645860231 ns/iter 158.8090222241317 ns/iter 1.34

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.