Browse Source

Merge pull request #43 from TechEmpower/master

aa
三刀 5 months ago
parent
commit
6e19802fce
100 changed files with 3785 additions and 2367 deletions
  1. 505 0
      CMakeCache.txt
  2. 81 0
      CMakeFiles/3.31.5/CMakeCCompiler.cmake
  3. 101 0
      CMakeFiles/3.31.5/CMakeCXXCompiler.cmake
  4. BIN
      CMakeFiles/3.31.5/CMakeDetermineCompilerABI_C.bin
  5. BIN
      CMakeFiles/3.31.5/CMakeDetermineCompilerABI_CXX.bin
  6. 15 0
      CMakeFiles/3.31.5/CMakeSystem.cmake
  7. 904 0
      CMakeFiles/3.31.5/CompilerIdC/CMakeCCompilerId.c
  8. BIN
      CMakeFiles/3.31.5/CompilerIdC/CMakeCCompilerId.o
  9. 919 0
      CMakeFiles/3.31.5/CompilerIdCXX/CMakeCXXCompilerId.cpp
  10. BIN
      CMakeFiles/3.31.5/CompilerIdCXX/CMakeCXXCompilerId.o
  11. 125 0
      CMakeFiles/CMakeConfigureLog.yaml
  12. 1 0
      CMakeFiles/cmake.check_cache
  13. 0 13
      frameworks/C++/cuehttp/README.md
  14. 0 25
      frameworks/C++/cuehttp/benchmark_config.json
  15. 0 18
      frameworks/C++/cuehttp/cuehttp.dockerfile
  16. 0 21
      frameworks/C++/cuehttp/plaintext/CMakeLists.txt
  17. 0 17
      frameworks/C++/cuehttp/plaintext/main.cpp
  18. 10 6
      frameworks/C++/paozhu/paozhu.dockerfile
  19. 4 0
      frameworks/C++/paozhu/paozhu_benchmark/common/cost_define.h
  20. 467 215
      frameworks/C++/paozhu/paozhu_benchmark/orm/include/fortune_mysql.h
  21. 1 1
      frameworks/C++/paozhu/paozhu_benchmark/orm/include/fortunebase.h
  22. 467 215
      frameworks/C++/paozhu/paozhu_benchmark/orm/include/world_mysql.h
  23. 1 1
      frameworks/C++/paozhu/paozhu_benchmark/orm/include/worldbase.h
  24. 1 1
      frameworks/Crystal/lucky/config/server.cr
  25. 6 5
      frameworks/Go/echo/src/go.mod
  26. 12 10
      frameworks/Go/echo/src/go.sum
  27. 1 0
      frameworks/Java/helidon/helidon-nima.dockerfile
  28. 18 16
      frameworks/Java/helidon/nima/src/main/java/io/helidon/benchmark/nima/models/PgClientConnection.java
  29. 17 13
      frameworks/Java/helidon/nima/src/main/java/io/helidon/benchmark/nima/models/PgClientConnectionPoolArray.java
  30. 0 31
      frameworks/Java/play1/README.md
  31. 0 132
      frameworks/Java/play1/app/controllers/Application.java
  32. 0 30
      frameworks/Java/play1/app/models/World.java
  33. 0 8
      frameworks/Java/play1/app/views/Application/index.html
  34. 0 19
      frameworks/Java/play1/app/views/errors/404.html
  35. 0 21
      frameworks/Java/play1/app/views/errors/500.html
  36. 0 16
      frameworks/Java/play1/app/views/main.html
  37. 0 26
      frameworks/Java/play1/benchmark_config.json
  38. 0 236
      frameworks/Java/play1/conf/application.conf
  39. 0 4
      frameworks/Java/play1/conf/dependencies.yml
  40. 0 3
      frameworks/Java/play1/conf/messages
  41. 0 15
      frameworks/Java/play1/conf/routes
  42. 0 17
      frameworks/Java/play1/config.toml
  43. 0 13
      frameworks/Java/play1/play1.dockerfile
  44. BIN
      frameworks/Java/play1/public/images/favicon.png
  45. 0 1
      frameworks/Java/play1/public/javascripts/jquery-1.6.4.min.js
  46. 0 0
      frameworks/Java/play1/public/stylesheets/main.css
  47. 0 7
      frameworks/Java/play1/test/Application.test.html
  48. 0 17
      frameworks/Java/play1/test/ApplicationTest.java
  49. 0 13
      frameworks/Java/play1/test/BasicTest.java
  50. 0 7
      frameworks/Java/play1/test/data.yml
  51. 2 2
      frameworks/Java/redkale/pom-jdbc.xml
  52. 2 2
      frameworks/Java/redkale/pom-pgclient.xml
  53. 2 2
      frameworks/Java/redkale/pom.xml
  54. 4 2
      frameworks/Java/tio-boot/pom.xml
  55. 9 2
      frameworks/Java/tio-http-server/pom.xml
  56. 27 0
      frameworks/JavaScript/aroma.js/README.md
  57. 36 0
      frameworks/JavaScript/aroma.js/app.js
  58. 11 0
      frameworks/JavaScript/aroma.js/aroma.js.dockerfile
  59. 21 0
      frameworks/JavaScript/aroma.js/benchmark_config.json
  60. 5 6
      frameworks/JavaScript/aroma.js/config.toml
  61. 8 0
      frameworks/JavaScript/aroma.js/package.json
  62. 0 22
      frameworks/Lua/luxure/README.md
  63. 0 36
      frameworks/Lua/luxure/luxure.dockerfile
  64. 0 22
      frameworks/Lua/luxure/server.lua
  65. 0 22
      frameworks/Python/crax/README.md
  66. 0 27
      frameworks/Python/crax/benchmark_config.json
  67. 0 19
      frameworks/Python/crax/config.toml
  68. 0 12
      frameworks/Python/crax/crax.dockerfile
  69. 0 14
      frameworks/Python/crax/crax_conf.py
  70. 0 0
      frameworks/Python/crax/hello/__init__.py
  71. 0 90
      frameworks/Python/crax/hello/app.py
  72. 0 10
      frameworks/Python/crax/hello/templates/fortune.html
  73. 0 5
      frameworks/Python/crax/requirements.txt
  74. 1 0
      frameworks/Python/flask/requirements.txt
  75. 0 0
      frameworks/Python/hug/README.md
  76. 0 29
      frameworks/Python/hug/app.py
  77. 0 25
      frameworks/Python/hug/benchmark_config.json
  78. 0 12
      frameworks/Python/hug/hug.dockerfile
  79. 0 6
      frameworks/Python/hug/requirements.txt
  80. 0 13
      frameworks/Python/hug/uwsgi.ini
  81. 0 50
      frameworks/Python/morepath/README.md
  82. 0 3
      frameworks/Python/morepath/app/__init__.py
  83. 0 11
      frameworks/Python/morepath/app/app.py
  84. 0 6
      frameworks/Python/morepath/app/collection.py
  85. 0 29
      frameworks/Python/morepath/app/model.py
  86. 0 35
      frameworks/Python/morepath/app/path.py
  87. 0 31
      frameworks/Python/morepath/app/run.py
  88. 0 21
      frameworks/Python/morepath/app/templates/fortune.jinja2
  89. 0 259
      frameworks/Python/morepath/app/tests/test_app.py
  90. 0 79
      frameworks/Python/morepath/app/view.py
  91. 0 27
      frameworks/Python/morepath/benchmark_config.json
  92. 0 19
      frameworks/Python/morepath/config.toml
  93. 0 14
      frameworks/Python/morepath/gunicorn_conf.py
  94. 0 11
      frameworks/Python/morepath/morepath.dockerfile
  95. 0 17
      frameworks/Python/morepath/requirements.txt
  96. 0 41
      frameworks/Python/morepath/setup.py
  97. 1 1
      frameworks/Python/quart/requirements.txt
  98. 0 2
      frameworks/Python/starlite/.dockerignore
  99. 0 17
      frameworks/Python/starlite/README.md
  100. 0 121
      frameworks/Python/starlite/app.py

+ 505 - 0
CMakeCache.txt

@@ -0,0 +1,505 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/hzq/cpp/FrameworkBenchmarks
+# It was generated by CMake: /usr/local/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//Path to a library.
+BRDEC_LIB_DIR:FILEPATH=BRDEC_LIB_DIR-NOTFOUND
+
+//Path to a library.
+BR_LIB_DIR:FILEPATH=BR_LIB_DIR-NOTFOUND
+
+//Path to a library.
+Brotli:FILEPATH=Brotli-NOTFOUND
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=CMAKE_ADDR2LINE-NOTFOUND
+
+//Path to a program.
+CMAKE_AR:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=Release
+
+//Enable/Disable color output during build.
+CMAKE_COLOR_MAKEFILE:BOOL=ON
+
+//CXX compiler
+CMAKE_CXX_COMPILER:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
+
+//Flags used by the CXX compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the CXX compiler during DEBUG builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the CXX compiler during MINSIZEREL builds.
+CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the CXX compiler during RELEASE builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the CXX compiler during RELWITHDEBINFO builds.
+CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//C compiler
+CMAKE_C_COMPILER:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
+
+//Flags used by the C compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the C compiler during DEBUG builds.
+CMAKE_C_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the C compiler during RELEASE builds.
+CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker during all build types.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Enable/Disable output of compile commands during generation.
+CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=
+
+//Value Computed by CMake.
+CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/Users/hzq/cpp/FrameworkBenchmarks/CMakeFiles/pkgRedirects
+
+//Path to a program.
+CMAKE_INSTALL_NAME_TOOL:FILEPATH=/usr/bin/install_name_tool
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
+
+//Path to a program.
+CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make
+
+//Flags used by the linker during the creation of modules during
+// all build types.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=CMAKE_OBJCOPY-NOTFOUND
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/objdump
+
+//Build architectures for OSX
+CMAKE_OSX_ARCHITECTURES:STRING=
+
+//Minimum OS X version to target for deployment (at runtime); newer
+// APIs weak linked. Set to empty string for default value.
+CMAKE_OSX_DEPLOYMENT_TARGET:STRING=14.7
+
+//The product will be built against the headers and libraries located
+// inside the indicated SDK.
+CMAKE_OSX_SYSROOT:PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=Paozhu_web_framework
+
+//Path to a program.
+CMAKE_RANLIB:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=CMAKE_READELF-NOTFOUND
+
+//Flags used by the linker during the creation of shared libraries
+// during all build types.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_STRIP:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip
+
+//Path to a program.
+CMAKE_TAPI:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/tapi
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make.  This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//choose ON to enable
+ENABLE_BOOST:BOOL=OFF
+
+//choose ON to enable
+ENABLE_GD:BOOL=ON
+
+//choose ON to enable
+ENABLE_VCPKG:BOOL=OFF
+
+//choose ON to enable
+ENABLE_WIN_VCPKG:BOOL=OFF
+
+//Path to a library.
+FREETYPE_LIB_DIR:FILEPATH=/usr/local/opt/freetype/lib/libfreetype.dylib
+
+//Path to a library.
+GD_LIB_DIR:FILEPATH=/usr/local/opt/gd/lib/libgd.dylib
+
+//Path to a file.
+MYSQL_INCLUDE_DIR:PATH=/usr/local/mysql/include
+
+//Path to a library.
+MYSQL_LIBRARY:FILEPATH=/usr/local/mysql/lib/libmysqlclient.dylib
+
+//Path to a file.
+MYSQL_ROOT_DIR:PATH=/usr/local
+
+//Path to a library.
+OPENSSL_CRYPTO_LIBRARY:FILEPATH=/usr/local/Cellar/openssl@3/3.4.1/lib/libcrypto.dylib
+
+//Path to a file.
+OPENSSL_INCLUDE_DIR:PATH=/usr/local/Cellar/openssl@3/3.4.1/include
+
+//Path to a library.
+OPENSSL_SSL_LIBRARY:FILEPATH=/usr/local/Cellar/openssl@3/3.4.1/lib/libssl.dylib
+
+//Arguments to supply to pkg-config
+PKG_CONFIG_ARGN:STRING=
+
+//pkg-config executable
+PKG_CONFIG_EXECUTABLE:FILEPATH=/usr/local/bin/pkg-config
+
+//Path to a library.
+PNG_LIB_DIR:FILEPATH=/usr/local/opt/libpng/lib/libpng.dylib
+
+//Value Computed by CMake
+Paozhu_web_framework_BINARY_DIR:STATIC=/Users/hzq/cpp/FrameworkBenchmarks
+
+//Value Computed by CMake
+Paozhu_web_framework_IS_TOP_LEVEL:STATIC=ON
+
+//Value Computed by CMake
+Paozhu_web_framework_SOURCE_DIR:STATIC=/Users/hzq/cpp
+
+//Path to a library.
+QR_LIB_DIR:FILEPATH=/usr/local/opt/qrencode/lib/libqrencode.dylib
+
+//Path to a file.
+ZLIB_INCLUDE_DIR:PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/usr/include
+
+//Path to a library.
+ZLIB_LIBRARY_DEBUG:FILEPATH=ZLIB_LIBRARY_DEBUG-NOTFOUND
+
+//Path to a library.
+ZLIB_LIBRARY_RELEASE:FILEPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/usr/lib/libz.tbd
+
+//Path to a library.
+pkgcfg_lib__OPENSSL_crypto:FILEPATH=/usr/local/Cellar/openssl@3/3.4.1/lib/libcrypto.dylib
+
+//Path to a library.
+pkgcfg_lib__OPENSSL_ssl:FILEPATH=/usr/local/Cellar/openssl@3/3.4.1/lib/libssl.dylib
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/hzq/cpp/FrameworkBenchmarks
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=31
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=5
+//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
+CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/usr/local/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/bin/ctest
+//ADVANCED property for variable: CMAKE_CXX_COMPILER
+CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS
+CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
+CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
+CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
+CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
+CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER
+CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//Path to cache edit program executable.
+CMAKE_EDIT_COMMAND:INTERNAL=/usr/local/bin/ccmake
+//Executable file format
+CMAKE_EXECUTABLE_FORMAT:INTERNAL=MACHO
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
+CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Unix Makefiles
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/hzq/cpp
+//ADVANCED property for variable: CMAKE_INSTALL_NAME_TOOL
+CMAKE_INSTALL_NAME_TOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
+CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/usr/local/share/cmake
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_TAPI
+CMAKE_TAPI-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+//Details about finding OpenSSL
+FIND_PACKAGE_MESSAGE_DETAILS_OpenSSL:INTERNAL=[/usr/local/Cellar/openssl@3/3.4.1/lib/libcrypto.dylib][/usr/local/Cellar/openssl@3/3.4.1/include][c ][v3.4.1()]
+//Details about finding ZLIB
+FIND_PACKAGE_MESSAGE_DETAILS_ZLIB:INTERNAL=[/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/usr/lib/libz.tbd][/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/usr/include][c ][v1.2.12()]
+//Details about finding mysql
+FIND_PACKAGE_MESSAGE_DETAILS_mysql:INTERNAL=[/usr/local][v()]
+//ADVANCED property for variable: OPENSSL_CRYPTO_LIBRARY
+OPENSSL_CRYPTO_LIBRARY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: OPENSSL_INCLUDE_DIR
+OPENSSL_INCLUDE_DIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: OPENSSL_SSL_LIBRARY
+OPENSSL_SSL_LIBRARY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: PKG_CONFIG_ARGN
+PKG_CONFIG_ARGN-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: PKG_CONFIG_EXECUTABLE
+PKG_CONFIG_EXECUTABLE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: ZLIB_INCLUDE_DIR
+ZLIB_INCLUDE_DIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: ZLIB_LIBRARY_DEBUG
+ZLIB_LIBRARY_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: ZLIB_LIBRARY_RELEASE
+ZLIB_LIBRARY_RELEASE-ADVANCED:INTERNAL=1
+_OPENSSL_CFLAGS:INTERNAL=-I/usr/local/Cellar/openssl@3/3.4.1/include
+_OPENSSL_CFLAGS_I:INTERNAL=
+_OPENSSL_CFLAGS_OTHER:INTERNAL=
+_OPENSSL_FOUND:INTERNAL=1
+_OPENSSL_INCLUDEDIR:INTERNAL=/usr/local/Cellar/openssl@3/3.4.1/include
+_OPENSSL_INCLUDE_DIRS:INTERNAL=/usr/local/Cellar/openssl@3/3.4.1/include
+_OPENSSL_LDFLAGS:INTERNAL=-L/usr/local/Cellar/openssl@3/3.4.1/lib;-lssl;-lcrypto
+_OPENSSL_LDFLAGS_OTHER:INTERNAL=
+_OPENSSL_LIBDIR:INTERNAL=/usr/local/Cellar/openssl@3/3.4.1/lib
+_OPENSSL_LIBRARIES:INTERNAL=ssl;crypto
+_OPENSSL_LIBRARY_DIRS:INTERNAL=/usr/local/Cellar/openssl@3/3.4.1/lib
+_OPENSSL_LIBS:INTERNAL=
+_OPENSSL_LIBS_L:INTERNAL=
+_OPENSSL_LIBS_OTHER:INTERNAL=
+_OPENSSL_LIBS_PATHS:INTERNAL=
+_OPENSSL_MODULE_NAME:INTERNAL=openssl
+_OPENSSL_PREFIX:INTERNAL=/usr/local/Cellar/openssl@3/3.4.1
+_OPENSSL_STATIC_CFLAGS:INTERNAL=-I/usr/local/Cellar/openssl@3/3.4.1/include
+_OPENSSL_STATIC_CFLAGS_I:INTERNAL=
+_OPENSSL_STATIC_CFLAGS_OTHER:INTERNAL=
+_OPENSSL_STATIC_INCLUDE_DIRS:INTERNAL=/usr/local/Cellar/openssl@3/3.4.1/include
+_OPENSSL_STATIC_LDFLAGS:INTERNAL=-L/usr/local/Cellar/openssl@3/3.4.1/lib;-lssl;-lcrypto
+_OPENSSL_STATIC_LDFLAGS_OTHER:INTERNAL=
+_OPENSSL_STATIC_LIBDIR:INTERNAL=
+_OPENSSL_STATIC_LIBRARIES:INTERNAL=ssl;crypto
+_OPENSSL_STATIC_LIBRARY_DIRS:INTERNAL=/usr/local/Cellar/openssl@3/3.4.1/lib
+_OPENSSL_STATIC_LIBS:INTERNAL=
+_OPENSSL_STATIC_LIBS_L:INTERNAL=
+_OPENSSL_STATIC_LIBS_OTHER:INTERNAL=
+_OPENSSL_STATIC_LIBS_PATHS:INTERNAL=
+_OPENSSL_VERSION:INTERNAL=3.4.1
+_OPENSSL_openssl_INCLUDEDIR:INTERNAL=
+_OPENSSL_openssl_LIBDIR:INTERNAL=
+_OPENSSL_openssl_PREFIX:INTERNAL=
+_OPENSSL_openssl_VERSION:INTERNAL=
+__pkg_config_arguments__OPENSSL:INTERNAL=QUIET;openssl
+__pkg_config_checked__OPENSSL:INTERNAL=1
+//ADVANCED property for variable: pkgcfg_lib__OPENSSL_crypto
+pkgcfg_lib__OPENSSL_crypto-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: pkgcfg_lib__OPENSSL_ssl
+pkgcfg_lib__OPENSSL_ssl-ADVANCED:INTERNAL=1
+prefix_result:INTERNAL=/usr/local/Cellar/openssl@3/3.4.1/lib
+

+ 81 - 0
CMakeFiles/3.31.5/CMakeCCompiler.cmake

@@ -0,0 +1,81 @@
+set(CMAKE_C_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "AppleClang")
+set(CMAKE_C_COMPILER_VERSION "16.0.0.16000026")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17")
+set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON")
+set(CMAKE_C_STANDARD_LATEST "23")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+set(CMAKE_C17_COMPILE_FEATURES "c_std_17")
+set(CMAKE_C23_COMPILE_FEATURES "c_std_23")
+
+set(CMAKE_C_PLATFORM_ID "Darwin")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar")
+set(CMAKE_C_COMPILER_AR "")
+set(CMAKE_RANLIB "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib")
+set(CMAKE_C_COMPILER_RANLIB "")
+set(CMAKE_LINKER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld")
+set(CMAKE_LINKER_LINK "")
+set(CMAKE_LINKER_LLD "")
+set(CMAKE_C_COMPILER_LINKER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld")
+set(CMAKE_C_COMPILER_LINKER_ID "AppleClang")
+set(CMAKE_C_COMPILER_LINKER_VERSION 1115.7.3)
+set(CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT GNU)
+set(CMAKE_MT "")
+set(CMAKE_TAPI "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/tapi")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+set(CMAKE_C_LINKER_DEPFILE_SUPPORTED )
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "")
+set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+  set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/16/include;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/usr/include;/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/usr/lib;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/usr/lib/swift")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/System/Library/Frameworks")

+ 101 - 0
CMakeFiles/3.31.5/CMakeCXXCompiler.cmake

@@ -0,0 +1,101 @@
+set(CMAKE_CXX_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++")
+set(CMAKE_CXX_COMPILER_ARG1 "")
+set(CMAKE_CXX_COMPILER_ID "AppleClang")
+set(CMAKE_CXX_COMPILER_VERSION "16.0.0.16000026")
+set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_CXX_COMPILER_WRAPPER "")
+set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "98")
+set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON")
+set(CMAKE_CXX_STANDARD_LATEST "23")
+set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23")
+set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters")
+set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates")
+set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
+set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17")
+set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20")
+set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23")
+set(CMAKE_CXX26_COMPILE_FEATURES "")
+
+set(CMAKE_CXX_PLATFORM_ID "Darwin")
+set(CMAKE_CXX_SIMULATE_ID "")
+set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_CXX_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar")
+set(CMAKE_CXX_COMPILER_AR "")
+set(CMAKE_RANLIB "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib")
+set(CMAKE_CXX_COMPILER_RANLIB "")
+set(CMAKE_LINKER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld")
+set(CMAKE_LINKER_LINK "")
+set(CMAKE_LINKER_LLD "")
+set(CMAKE_CXX_COMPILER_LINKER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld")
+set(CMAKE_CXX_COMPILER_LINKER_ID "AppleClang")
+set(CMAKE_CXX_COMPILER_LINKER_VERSION 1115.7.3)
+set(CMAKE_CXX_COMPILER_LINKER_FRONTEND_VARIANT GNU)
+set(CMAKE_MT "")
+set(CMAKE_TAPI "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/tapi")
+set(CMAKE_COMPILER_IS_GNUCXX )
+set(CMAKE_CXX_COMPILER_LOADED 1)
+set(CMAKE_CXX_COMPILER_WORKS TRUE)
+set(CMAKE_CXX_ABI_COMPILED TRUE)
+
+set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
+
+set(CMAKE_CXX_COMPILER_ID_RUN 1)
+set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm;ccm;cxxm;c++m)
+set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
+
+foreach (lang IN ITEMS C OBJC OBJCXX)
+  if (CMAKE_${lang}_COMPILER_ID_RUN)
+    foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS)
+      list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension})
+    endforeach()
+  endif()
+endforeach()
+
+set(CMAKE_CXX_LINKER_PREFERENCE 30)
+set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
+set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED )
+
+# Save compiler ABI information.
+set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
+set(CMAKE_CXX_COMPILER_ABI "")
+set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN")
+set(CMAKE_CXX_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_CXX_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_CXX_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
+endif()
+
+if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
+  set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/usr/include/c++/v1;/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/16/include;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/usr/include;/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include")
+set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++")
+set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/usr/lib;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/usr/lib/swift")
+set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/System/Library/Frameworks")
+set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR "")
+
+set(CMAKE_CXX_COMPILER_IMPORT_STD "")
+### Imported target for C++23 standard library
+set(CMAKE_CXX23_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "Unsupported generator: Unix Makefiles")
+
+
+

BIN
CMakeFiles/3.31.5/CMakeDetermineCompilerABI_C.bin


BIN
CMakeFiles/3.31.5/CMakeDetermineCompilerABI_CXX.bin


+ 15 - 0
CMakeFiles/3.31.5/CMakeSystem.cmake

@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-23.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "23.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+
+
+set(CMAKE_SYSTEM "Darwin-23.6.0")
+set(CMAKE_SYSTEM_NAME "Darwin")
+set(CMAKE_SYSTEM_VERSION "23.6.0")
+set(CMAKE_SYSTEM_PROCESSOR "x86_64")
+
+set(CMAKE_CROSSCOMPILING "FALSE")
+
+set(CMAKE_SYSTEM_LOADED 1)

+ 904 - 0
CMakeFiles/3.31.5/CompilerIdC/CMakeCCompilerId.c

@@ -0,0 +1,904 @@
+#ifdef __cplusplus
+# error "A C++ compiler has been selected for C."
+#endif
+
+#if defined(__18CXX)
+# define ID_VOID_MAIN
+#endif
+#if defined(__CLASSIC_C__)
+/* cv-qualifiers did not exist in K&R C */
+# define const
+# define volatile
+#endif
+
+#if !defined(__has_include)
+/* If the compiler does not have __has_include, pretend the answer is
+   always no.  */
+#  define __has_include(x) 0
+#endif
+
+
+/* Version number components: V=Version, R=Revision, P=Patch
+   Version date components:   YYYY=Year, MM=Month,   DD=Day  */
+
+#if defined(__INTEL_COMPILER) || defined(__ICC)
+# define COMPILER_ID "Intel"
+# if defined(_MSC_VER)
+#  define SIMULATE_ID "MSVC"
+# endif
+# if defined(__GNUC__)
+#  define SIMULATE_ID "GNU"
+# endif
+  /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later,
+     except that a few beta releases use the old format with V=2021.  */
+# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111
+#  define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
+#  define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
+#  if defined(__INTEL_COMPILER_UPDATE)
+#   define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
+#  else
+#   define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER   % 10)
+#  endif
+# else
+#  define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER)
+#  define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE)
+   /* The third version component from --version is an update index,
+      but no macro is provided for it.  */
+#  define COMPILER_VERSION_PATCH DEC(0)
+# endif
+# if defined(__INTEL_COMPILER_BUILD_DATE)
+   /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
+#  define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+# endif
+# if defined(_MSC_VER)
+   /* _MSC_VER = VVRR */
+#  define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#  define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+# if defined(__GNUC__)
+#  define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
+# elif defined(__GNUG__)
+#  define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
+# endif
+# if defined(__GNUC_MINOR__)
+#  define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
+# endif
+# if defined(__GNUC_PATCHLEVEL__)
+#  define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+
+#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER)
+# define COMPILER_ID "IntelLLVM"
+#if defined(_MSC_VER)
+# define SIMULATE_ID "MSVC"
+#endif
+#if defined(__GNUC__)
+# define SIMULATE_ID "GNU"
+#endif
+/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and
+ * later.  Look for 6 digit vs. 8 digit version number to decide encoding.
+ * VVVV is no smaller than the current year when a version is released.
+ */
+#if __INTEL_LLVM_COMPILER < 1000000L
+# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100)
+# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER    % 10)
+#else
+# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000)
+# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100)
+# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER     % 100)
+#endif
+#if defined(_MSC_VER)
+  /* _MSC_VER = VVRR */
+# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+#endif
+#if defined(__GNUC__)
+# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
+#elif defined(__GNUG__)
+# define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
+#endif
+#if defined(__GNUC_MINOR__)
+# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
+#endif
+#if defined(__GNUC_PATCHLEVEL__)
+# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+#endif
+
+#elif defined(__PATHCC__)
+# define COMPILER_ID "PathScale"
+# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
+# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
+# if defined(__PATHCC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
+# endif
+
+#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
+# define COMPILER_ID "Embarcadero"
+# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
+# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
+# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__     & 0xFFFF)
+
+#elif defined(__BORLANDC__)
+# define COMPILER_ID "Borland"
+  /* __BORLANDC__ = 0xVRR */
+# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
+# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
+
+#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
+# define COMPILER_ID "Watcom"
+   /* __WATCOMC__ = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
+# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+# if (__WATCOMC__ % 10) > 0
+#  define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+# endif
+
+#elif defined(__WATCOMC__)
+# define COMPILER_ID "OpenWatcom"
+   /* __WATCOMC__ = VVRP + 1100 */
+# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
+# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+# if (__WATCOMC__ % 10) > 0
+#  define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+# endif
+
+#elif defined(__SUNPRO_C)
+# define COMPILER_ID "SunPro"
+# if __SUNPRO_C >= 0x5100
+   /* __SUNPRO_C = 0xVRRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_C    & 0xF)
+# else
+   /* __SUNPRO_CC = 0xVRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_C    & 0xF)
+# endif
+
+#elif defined(__HP_cc)
+# define COMPILER_ID "HP"
+  /* __HP_cc = VVRRPP */
+# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000)
+# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100)
+# define COMPILER_VERSION_PATCH DEC(__HP_cc     % 100)
+
+#elif defined(__DECC)
+# define COMPILER_ID "Compaq"
+  /* __DECC_VER = VVRRTPPPP */
+# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000)
+# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000  % 100)
+# define COMPILER_VERSION_PATCH DEC(__DECC_VER         % 10000)
+
+#elif defined(__IBMC__) && defined(__COMPILER_VER__)
+# define COMPILER_ID "zOS"
+  /* __IBMC__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMC__    % 10)
+
+#elif defined(__open_xl__) && defined(__clang__)
+# define COMPILER_ID "IBMClang"
+# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__)
+# define COMPILER_VERSION_MINOR DEC(__open_xl_release__)
+# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__)
+# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__)
+
+
+#elif defined(__ibmxl__) && defined(__clang__)
+# define COMPILER_ID "XLClang"
+# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__)
+# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__)
+# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__)
+# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__)
+
+
+#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800
+# define COMPILER_ID "XL"
+  /* __IBMC__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMC__    % 10)
+
+#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800
+# define COMPILER_ID "VisualAge"
+  /* __IBMC__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMC__    % 10)
+
+#elif defined(__NVCOMPILER)
+# define COMPILER_ID "NVHPC"
+# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__)
+# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__)
+# if defined(__NVCOMPILER_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__)
+# endif
+
+#elif defined(__PGI)
+# define COMPILER_ID "PGI"
+# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+# if defined(__PGIC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+# endif
+
+#elif defined(__clang__) && defined(__cray__)
+# define COMPILER_ID "CrayClang"
+# define COMPILER_VERSION_MAJOR DEC(__cray_major__)
+# define COMPILER_VERSION_MINOR DEC(__cray_minor__)
+# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__)
+# define COMPILER_VERSION_INTERNAL_STR __clang_version__
+
+
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
+# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
+
+#elif defined(__TI_COMPILER_VERSION__)
+# define COMPILER_ID "TI"
+  /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
+# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
+# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000   % 1000)
+# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__        % 1000)
+
+#elif defined(__CLANG_FUJITSU)
+# define COMPILER_ID "FujitsuClang"
+# define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
+# define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
+# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
+# define COMPILER_VERSION_INTERNAL_STR __clang_version__
+
+
+#elif defined(__FUJITSU)
+# define COMPILER_ID "Fujitsu"
+# if defined(__FCC_version__)
+#   define COMPILER_VERSION __FCC_version__
+# elif defined(__FCC_major__)
+#   define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
+#   define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
+#   define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
+# endif
+# if defined(__fcc_version)
+#   define COMPILER_VERSION_INTERNAL DEC(__fcc_version)
+# elif defined(__FCC_VERSION)
+#   define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION)
+# endif
+
+
+#elif defined(__ghs__)
+# define COMPILER_ID "GHS"
+/* __GHS_VERSION_NUMBER = VVVVRP */
+# ifdef __GHS_VERSION_NUMBER
+# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100)
+# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER      % 10)
+# endif
+
+#elif defined(__TASKING__)
+# define COMPILER_ID "Tasking"
+  # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000)
+  # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100)
+# define COMPILER_VERSION_INTERNAL DEC(__VERSION__)
+
+#elif defined(__ORANGEC__)
+# define COMPILER_ID "OrangeC"
+# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__)
+# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__)
+# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__)
+
+#elif defined(__TINYC__)
+# define COMPILER_ID "TinyCC"
+
+#elif defined(__BCC__)
+# define COMPILER_ID "Bruce"
+
+#elif defined(__SCO_VERSION__)
+# define COMPILER_ID "SCO"
+
+#elif defined(__ARMCC_VERSION) && !defined(__clang__)
+# define COMPILER_ID "ARMCC"
+#if __ARMCC_VERSION >= 1000000
+  /* __ARMCC_VERSION = VRRPPPP */
+  # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
+  # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
+  # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION     % 10000)
+#else
+  /* __ARMCC_VERSION = VRPPPP */
+  # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
+  # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
+  # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION    % 10000)
+#endif
+
+
+#elif defined(__clang__) && defined(__apple_build_version__)
+# define COMPILER_ID "AppleClang"
+# if defined(_MSC_VER)
+#  define SIMULATE_ID "MSVC"
+# endif
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+# if defined(_MSC_VER)
+   /* _MSC_VER = VVRR */
+#  define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#  define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
+
+#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION)
+# define COMPILER_ID "ARMClang"
+  # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000)
+  # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100)
+  # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100   % 100)
+# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION)
+
+#elif defined(__clang__) && defined(__ti__)
+# define COMPILER_ID "TIClang"
+  # define COMPILER_VERSION_MAJOR DEC(__ti_major__)
+  # define COMPILER_VERSION_MINOR DEC(__ti_minor__)
+  # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__)
+# define COMPILER_VERSION_INTERNAL DEC(__ti_version__)
+
+#elif defined(__clang__)
+# define COMPILER_ID "Clang"
+# if defined(_MSC_VER)
+#  define SIMULATE_ID "MSVC"
+# endif
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+# if defined(_MSC_VER)
+   /* _MSC_VER = VVRR */
+#  define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#  define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+
+#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__))
+# define COMPILER_ID "LCC"
+# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100)
+# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100)
+# if defined(__LCC_MINOR__)
+#  define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__)
+# endif
+# if defined(__GNUC__) && defined(__GNUC_MINOR__)
+#  define SIMULATE_ID "GNU"
+#  define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
+#  define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
+#  if defined(__GNUC_PATCHLEVEL__)
+#   define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+#  endif
+# endif
+
+#elif defined(__GNUC__)
+# define COMPILER_ID "GNU"
+# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
+# if defined(__GNUC_MINOR__)
+#  define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
+# endif
+# if defined(__GNUC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+
+#elif defined(_MSC_VER)
+# define COMPILER_ID "MSVC"
+  /* _MSC_VER = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
+# if defined(_MSC_FULL_VER)
+#  if _MSC_VER >= 1400
+    /* _MSC_FULL_VER = VVRRPPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
+#  else
+    /* _MSC_FULL_VER = VVRRPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
+#  endif
+# endif
+# if defined(_MSC_BUILD)
+#  define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
+# endif
+
+#elif defined(_ADI_COMPILER)
+# define COMPILER_ID "ADSP"
+#if defined(__VERSIONNUM__)
+  /* __VERSIONNUM__ = 0xVVRRPPTT */
+#  define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF)
+#  define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF)
+#  define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF)
+#  define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF)
+#endif
+
+#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
+# define COMPILER_ID "IAR"
+# if defined(__VER__) && defined(__ICCARM__)
+#  define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000)
+#  define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000)
+#  define COMPILER_VERSION_PATCH DEC((__VER__) % 1000)
+#  define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
+# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__))
+#  define COMPILER_VERSION_MAJOR DEC((__VER__) / 100)
+#  define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100))
+#  define COMPILER_VERSION_PATCH DEC(__SUBVERSION__)
+#  define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
+# endif
+
+#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC)
+# define COMPILER_ID "SDCC"
+# if defined(__SDCC_VERSION_MAJOR)
+#  define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR)
+#  define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR)
+#  define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH)
+# else
+  /* SDCC = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(SDCC/100)
+#  define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(SDCC    % 10)
+# endif
+
+
+/* These compilers are either not known or too old to define an
+  identification macro.  Try to identify the platform and guess that
+  it is the native compiler.  */
+#elif defined(__hpux) || defined(__hpua)
+# define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+# define COMPILER_ID ""
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+#ifdef SIMULATE_ID
+char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
+#endif
+
+#ifdef __QNXNTO__
+char const* qnxnto = "INFO" ":" "qnxnto[]";
+#endif
+
+#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
+char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
+#endif
+
+#define STRINGIFY_HELPER(X) #X
+#define STRINGIFY(X) STRINGIFY_HELPER(X)
+
+/* Identify known platforms by name.  */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__MSYS__)
+# define PLATFORM_ID "MSYS"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU__)
+# define PLATFORM_ID "Haiku"
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#elif defined(__WATCOMC__)
+# if defined(__LINUX__)
+#  define PLATFORM_ID "Linux"
+
+# elif defined(__DOS__)
+#  define PLATFORM_ID "DOS"
+
+# elif defined(__OS2__)
+#  define PLATFORM_ID "OS2"
+
+# elif defined(__WINDOWS__)
+#  define PLATFORM_ID "Windows3x"
+
+# elif defined(__VXWORKS__)
+#  define PLATFORM_ID "VxWorks"
+
+# else /* unknown platform */
+#  define PLATFORM_ID
+# endif
+
+#elif defined(__INTEGRITY)
+# if defined(INT_178B)
+#  define PLATFORM_ID "Integrity178"
+
+# else /* regular Integrity */
+#  define PLATFORM_ID "Integrity"
+# endif
+
+# elif defined(_ADI_COMPILER)
+#  define PLATFORM_ID "ADSP"
+
+#else /* unknown platform */
+# define PLATFORM_ID
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+   the architecture of the compiler being used.  This is because
+   the compilers do not have flags that can change the architecture,
+   but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+#  define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_ARM64EC)
+#  define ARCHITECTURE_ID "ARM64EC"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+#  define ARCHITECTURE_ID "x64"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# elif defined(_M_ARM64)
+#  define ARCHITECTURE_ID "ARM64"
+
+# elif defined(_M_ARM)
+#  if _M_ARM == 4
+#   define ARCHITECTURE_ID "ARMV4I"
+#  elif _M_ARM == 5
+#   define ARCHITECTURE_ID "ARMV5I"
+#  else
+#   define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
+#  endif
+
+# elif defined(_M_MIPS)
+#  define ARCHITECTURE_ID "MIPS"
+
+# elif defined(_M_SH)
+#  define ARCHITECTURE_ID "SHx"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__WATCOMC__)
+# if defined(_M_I86)
+#  define ARCHITECTURE_ID "I86"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
+# if defined(__ICCARM__)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(__ICCRX__)
+#  define ARCHITECTURE_ID "RX"
+
+# elif defined(__ICCRH850__)
+#  define ARCHITECTURE_ID "RH850"
+
+# elif defined(__ICCRL78__)
+#  define ARCHITECTURE_ID "RL78"
+
+# elif defined(__ICCRISCV__)
+#  define ARCHITECTURE_ID "RISCV"
+
+# elif defined(__ICCAVR__)
+#  define ARCHITECTURE_ID "AVR"
+
+# elif defined(__ICC430__)
+#  define ARCHITECTURE_ID "MSP430"
+
+# elif defined(__ICCV850__)
+#  define ARCHITECTURE_ID "V850"
+
+# elif defined(__ICC8051__)
+#  define ARCHITECTURE_ID "8051"
+
+# elif defined(__ICCSTM8__)
+#  define ARCHITECTURE_ID "STM8"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__ghs__)
+# if defined(__PPC64__)
+#  define ARCHITECTURE_ID "PPC64"
+
+# elif defined(__ppc__)
+#  define ARCHITECTURE_ID "PPC"
+
+# elif defined(__ARM__)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(__x86_64__)
+#  define ARCHITECTURE_ID "x64"
+
+# elif defined(__i386__)
+#  define ARCHITECTURE_ID "X86"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__clang__) && defined(__ti__)
+# if defined(__ARM_ARCH)
+#  define ARCHITECTURE_ID "Arm"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__TI_COMPILER_VERSION__)
+# if defined(__TI_ARM__)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(__MSP430__)
+#  define ARCHITECTURE_ID "MSP430"
+
+# elif defined(__TMS320C28XX__)
+#  define ARCHITECTURE_ID "TMS320C28x"
+
+# elif defined(__TMS320C6X__) || defined(_TMS320C6X)
+#  define ARCHITECTURE_ID "TMS320C6x"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+# elif defined(__ADSPSHARC__)
+#  define ARCHITECTURE_ID "SHARC"
+
+# elif defined(__ADSPBLACKFIN__)
+#  define ARCHITECTURE_ID "Blackfin"
+
+#elif defined(__TASKING__)
+
+# if defined(__CTC__) || defined(__CPTC__)
+#  define ARCHITECTURE_ID "TriCore"
+
+# elif defined(__CMCS__)
+#  define ARCHITECTURE_ID "MCS"
+
+# elif defined(__CARM__)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(__CARC__)
+#  define ARCHITECTURE_ID "ARC"
+
+# elif defined(__C51__)
+#  define ARCHITECTURE_ID "8051"
+
+# elif defined(__CPCP__)
+#  define ARCHITECTURE_ID "PCP"
+
+# else
+#  define ARCHITECTURE_ID ""
+# endif
+
+#else
+#  define ARCHITECTURE_ID
+#endif
+
+/* Convert integer to decimal digit literals.  */
+#define DEC(n)                   \
+  ('0' + (((n) / 10000000)%10)), \
+  ('0' + (((n) / 1000000)%10)),  \
+  ('0' + (((n) / 100000)%10)),   \
+  ('0' + (((n) / 10000)%10)),    \
+  ('0' + (((n) / 1000)%10)),     \
+  ('0' + (((n) / 100)%10)),      \
+  ('0' + (((n) / 10)%10)),       \
+  ('0' +  ((n) % 10))
+
+/* Convert integer to hex digit literals.  */
+#define HEX(n)             \
+  ('0' + ((n)>>28 & 0xF)), \
+  ('0' + ((n)>>24 & 0xF)), \
+  ('0' + ((n)>>20 & 0xF)), \
+  ('0' + ((n)>>16 & 0xF)), \
+  ('0' + ((n)>>12 & 0xF)), \
+  ('0' + ((n)>>8  & 0xF)), \
+  ('0' + ((n)>>4  & 0xF)), \
+  ('0' + ((n)     & 0xF))
+
+/* Construct a string literal encoding the version number. */
+#ifdef COMPILER_VERSION
+char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]";
+
+/* Construct a string literal encoding the version number components. */
+#elif defined(COMPILER_VERSION_MAJOR)
+char const info_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
+  COMPILER_VERSION_MAJOR,
+# ifdef COMPILER_VERSION_MINOR
+  '.', COMPILER_VERSION_MINOR,
+#  ifdef COMPILER_VERSION_PATCH
+   '.', COMPILER_VERSION_PATCH,
+#   ifdef COMPILER_VERSION_TWEAK
+    '.', COMPILER_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct a string literal encoding the internal version number. */
+#ifdef COMPILER_VERSION_INTERNAL
+char const info_version_internal[] = {
+  'I', 'N', 'F', 'O', ':',
+  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_',
+  'i','n','t','e','r','n','a','l','[',
+  COMPILER_VERSION_INTERNAL,']','\0'};
+#elif defined(COMPILER_VERSION_INTERNAL_STR)
+char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]";
+#endif
+
+/* Construct a string literal encoding the version number components. */
+#ifdef SIMULATE_VERSION_MAJOR
+char const info_simulate_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
+  SIMULATE_VERSION_MAJOR,
+# ifdef SIMULATE_VERSION_MINOR
+  '.', SIMULATE_VERSION_MINOR,
+#  ifdef SIMULATE_VERSION_PATCH
+   '.', SIMULATE_VERSION_PATCH,
+#   ifdef SIMULATE_VERSION_TWEAK
+    '.', SIMULATE_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
+
+
+
+#define C_STD_99 199901L
+#define C_STD_11 201112L
+#define C_STD_17 201710L
+#define C_STD_23 202311L
+
+#ifdef __STDC_VERSION__
+#  define C_STD __STDC_VERSION__
+#endif
+
+#if !defined(__STDC__) && !defined(__clang__)
+# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__)
+#  define C_VERSION "90"
+# else
+#  define C_VERSION
+# endif
+#elif C_STD > C_STD_17
+# define C_VERSION "23"
+#elif C_STD > C_STD_11
+# define C_VERSION "17"
+#elif C_STD > C_STD_99
+# define C_VERSION "11"
+#elif C_STD >= C_STD_99
+# define C_VERSION "99"
+#else
+# define C_VERSION "90"
+#endif
+const char* info_language_standard_default =
+  "INFO" ":" "standard_default[" C_VERSION "]";
+
+const char* info_language_extensions_default = "INFO" ":" "extensions_default["
+#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) ||           \
+     defined(__TI_COMPILER_VERSION__)) &&                                     \
+  !defined(__STRICT_ANSI__)
+  "ON"
+#else
+  "OFF"
+#endif
+"]";
+
+/*--------------------------------------------------------------------------*/
+
+#ifdef ID_VOID_MAIN
+void main() {}
+#else
+# if defined(__CLASSIC_C__)
+int main(argc, argv) int argc; char *argv[];
+# else
+int main(int argc, char* argv[])
+# endif
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+  require += info_arch[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+#ifdef COMPILER_VERSION_INTERNAL
+  require += info_version_internal[argc];
+#endif
+#ifdef SIMULATE_ID
+  require += info_simulate[argc];
+#endif
+#ifdef SIMULATE_VERSION_MAJOR
+  require += info_simulate_version[argc];
+#endif
+#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
+  require += info_cray[argc];
+#endif
+  require += info_language_standard_default[argc];
+  require += info_language_extensions_default[argc];
+  (void)argv;
+  return require;
+}
+#endif

BIN
CMakeFiles/3.31.5/CompilerIdC/CMakeCCompilerId.o


+ 919 - 0
CMakeFiles/3.31.5/CompilerIdCXX/CMakeCXXCompilerId.cpp

@@ -0,0 +1,919 @@
+/* This source file must have a .cpp extension so that all C++ compilers
+   recognize the extension without flags.  Borland does not know .cxx for
+   example.  */
+#ifndef __cplusplus
+# error "A C compiler has been selected for C++."
+#endif
+
+#if !defined(__has_include)
+/* If the compiler does not have __has_include, pretend the answer is
+   always no.  */
+#  define __has_include(x) 0
+#endif
+
+
+/* Version number components: V=Version, R=Revision, P=Patch
+   Version date components:   YYYY=Year, MM=Month,   DD=Day  */
+
+#if defined(__INTEL_COMPILER) || defined(__ICC)
+# define COMPILER_ID "Intel"
+# if defined(_MSC_VER)
+#  define SIMULATE_ID "MSVC"
+# endif
+# if defined(__GNUC__)
+#  define SIMULATE_ID "GNU"
+# endif
+  /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later,
+     except that a few beta releases use the old format with V=2021.  */
+# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111
+#  define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
+#  define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
+#  if defined(__INTEL_COMPILER_UPDATE)
+#   define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
+#  else
+#   define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER   % 10)
+#  endif
+# else
+#  define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER)
+#  define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE)
+   /* The third version component from --version is an update index,
+      but no macro is provided for it.  */
+#  define COMPILER_VERSION_PATCH DEC(0)
+# endif
+# if defined(__INTEL_COMPILER_BUILD_DATE)
+   /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
+#  define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+# endif
+# if defined(_MSC_VER)
+   /* _MSC_VER = VVRR */
+#  define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#  define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+# if defined(__GNUC__)
+#  define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
+# elif defined(__GNUG__)
+#  define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
+# endif
+# if defined(__GNUC_MINOR__)
+#  define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
+# endif
+# if defined(__GNUC_PATCHLEVEL__)
+#  define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+
+#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER)
+# define COMPILER_ID "IntelLLVM"
+#if defined(_MSC_VER)
+# define SIMULATE_ID "MSVC"
+#endif
+#if defined(__GNUC__)
+# define SIMULATE_ID "GNU"
+#endif
+/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and
+ * later.  Look for 6 digit vs. 8 digit version number to decide encoding.
+ * VVVV is no smaller than the current year when a version is released.
+ */
+#if __INTEL_LLVM_COMPILER < 1000000L
+# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100)
+# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER    % 10)
+#else
+# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000)
+# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100)
+# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER     % 100)
+#endif
+#if defined(_MSC_VER)
+  /* _MSC_VER = VVRR */
+# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+#endif
+#if defined(__GNUC__)
+# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
+#elif defined(__GNUG__)
+# define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
+#endif
+#if defined(__GNUC_MINOR__)
+# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
+#endif
+#if defined(__GNUC_PATCHLEVEL__)
+# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+#endif
+
+#elif defined(__PATHCC__)
+# define COMPILER_ID "PathScale"
+# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
+# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
+# if defined(__PATHCC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
+# endif
+
+#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
+# define COMPILER_ID "Embarcadero"
+# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
+# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
+# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__     & 0xFFFF)
+
+#elif defined(__BORLANDC__)
+# define COMPILER_ID "Borland"
+  /* __BORLANDC__ = 0xVRR */
+# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
+# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
+
+#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
+# define COMPILER_ID "Watcom"
+   /* __WATCOMC__ = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
+# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+# if (__WATCOMC__ % 10) > 0
+#  define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+# endif
+
+#elif defined(__WATCOMC__)
+# define COMPILER_ID "OpenWatcom"
+   /* __WATCOMC__ = VVRP + 1100 */
+# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
+# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+# if (__WATCOMC__ % 10) > 0
+#  define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+# endif
+
+#elif defined(__SUNPRO_CC)
+# define COMPILER_ID "SunPro"
+# if __SUNPRO_CC >= 0x5100
+   /* __SUNPRO_CC = 0xVRRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC    & 0xF)
+# else
+   /* __SUNPRO_CC = 0xVRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC    & 0xF)
+# endif
+
+#elif defined(__HP_aCC)
+# define COMPILER_ID "HP"
+  /* __HP_aCC = VVRRPP */
+# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000)
+# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100)
+# define COMPILER_VERSION_PATCH DEC(__HP_aCC     % 100)
+
+#elif defined(__DECCXX)
+# define COMPILER_ID "Compaq"
+  /* __DECCXX_VER = VVRRTPPPP */
+# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000)
+# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000  % 100)
+# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER         % 10000)
+
+#elif defined(__IBMCPP__) && defined(__COMPILER_VER__)
+# define COMPILER_ID "zOS"
+  /* __IBMCPP__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMCPP__    % 10)
+
+#elif defined(__open_xl__) && defined(__clang__)
+# define COMPILER_ID "IBMClang"
+# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__)
+# define COMPILER_VERSION_MINOR DEC(__open_xl_release__)
+# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__)
+# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__)
+
+
+#elif defined(__ibmxl__) && defined(__clang__)
+# define COMPILER_ID "XLClang"
+# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__)
+# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__)
+# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__)
+# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__)
+
+
+#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800
+# define COMPILER_ID "XL"
+  /* __IBMCPP__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMCPP__    % 10)
+
+#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800
+# define COMPILER_ID "VisualAge"
+  /* __IBMCPP__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMCPP__    % 10)
+
+#elif defined(__NVCOMPILER)
+# define COMPILER_ID "NVHPC"
+# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__)
+# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__)
+# if defined(__NVCOMPILER_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__)
+# endif
+
+#elif defined(__PGI)
+# define COMPILER_ID "PGI"
+# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+# if defined(__PGIC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+# endif
+
+#elif defined(__clang__) && defined(__cray__)
+# define COMPILER_ID "CrayClang"
+# define COMPILER_VERSION_MAJOR DEC(__cray_major__)
+# define COMPILER_VERSION_MINOR DEC(__cray_minor__)
+# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__)
+# define COMPILER_VERSION_INTERNAL_STR __clang_version__
+
+
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
+# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
+
+#elif defined(__TI_COMPILER_VERSION__)
+# define COMPILER_ID "TI"
+  /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
+# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
+# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000   % 1000)
+# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__        % 1000)
+
+#elif defined(__CLANG_FUJITSU)
+# define COMPILER_ID "FujitsuClang"
+# define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
+# define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
+# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
+# define COMPILER_VERSION_INTERNAL_STR __clang_version__
+
+
+#elif defined(__FUJITSU)
+# define COMPILER_ID "Fujitsu"
+# if defined(__FCC_version__)
+#   define COMPILER_VERSION __FCC_version__
+# elif defined(__FCC_major__)
+#   define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
+#   define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
+#   define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
+# endif
+# if defined(__fcc_version)
+#   define COMPILER_VERSION_INTERNAL DEC(__fcc_version)
+# elif defined(__FCC_VERSION)
+#   define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION)
+# endif
+
+
+#elif defined(__ghs__)
+# define COMPILER_ID "GHS"
+/* __GHS_VERSION_NUMBER = VVVVRP */
+# ifdef __GHS_VERSION_NUMBER
+# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100)
+# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER      % 10)
+# endif
+
+#elif defined(__TASKING__)
+# define COMPILER_ID "Tasking"
+  # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000)
+  # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100)
+# define COMPILER_VERSION_INTERNAL DEC(__VERSION__)
+
+#elif defined(__ORANGEC__)
+# define COMPILER_ID "OrangeC"
+# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__)
+# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__)
+# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__)
+
+#elif defined(__SCO_VERSION__)
+# define COMPILER_ID "SCO"
+
+#elif defined(__ARMCC_VERSION) && !defined(__clang__)
+# define COMPILER_ID "ARMCC"
+#if __ARMCC_VERSION >= 1000000
+  /* __ARMCC_VERSION = VRRPPPP */
+  # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
+  # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
+  # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION     % 10000)
+#else
+  /* __ARMCC_VERSION = VRPPPP */
+  # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
+  # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
+  # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION    % 10000)
+#endif
+
+
+#elif defined(__clang__) && defined(__apple_build_version__)
+# define COMPILER_ID "AppleClang"
+# if defined(_MSC_VER)
+#  define SIMULATE_ID "MSVC"
+# endif
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+# if defined(_MSC_VER)
+   /* _MSC_VER = VVRR */
+#  define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#  define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
+
+#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION)
+# define COMPILER_ID "ARMClang"
+  # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000)
+  # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100)
+  # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100   % 100)
+# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION)
+
+#elif defined(__clang__) && defined(__ti__)
+# define COMPILER_ID "TIClang"
+  # define COMPILER_VERSION_MAJOR DEC(__ti_major__)
+  # define COMPILER_VERSION_MINOR DEC(__ti_minor__)
+  # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__)
+# define COMPILER_VERSION_INTERNAL DEC(__ti_version__)
+
+#elif defined(__clang__)
+# define COMPILER_ID "Clang"
+# if defined(_MSC_VER)
+#  define SIMULATE_ID "MSVC"
+# endif
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+# if defined(_MSC_VER)
+   /* _MSC_VER = VVRR */
+#  define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#  define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+
+#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__))
+# define COMPILER_ID "LCC"
+# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100)
+# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100)
+# if defined(__LCC_MINOR__)
+#  define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__)
+# endif
+# if defined(__GNUC__) && defined(__GNUC_MINOR__)
+#  define SIMULATE_ID "GNU"
+#  define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
+#  define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
+#  if defined(__GNUC_PATCHLEVEL__)
+#   define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+#  endif
+# endif
+
+#elif defined(__GNUC__) || defined(__GNUG__)
+# define COMPILER_ID "GNU"
+# if defined(__GNUC__)
+#  define COMPILER_VERSION_MAJOR DEC(__GNUC__)
+# else
+#  define COMPILER_VERSION_MAJOR DEC(__GNUG__)
+# endif
+# if defined(__GNUC_MINOR__)
+#  define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
+# endif
+# if defined(__GNUC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+
+#elif defined(_MSC_VER)
+# define COMPILER_ID "MSVC"
+  /* _MSC_VER = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
+# if defined(_MSC_FULL_VER)
+#  if _MSC_VER >= 1400
+    /* _MSC_FULL_VER = VVRRPPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
+#  else
+    /* _MSC_FULL_VER = VVRRPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
+#  endif
+# endif
+# if defined(_MSC_BUILD)
+#  define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
+# endif
+
+#elif defined(_ADI_COMPILER)
+# define COMPILER_ID "ADSP"
+#if defined(__VERSIONNUM__)
+  /* __VERSIONNUM__ = 0xVVRRPPTT */
+#  define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF)
+#  define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF)
+#  define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF)
+#  define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF)
+#endif
+
+#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
+# define COMPILER_ID "IAR"
+# if defined(__VER__) && defined(__ICCARM__)
+#  define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000)
+#  define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000)
+#  define COMPILER_VERSION_PATCH DEC((__VER__) % 1000)
+#  define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
+# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__))
+#  define COMPILER_VERSION_MAJOR DEC((__VER__) / 100)
+#  define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100))
+#  define COMPILER_VERSION_PATCH DEC(__SUBVERSION__)
+#  define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
+# endif
+
+
+/* These compilers are either not known or too old to define an
+  identification macro.  Try to identify the platform and guess that
+  it is the native compiler.  */
+#elif defined(__hpux) || defined(__hpua)
+# define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+# define COMPILER_ID ""
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+#ifdef SIMULATE_ID
+char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
+#endif
+
+#ifdef __QNXNTO__
+char const* qnxnto = "INFO" ":" "qnxnto[]";
+#endif
+
+#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
+char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
+#endif
+
+#define STRINGIFY_HELPER(X) #X
+#define STRINGIFY(X) STRINGIFY_HELPER(X)
+
+/* Identify known platforms by name.  */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__MSYS__)
+# define PLATFORM_ID "MSYS"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU__)
+# define PLATFORM_ID "Haiku"
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#elif defined(__WATCOMC__)
+# if defined(__LINUX__)
+#  define PLATFORM_ID "Linux"
+
+# elif defined(__DOS__)
+#  define PLATFORM_ID "DOS"
+
+# elif defined(__OS2__)
+#  define PLATFORM_ID "OS2"
+
+# elif defined(__WINDOWS__)
+#  define PLATFORM_ID "Windows3x"
+
+# elif defined(__VXWORKS__)
+#  define PLATFORM_ID "VxWorks"
+
+# else /* unknown platform */
+#  define PLATFORM_ID
+# endif
+
+#elif defined(__INTEGRITY)
+# if defined(INT_178B)
+#  define PLATFORM_ID "Integrity178"
+
+# else /* regular Integrity */
+#  define PLATFORM_ID "Integrity"
+# endif
+
+# elif defined(_ADI_COMPILER)
+#  define PLATFORM_ID "ADSP"
+
+#else /* unknown platform */
+# define PLATFORM_ID
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+   the architecture of the compiler being used.  This is because
+   the compilers do not have flags that can change the architecture,
+   but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+#  define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_ARM64EC)
+#  define ARCHITECTURE_ID "ARM64EC"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+#  define ARCHITECTURE_ID "x64"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# elif defined(_M_ARM64)
+#  define ARCHITECTURE_ID "ARM64"
+
+# elif defined(_M_ARM)
+#  if _M_ARM == 4
+#   define ARCHITECTURE_ID "ARMV4I"
+#  elif _M_ARM == 5
+#   define ARCHITECTURE_ID "ARMV5I"
+#  else
+#   define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
+#  endif
+
+# elif defined(_M_MIPS)
+#  define ARCHITECTURE_ID "MIPS"
+
+# elif defined(_M_SH)
+#  define ARCHITECTURE_ID "SHx"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__WATCOMC__)
+# if defined(_M_I86)
+#  define ARCHITECTURE_ID "I86"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
+# if defined(__ICCARM__)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(__ICCRX__)
+#  define ARCHITECTURE_ID "RX"
+
+# elif defined(__ICCRH850__)
+#  define ARCHITECTURE_ID "RH850"
+
+# elif defined(__ICCRL78__)
+#  define ARCHITECTURE_ID "RL78"
+
+# elif defined(__ICCRISCV__)
+#  define ARCHITECTURE_ID "RISCV"
+
+# elif defined(__ICCAVR__)
+#  define ARCHITECTURE_ID "AVR"
+
+# elif defined(__ICC430__)
+#  define ARCHITECTURE_ID "MSP430"
+
+# elif defined(__ICCV850__)
+#  define ARCHITECTURE_ID "V850"
+
+# elif defined(__ICC8051__)
+#  define ARCHITECTURE_ID "8051"
+
+# elif defined(__ICCSTM8__)
+#  define ARCHITECTURE_ID "STM8"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__ghs__)
+# if defined(__PPC64__)
+#  define ARCHITECTURE_ID "PPC64"
+
+# elif defined(__ppc__)
+#  define ARCHITECTURE_ID "PPC"
+
+# elif defined(__ARM__)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(__x86_64__)
+#  define ARCHITECTURE_ID "x64"
+
+# elif defined(__i386__)
+#  define ARCHITECTURE_ID "X86"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__clang__) && defined(__ti__)
+# if defined(__ARM_ARCH)
+#  define ARCHITECTURE_ID "Arm"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__TI_COMPILER_VERSION__)
+# if defined(__TI_ARM__)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(__MSP430__)
+#  define ARCHITECTURE_ID "MSP430"
+
+# elif defined(__TMS320C28XX__)
+#  define ARCHITECTURE_ID "TMS320C28x"
+
+# elif defined(__TMS320C6X__) || defined(_TMS320C6X)
+#  define ARCHITECTURE_ID "TMS320C6x"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+# elif defined(__ADSPSHARC__)
+#  define ARCHITECTURE_ID "SHARC"
+
+# elif defined(__ADSPBLACKFIN__)
+#  define ARCHITECTURE_ID "Blackfin"
+
+#elif defined(__TASKING__)
+
+# if defined(__CTC__) || defined(__CPTC__)
+#  define ARCHITECTURE_ID "TriCore"
+
+# elif defined(__CMCS__)
+#  define ARCHITECTURE_ID "MCS"
+
+# elif defined(__CARM__)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(__CARC__)
+#  define ARCHITECTURE_ID "ARC"
+
+# elif defined(__C51__)
+#  define ARCHITECTURE_ID "8051"
+
+# elif defined(__CPCP__)
+#  define ARCHITECTURE_ID "PCP"
+
+# else
+#  define ARCHITECTURE_ID ""
+# endif
+
+#else
+#  define ARCHITECTURE_ID
+#endif
+
+/* Convert integer to decimal digit literals.  */
+#define DEC(n)                   \
+  ('0' + (((n) / 10000000)%10)), \
+  ('0' + (((n) / 1000000)%10)),  \
+  ('0' + (((n) / 100000)%10)),   \
+  ('0' + (((n) / 10000)%10)),    \
+  ('0' + (((n) / 1000)%10)),     \
+  ('0' + (((n) / 100)%10)),      \
+  ('0' + (((n) / 10)%10)),       \
+  ('0' +  ((n) % 10))
+
+/* Convert integer to hex digit literals.  */
+#define HEX(n)             \
+  ('0' + ((n)>>28 & 0xF)), \
+  ('0' + ((n)>>24 & 0xF)), \
+  ('0' + ((n)>>20 & 0xF)), \
+  ('0' + ((n)>>16 & 0xF)), \
+  ('0' + ((n)>>12 & 0xF)), \
+  ('0' + ((n)>>8  & 0xF)), \
+  ('0' + ((n)>>4  & 0xF)), \
+  ('0' + ((n)     & 0xF))
+
+/* Construct a string literal encoding the version number. */
+#ifdef COMPILER_VERSION
+char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]";
+
+/* Construct a string literal encoding the version number components. */
+#elif defined(COMPILER_VERSION_MAJOR)
+char const info_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
+  COMPILER_VERSION_MAJOR,
+# ifdef COMPILER_VERSION_MINOR
+  '.', COMPILER_VERSION_MINOR,
+#  ifdef COMPILER_VERSION_PATCH
+   '.', COMPILER_VERSION_PATCH,
+#   ifdef COMPILER_VERSION_TWEAK
+    '.', COMPILER_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct a string literal encoding the internal version number. */
+#ifdef COMPILER_VERSION_INTERNAL
+char const info_version_internal[] = {
+  'I', 'N', 'F', 'O', ':',
+  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_',
+  'i','n','t','e','r','n','a','l','[',
+  COMPILER_VERSION_INTERNAL,']','\0'};
+#elif defined(COMPILER_VERSION_INTERNAL_STR)
+char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]";
+#endif
+
+/* Construct a string literal encoding the version number components. */
+#ifdef SIMULATE_VERSION_MAJOR
+char const info_simulate_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
+  SIMULATE_VERSION_MAJOR,
+# ifdef SIMULATE_VERSION_MINOR
+  '.', SIMULATE_VERSION_MINOR,
+#  ifdef SIMULATE_VERSION_PATCH
+   '.', SIMULATE_VERSION_PATCH,
+#   ifdef SIMULATE_VERSION_TWEAK
+    '.', SIMULATE_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
+
+
+
+#define CXX_STD_98 199711L
+#define CXX_STD_11 201103L
+#define CXX_STD_14 201402L
+#define CXX_STD_17 201703L
+#define CXX_STD_20 202002L
+#define CXX_STD_23 202302L
+
+#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG)
+#  if _MSVC_LANG > CXX_STD_17
+#    define CXX_STD _MSVC_LANG
+#  elif _MSVC_LANG == CXX_STD_17 && defined(__cpp_aggregate_paren_init)
+#    define CXX_STD CXX_STD_20
+#  elif _MSVC_LANG > CXX_STD_14 && __cplusplus > CXX_STD_17
+#    define CXX_STD CXX_STD_20
+#  elif _MSVC_LANG > CXX_STD_14
+#    define CXX_STD CXX_STD_17
+#  elif defined(__INTEL_CXX11_MODE__) && defined(__cpp_aggregate_nsdmi)
+#    define CXX_STD CXX_STD_14
+#  elif defined(__INTEL_CXX11_MODE__)
+#    define CXX_STD CXX_STD_11
+#  else
+#    define CXX_STD CXX_STD_98
+#  endif
+#elif defined(_MSC_VER) && defined(_MSVC_LANG)
+#  if _MSVC_LANG > __cplusplus
+#    define CXX_STD _MSVC_LANG
+#  else
+#    define CXX_STD __cplusplus
+#  endif
+#elif defined(__NVCOMPILER)
+#  if __cplusplus == CXX_STD_17 && defined(__cpp_aggregate_paren_init)
+#    define CXX_STD CXX_STD_20
+#  else
+#    define CXX_STD __cplusplus
+#  endif
+#elif defined(__INTEL_COMPILER) || defined(__PGI)
+#  if __cplusplus == CXX_STD_11 && defined(__cpp_namespace_attributes)
+#    define CXX_STD CXX_STD_17
+#  elif __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi)
+#    define CXX_STD CXX_STD_14
+#  else
+#    define CXX_STD __cplusplus
+#  endif
+#elif (defined(__IBMCPP__) || defined(__ibmxl__)) && defined(__linux__)
+#  if __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi)
+#    define CXX_STD CXX_STD_14
+#  else
+#    define CXX_STD __cplusplus
+#  endif
+#elif __cplusplus == 1 && defined(__GXX_EXPERIMENTAL_CXX0X__)
+#  define CXX_STD CXX_STD_11
+#else
+#  define CXX_STD __cplusplus
+#endif
+
+const char* info_language_standard_default = "INFO" ":" "standard_default["
+#if CXX_STD > CXX_STD_23
+  "26"
+#elif CXX_STD > CXX_STD_20
+  "23"
+#elif CXX_STD > CXX_STD_17
+  "20"
+#elif CXX_STD > CXX_STD_14
+  "17"
+#elif CXX_STD > CXX_STD_11
+  "14"
+#elif CXX_STD >= CXX_STD_11
+  "11"
+#else
+  "98"
+#endif
+"]";
+
+const char* info_language_extensions_default = "INFO" ":" "extensions_default["
+#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) ||           \
+     defined(__TI_COMPILER_VERSION__)) &&                                     \
+  !defined(__STRICT_ANSI__)
+  "ON"
+#else
+  "OFF"
+#endif
+"]";
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+  require += info_arch[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+#ifdef COMPILER_VERSION_INTERNAL
+  require += info_version_internal[argc];
+#endif
+#ifdef SIMULATE_ID
+  require += info_simulate[argc];
+#endif
+#ifdef SIMULATE_VERSION_MAJOR
+  require += info_simulate_version[argc];
+#endif
+#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
+  require += info_cray[argc];
+#endif
+  require += info_language_standard_default[argc];
+  require += info_language_extensions_default[argc];
+  (void)argv;
+  return require;
+}

BIN
CMakeFiles/3.31.5/CompilerIdCXX/CMakeCXXCompilerId.o


File diff suppressed because it is too large
+ 125 - 0
CMakeFiles/CMakeConfigureLog.yaml


+ 1 - 0
CMakeFiles/cmake.check_cache

@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file

+ 0 - 13
frameworks/C++/cuehttp/README.md

@@ -1,13 +0,0 @@
-# cuehttp Benchmarking Test
-
-https://github.com/xcyl/cuehttp
-
-## Testing Source Code
-
-* [PLAINTEXT](plaintext/main.cpp)
-
-## Test URLs
-
-### PLAINTEXT
-
-http://localhost:8080/plaintext

+ 0 - 25
frameworks/C++/cuehttp/benchmark_config.json

@@ -1,25 +0,0 @@
-{
-  "framework": "cuehttp",
-  "tests": [
-    {
-      "default": {
-        "plaintext_url": "/plaintext",
-        "port": 8080,
-        "approach": "Realistic",
-        "classification": "Fullstack",
-        "database": "None",
-        "framework": "cuehttp",
-        "language": "C++",
-        "flavor": "None",
-        "orm": "None",
-        "platform": "None",
-        "webserver": "None",
-        "os": "Linux",
-        "database_os": "Linux",
-        "display_name": "cuehttp",
-        "notes": "",
-        "versus": "cuehttp"
-      }
-    }
-  ]
-}

+ 0 - 18
frameworks/C++/cuehttp/cuehttp.dockerfile

@@ -1,18 +0,0 @@
-FROM ubuntu:18.04
-
-RUN apt-get update -yqq
-RUN apt-get install -yqq g++-7 cmake git libboost-all-dev
-
-ENV CUEHTTP=/cuehttp
-
-WORKDIR /
-RUN git clone https://github.com/xcyl/cuehttp.git
-
-WORKDIR /cuehttp
-
-RUN git checkout a7f5a4c935e22d110b70c5928c8ea2ce4dcbeeb5
-
-WORKDIR /cuehttp/examples/plaintext
-RUN mkdir build && cd build && cmake .. && make -j8
-EXPOSE 8080
-CMD ./build/plaintext

+ 0 - 21
frameworks/C++/cuehttp/plaintext/CMakeLists.txt

@@ -1,21 +0,0 @@
-cmake_minimum_required(VERSION 2.6)
-
-project(plaintext)
-
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -msse4.2 -Wall -std=c++17")
-
-set(SRC main.cpp)
-include_directories($ENV{CUEHTTP}/include)
-
-find_package(Boost COMPONENTS system REQUIRED)
-include_directories(${Boost_INCLUDE_DIRS})
-
-add_executable(${PROJECT_NAME} ${SRC})
-
-target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})
-
-if (WIN32)
-    target_link_libraries(${PROJECT_NAME} ws2_32 wsock32)
-else ()
-    target_link_libraries(${PROJECT_NAME} pthread)
-endif ()

+ 0 - 17
frameworks/C++/cuehttp/plaintext/main.cpp

@@ -1,17 +0,0 @@
-#include <cuehttp.hpp>
-
-using namespace cue::http;
-
-int main(int argc, char** argv) {
-    router route;
-    route.post("/plaintext", [](context& ctx) {
-        ctx.type("text/plain");
-        ctx.status(200);
-        ctx.body("Hello, World!");
-    });
-    cuehttp app;
-    app.use(route);
-    app.listen(8080).run();
-
-    return 0;
-}

+ 10 - 6
frameworks/C++/paozhu/paozhu.dockerfile

@@ -24,10 +24,14 @@ RUN rm -Rf ./paozhu/libs
 RUN rm -Rf ./paozhu/viewsrc
 RUN rm -Rf ./paozhu/orm
 RUN rm -Rf ./paozhu/models
-RUN rm -Rf ./paozhu/common
-
-
-
+#RUN rm -Rf ./paozhu/common
+RUN rm -Rf ./paozhu/common/autocontrolmethod.hpp
+RUN rm -Rf ./paozhu/common/autorestfulpaths.hpp
+RUN rm -Rf ./paozhu/common/json_reflect_headers.h
+RUN rm -Rf ./paozhu/common/reghttpmethod_pre.hpp
+RUN rm -Rf ./paozhu/common/reghttpmethod.hpp
+RUN rm -Rf ./paozhu/common/websockets_method_reg.hpp
+RUN rm -Rf ./paozhu/common/httphook.cpp
 # COPY ./paozhu_benchmark/controller ./paozhu/
 # COPY ./paozhu_benchmark/libs ./paozhu/
 # COPY ./paozhu_benchmark/view ./paozhu/
@@ -39,7 +43,7 @@ RUN rm -Rf ./paozhu/common
 
 # RUN ls -l ./paozhu
 # RUN pwd
-RUN mkdir ./paozhu/common
+#RUN mkdir ./paozhu/common
 RUN mkdir ./paozhu/libs
 RUN mkdir ./paozhu/libs/types
 COPY ./paozhu_benchmark/libs/types/techempower_json.h ./paozhu/libs/types/
@@ -58,7 +62,7 @@ COPY ./paozhu_benchmark/common/reghttpmethod_pre.hpp ./paozhu/common/
 COPY ./paozhu_benchmark/common/reghttpmethod.hpp ./paozhu/common/
 COPY ./paozhu_benchmark/common/json_reflect_headers.h ./paozhu/common/
 
-COPY ./paozhu_benchmark/common/cost_define.h ./paozhu/common/
+#COPY ./paozhu_benchmark/common/cost_define.h ./paozhu/common/
 COPY ./paozhu_benchmark/common/autorestfulpaths.hpp ./paozhu/common/
 COPY ./paozhu_benchmark/common/websockets_method_reg.hpp ./paozhu/common/
 COPY ./paozhu_benchmark/common/httphook.cpp ./paozhu/common/

+ 4 - 0
frameworks/C++/paozhu/paozhu_benchmark/common/cost_define.h

@@ -9,4 +9,8 @@
 #define CONST_HTTP_BODY_POST_SIZE 33554432
 #define CONST_HTTP_JSON_POST_SIZE 2097152
 
+#define CONST_ORM_CLEAR_TIME 7200
+#define CONST_ORM_CLEAR_NUMBER 1024
+#define CONST_ORM_QUERY_CONNECT_TIMEOUT 30
+
 #endif

File diff suppressed because it is too large
+ 467 - 215
frameworks/C++/paozhu/paozhu_benchmark/orm/include/fortune_mysql.h


+ 1 - 1
frameworks/C++/paozhu/paozhu_benchmark/orm/include/fortunebase.h

@@ -2,7 +2,7 @@
 #define ORM_DEFAULT_FORTUNEBASEMATA_H
 /*
 *This file is auto create from cli
-*本文件为自动生成 Sun, 02 Mar 2025 10:54:30 GMT
+*本文件为自动生成 Thu, 13 Mar 2025 08:50:20 GMT
 ***/
 #include <iostream>
 #include <cstdio>

File diff suppressed because it is too large
+ 467 - 215
frameworks/C++/paozhu/paozhu_benchmark/orm/include/world_mysql.h


+ 1 - 1
frameworks/C++/paozhu/paozhu_benchmark/orm/include/worldbase.h

@@ -2,7 +2,7 @@
 #define ORM_DEFAULT_WORLDBASEMATA_H
 /*
 *This file is auto create from cli
-*本文件为自动生成 Sun, 02 Mar 2025 10:54:30 GMT
+*本文件为自动生成 Thu, 13 Mar 2025 08:50:20 GMT
 ***/
 #include <iostream>
 #include <cstdio>

+ 1 - 1
frameworks/Crystal/lucky/config/server.cr

@@ -6,7 +6,7 @@ Lucky::Server.configure do |settings|
   settings.secret_key_base = "u4PWnhZfOFXdTOtoiSBF+6jn0zHbYS6/yumo3WXYNSw"
   settings.host = "0.0.0.0"
   settings.port = 8080
-  settings.gzip_enabled = true
+  settings.gzip_enabled = false
   settings.asset_host = ""
 end
 

+ 6 - 5
frameworks/Go/echo/src/go.mod

@@ -1,6 +1,7 @@
 module echo/app
 
 go 1.22
+toolchain go1.23.7
 
 require (
 	github.com/jackc/pgx/v5 v5.6.0
@@ -16,9 +17,9 @@ require (
 	github.com/mattn/go-isatty v0.0.16 // indirect
 	github.com/valyala/bytebufferpool v1.0.0 // indirect
 	github.com/valyala/fasttemplate v1.2.1 // indirect
-	golang.org/x/crypto v0.21.0 // indirect
-	golang.org/x/net v0.23.0 // indirect
-	golang.org/x/sync v0.1.0 // indirect
-	golang.org/x/sys v0.18.0 // indirect
-	golang.org/x/text v0.14.0 // indirect
+	golang.org/x/crypto v0.35.0 // indirect
+	golang.org/x/net v0.36.0 // indirect
+	golang.org/x/sync v0.11.0 // indirect
+	golang.org/x/sys v0.30.0 // indirect
+	golang.org/x/text v0.22.0 // indirect
 )

+ 12 - 10
frameworks/Go/echo/src/go.sum

@@ -25,25 +25,27 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
+github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
 github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
 github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
 github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
-golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
-golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
-golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
-golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
-golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
-golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
+golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
+golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA=
+golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I=
+golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
+golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
 golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
-golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
-golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
+golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
+golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

+ 1 - 0
frameworks/Java/helidon/helidon-nima.dockerfile

@@ -12,5 +12,6 @@ COPY --from=maven /helidon/target/benchmark-nima.jar app.jar
 EXPOSE 8080
 
 CMD java -XX:+UseNUMA \
+    -server \
     -XX:+UseParallelGC \
     -jar app.jar

+ 18 - 16
frameworks/Java/helidon/nima/src/main/java/io/helidon/benchmark/nima/models/PgClientConnection.java

@@ -1,8 +1,12 @@
 
 package io.helidon.benchmark.nima.models;
 
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
 import io.vertx.pgclient.PgConnection;
 import io.vertx.sqlclient.PreparedQuery;
+import io.vertx.sqlclient.PreparedStatement;
 import io.vertx.sqlclient.Row;
 import io.vertx.sqlclient.RowSet;
 
@@ -11,9 +15,9 @@ public class PgClientConnection implements AutoCloseable {
     private static String SELECT_WORLD = "SELECT id, randomnumber from WORLD where id=$1";
     private static String SELECT_FORTUNE = "SELECT * from FORTUNE";
 
-    private PreparedQuery<RowSet<Row>> worldQuery;
-    private PreparedQuery<RowSet<Row>> fortuneQuery;
-    private PreparedQuery<RowSet<Row>>[] updateQuery;
+    private CompletableFuture<PreparedStatement> worldQuery;
+    private CompletableFuture<PreparedStatement> fortuneQuery;
+    private CompletableFuture<PreparedStatement>[] updateQuery;
 
     private final PgConnection conn;
 
@@ -30,30 +34,28 @@ public class PgClientConnection implements AutoCloseable {
         conn.close();
     }
 
-    public PreparedQuery<RowSet<Row>> worldQuery() {
-        return worldQuery;
+    public PreparedQuery<RowSet<Row>> worldQuery() throws ExecutionException, InterruptedException {
+        return worldQuery.get().query();
     }
 
-    public PreparedQuery<RowSet<Row>> fortuneQuery() {
-        return fortuneQuery;
+    public PreparedQuery<RowSet<Row>> fortuneQuery() throws ExecutionException, InterruptedException {
+        return fortuneQuery.get().query();
     }
 
-    public PreparedQuery<RowSet<Row>> updateQuery(int queryCount) {
-        return updateQuery[queryCount - 1];
+    public PreparedQuery<RowSet<Row>> updateQuery(int queryCount) throws ExecutionException, InterruptedException {
+        return updateQuery[queryCount - 1].get().query();
     }
 
     @SuppressWarnings("unchecked")
     void prepare() {
         try {
-            worldQuery = conn.prepare(SELECT_WORLD)
-                    .toCompletionStage().toCompletableFuture().get().query();
-            fortuneQuery = conn.prepare(SELECT_FORTUNE)
-                    .toCompletionStage().toCompletableFuture().get().query();
-            updateQuery = (PreparedQuery<RowSet<Row>>[]) new PreparedQuery<?>[UPDATE_QUERIES];
+            worldQuery = conn.prepare(SELECT_WORLD).toCompletionStage().toCompletableFuture();
+            fortuneQuery = conn.prepare(SELECT_FORTUNE).toCompletionStage().toCompletableFuture();
+            updateQuery = (CompletableFuture<PreparedStatement>[]) new CompletableFuture<?>[UPDATE_QUERIES];
             for (int i = 0; i < UPDATE_QUERIES; i++) {
                 updateQuery[i] = conn.prepare(singleUpdate(i + 1))
-                        .toCompletionStage().toCompletableFuture().get().query();
-            }
+                                     .toCompletionStage().toCompletableFuture();
+                    }
         } catch (Exception e) {
             throw new RuntimeException(e);
         }

+ 17 - 13
frameworks/Java/helidon/nima/src/main/java/io/helidon/benchmark/nima/models/PgClientConnectionPoolArray.java

@@ -1,7 +1,8 @@
 
 package io.helidon.benchmark.nima.models;
 
-import java.util.concurrent.locks.ReentrantLock;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
 import java.util.logging.Logger;
 
 import io.helidon.config.Config;
@@ -13,7 +14,7 @@ class PgClientConnectionPoolArray extends PgClientConnectionPool {
 
     private final int connections;
     private final PgClientConnection[] connectionArray;
-    private final ReentrantLock lock = new ReentrantLock();
+    private final ReadWriteLock lock = new ReentrantReadWriteLock();
 
     PgClientConnectionPoolArray(Vertx vertx, PgConnectOptions options, Config config) {
         super(vertx, options, config);
@@ -29,20 +30,23 @@ class PgClientConnectionPoolArray extends PgClientConnectionPool {
     @Override
     public PgClientConnection clientConnection() {
         int index = Thread.currentThread().hashCode() % connections;
-        PgClientConnection connection = connectionArray[index];
-        if (connection == null) {
-            try {
-                lock.lock();
-                connection = connectionArray[index];
-                if (connection == null) {
-                    connection = newConnection();
-                    connectionArray[index] = connection;
+        if (connectionArray[index] == null) {
+            lock.readLock().lock();
+            if (connectionArray[index] == null) {
+                lock.readLock().unlock();
+                lock.writeLock().lock();
+                try {
+                    if (connectionArray[index] == null) {
+                        connectionArray[index] = newConnection();
+                    }
+                } finally {
+                    lock.writeLock().unlock();
                 }
-            } finally {
-                lock.unlock();
+            } else {
+                lock.readLock().unlock();
             }
         }
-        return connection;
+        return connectionArray[index];
     }
 
     @Override

+ 0 - 31
frameworks/Java/play1/README.md

@@ -1,31 +0,0 @@
-# Play 1 framework Benchmarking Test
-
-[Play 1 framework](https://www.playframework.com/) - the high velocity web framework for Java and Scala. This is the old version - it's not Play 2.
-
-### Test sources
-
-This is the list:
-
- * [Plaintext](app/controllers/Application.java#L24)
- * [JSON](app/controllers/Application.java#L28)
- * [DB](app/controllers/Application.java#L39)
- * [Queries](app/controllers/Application.java#L45)
-
-## Software Versions
-
-The tests were run with:
-
- * [Oracle Java 10](https://www.oracle.com/java/)
- * [MySQL 5.7](http://www.mysql.com/)
-
-Please check the versions in the install and build scripts of TFB project.
-
-## Test URLs
-
-All implementations use the same URLs.
-
- * Plaintext - `http://localhost:8080/plaintext`
- * JSON - `http://localhost:8080/json`
- * DB - `http://localhost:8080/db`
- * Queries - `http://localhost:8080/query?queries=`
-

+ 0 - 132
frameworks/Java/play1/app/controllers/Application.java

@@ -1,132 +0,0 @@
-package controllers;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ThreadLocalRandom;
-
-import models.World;
-import play.db.jpa.JPAPlugin;
-import play.jobs.Job;
-import play.libs.F.Promise;
-import play.mvc.Controller;
-
-public class Application extends Controller {
-
-	private static final int TEST_DATABASE_ROWS = 10000;
-
-	public static void index() {
-		render();
-	}
-
-	public static void hello() {
-		renderText("Hello, world!");
-	}
-
-	public static void json() {
-		Map<String, String> result = new HashMap<String, String>();
-		result.put("message", "Hello, World!");
-		renderJSON(result);
-	}
-
-	/**
-	 * this version is used in the tests. it is the simplest and fastest.
-	 * 
-	 * @param queries
-	 */
-	public static void dbSync() {
-		Long id = Long.valueOf(ThreadLocalRandom.current().nextInt(TEST_DATABASE_ROWS) + 1);
-		World result = World.findById(id);
-		renderJSON(result);
-	}
-
-    public static void dbQueries(int queries) {
-		if (queries == 0) {
-			queries = 1;
-		} else if (queries > 500) {
-			queries = 500;
-        }
-		final List<World> worlds = new ArrayList<World>();
-		for (int i = 0; i < queries; ++i) {
-			Long id = Long.valueOf(ThreadLocalRandom.current().nextInt(TEST_DATABASE_ROWS) + 1);
-			World result = World.findById(id);
-			worlds.add(result);
-		}
-		renderJSON(worlds);
-    }
-
-	@play.db.jpa.NoTransaction
-	public static void setup() {
-		JPAPlugin plugin = play.Play.plugin(JPAPlugin.class);
-		plugin.startTx(true);
-
-		// clean out the old
-		World.deleteAll();
-		System.out.println("DELETED");
-		// in with the new
-		for (long i = 0; i <= TEST_DATABASE_ROWS; i++) {
-			int randomNumber = ThreadLocalRandom.current().nextInt(TEST_DATABASE_ROWS) + 1;
-			new World(i, randomNumber).save();
-			if (i % 100 == 0) {
-
-				World.em().flush();
-				World.em().clear();
-				System.out.println("FLUSHED : " + i + "/" + TEST_DATABASE_ROWS);
-
-			}
-		}
-		System.out.println("ADDED");
-		plugin.closeTx(false);
-	}
-
-	/**
-	 * note this is method is much slower than the synchronous version
-	 */
-	public static void dbAsyncEachQuery(int queries)
-			throws InterruptedException, ExecutionException {
-		if (queries == 0)
-			queries = 1;
-		final int queryCount = queries;
-		List<Promise<World>> promises = new ArrayList<Promise<World>>();
-		for (int i = 0; i < queryCount; ++i) {
-			final Long id = Long
-					.valueOf(ThreadLocalRandom.current().nextInt(TEST_DATABASE_ROWS) + 1);
-			Job<World> job = new Job<World>() {
-				public World doJobWithResult() throws Exception {
-					World result = World.findById(id);
-					return result;
-				};
-			};
-			promises.add(job.now());
-		}
-		List<World> result = await(Promise.waitAll(promises));
-		renderJSON(result);
-	}
-
-	/**
-	 * note this is method is a bit slower than the synchronous version
-	 */
-	public static void dbAsyncAllQueries(int queries)
-			throws InterruptedException, ExecutionException {
-		if (queries == 0)
-			queries = 1;
-		final int queryCount = queries;
-		final List<World> worlds = new ArrayList<World>();
-		Job<List<World>> job = new Job<List<World>>() {
-			public java.util.List<World> doJobWithResult() throws Exception {
-				for (int i = 0; i < queryCount; ++i) {
-					Long id = Long
-							.valueOf(ThreadLocalRandom.current().nextInt(TEST_DATABASE_ROWS) + 1);
-					World result = World.findById(id);
-					worlds.add(result);
-				}
-				return worlds;
-			};
-		};
-		List<World> result = job.now().get();
-		renderJSON(result);
-	}
-
-}

+ 0 - 30
frameworks/Java/play1/app/models/World.java

@@ -1,30 +0,0 @@
-package models;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-
-import play.db.jpa.GenericModel;
-import play.db.jpa.Model;
-
-import com.google.gson.annotations.SerializedName;
-
-/**
- * use a generic model as we want to explicitly define the id
- * 
- * @author tom
- * 
- */
-@Entity
-public class World extends GenericModel {
-
-	public World(long i, long number) {
-		id = i;
-		randomNumber = number ;
-	}
-
-	@Id
-	public Long id;
-
-	public Long randomNumber;
-}

+ 0 - 8
frameworks/Java/play1/app/views/Application/index.html

@@ -1,8 +0,0 @@
-
-<ul>
-<li><a href="@{Application.db(queries:100)}">DB</a></li>
-<li><a href="@{Application.dbSync(queries:100)}">DB sync</a></li>
-<li><a href="@{Application.json}">JSON test</a></li>
-<li><a href="@{Application.setup}">populate db</a></li>
-</ul>
-

+ 0 - 19
frameworks/Java/play1/app/views/errors/404.html

@@ -1,19 +0,0 @@
-<!DOCTYPE html>
-
-<html>
-    <head>
-        <title>Not found</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=${_response_encoding}"/>    
-    </head>
-    <body>
-        #{if play.mode.name() == 'DEV'}
-            #{404 result /}
-        #{/if}
-        #{else}
-            <h1>Not found</h1>
-            <p>
-                ${result.message}
-            </p>
-        #{/else}
-    </body>
-</html>

+ 0 - 21
frameworks/Java/play1/app/views/errors/500.html

@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-
-<html>
-    <head>
-        <title>Application error</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=${_response_encoding}"/>	
-    </head>
-    <body>
-        #{if play.mode.name() == 'DEV'}
-            #{500 exception /}
-        #{/if}
-        #{else}
-            <h1>Oops, an error occured</h1>
-            #{if exception instanceof play.exceptions.PlayException}
-                <p>
-                    This exception has been logged with id <strong>${exception.id}</strong>.
-                </p>
-            #{/if}
-        #{/else}
-    </body>
-</html>

+ 0 - 16
frameworks/Java/play1/app/views/main.html

@@ -1,16 +0,0 @@
-<!DOCTYPE html>
-
-<html>
-    <head>
-        <title>#{get 'title' /}</title>
-        <meta charset="${_response_encoding}">
-        <link rel="stylesheet" media="screen" href="@{'/public/stylesheets/main.css'}">
-        #{get 'moreStyles' /}
-        <link rel="shortcut icon" type="image/png" href="@{'/public/images/favicon.png'}">
-        <script src="@{'/public/javascripts/jquery-1.6.4.min.js'}" type="text/javascript" charset="${_response_encoding}"></script>
-        #{get 'moreScripts' /}
-    </head>
-    <body>
-        #{doLayout /}
-    </body>
-</html>

+ 0 - 26
frameworks/Java/play1/benchmark_config.json

@@ -1,26 +0,0 @@
-{
-  "framework": "play1",
-  "tests": [{
-    "default": {
-      "json_url": "/json",
-      "plaintext_url": "/plaintext",
-      "db_url": "/db",
-      "query_url": "/query?queries=",
-      "port": 8080,
-      "approach": "Realistic",
-      "classification": "Fullstack",
-      "database": "MySQL",
-      "framework": "play1",
-      "language": "Java",
-      "flavor": "None",
-      "orm": "Full",
-      "platform": "Netty",
-      "webserver": "None",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "play1",
-      "notes": "",
-      "versus": "netty"
-    }
-  }]
-}

+ 0 - 236
frameworks/Java/play1/conf/application.conf

@@ -1,236 +0,0 @@
-# This is the main configuration file for the application.
-# ~~~~~
-application.name=play-1.2.5
-
-# Application mode
-# ~~~~~
-# Set to dev to enable instant reloading and other development help.
-# Otherwise set to prod.
-application.mode=dev
-%prod.application.mode=prod
-
-# Secret key
-# ~~~~~
-# The secret key is used to secure cryptographics functions
-# If you deploy your application to several instances be sure to use the same key !
-application.secret=p7Abj8rpexZmmC8iPsY2PlXSo1xtHFhLKHRCHpE1ZqEgRU5TIHPcEbaryoj16vi8
-
-# i18n
-# ~~~~~
-# Define locales used by your application.
-# You can then place localized messages in conf/messages.{locale} files
-# application.langs=fr,en,ja
-
-# Date format
-# ~~~~~
-date.format=yyyy-MM-dd
-# date.format.fr=dd/MM/yyyy
-
-# Server configuration
-# ~~~~~
-# If you need to change the HTTP port, uncomment this (default is set to 9000)
-# http.port=9000
-
-#modified to match previous port on test 
-http.port=8080
-
-#
-# By default the server listen for HTTP on the wilcard address.
-# You can restrict this.
-# http.address=127.0.0.1
-#
-# Use this if you don't host your Play application at the root of the domain
-# you're serving it from. This parameter has no effect when deployed as a
-# war, because the path will be handled by the application server.
-# http.path=/
-
-# Session configuration
-# ~~~~~~~~~~~~~~~~~~~~~~
-# By default, session will be written to the transient PLAY_SESSION cookie.
-# The cookies are not secured by default, only set it to true
-# if you're serving your pages through https.
-# application.session.cookie=PLAY
-# application.session.maxAge=1h
-# application.session.secure=false
-
-# Session/Cookie sharing between subdomain
-# ~~~~~~~~~~~~~~~~~~~~~~
-# By default a cookie is only valid for a specific domain. By setting
-# application.defaultCookieDomain to '.example.com', the cookies
-# will be valid for all domains ending with '.example.com', ie:
-# foo.example.com and bar.example.com
-# application.defaultCookieDomain=.example.com
-
-# JVM configuration
-# ~~~~~
-# Define which port is used by JPDA when application is in debug mode (default is set to 8000)
-# jpda.port=8000
-#
-# Java source level => 1.5, 1.6 or 1.7 (experimental)
-# java.source=1.5
-
-# Log level
-# ~~~~~
-# Specify log level for your application.
-# If you want a very customized log, create a log4j.properties file in the conf directory
-# application.log=INFO
-#
-# More logging configuration
-# application.log.path=/log4j.properties
-# application.log.system.out=off
-
-# Database configuration
-# ~~~~~ 
-# Enable a database engine if needed.
-#
-# To quickly set up a development database, use either:
-#   - mem : for a transient in memory database (H2 in memory)
-#   - fs  : for a simple file written database (H2 file stored)
-# db=mem
-#
-# To connect to a local MySQL5 database, use:
-# db=mysql://user:pwd@host/database
-#
-# To connect to a local PostgreSQL9 database, use:
-# db=postgres://user:pwd@host/database
-#
-# If you need a full JDBC configuration use the following :
-# db.url=jdbc:postgresql:database_name
-# db.driver=org.postgresql.Driver
-# db.user=root
-# db.pass=secret
-#
-# Connections pool configuration :
-db.pool.timeout=1000
-db.pool.maxSize=30
-db.pool.minSize=10
-
-
-#
-# If you want to reuse an existing Datasource from your application server, use:
-# db=java:/comp/env/jdbc/myDatasource
-#
-# When using an existing Datasource, it's sometimes needed to destroy it when
-# the application is stopped. Depending on the datasource, you can define a
-# generic "destroy" method :
-# db.destroyMethod=close
-db.driver= com.mysql.jdbc.Driver
-db.url=jdbc:mysql://tfb-database:3306/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts&cacheRSMetadata=true&useSSL=false
-#db.url=jdbc:mysql://tfb-database:3306/hello_world
-db.user=benchmarkdbuser
-db.pass=benchmarkdbpass
-#db.jndiName=DefaultDS
-
-#db.default.driver= com.mysql.jdbc.Driver
-#db.default.url=jdbc:mysql://tfb-database:3306/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts&cacheRSMetadata=true
-#db.default.user=benchmarkdbuser
-#db.default.pass=benchmarkdbpass
-#db.default.jndiName=DefaultDS
-
-
-# JPA Configuration (Hibernate)
-# ~~~~~
-#
-# Specify the custom JPA dialect to use here (default to guess):
-# jpa.dialect=org.hibernate.dialect.PostgreSQLDialect
-#
-# Specify the ddl generation pattern to use. Set to none to disable it 
-# (default to update in DEV mode, and none in PROD mode):
-# jpa.ddl=update
-#
-# Debug SQL statements (logged using DEBUG level):
-# jpa.debugSQL=true
-#
-# You can even specify additional hibernate properties here:
-# hibernate.use_sql_comments=true
-# ...
-#
-# Store path for Blob content
-attachments.path=data/attachments
-
-# Memcached configuration
-# ~~~~~ 
-# Enable memcached if needed. Otherwise a local cache is used.
-# memcached=enabled
-#
-# Specify memcached host (default to 127.0.0.1:11211)
-# memcached.host=127.0.0.1:11211
-#
-# Or you can specify multiple host to build a distributed cache
-# memcached.1.host=127.0.0.1:11211
-# memcached.2.host=127.0.0.1:11212
-#
-# Use plain SASL to authenticate for memcached
-# memcached.user=
-# memcached.password=
-
-# HTTP Response headers control for static files
-# ~~~~~
-# Set the default max-age, telling the user's browser how long it should cache the page.
-# Default is 3600 (one hour). Set it to 0 to send no-cache.
-# This is only read in prod mode, in dev mode the cache is disabled.
-# http.cacheControl=3600
-
-# If enabled, Play will generate entity tags automatically and send a 304 when needed.
-# Default is true, set it to false to deactivate use of entity tags.
-# http.useETag=true
-
-# Custom mime types
-# mimetype.xpi=application/x-xpinstall
-
-# WS configuration
-# ~~~~~
-# Default engine is Async Http Client, uncomment to use
-# the JDK's internal implementation
-# webservice = urlfetch
-# If you need to set proxy params for WS requests
-# http.proxyHost = localhost
-# http.proxyPort = 3128
-# http.proxyUser = jojo
-# http.proxyPassword = jojo
-
-# Mail configuration
-# ~~~~~ 
-# Default is to use a mock Mailer
-mail.smtp=mock
-
-# Or, specify mail host configuration
-# mail.smtp.host=127.0.0.1
-# mail.smtp.user=admin
-# mail.smtp.pass=
-# mail.smtp.channel=ssl
-
-# Url-resolving in Jobs
-# ~~~~~~
-# When rendering templates with reverse-url-resoling (@@{..}) in Jobs (which do not have an inbound Http.Request),
-# ie if sending a HtmlMail, Play need to know which url your users use when accessing your app.
-# %test.application.baseUrl=http://localhost:9000/
-# %prod.application.baseUrl=http://www.yourdomain.com/
-
-# Jobs executor
-# ~~~~~~
-# Size of the Jobs pool
-# play.jobs.pool=10
-
-
-# Execution pool
-# ~~~~~
-# Default to 1 thread in DEV mode or (nb processors + 1) threads in PROD mode.
-# Try to keep a low as possible. 1 thread will serialize all requests (very useful for debugging purpose)
-# play.pool=3
-
-# Open file from errors pages
-# ~~~~~
-# If your text editor supports opening files by URL, Play! will
-# dynamically link error pages to files 
-#
-# Example, for textmate:
-# play.editor=txmt://open?url=file://%s&line=%s
-
-# Testing. Set up a custom configuration for test mode
-# ~~~~~
-#%test.module.cobertura=${play.path}/modules/cobertura
-%test.application.mode=dev
-%test.db.url=jdbc:h2:mem:play;MODE=MYSQL;LOCK_MODE=0
-%test.jpa.ddl=create
-%test.mail.smtp=mock

+ 0 - 4
frameworks/Java/play1/conf/dependencies.yml

@@ -1,4 +0,0 @@
-# Application dependencies
-
-require:
-    - play

+ 0 - 3
frameworks/Java/play1/conf/messages

@@ -1,3 +0,0 @@
-# You can specialize this file for each language.
-# For example, for French create a messages.fr file
-#

+ 0 - 15
frameworks/Java/play1/conf/routes

@@ -1,15 +0,0 @@
-# Routes
-# This file defines all application routes (Higher priority routes first)
-# ~~~~
-
-
-# Home page
-GET     /json                           Application.json
-GET     /db                             Application.dbSync
-GET     /query                          Application.dbQueries
-GET     /plaintext                      Application.hello
-GET     /db2                            Application.dbAsyncAllQueries
-GET     /db3                            Application.dbAsyncEachQuery
-GET     /setup                          Application.setup
-GET     /                               Application.index
-

+ 0 - 17
frameworks/Java/play1/config.toml

@@ -1,17 +0,0 @@
-[framework]
-name = "play1"
-
-[main]
-urls.plaintext = "/plaintext"
-urls.json = "/json"
-urls.db = "/db"
-urls.query = "/query?queries="
-approach = "Realistic"
-classification = "Fullstack"
-database = "MySQL"
-database_os = "Linux"
-os = "Linux"
-orm = "Full"
-platform = "Netty"
-webserver = "None"
-versus = "netty"

+ 0 - 13
frameworks/Java/play1/play1.dockerfile

@@ -1,13 +0,0 @@
-FROM openjdk:10-jdk
-WORKDIR /play1
-COPY app app
-COPY conf conf
-COPY public public
-COPY test test
-RUN wget -nv https://downloads.typesafe.com/play/1.5.2/play-1.5.2.zip
-RUN unzip -q play-1.5.2.zip
-RUN apt-get install -yqq python
-
-EXPOSE 8080
-
-CMD ["play-1.5.2/play", "run", "--%prod"]

BIN
frameworks/Java/play1/public/images/favicon.png


File diff suppressed because it is too large
+ 0 - 1
frameworks/Java/play1/public/javascripts/jquery-1.6.4.min.js


+ 0 - 0
frameworks/Java/play1/public/stylesheets/main.css


+ 0 - 7
frameworks/Java/play1/test/Application.test.html

@@ -1,7 +0,0 @@
-*{ You can use plain selenium command using the selenium tag }*
-
-#{selenium}
-    // Open the home page, and check that no error occured
-    open('/')
-    assertNotTitle('Application error')
-#{/selenium}

+ 0 - 17
frameworks/Java/play1/test/ApplicationTest.java

@@ -1,17 +0,0 @@
-import org.junit.*;
-import play.test.*;
-import play.mvc.*;
-import play.mvc.Http.*;
-import models.*;
-
-public class ApplicationTest extends FunctionalTest {
-
-    @Test
-    public void testThatIndexPageWorks() {
-        Response response = GET("/");
-        assertIsOk(response);
-        assertContentType("text/html", response);
-        assertCharset(play.Play.defaultWebEncoding, response);
-    }
-    
-}

+ 0 - 13
frameworks/Java/play1/test/BasicTest.java

@@ -1,13 +0,0 @@
-import org.junit.*;
-import java.util.*;
-import play.test.*;
-import models.*;
-
-public class BasicTest extends UnitTest {
-
-    @Test
-    public void aVeryImportantThingToTest() {
-        assertEquals(2, 1 + 1);
-    }
-
-}

+ 0 - 7
frameworks/Java/play1/test/data.yml

@@ -1,7 +0,0 @@
-# you describe your data using the YAML notation here
-# and then load them using Fixtures.load("data.yml")
-
-# User(bob):
-#   email: [email protected]
-#   password: secret
-#   fullname: Bob

+ 2 - 2
frameworks/Java/redkale/pom-jdbc.xml

@@ -7,8 +7,8 @@
 
     <properties>
         <main.class>org.redkale.boot.Application</main.class>
-        <redkale.version>2.8.0-SNAPSHOT</redkale.version>
-        <redkale-maven.version>1.2.0-SNAPSHOT</redkale-maven.version>
+        <redkale.version>2.8.1-SNAPSHOT</redkale.version>
+        <redkale-maven.version>1.2.0</redkale-maven.version>
         <postgresql.version>42.7.2</postgresql.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.compiler.source>21</maven.compiler.source>

+ 2 - 2
frameworks/Java/redkale/pom-pgclient.xml

@@ -7,8 +7,8 @@
 
     <properties>
         <main.class>org.redkale.boot.Application</main.class>
-        <redkale.version>2.8.0-SNAPSHOT</redkale.version>
-        <redkale-maven.version>1.2.0-SNAPSHOT</redkale-maven.version>
+        <redkale.version>2.8.1-SNAPSHOT</redkale.version>
+        <redkale-maven.version>1.2.0</redkale-maven.version>
         <vertx.version>4.5.8</vertx.version>
         <vertx-scram.version>2.1</vertx-scram.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

+ 2 - 2
frameworks/Java/redkale/pom.xml

@@ -7,8 +7,8 @@
 
     <properties>
         <main.class>org.redkale.boot.Application</main.class>
-        <redkale.version>2.8.0-SNAPSHOT</redkale.version>
-        <redkale-maven.version>1.2.0-SNAPSHOT</redkale-maven.version>
+        <redkale.version>2.8.1-SNAPSHOT</redkale.version>
+        <redkale-maven.version>1.2.0</redkale-maven.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.compiler.source>21</maven.compiler.source>
         <maven.compiler.target>21</maven.compiler.target>

+ 4 - 2
frameworks/Java/tio-boot/pom.xml

@@ -11,7 +11,8 @@
     <java.version>1.8</java.version>
     <maven.compiler.source>${java.version}</maven.compiler.source>
     <maven.compiler.target>${java.version}</maven.compiler.target>
-    <tio-boot.version>1.9.1</tio-boot.version>
+    <tio-boot.version>1.9.3</tio-boot.version>
+
 
     <main.class>com.litongjava.tio.http.server.MainApp</main.class>
   </properties>
@@ -25,7 +26,8 @@
     <dependency>
       <groupId>com.litongjava</groupId>
       <artifactId>java-db</artifactId>
-      <version>1.4.9</version>
+      <version>1.5.0</version>
+
     </dependency>
     <dependency>
       <groupId>junit</groupId>

+ 9 - 2
frameworks/Java/tio-http-server/pom.xml

@@ -1,4 +1,6 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.litongjava</groupId>
   <artifactId>tio-http-server-benchmark</artifactId>
@@ -17,11 +19,16 @@
       <groupId>com.litongjava</groupId>
       <artifactId>tio-http-server</artifactId>
       <version>3.7.3.v20250301-RELEASE</version>
+    </dependency>
+        <dependency>
+      <groupId>com.litongjava</groupId>
+      <artifactId>tio-core</artifactId>
+      <version>3.7.3.v20250305-RELEASE</version>
     </dependency>
     <dependency>
       <groupId>com.litongjava</groupId>
       <artifactId>java-db</artifactId>
-      <version>1.4.9</version>
+      <version>1.5.0</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>

+ 27 - 0
frameworks/JavaScript/aroma.js/README.md

@@ -0,0 +1,27 @@
+# Aroma.js Benchmarking Test
+
+From [aroma.js.org](https://aroma.js.org):
+
+> Aroma.js is a lightweight, feature-rich, and developer-friendly web framework designed to build modern web applications with ease. It provides essential features like routing, middleware, session management, cookie handling, template rendering, static file serving, and more. With its simple API, it enables rapid development of web applications with flexibility.
+
+### Test Type Implementation Source Code
+
+- [JSON](app.js)
+- [PLAINTEXT](app.js)
+
+## Important Libraries
+
+The tests were run with:
+
+- [Aroma.js](https://aroma.js.org/)
+- [NodeJS](https://nodejs.org/en/)
+
+## Test URLs
+
+### JSON
+
+http://localhost:8080/json
+
+### PLAINTEXT
+
+http://localhost:8080/plaintext

+ 36 - 0
frameworks/JavaScript/aroma.js/app.js

@@ -0,0 +1,36 @@
+
+const cluster = require('cluster'),
+  numCPUs = require('os').cpus().length,
+  Aroma = require('aroma.js');
+
+
+if (cluster.isPrimary) {
+  console.log(`Primary ${process.pid} is running`);
+
+  for (let i = 0; i < numCPUs; i++) {
+    cluster.fork();
+  }
+
+  cluster.on('exit', (worker, code, signal) => {
+    console.log(`worker ${worker.process.pid} died`);
+  });
+} else {
+  const app = module.exports = new Aroma();
+
+  app.parseUrlEncoded();
+
+   app.use((req, res, next) => {
+    res.setHeader("Server", "Aroma.js");
+    return next();
+  });
+
+  app.get('/json', (req, res) => res.send({ message: 'Hello, World!' }));
+
+  app.get('/plaintext', (req, res) => {
+    res.setHeader('Content-Type', 'text/plain');
+    res.send('Hello, World!');
+  });
+  
+
+  app.listen(8080);
+}

+ 11 - 0
frameworks/JavaScript/aroma.js/aroma.js.dockerfile

@@ -0,0 +1,11 @@
+FROM node:20.16-slim
+
+COPY ./ ./
+
+RUN npm install
+
+ENV NODE_ENV production
+
+EXPOSE 8080
+
+CMD ["node", "app.js"]

+ 21 - 0
frameworks/JavaScript/aroma.js/benchmark_config.json

@@ -0,0 +1,21 @@
+{
+    "framework": "aroma.js",
+    "tests": [{
+      "default": {
+        "json_url": "/json",
+        "plaintext_url": "/plaintext",
+        "port": 8080,
+        "approach": "Realistic",
+        "classification": "Micro",
+        "framework": "aroma.js",
+        "language": "JavaScript",
+        "flavor": "NodeJS",
+        "platform": "nodejs",
+        "webserver": "None",
+        "os": "Linux",
+        "database_os": "Linux",
+        "display_name": "aroma.js",
+        "versus": "nodejs"
+      }
+    }]
+  }

+ 5 - 6
frameworks/C++/cuehttp/config.toml → frameworks/JavaScript/aroma.js/config.toml

@@ -1,14 +1,13 @@
 [framework]
-name = "cuehttp"
+name = "aroma.js"
 
 [main]
 urls.plaintext = "/plaintext"
+urls.json = "/json"
 approach = "Realistic"
-classification = "Fullstack"
-database = "None"
+classification = "Micro"
 database_os = "Linux"
 os = "Linux"
-orm = "None"
-platform = "None"
+platform = "nodejs"
 webserver = "None"
-versus = "cuehttp"
+versus = "nodejs"

+ 8 - 0
frameworks/JavaScript/aroma.js/package.json

@@ -0,0 +1,8 @@
+{
+    "name": "aroma.js",
+    "dependencies": {
+      "aroma.js": "1.0.8"
+    },
+    "main": "app.js"
+  }
+  

+ 0 - 22
frameworks/Lua/luxure/README.md

@@ -1,22 +0,0 @@
-# Luxure Benchmarking Test
-
-### Test Type Implementation Source Code
-
-* [JSON](./server.lua)
-* [PLAINTEXT](./server.lua)
-
-## Important Libraries
-The tests were run with:
-* [luasocket](https://www.github.com/lunarmodules/luasocket)
-* [cosock](https://www.github.com/cosock/cosock)
-* [luncheon](https://www.github.com/cosock/luncheon)
-* [dkjson](https://github.com/LuaDist/dkjson)
-
-## Test URLs
-### JSON
-
-http://localhost:8080/json
-
-### PLAINTEXT
-
-http://localhost:8080/plaintext

+ 0 - 36
frameworks/Lua/luxure/luxure.dockerfile

@@ -1,36 +0,0 @@
-FROM ubuntu:22.04
-
-COPY ./server.lua /
-
-RUN DEBIAN_FRONTEND=noninteractiv \
-  apt-get update \
-  && apt-get install -y \
-  build-essential \
-  libreadline-dev \
-  unzip \
-  curl \
-  wget \
-  libssl-dev \
-  && curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz \
-  && tar -zxf lua-5.3.5.tar.gz \
-  && cd lua-5.3.5 \
-  && make linux test \
-  && make install \
-  && cd .. \
-  && rm -rf lua-5.3.5 \
-  && rm ./lua-5.3.5.tar.gz \
-  && wget https://luarocks.org/releases/luarocks-3.8.0.tar.gz \
-  && tar zxpf luarocks-3.8.0.tar.gz \
-  && cd luarocks-3.8.0 \
-  && ./configure --with-lua-include=/usr/local/include \
-  && make \
-  && make install \
-  && cd .. \
-  && rm -rf ./luarocks-3.8.0 \
-  && rm luarocks-3.8.0.tar.gz \
-  && luarocks install luxure \
-  && luarocks install dkjson
-
-EXPOSE 8080
-
-CMD lua /server.lua

+ 0 - 22
frameworks/Lua/luxure/server.lua

@@ -1,22 +0,0 @@
-local lux = require "luxure"
-local dkjson = require "dkjson"
-local server = lux.Server.new()
-
-server:use(function(req, res, next)
-  res:add_header("server", "luxure")
-  res:add_header("date", os.date("!%a, %d %b %Y %X GMT"))
-  next(req, res)
-end)
-
-server:get("/json", function(req, res)
-  res:add_header("content-type", "application/json")
-  res:send(dkjson.encode({ message = "Hello, World!" }))
-end)
-
-server:get("/plaintext", function(req,res)
-  res:add_header("content-type", "text/plain")
-  res:send("Hello, World!")
-end)
-
-server:listen(8080)
-server:run()

+ 0 - 22
frameworks/Python/crax/README.md

@@ -1,22 +0,0 @@
-# [Crax](https://crax.wiki/) Benchmark Test
-
-This is the Crax portion of a [benchmarking tests suite](../../)
-comparing a variety of web development platforms.
-
-The information below is specific to Crax. For further guidance,
-review the [documentation](https://github.com/TechEmpower/FrameworkBenchmarks/wiki).
-Also note that there is additional information provided in
-the [Python README](../).
-
-## Description
-
-[Crax](https://github.com/crax-framework/crax) is a framework or a pack of tools for web development.
-
-## Test Paths & Sources
-
-All of the test implementations are located within a single file ([app.py](hello/app.py)).
-
-## Resources
-
-* [Crax on GitHub](https://github.com/crax-framework/crax)
-* [Crax Wiki](https://crax.wiki/)

+ 0 - 27
frameworks/Python/crax/benchmark_config.json

@@ -1,27 +0,0 @@
-{
-  "framework": "crax",
-  "tests": [{
-    "default": {
-      "json_url": "/json",
-      "fortune_url": "/fortunes",
-      "plaintext_url": "/plaintext",
-      "db_url": "/db",
-      "query_url": "/queries?queries=",
-      "update_url": "/updates?queries=",
-      "port": 8080,
-      "approach": "Realistic",
-      "classification": "micro",
-      "framework": "crax",
-      "language": "Python",
-      "flavor": "Python3",
-      "platform": "None",
-      "webserver": "None",
-      "os": "Linux",
-      "orm": "Raw",
-      "database_os": "Linux",
-      "database": "Postgres",
-      "display_name": "Crax",
-      "notes": ""
-    }
-  }]
-}

+ 0 - 19
frameworks/Python/crax/config.toml

@@ -1,19 +0,0 @@
-[framework]
-name = "crax"
-
-[main]
-urls.plaintext = "/plaintext"
-urls.json = "/json"
-urls.db = "/db"
-urls.query = "/queries?queries="
-urls.update = "/updates?queries="
-urls.fortune = "/fortunes"
-approach = "Realistic"
-classification = "micro"
-database = "Postgres"
-database_os = "Linux"
-os = "Linux"
-orm = "Raw"
-platform = "None"
-webserver = "None"
-versus = "None"

+ 0 - 12
frameworks/Python/crax/crax.dockerfile

@@ -1,12 +0,0 @@
-FROM python:3.8
-
-ADD ./ /crax
-
-WORKDIR /crax
-
-RUN pip3 install cython==0.29.13 && \
-    pip3 install -r /crax/requirements.txt
-
-EXPOSE 8080
-
-CMD gunicorn hello.app:app -k uvicorn.workers.UvicornWorker -c crax_conf.py

+ 0 - 14
frameworks/Python/crax/crax_conf.py

@@ -1,14 +0,0 @@
-import multiprocessing
-import os
-
-_is_travis = os.environ.get('TRAVIS') == 'true'
-
-workers = multiprocessing.cpu_count()
-if _is_travis:
-    workers = 2
-
-bind = "0.0.0.0:8080"
-keepalive = 120
-errorlog = '-'
-pidfile = '/tmp/crax.pid'
-loglevel = 'error'

+ 0 - 0
frameworks/Python/crax/hello/__init__.py


+ 0 - 90
frameworks/Python/crax/hello/app.py

@@ -1,90 +0,0 @@
-import os
-from operator import itemgetter
-from random import randint
-import asyncpg
-from crax import Crax
-from crax.response_types import BaseResponse, JSONResponse
-from crax.urls import Route, Url
-from crax.views import JSONView, TemplateView
-
-READ_ROW_SQL = 'SELECT "id", "randomnumber" FROM "world" WHERE id = $1'
-WRITE_ROW_SQL = 'UPDATE "world" SET "randomnumber"=$1 WHERE id=$2'
-
-
-async def setup_database():
-    global connection_pool
-    connection_pool = await asyncpg.create_pool(
-        user=os.getenv('PGUSER', 'benchmarkdbuser'),
-        password=os.getenv('PGPASS', 'benchmarkdbpass'),
-        database='hello_world',
-        host='tfb-database',
-        port=5432
-    )
-
-
-def get_num_queries(request):
-    try:
-        query_count = int(request.query["queries"][0])
-    except (KeyError, IndexError, ValueError):
-        return 1
-    if query_count < 1:
-        return 1
-    if query_count > 500:
-        return 500
-    return query_count
-
-
-class TestSingleQuery(JSONView):
-    async def get(self):
-        row_id = randint(1, 10000)
-        async with connection_pool.acquire() as connection:
-            if self.request.path == '/db':
-                res = await connection.fetchval(READ_ROW_SQL, row_id)
-                self.context = {'id': row_id, 'randomNumber': res}
-
-
-class TestMultiQueries(JSONView):
-    async def get(self):
-        row_ids = [randint(1, 10000) for _ in range(get_num_queries(self.request))]
-        worlds = []
-        async with connection_pool.acquire() as connection:
-            statement = await connection.prepare(READ_ROW_SQL)
-            for row_id in row_ids:
-                number = await statement.fetchval(row_id)
-                worlds.append({'id': row_id, 'randomNumber': number})
-            self.context = worlds
-
-
-class TestUpdates(JSONView):
-    async def get(self):
-        updates = [(randint(1, 10000), randint(1, 10000)) for _ in range(get_num_queries(self.request))]
-        worlds = [{'id': row_id, 'randomNumber': number} for row_id, number in updates]
-        async with connection_pool.acquire() as connection:
-            statement = await connection.prepare(READ_ROW_SQL)
-            for row_id, number in updates:
-                await statement.fetchval(row_id)
-            await connection.executemany(WRITE_ROW_SQL, updates)
-            self.context = worlds
-
-
-class TestSingleFortunes(TemplateView):
-    template = "fortune.html"
-
-    async def get(self):
-        async with connection_pool.acquire() as connection:
-            fortunes = await connection.fetch('SELECT * FROM Fortune')
-            fortunes.append([0, 'Additional fortune added at request time.'])
-            fortunes.sort(key=itemgetter(1))
-            self.context["fortunes"] = fortunes
-
-
-APPLICATIONS = ["hello"]
-URL_PATTERNS = [
-    Route(Url('/json'), JSONResponse(None, {'message': 'Hello, world!'})),
-    Route(Url('/plaintext'), BaseResponse(None, b'Hello, world!')),
-    Route(Url('/db'), TestSingleQuery),
-    Route(Url('/queries'), TestMultiQueries),
-    Route(Url('/updates'), TestUpdates),
-    Route(Url('/fortunes'), TestSingleFortunes)
-]
-app = Crax('hello.app', debug=True, on_startup=setup_database)

+ 0 - 10
frameworks/Python/crax/hello/templates/fortune.html

@@ -1,10 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head><title>Fortunes</title></head>
-<body>
-<table>
-<tr><th>id</th><th>message</th></tr>
-{% for fortune in fortunes %}<tr><td>{{ fortune[0] }}</td><td>{{ fortune[1]|e }}</td></tr>
-{% endfor %}</table>
-</body>
-</html>

+ 0 - 5
frameworks/Python/crax/requirements.txt

@@ -1,5 +0,0 @@
-crax[postgresql]==0.1.5
-gunicorn==20.1.0
-uvloop==0.17.0
-uvicorn==0.20.0
-httptools==0.5.0

+ 1 - 0
frameworks/Python/flask/requirements.txt

@@ -10,3 +10,4 @@ Jinja2==3.1.4
 MarkupSafe==2.1.2
 ujson==5.4.0
 orjson==3.8.7; implementation_name=='cpython' 
+Werkzeug==2.3.8

+ 0 - 0
frameworks/Python/hug/README.md


+ 0 - 29
frameworks/Python/hug/app.py

@@ -1,29 +0,0 @@
-import hug
-
-from datetime import datetime
-
-
-# Create decorators for mimetypes (JSON is default)
-plaintext = hug.get(output=hug.output_format.text)
-json      = hug.get(output=hug.output_format.json)
-
-
-# Create a directive to add necessary headers
[email protected]_middleware()
-def set_required_headers(request, response, resource):
-    date_obj      = datetime.now()
-    rfc_1123      = "%a, %d %b %Y %H:%M:%S GMT"
-    rfc_1123_date = date_obj.strftime(rfc_1123)
-
-    headers       = { "Server": "hug", "Date": rfc_1123_date }
-
-    response.set_headers(headers)
-
-
-@plaintext
[email protected]("/plaintext")
-def plaintext():
-    """Plaintext handler."""
-    return "Hello, World!"
-
-app = hug.API(__name__).http.server()

+ 0 - 25
frameworks/Python/hug/benchmark_config.json

@@ -1,25 +0,0 @@
-{
-  "framework": "hug",
-  "tests": [
-    {
-      "default": {
-        "plaintext_url": "/plaintext",
-        "port": 8080,
-        "approach": "Realistic",
-        "classification": "Micro",
-        "database": "None",
-        "framework": "Hug",
-        "language": "Python",
-        "flavor": "Python3",
-        "orm": "Raw",
-        "platform": "Falcon",
-        "webserver": "None",
-        "os": "Linux",
-        "database_os": "Linux",
-        "display_name": "Hug",
-        "notes": "CPython 2",
-        "versus": "wsgi"
-      }
-    }
-  ]
-}

+ 0 - 12
frameworks/Python/hug/hug.dockerfile

@@ -1,12 +0,0 @@
-FROM python:3.6.6-stretch
-
-WORKDIR /hug
-COPY app.py app.py
-COPY uwsgi.ini uwsgi.ini
-COPY requirements.txt requirements.txt
-
-RUN pip3 install -r requirements.txt
-
-EXPOSE 8080
-
-CMD ["uwsgi", "--ini", "uwsgi.ini"]

+ 0 - 6
frameworks/Python/hug/requirements.txt

@@ -1,6 +0,0 @@
-Cython==0.28.5
-hug==2.3.2
-uWSGI==2.0.17.1
-greenlet==0.4.14
-gunicorn==19.9.0
-meinheld==0.6.1

+ 0 - 13
frameworks/Python/hug/uwsgi.ini

@@ -1,13 +0,0 @@
-; These preferences specifically tuned for performance.
-
-[uwsgi]
-http=:8080
-chdir=/hug
-wsgi-file=/hug/app.py
-callable=app
-workers=%(%k * 2 + 1)
-processes=%k
-enable-threads=True
-threads=1
-disable-logging=True
-max-worker-lifetime=30

+ 0 - 50
frameworks/Python/morepath/README.md

@@ -1,50 +0,0 @@
-# [Morepath](http://morepath.readthedocs.io/) Benchmark Test
-
-The information below is specific to Morepath. For further guidance,
-review the [documentation](https://github.com/TechEmpower/FrameworkBenchmarks/wiki).
-Also note that there is additional information that's provided in
-the [Python README](../).
-
-This is the Python Morepath portion of a [benchmarking tests suite](../../)
-comparing a variety of frameworks.
-
-All test implementations are located within ([./app](app)).
-
-## Description
-
-Morepath with [PonyOrm](https://docs.ponyorm.com/) using PostgreSQL for
-database access.
-
-### Database
-
-PostgreSQL (with PonyORM).
-
-### Server
-
-gunicorn + meinheld on CPython
-
-## Test URLs
-
-### Test 1: JSON Encoding
-
-    http://localhost:8080/json
-
-### Test 2: Single Row Query
-
-    http://localhost:8080/db
-
-### Test 3: Multi Row Query
-
-    http://localhost:8080/queries?queries=20
-
-### Test 4: Fortunes (Template rendering)
-
-    http://localhost:8080/fortunes
-
-### Test 5: Update Query
-
-    http://localhost:8080/updates?queries=20
-
-### Test 6: Plaintext
-
-    http://localhost:8080/plaintext

+ 0 - 3
frameworks/Python/morepath/app/__init__.py

@@ -1,3 +0,0 @@
-# flake8: noqa
-
-from app.app import App

+ 0 - 11
frameworks/Python/morepath/app/app.py

@@ -1,11 +0,0 @@
-from more.pony import PonyApp
-from more.jinja2 import Jinja2App
-
-
-class App(PonyApp, Jinja2App):
-    pass
-
-
[email protected]_directory()
-def get_template_directory():
-    return 'templates'

+ 0 - 6
frameworks/Python/morepath/app/collection.py

@@ -1,6 +0,0 @@
-from .model import Fortune
-
-
-class FortuneCollection(object):
-    def query(self):
-        return Fortune.select()

+ 0 - 29
frameworks/Python/morepath/app/model.py

@@ -1,29 +0,0 @@
-from pony.orm import Database, Optional
-
-db = Database()
-
-
-class Json():
-    pass
-
-
-class World(db.Entity):
-    randomnumber = Optional(int)
-
-
-class WorldQueries():
-    def __init__(self, queries):
-        self.queries = queries
-
-
-class Fortune(db.Entity):
-    message = Optional(str)
-
-
-class WorldUpdates():
-    def __init__(self, queries):
-        self.queries = queries
-
-
-class Plaintext():
-    pass

+ 0 - 35
frameworks/Python/morepath/app/path.py

@@ -1,35 +0,0 @@
-from random import randint
-
-from .app import App
-from .model import Json, World, WorldQueries, WorldUpdates, Plaintext
-from .collection import FortuneCollection
-
-
[email protected](model=Json, path='json')
-def get_json():
-    return Json()
-
-
[email protected](model=World, path='db')
-def get_random_world():
-    return World[randint(1, 10000)]
-
-
[email protected](model=WorldQueries, path='queries')
-def get_queries(queries):
-    return WorldQueries(queries)
-
-
[email protected](model=FortuneCollection, path='fortunes')
-def get_fortunes():
-    return FortuneCollection()
-
-
[email protected](model=WorldUpdates, path='updates')
-def get_updates(queries):
-    return WorldUpdates(queries)
-
-
[email protected](model=Plaintext, path='plaintext')
-def get_plaintext():
-    return Plaintext()

+ 0 - 31
frameworks/Python/morepath/app/run.py

@@ -1,31 +0,0 @@
-import os
-
-import morepath
-
-from app import App
-from .model import db
-
-
-def setup_db():
-    DBHOST = 'tfb-database'
-
-    db.bind(
-        'postgres',
-        user='benchmarkdbuser',
-        password='benchmarkdbpass',
-        host=DBHOST,
-        database='hello_world'
-    )
-    db.generate_mapping(create_tables=True)
-
-
-def wsgi_factory():   # pragma: no cover
-    morepath.autoscan()
-
-    App.commit()
-    setup_db()
-
-    return App()
-
-
-application = wsgi_factory()   # pragma: no cover

+ 0 - 21
frameworks/Python/morepath/app/templates/fortune.jinja2

@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-
-<html>
-<head>
-<title>Fortunes</title>
-</head>
-<body>
-<table>
-<tr>
-<th>id</th>
-<th>message</th>
-</tr>
-{% for fortune in fortunes %}
-<tr>
-<td>{{ fortune.id }}</td>
-<td>{{ fortune.message|escape }}</td>
-</tr>
-{% endfor %}
-</table>
-</body>
-</html>

+ 0 - 259
frameworks/Python/morepath/app/tests/test_app.py

@@ -1,259 +0,0 @@
-from webtest import TestApp as Client
-import morepath
-
-import app
-from app import App
-
-
-def setup_module(module):
-    morepath.scan(app)
-    morepath.commit(App)
-
-
-def test_json():
-    """/json"""
-    app = App()
-    c = Client(app)
-
-    response = c.get('/json', status=200)
-    assert response.headerlist == [
-        ('Content-Type', 'application/json'),
-        ('Content-Length', '27')
-    ]
-    assert response.json == {"message": "Hello, World!"}
-
-
-def test_db():
-    """/db"""
-    app = App()
-    c = Client(app)
-
-    response = c.get('/db', status=200)
-    assert response.content_type == 'application/json'
-    assert 'id' in response.json
-    assert 'randomNumber' in response.json
-    assert 1 <= response.json['id'] <= 10000
-    assert 1 <= response.json['randomNumber'] <= 10000
-
-
-def test_queries():
-    """/queries?queries="""
-    app = App()
-    c = Client(app)
-
-    response = c.get('/queries?queries=', status=200)
-    assert response.content_type == 'application/json'
-    assert len(response.json) == 1
-
-
-def test_queries_foo():
-    """/queries?queries=foo"""
-    app = App()
-    c = Client(app)
-
-    response = c.get('/queries?queries=foo', status=200)
-    assert response.content_type == 'application/json'
-    assert len(response.json) == 1
-
-
-def test_queries_0():
-    """/queries?queries=0"""
-    app = App()
-    c = Client(app)
-
-    response = c.get('/queries?queries=0', status=200)
-    assert response.content_type == 'application/json'
-    assert len(response.json) == 1
-
-
-def test_queries_999():
-    """/queries?queries=999"""
-    app = App()
-    c = Client(app)
-
-    response = c.get('/queries?queries=999', status=200)
-    assert response.content_type == 'application/json'
-    assert len(response.json) == 500
-
-
-def test_queries_10():
-    """/queries?queries=10"""
-    app = App()
-    c = Client(app)
-
-    response = c.get('/queries?queries=10', status=200)
-    assert response.content_type == 'application/json'
-    assert len(response.json) == 10
-
-    obj_list = response.json
-    for obj in obj_list:
-        assert 'id' in obj
-        assert 'randomNumber' in obj
-        assert 1 <= obj['id'] <= 10000
-        assert 1 <= obj['randomNumber'] <= 10000
-
-
-def test_fortunes():
-    """/fortunes"""
-    app = App()
-    c = Client(app)
-
-    response = c.get('/fortunes', status=200)
-    assert response.headerlist == [
-        ('Content-Type', 'text/html; charset=UTF-8'),
-        ('Content-Length', '1304')
-    ]
-    assert response.text == fortunes
-
-
-def test_updates():
-    """/updates?queries="""
-    app = App()
-    c = Client(app)
-
-    response = c.get('/updates?queries=', status=200)
-    assert response.content_type == 'application/json'
-    assert len(response.json) == 1
-
-
-def test_updates_foo():
-    """/updates?queries=foo"""
-    app = App()
-    c = Client(app)
-
-    response = c.get('/updates?queries=foo', status=200)
-    assert response.content_type == 'application/json'
-    assert len(response.json) == 1
-
-
-def test_updates_0():
-    """/updates?queries=0"""
-    app = App()
-    c = Client(app)
-
-    response = c.get('/updates?queries=0', status=200)
-    assert response.content_type == 'application/json'
-    assert len(response.json) == 1
-
-
-def test_updates_999():
-    """/updates?queries=999"""
-    app = App()
-    c = Client(app)
-
-    response = c.get('/updates?queries=999', status=200)
-    assert response.content_type == 'application/json'
-    assert len(response.json) == 500
-
-
-def test_updates_10():
-    """/updates?queries=10"""
-    app = App()
-    c = Client(app)
-
-    response = c.get('/updates?queries=10', status=200)
-    assert response.content_type == 'application/json'
-    assert len(response.json) == 10
-
-    obj_list = response.json
-    for obj in obj_list:
-        assert 'id' in obj
-        assert 'randomNumber' in obj
-        assert 1 <= obj['id'] <= 10000
-        assert 1 <= obj['randomNumber'] <= 10000
-
-
-def test_plaintext():
-    """/plaintext"""
-    app = App()
-    c = Client(app)
-
-    response = c.get('/plaintext', status=200)
-    assert response.headerlist == [
-        ('Content-Type', 'text/plain; charset=UTF-8'),
-        ('Content-Length', '13')
-    ]
-    assert response.text == 'Hello, World!'
-
-
-fortunes = """<!DOCTYPE html>
-
-<html>
-<head>
-<title>Fortunes</title>
-</head>
-<body>
-<table>
-<tr>
-<th>id</th>
-<th>message</th>
-</tr>
-
-<tr>
-<td>11</td>
-<td>&lt;script&gt;alert(&#34;This should not be displayed in a browser alert box.&#34;);&lt;/script&gt;</td>
-</tr>
-
-<tr>
-<td>4</td>
-<td>A bad random number generator: 1, 1, 1, 1, 1, 4.33e+67, 1, 1, 1</td>
-</tr>
-
-<tr>
-<td>5</td>
-<td>A computer program does what you tell it to do, not what you want it to do.</td>
-</tr>
-
-<tr>
-<td>2</td>
-<td>A computer scientist is someone who fixes things that aren&#39;t broken.</td>
-</tr>
-
-<tr>
-<td>8</td>
-<td>A list is only as strong as its weakest link. — Donald Knuth</td>
-</tr>
-
-<tr>
-<td>0</td>
-<td>Additional fortune added at request time.</td>
-</tr>
-
-<tr>
-<td>3</td>
-<td>After enough decimal places, nobody gives a damn.</td>
-</tr>
-
-<tr>
-<td>7</td>
-<td>Any program that runs right is obsolete.</td>
-</tr>
-
-<tr>
-<td>10</td>
-<td>Computers make very fast, very accurate mistakes.</td>
-</tr>
-
-<tr>
-<td>6</td>
-<td>Emacs is a nice operating system, but I prefer UNIX. — Tom Christaensen</td>
-</tr>
-
-<tr>
-<td>9</td>
-<td>Feature: A bug with seniority.</td>
-</tr>
-
-<tr>
-<td>1</td>
-<td>fortune: No such file or directory</td>
-</tr>
-
-<tr>
-<td>12</td>
-<td>フレームワークのベンチマーク</td>
-</tr>
-
-</table>
-</body>
-</html>"""

+ 0 - 79
frameworks/Python/morepath/app/view.py

@@ -1,79 +0,0 @@
-from random import randint
-
-from .app import App
-from .model import Json, World, WorldQueries, WorldUpdates, Plaintext
-from .collection import FortuneCollection
-
-
[email protected](model=Json)
-def test_1(self, request):
-    """Test 1: JSON serialization"""
-    return {'message': 'Hello, World!'}
-
-
[email protected](model=World)
-def test_2(self, request):
-    """Test 2: Single database query"""
-    return {'id': self.id, 'randomNumber': self.randomnumber}
-
-
[email protected](model=WorldQueries)
-def test_3(self, request):
-    """Test 3: Multiple database queries"""
-    try:
-        queries = int(self.queries)
-    except ValueError:
-        queries = 1
-    else:
-        if queries < 1:
-            queries = 1
-        elif queries > 500:
-            queries = 500
-
-    result = []
-
-    for id_ in [randint(1, 10000) for _ in range(queries)]:
-        result.append({'id': id_, 'randomNumber': World[id_].randomnumber})
-
-    return result
-
-
[email protected](model=FortuneCollection, template='fortune.jinja2')
-def test_4(self, request):
-    """Test 4: Fortunes"""
-    fortunes = [f.to_dict() for f in self.query()]
-    fortunes.append({
-        'id': 0,
-        'message': 'Additional fortune added at request time.'
-    })
-
-    return {'fortunes': sorted(fortunes, key=lambda x: x['message'])}
-
-
[email protected](model=WorldUpdates)
-def test_5(self, request):
-    """Test 5: Database updates"""
-    try:
-        queries = int(self.queries)
-    except ValueError:
-        queries = 1
-    else:
-        if queries < 1:
-            queries = 1
-        elif queries > 500:
-            queries = 500
-
-    result = []
-
-    for id_ in sorted(randint(1, 10000) for _ in range(queries)):
-        randomNumber = randint(1, 10000)
-        World[id_].randomnumber = randomNumber
-        result.append({'id': id_, 'randomNumber': randomNumber})
-
-    return result
-
-
[email protected](model=Plaintext)
-def test_6(self, request):
-    """Test 6: Plaintext"""
-    return 'Hello, World!'

+ 0 - 27
frameworks/Python/morepath/benchmark_config.json

@@ -1,27 +0,0 @@
-{
-  "framework": "morepath",
-  "tests": [{
-    "default": {
-      "json_url": "/json",
-      "db_url": "/db",
-      "query_url": "/queries?queries=",
-      "fortune_url": "/fortunes",
-      "update_url": "/updates?queries=",
-      "plaintext_url": "/plaintext",
-      "port": 8080,
-      "approach": "Realistic",
-      "classification": "Micro",
-      "database": "Postgres",
-      "framework": "morepath",
-      "language": "Python",
-      "flavor": "Python3",
-      "orm": "Full",
-      "platform": "Meinheld",
-      "webserver": "gunicorn",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "Morepath",
-      "notes": "uses Morepath with PonyORM for database access"
-    }
-  }]
-}

+ 0 - 19
frameworks/Python/morepath/config.toml

@@ -1,19 +0,0 @@
-[framework]
-name = "morepath"
-
-[main]
-urls.plaintext = "/plaintext"
-urls.json = "/json"
-urls.db = "/db"
-urls.query = "/queries?queries="
-urls.update = "/updates?queries="
-urls.fortune = "/fortunes"
-approach = "Realistic"
-classification = "Micro"
-database = "Postgres"
-database_os = "Linux"
-os = "Linux"
-orm = "Full"
-platform = "Meinheld"
-webserver = "gunicorn"
-versus = "None"

+ 0 - 14
frameworks/Python/morepath/gunicorn_conf.py

@@ -1,14 +0,0 @@
-import multiprocessing
-import os
-
-if os.environ.get('TRAVIS') == 'true':
-    workers = 2
-else:
-    workers = multiprocessing.cpu_count() * 3
-
-bind = '0.0.0.0:8080'
-keepalive = 120
-errorlog = '-'
-pidfile = 'gunicorn.pid'
-
-worker_class = "meinheld.gmeinheld.MeinheldWorker"

+ 0 - 11
frameworks/Python/morepath/morepath.dockerfile

@@ -1,11 +0,0 @@
-FROM python:3.6.6-stretch
-
-ADD ./ /japronto
-
-WORKDIR /japronto
-
-RUN pip3 install -r /japronto/requirements.txt
-
-EXPOSE 8080
-
-CMD gunicorn app.run -c gunicorn_conf.py

+ 0 - 17
frameworks/Python/morepath/requirements.txt

@@ -1,17 +0,0 @@
-dectate==0.13
-greenlet==0.4.14
-gunicorn==19.9.0
-importscan==0.1
-Jinja2==2.11.3
-MarkupSafe==1.0
-meinheld==1.0.2
-more.jinja2==0.2
-more.pony==0.1
-morepath==0.18.1
-pony==0.7.1
-psycopg2==2.7.5
-reg==0.11
-repoze.lru==0.6
-WebOb==1.8.8
-
--e .

+ 0 - 41
frameworks/Python/morepath/setup.py

@@ -1,41 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from setuptools import setup, find_packages
-
-setup(
-    name='frameworkbenchmarks',
-    version='0.0',
-    description='FrameworkBenchmarks',
-    author='',
-    author_email='',
-    url='',
-    packages=find_packages(),
-    include_package_data=True,
-    zip_safe=False,
-    platforms='any',
-    install_requires=[
-        'more.pony',
-        'psycopg2',
-        'more.jinja2',
-        'gunicorn',
-        'meinheld',
-    ],
-    extras_require=dict(
-        test=[
-            'pytest >= 2.9.1',
-            'WebTest >= 2.0.14',
-            'pytest-cov',
-        ]
-    ),
-    entry_points=dict(
-        morepath=[
-            'scan = app',
-        ],
-    ),
-    classifiers=[
-        'Programming Language :: Python',
-        'Framework :: Morepath',
-        'Topic :: Internet :: WWW/HTTP',
-        'Topic :: Internet :: WWW/HTTP :: WSGI :: Application',
-    ]
-)

+ 1 - 1
frameworks/Python/quart/requirements.txt

@@ -14,5 +14,5 @@ priority==2.0.0
 quart==0.18.0
 toml==0.10.2
 uvloop==0.16.0
-Werkzeug==3.0.3
+Werkzeug==2.3.8
 wsproto==1.2.0

+ 0 - 2
frameworks/Python/starlite/.dockerignore

@@ -1,2 +0,0 @@
-.venv
-README.md

+ 0 - 17
frameworks/Python/starlite/README.md

@@ -1,17 +0,0 @@
-# Starlite Benchmarking Test
-
-This is the Starlite portion of a [benchmarking tests suite](../../)
-comparing a variety of web development platforms.
-
-The information below is specific to Starlite. For further guidance,
-review the [documentation](https://github.com/TechEmpower/FrameworkBenchmarks/wiki).
-Also note that there is additional information provided in
-the [Python README](../).
-
-## Description# Starlite
-
-Starlite is a powerful, performant, flexible and opinionated ASGI framework,
-offering first class typing support and a full [Pydantic](https://github.com/samuelcolvin/pydantic)
-integration.
-
-Check out the [documentation 📚](https://starlite-api.github.io/starlite/).

+ 0 - 121
frameworks/Python/starlite/app.py

@@ -1,121 +0,0 @@
-import asyncio
-import os
-from operator import itemgetter
-from random import randint, sample
-from typing import Any
-
-import uvloop
-from asyncpg import create_pool
-from jinja2 import Template
-from starlite import MediaType, Starlite, get
-
-asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
-connection_pool: Any = None
-
-
-async def init_connection_pool() -> None:
-    global connection_pool
-    connection_pool = await create_pool(
-        user=os.getenv('PGUSER', 'benchmarkdbuser'),
-        password=os.getenv('PGPASS', 'benchmarkdbpass'),
-        database='hello_world',
-        host='tfb-database',
-        port=5432
-    )
-
-
-def normalize_queries(value: str | None) -> int:
-    queries = int(value) if value and value.isnumeric() else 1
-    if queries > 500:
-        return 500
-    if queries < 1:
-        return 1
-    return queries
-
-
-def load_fortunes_template() -> "Template":
-    path = os.path.join('templates', 'fortune.html')
-    with open(path, 'r') as template_file:
-        template_text = template_file.read()
-        return Template(template_text)
-
-
-fortune_template = load_fortunes_template()
-
-
-@get(path='/json')
-def json_serialization() -> dict[str, str]:
-    return {'message': 'Hello, world!'}
-
-
-@get(path='/db')
-async def single_database_query() -> dict[str, int]:
-    row_id = randint(1, 10000)
-    async with connection_pool.acquire() as connection:
-        number = await connection.fetchval(
-            'SELECT "randomnumber", "id" FROM "world" WHERE id = $1',
-            row_id
-        )
-
-    return {'id': row_id, 'randomNumber': number}
-
-
-@get(path='/queries')
-async def multiple_database_queries(queries: None | str = None) -> list[dict[str, int]]:
-    row_ids = sample(range(1, 10000), normalize_queries(queries))
-    worlds = []
-
-    async with connection_pool.acquire() as connection:
-        statement = await connection.prepare('SELECT "randomnumber", "id" FROM "world" WHERE id = $1')
-        for row_id in row_ids:
-            number = await statement.fetchval(row_id)
-            worlds.append({'id': row_id, 'randomNumber': number})
-
-    return worlds
-
-
-@get(path='/fortunes', media_type=MediaType.HTML)
-async def render_fortunes_template() -> str:
-    async with connection_pool.acquire() as connection:
-        fortunes = await connection.fetch('SELECT * FROM Fortune')
-
-    fortunes.append([0, 'Additional fortune added at request time.'])
-    fortunes.sort(key=itemgetter(1))
-    return fortune_template.render(fortunes=fortunes)
-
-
-@get(path='/updates')
-async def database_updates(queries: None | str = None) -> list[dict[str, int]]:
-    num_queries = normalize_queries(queries)
-    updates = list(zip(sorted(sample(range(1, 10000 + 1), num_queries)), sample(range(1, 10000), num_queries)))
-
-    worlds = [
-        {"id": row_id, "randomNumber": number} for row_id, number in updates
-    ]
-
-    async with connection_pool.acquire() as connection:
-        statement = await connection.prepare('SELECT "id", "randomnumber" FROM "world" WHERE id = $1')
-        for row_id, _ in updates:
-            await statement.fetchval(row_id)
-        await connection.executemany('UPDATE "world" SET "randomnumber"=$1 WHERE id=$2', updates)
-
-    return worlds
-
-
-@get(path='/plaintext', media_type=MediaType.TEXT)
-def plaintext() -> bytes:
-    return b'Hello, world!'
-
-
-app = Starlite(
-    route_handlers=[
-        database_updates,
-        json_serialization,
-        multiple_database_queries,
-        plaintext,
-        render_fortunes_template,
-        single_database_query,
-    ],
-    on_startup=[init_connection_pool],
-    openapi_config=None,
-)

Some files were not shown because too many files changed in this diff