simdjson, new recipe (#11641)

This commit is contained in:
Schrijvers Luc
2025-01-11 14:38:54 +01:00
committed by GitHub
parent 8c4d186779
commit ccdc23f590

View File

@@ -0,0 +1,78 @@
SUMMARY="Parsing gigabytes of JSON per second"
DESCRIPTION="JSON is everywhere on the Internet. Servers spend a *lot* of time parsing it. We \
need a fresh approach. The simdjson library uses commonly available SIMD instructions and \
microparallel algorithms to parse JSON 4x faster than RapidJSON and 25x faster than JSON for \
Modern C++.
* **Fast:** Over 4x faster than commonly used production-grade JSON parsers.
* **Record Breaking Features:** Minify JSON at 6 GB/s, validate UTF-8 at 13 GB/s, NDJSON at \
3.5 GB/s.
* **Easy:** First-class, easy to use and carefully documented APIs.
* **Strict:** Full JSON and UTF-8 validation, lossless parsing. Performance with no compromises.
* **Automatic:** Selects a CPU-tailored parser at runtime. No configuration needed.
* **Reliable:** From memory allocation to error handling, simdjson's design avoids surprises.
* **Peer Reviewed:** Our research appears in venues like VLDB Journal, Software: Practice and \
Experience.
This library is part of the Awesome Modern C++ https://awesomecpp.com list."
HOMEPAGE="https://github.com/simdjson/simdjson"
COPYRIGHT="2025 Daniel Lemire, Geoff Langdale and John Keiser"
LICENSE="Apache v2"
REVISION="1"
SOURCE_URI="$HOMEPAGE/archive/refs/tags/v$portVersion.tar.gz"
CHECKSUM_SHA256="509bf4880978666f5a6db1eb3d747681e0cc6e0b5bddd94ab0f14a4199d93e18"
SOURCE_FILENAME="simdjson-v$portVersion.tar.gz"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
libVersion="24.0.0"
libVersionCompat="$libVersion compat >= ${libVersion%%.*}"
PROVIDES="
simdjson$secondaryArchSuffix = $portVersion
lib:libsimdjson$secondaryArchSuffix = $libVersionCompat
"
REQUIRES="
haiku$secondaryArchSuffix
"
PROVIDES_devel="
simdjson${secondaryArchSuffix}_devel = $portVersion
devel:libsimdjson$secondaryArchSuffix = $libVersionCompat
"
REQUIRES_devel="
simdjson$secondaryArchSuffix == $portVersion base
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
"
BUILD_PREREQUIRES="
cmd:cmake
cmd:gcc$secondaryArchSuffix
cmd:make
cmd:pkg_config$secondaryArchSuffix
"
BUILD()
{
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release \
$cmakeDirArgs \
-DBUILD_SHARED_LIBS=ON
make -C build $jobArgs
}
INSTALL()
{
make -C build install
prepareInstalledDevelLib \
libsimdjson
fixPkgconfig
packageEntries devel \
$developDir \
$libDir/cmake
}