diff --git a/app-crypt/tang/Manifest b/app-crypt/tang/Manifest
index c79d202ff8..bd39a83cc2 100644
--- a/app-crypt/tang/Manifest
+++ b/app-crypt/tang/Manifest
@@ -1 +1,2 @@
DIST tang-11.tar.gz 38502 BLAKE2B cc440780eda3aa2ded7dfa6bea62794c2f08d3c7e89573c4002d5f2644f5cd809357400031c9df94f5128fb24e3e038a56f3df14f8f7762c071404fdb7b62444 SHA512 a1115c7192224f2d09d026776768b4247632333ad152f2cb700567404ff33a220dc1280e4f588c6408775c4b9dc5049b5601bbee6336c8ff7f39ec6f28e26599
+DIST tang-12.tar.gz 41459 BLAKE2B e948e0f7bc206cb7f0a2eeb42bf2b4b3cc5ff96fef4348beb562289684abbbbafc20d5dab4d5b20ffbd3de5008900fed7e649b771e4353642306831c7e048317 SHA512 dc61aa7711700e149f53c08557f917c1363d946137ea1cad7d7a5ff4248fe6726a61e5339ab8853c52b592bd9963fb4041c6c3143d3a32311d9942424bb9d847
diff --git a/app-crypt/tang/tang-12.ebuild b/app-crypt/tang/tang-12.ebuild
new file mode 100644
index 0000000000..1b055c35e1
--- /dev/null
+++ b/app-crypt/tang/tang-12.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2022-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit meson systemd
+
+DESCRIPTION="Tang binding daemon"
+HOMEPAGE="https://github.com/latchset/tang"
+SRC_URI="https://github.com/latchset/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE=""
+
+DEPEND="acct-user/tang
+ net-misc/socat
+ >=net-libs/http-parser-2.8.0
+ >=dev-libs/jose-8"
+RDEPEND="${DEPEND}"
+BDEPEND="app-text/asciidoc"
+
+src_install(){
+ meson_install
+ newinitd "${FILESDIR}"/tangd.initd tangd
+ systemd_dounit "${FILESDIR}"/tangd.service
+
+ doconfd "${FILESDIR}"/tangd
+
+ dodir /var/db/tang
+ keepdir /var/db/tang
+ fowners tang:tang /var/db/tang
+ fperms 770 /var/db/tang
+}
diff --git a/app-dicts/dictd-mueller/dictd-mueller-3.1-r1.ebuild b/app-dicts/dictd-mueller/dictd-mueller-3.1-r1.ebuild
index f7a903b7d4..2802677684 100644
--- a/app-dicts/dictd-mueller/dictd-mueller-3.1-r1.ebuild
+++ b/app-dicts/dictd-mueller/dictd-mueller-3.1-r1.ebuild
@@ -9,7 +9,7 @@ MY_P="${MY_PN}-${PV}"
inherit autotools
DESCRIPTION="V. K. Mueller English-Russian Dictionary"
-HOMEPAGE="http://mueller-dict.sourceforge.net"
+HOMEPAGE="https://mueller-dict.sourceforge.net"
SRC_URI="mirror://sourceforge/${MY_PN}/${MY_P}.tar.gz"
S="${WORKDIR}/${MY_P}"
diff --git a/app-dicts/dictd-mueller/metadata.xml b/app-dicts/dictd-mueller/metadata.xml
index e5aec7e722..c85f2a1fbf 100644
--- a/app-dicts/dictd-mueller/metadata.xml
+++ b/app-dicts/dictd-mueller/metadata.xml
@@ -1,5 +1,5 @@
-
+
co-maintainers welcome
diff --git a/app-misc/ledger-live/Manifest b/app-misc/ledger-live/Manifest
index 4c911df0ef..1d59d411a3 100644
--- a/app-misc/ledger-live/Manifest
+++ b/app-misc/ledger-live/Manifest
@@ -1,5 +1,5 @@
-DIST ledger-live-desktop-2.49.2-linux-x86_64.AppImage 114148285 BLAKE2B b072476e3c8ef37f2038bcdf5f6d2c0aca855f0c7e587f9825590859ec267dca460bf938042a48ddb17f4517814c8cf856dc55aef84c5004a2028e7368faf9f3 SHA512 abffeb467f70045221a42768c103234f5c39344b3a28af18c0e85ddad1d0df404fa7e4e487e4f1651b85f0851f03ac8cc30ab697453ae32dde8eeaf9c5ff9465
DIST ledger-live-desktop-2.50.0-linux-x86_64.AppImage 119773817 BLAKE2B 6b50a38d5c807898503c26fb138bc551c2194cddc3f4ca22fb86c622ffaa3e3ac76785c37d357eb8822b631ab779ecf5a0ec0a3f4b97728e578154b9978e57ab SHA512 aa8919e89f71eac515c6d20270673ed212214a62a3df54b047430d26d8e8576de5f29fc2b8ab30e8a3e9180fda3576ad7cf346ec271fc9c05c91b40b54642bfe
DIST ledger-live-desktop-2.50.1-linux-x86_64.AppImage 120590061 BLAKE2B d56bd8e909649361d7c6aef67fde9ecb4d700c63370fe00c3170759fbf64732c51a484d5d2d8846f32efa4e75170c55cf6793559f431f704187b06f983f63284 SHA512 8ee659326d7ef62f47f7966ece2baf6c8825736f54ba0e2676a72d47418bce16a2dee9cf20920c1e81f8f3f4dd12e4508cb5eab25dbb602059c4674073b1ca9e
DIST ledger-live-desktop-2.51.0-linux-x86_64.AppImage 120762361 BLAKE2B 90483944c5c45b5262bbe89b21fa2dea3e794cdf9a0c23e179027aabaa45dd2d60b161b7873a3dbf5b65d67661ac6ff8bdad85923ecd4364d800856ea6c10931 SHA512 f2d25df50d1bc7fea3e55a359e9d30accbf88f1c5b947173c83075a7438ffba3cd51c50ac28104dc12df24d12ad9479ae913a53817a6c37d0b90ec80c742af96
DIST ledger-live-desktop-2.52.0-linux-x86_64.AppImage 133467307 BLAKE2B 80698c56aa189d06926ac5e40617b28d5970bdb030c0f2d72d7bc2d6ff6e5ebe96288394df332b7d65b419b3277f1d7e89f481421951ce2dfb0fd45a00123bd5 SHA512 3cf578467c864daa27348ebd69a1e93fcbe59b1ab0fc4837993ed44281be27e18263f118f87d7766a54bee262c63572c9b8e83d12cac3006955b6ae11e641af9
+DIST ledger-live-desktop-2.53.1-linux-x86_64.AppImage 133289943 BLAKE2B 0e2a538de36e40f7998192567cc0979203c02e8d45adc95867152745d4c5285f8e201818ea4f1ad8190d63ba2d3ecdd102cebb82439628b3ed765ad6803089c9 SHA512 27e4b713a720351cb0916ebdb6343ba86f22c2c07e74545582ccf68203a5691c6bd56d312e5fc168868b922dd7e47b0c558f4a66754c8d7fe472288bf0cf4c3a
diff --git a/app-misc/ledger-live/ledger-live-2.52.0.ebuild b/app-misc/ledger-live/ledger-live-2.52.0.ebuild
index 7ec0deac37..0d9247f6a2 100644
--- a/app-misc/ledger-live/ledger-live-2.52.0.ebuild
+++ b/app-misc/ledger-live/ledger-live-2.52.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Foundation
+# Copyright 1999-2023 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=7
diff --git a/app-misc/ledger-live/ledger-live-2.49.2.ebuild b/app-misc/ledger-live/ledger-live-2.53.1.ebuild
similarity index 92%
rename from app-misc/ledger-live/ledger-live-2.49.2.ebuild
rename to app-misc/ledger-live/ledger-live-2.53.1.ebuild
index 7ec0deac37..0d9247f6a2 100644
--- a/app-misc/ledger-live/ledger-live-2.49.2.ebuild
+++ b/app-misc/ledger-live/ledger-live-2.53.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Foundation
+# Copyright 1999-2023 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=7
diff --git a/app-misc/nonsense/metadata.xml b/app-misc/nonsense/metadata.xml
index 1808911fe8..d7e850504e 100644
--- a/app-misc/nonsense/metadata.xml
+++ b/app-misc/nonsense/metadata.xml
@@ -1,5 +1,5 @@
-
+
lssndrbarbieri@gmail.com
diff --git a/app-misc/nonsense/nonsense-0.7-r1.ebuild b/app-misc/nonsense/nonsense-0.7-r1.ebuild
index c1ae5fff9c..7165846f3d 100644
--- a/app-misc/nonsense/nonsense-0.7-r1.ebuild
+++ b/app-misc/nonsense/nonsense-0.7-r1.ebuild
@@ -9,7 +9,7 @@ DESCRIPTION="Generates random text from datafiles and templates"
HOMEPAGE="
https://github.com/aduial/nonsense
https://sourceforge.net/projects/nonsense/
- http://nonsense.sourceforge.net
+ https://nonsense.sourceforge.net
"
SRC_URI="https://github.com/aduial/nonsense/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${PN}-${COMMIT}"
diff --git a/dev-cpp/xsimd/Manifest b/dev-cpp/xsimd/Manifest
new file mode 100644
index 0000000000..1411b4acf3
--- /dev/null
+++ b/dev-cpp/xsimd/Manifest
@@ -0,0 +1 @@
+DIST xsimd-10.0.0.tar.gz 212082 BLAKE2B 2a3c6dd711f9e7ffd32ce3fd9a6056a56768a0f5b6ff412d2c5cd5f82682cac87ed0a68109a449ab6337f89a4719e9ab25f94060d3f675783ce00c79e3378512 SHA512 bd7a363bbebc9196954c8c87271f14f05ca177569fcf080dac91be06ad2801c43fccbb385afd700b80d58c83d77f26ba199a7105672e4a1e55c517d15dd6e8e3
diff --git a/dev-cpp/xsimd/metadata.xml b/dev-cpp/xsimd/metadata.xml
new file mode 100644
index 0000000000..9e861cd9e6
--- /dev/null
+++ b/dev-cpp/xsimd/metadata.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ gentoo.kamal@tgf.pw
+ Kamal Abdellatif
+
+
+ xtensor-stack/xsimd
+ https://xsimd.readthedocs.io/en/latest/
+
+
diff --git a/dev-cpp/xsimd/xsimd-10.0.0.ebuild b/dev-cpp/xsimd/xsimd-10.0.0.ebuild
new file mode 100644
index 0000000000..0398f664b8
--- /dev/null
+++ b/dev-cpp/xsimd/xsimd-10.0.0.ebuild
@@ -0,0 +1,57 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit cmake python-any-r1
+
+DESCRIPTION="C++ wrappers for SIMD intrinsics"
+HOMEPAGE="https://github.com/xtensor-stack/xsimd"
+SRC_URI="https://codeload.github.com/xtensor-stack/${PN}/tar.gz/refs/tags/${PV} -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+
+IUSE="doc test"
+
+BDEPEND="
+ doc? (
+ app-doc/doxygen
+ $(python_gen_any_dep '
+ dev-python/breathe[${PYTHON_USEDEP}]
+ dev-python/sphinx[${PYTHON_USEDEP}]
+ ')
+ )
+ test? ( dev-cpp/doctest )
+"
+
+RESTRICT="!test? ( test )"
+
+python_check_deps() {
+ python_has_version \
+ "dev-python/breathe[${PYTHON_USEDEP}]" \
+ "dev-python/sphinx[${PYTHON_USEDEP}]"
+}
+
+pkg_setup() {
+ use doc && python-any-r1_pkg_setup
+}
+
+src_configure() {
+ local mycmakeargs=( -DBUILD_TESTS=$(usex test) )
+
+ cmake_src_configure
+}
+
+src_compile() {
+ use test && cmake_src_compile xtest
+
+ if use doc; then
+ cd "${WORKDIR}/${P}/docs" || die
+ emake html BUILDDIR="${BUILD_DIR}"
+ HTML_DOCS=( "${BUILD_DIR}/html/." )
+ fi
+}
diff --git a/dev-cpp/xtensor/Manifest b/dev-cpp/xtensor/Manifest
new file mode 100644
index 0000000000..f32665894a
--- /dev/null
+++ b/dev-cpp/xtensor/Manifest
@@ -0,0 +1 @@
+DIST xtensor-0.24.4.tar.gz 1203049 BLAKE2B 512ab8b2e23b295e36462b63d796d037a4300b184e5932390e8c85a98e2f96639794622817bbdb73a24925c21d210bb39c96ecbd0f3d569a05eb8c5458b805c8 SHA512 e245571553592d5d0e98af5b645bc4526123764b0507ab6fb9ade690f62eae1e2850d8a44b0550ff95276b968c287bf7d6cab9262af5f28bcf7345b6d317d16a
diff --git a/dev-cpp/xtensor/metadata.xml b/dev-cpp/xtensor/metadata.xml
new file mode 100644
index 0000000000..547112e582
--- /dev/null
+++ b/dev-cpp/xtensor/metadata.xml
@@ -0,0 +1,17 @@
+
+
+
+
+ gentoo.kamal@tgf.pw
+ Kamal Abdellatif
+
+
+ xtensor-stack/xtensor
+ https://xtensor.readthedocs.io/en/latest/
+
+
+
diff --git a/dev-cpp/xtensor/xtensor-0.24.4.ebuild b/dev-cpp/xtensor/xtensor-0.24.4.ebuild
new file mode 100644
index 0000000000..141d6b4c08
--- /dev/null
+++ b/dev-cpp/xtensor/xtensor-0.24.4.ebuild
@@ -0,0 +1,98 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# required because of manuall install in src_install
+CMAKE_MAKEFILE_GENERATOR="emake"
+
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit cmake python-any-r1 optfeature toolchain-funcs
+
+DESCRIPTION="header-only C++ library for numerical analysis with multi-dimensional arrays"
+HOMEPAGE="https://github.com/xtensor-stack/xtensor"
+SRC_URI="https://codeload.github.com/xtensor-stack/${PN}/tar.gz/refs/tags/${PV} -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+
+IUSE="doc openmp tbb test xsimd"
+
+DEPEND="
+ dev-cpp/xtl
+ tbb? ( dev-cpp/tbb )
+ xsimd? ( dev-cpp/xsimd )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ doc? (
+ app-doc/doxygen
+ $(python_gen_any_dep '
+ dev-python/breathe[${PYTHON_USEDEP}]
+ dev-python/sphinx[${PYTHON_USEDEP}]
+ dev-python/sphinx_rtd_theme[${PYTHON_USEDEP}]
+ ')
+ )
+ test? ( dev-cpp/doctest )
+"
+
+RESTRICT="!test? ( test )"
+REQUIRED_USE="?? ( tbb openmp )"
+
+python_check_deps() {
+ python_has_version \
+ "dev-python/breathe[${PYTHON_USEDEP}]" \
+ "dev-python/sphinx[${PYTHON_USEDEP}]" \
+ "dev-python/sphinx_rtd_theme[${PYTHON_USEDEP}]"
+}
+
+pkg_pretend() {
+ use openmp && tc-check-openmp
+}
+
+pkg_setup() {
+ use openmp && tc-check-openmp
+ use doc && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ # Skipping test due to https://github.com/xtensor-stack/xtensor/issues/2653
+ sed -i -e '/test_xoptional\.cpp/d' test/CMakeLists.txt || die
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DBUILD_TESTS=$(usex test)
+ -DXTENSOR_USE_OPENMP=$(usex openmp)
+ -DXTENSOR_USE_TBB=$(usex tbb)
+ -DXTENSOR_USE_XSIMD=$(usex xsimd)
+ )
+
+ cmake_src_configure
+}
+
+src_compile() {
+ use test && cmake_src_compile xtest
+
+ if use doc; then
+ cd "${WORKDIR}/${P}/docs" || die
+ emake html BUILDDIR="${BUILD_DIR}"
+ HTML_DOCS=( "${BUILD_DIR}/html/." )
+ fi
+}
+
+src_install() {
+ # default install starts compiling more tests
+ # that do not affect the header-only install image
+ DESTDIR="${D}" emake -C "${BUILD_DIR}" install/fast "$@"
+
+ einstalldocs
+}
+
+pkg_postinst() {
+ optfeature "JSON support" dev-cpp/nlohmann_json
+}
diff --git a/dev-cpp/xtl/Manifest b/dev-cpp/xtl/Manifest
new file mode 100644
index 0000000000..8820db2e31
--- /dev/null
+++ b/dev-cpp/xtl/Manifest
@@ -0,0 +1 @@
+DIST xtl-0.7.5.tar.gz 160548 BLAKE2B 61d8c8c8e69722e2d29bd70991840650b22f2f440e2ee8100786869e4410ace8a5063cc0101361aedca963607cf046bb46e923fc096e25d731affdf2876ef4fa SHA512 fb447334f68f255d7d28c9202eee2cec70d007c1031f3756a6acd0cc019c0d95ed1d12ec63f2e9fb3df184f9ec305e6a3c808bb88c1e3eb922916ad059d2e856
diff --git a/dev-python/sphinxcontrib-jquery/metadata.xml b/dev-cpp/xtl/metadata.xml
similarity index 53%
rename from dev-python/sphinxcontrib-jquery/metadata.xml
rename to dev-cpp/xtl/metadata.xml
index fed772b312..db0f046c84 100644
--- a/dev-python/sphinxcontrib-jquery/metadata.xml
+++ b/dev-cpp/xtl/metadata.xml
@@ -2,11 +2,11 @@
- cyber+gentoo@sysrq.in
- Anna
+ gentoo.kamal@tgf.pw
+ Kamal Abdellatif
- sphinxcontrib.jquery
- sphinx-contrib/jquery
+ xtensor-stack/xtl
+ https://xtl.readthedocs.io/en/latest/
diff --git a/dev-cpp/xtl/xtl-0.7.5.ebuild b/dev-cpp/xtl/xtl-0.7.5.ebuild
new file mode 100644
index 0000000000..b1a9cf5daf
--- /dev/null
+++ b/dev-cpp/xtl/xtl-0.7.5.ebuild
@@ -0,0 +1,57 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit cmake python-any-r1
+
+DESCRIPTION="Algorithms and containers used by the xtensor stack and the xeus stack"
+HOMEPAGE="https://github.com/xtensor-stack/xtl"
+SRC_URI="https://codeload.github.com/xtensor-stack/${PN}/tar.gz/refs/tags/${PV} -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+
+IUSE="doc test"
+
+BDEPEND="
+ doc? (
+ app-doc/doxygen
+ $(python_gen_any_dep '
+ dev-python/breathe[${PYTHON_USEDEP}]
+ dev-python/sphinx[${PYTHON_USEDEP}]
+ ')
+ )
+ test? ( dev-cpp/doctest )
+"
+
+RESTRICT="!test? ( test )"
+
+python_check_deps() {
+ python_has_version \
+ "dev-python/breathe[${PYTHON_USEDEP}]" \
+ "dev-python/sphinx[${PYTHON_USEDEP}]"
+}
+
+pkg_setup() {
+ use doc && python-any-r1_pkg_setup
+}
+
+src_configure() {
+ local mycmakeargs=( -DBUILD_TESTS=$(usex test) )
+
+ cmake_src_configure
+}
+
+src_compile() {
+ use test && cmake_src_compile xtest
+
+ if use doc; then
+ cd "${WORKDIR}/${P}/docs" || die
+ emake html BUILDDIR="${BUILD_DIR}"
+ HTML_DOCS=( "${BUILD_DIR}/html/." )
+ fi
+}
diff --git a/dev-libs/hts_engine/hts_engine-1.10.ebuild b/dev-libs/hts_engine/hts_engine-1.10.ebuild
index 0d8338d8d7..5c149becdd 100644
--- a/dev-libs/hts_engine/hts_engine-1.10.ebuild
+++ b/dev-libs/hts_engine/hts_engine-1.10.ebuild
@@ -4,8 +4,8 @@
EAPI=7
DESCRIPTION="HMM-based speech synthesis system (HTS) engine and API"
-HOMEPAGE="http://hts-engine.sourceforge.net/"
-SRC_URI="http://downloads.sourceforge.net/hts-engine/hts_engine_API-${PV}.tar.gz"
+HOMEPAGE="https://hts-engine.sourceforge.net/"
+SRC_URI="https://downloads.sourceforge.net/hts-engine/hts_engine_API-${PV}.tar.gz"
S="${WORKDIR}/hts_engine_API-${PV}"
LICENSE="BSD"
SLOT="0"
diff --git a/dev-libs/hts_engine/metadata.xml b/dev-libs/hts_engine/metadata.xml
index 67b43cc836..9189ca212c 100644
--- a/dev-libs/hts_engine/metadata.xml
+++ b/dev-libs/hts_engine/metadata.xml
@@ -1,5 +1,5 @@
-
+
contact@hacktivis.me
diff --git a/dev-python/celery/celery-5.3.0_beta1-r1.ebuild b/dev-python/celery/celery-5.3.0_beta1-r1.ebuild
index dc527d4aa2..d46c2fc2d5 100644
--- a/dev-python/celery/celery-5.3.0_beta1-r1.ebuild
+++ b/dev-python/celery/celery-5.3.0_beta1-r1.ebuild
@@ -51,7 +51,7 @@ BDEPEND="
dev-python/pytest-subtests[${PYTHON_USEDEP}]
>=dev-python/pytest-timeout-1.4.2[${PYTHON_USEDEP}]
>=dev-python/pyyaml-3.10[${PYTHON_USEDEP}]
- dev-python/redis-py[${PYTHON_USEDEP}]
+ dev-python/redis[${PYTHON_USEDEP}]
dev-python/sphinx-testing[${PYTHON_USEDEP}]
dev-python/tblib[${PYTHON_USEDEP}]
sci-astronomy/pyephem[${PYTHON_USEDEP}]
diff --git a/dev-python/codecov/Manifest b/dev-python/codecov/Manifest
new file mode 100644
index 0000000000..2c44531c14
--- /dev/null
+++ b/dev-python/codecov/Manifest
@@ -0,0 +1 @@
+DIST codecov-2.1.12.tar.gz 20866 BLAKE2B dbccde91bf2290eb403a9f52583b1bb4629860a200bc4a592e2e2ad48443c77c3de36c02503f3716b16d941016296f20071ab7f34227058ccdc7c7f8d925d909 SHA512 9d364844dc864996e7d65d6210c7bca345a67d5aa61bcdd351591f0aeadcd2662101e59449e8a86b8341d9fc840889cb635b2c41c6287001b598ee1647c86b02
diff --git a/dev-python/codecov/codecov-2.1.12.ebuild b/dev-python/codecov/codecov-2.1.12.ebuild
new file mode 100644
index 0000000000..d8422eb970
--- /dev/null
+++ b/dev-python/codecov/codecov-2.1.12.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit distutils-r1
+
+DESCRIPTION="Hosted coverage reports for GitHub, Bitbucket and Gitlab"
+HOMEPAGE="https://github.com/codecov/codecov-python https://pypi.org/project/codecov/"
+SRC_URI="mirror://pypi/${P:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DOCS=""
+
+RDEPEND=">=dev-python/requests-2.7.9[${PYTHON_USEDEP}]
+ dev-python/coverage[${PYTHON_USEDEP}]"
+BDEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ dev-python/pytest[${PYTHON_USEDEP}]
+ )"
+
+python_test() {
+ py.test -v -v || die
+}
+
+distutils_enable_tests pytest
diff --git a/dev-python/codecov/metadata.xml b/dev-python/codecov/metadata.xml
new file mode 100644
index 0000000000..dc0c613d47
--- /dev/null
+++ b/dev-python/codecov/metadata.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ b@edevau.net
+ Andreas Billmeier
+
+
+ codecov
+ codecov/codecov-python
+
+ support@codecov.io
+ Codecov
+
+
+
diff --git a/dev-python/gnuplot-py/gnuplot-py-1.8_p8.ebuild b/dev-python/gnuplot-py/gnuplot-py-1.8_p8.ebuild
index 4a0038c7d4..7aadcbea96 100644
--- a/dev-python/gnuplot-py/gnuplot-py-1.8_p8.ebuild
+++ b/dev-python/gnuplot-py/gnuplot-py-1.8_p8.ebuild
@@ -11,7 +11,7 @@ PYTHON_COMPAT=( python3_{8..11} )
inherit distutils-r1
DESCRIPTION="A python wrapper for Gnuplot"
-HOMEPAGE="http://gnuplot-py.sourceforge.net/"
+HOMEPAGE="https://gnuplot-py.sourceforge.net/"
SRC_URI="
mirror://sourceforge/${PN}/${MYP}.tar.gz
mirror://debian/pool/main/p/${MYPN}/${MYPN}_${PV//_p/-}.debian.tar.xz
diff --git a/dev-python/gnuplot-py/metadata.xml b/dev-python/gnuplot-py/metadata.xml
index 9f59e8b797..ae757a8981 100644
--- a/dev-python/gnuplot-py/metadata.xml
+++ b/dev-python/gnuplot-py/metadata.xml
@@ -1,5 +1,5 @@
-
+
co-maintainers welcome
diff --git a/dev-python/griffe/Manifest b/dev-python/griffe/Manifest
new file mode 100644
index 0000000000..7e77714858
--- /dev/null
+++ b/dev-python/griffe/Manifest
@@ -0,0 +1 @@
+DIST griffe-0.25.4.gh.tar.gz 146307 BLAKE2B 160a347d9bcd7494f67d2904377d24e5b46882cf56d88b070c6d495e556ca8acef1acafa06de8e50759af1329674048a88917682ba366c24b3844b44862dafe5 SHA512 932235d5317aa001fda1007f110f01aa2fd6bac8f4dbe01e24701b2e2160d6bf43cb63960189f354fde5fc7ad65b55c363fb8cb8c9f4ff0dcff23129d47496b1
diff --git a/dev-python/griffe/griffe-0.25.4.ebuild b/dev-python/griffe/griffe-0.25.4.ebuild
new file mode 100644
index 0000000000..08b8d875e9
--- /dev/null
+++ b/dev-python/griffe/griffe-0.25.4.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pdm
+PYTHON_COMPAT=( python3_{9..11} )
+inherit distutils-r1
+
+DESCRIPTION="Signatures for entire Python programs."
+HOMEPAGE="https://github.com/mkdocstrings/griffe https://pypi.org/project/griffe/"
+SRC_URI="https://github.com/mkdocstrings/griffe/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="ISC"
+SLOT="0"
+KEYWORDS="~amd64"
+ISUE="test"
+
+RDEPEND=""
+BDEPEND="
+ dev-python/pdm-pep517[${PYTHON_USEDEP}]
+ dev-python/colorama[${PYTHON_USEDEP}]
+"
+DEPEND="${BDEPEND}"
+
+distutils_enable_tests pytest
diff --git a/dev-python/griffe/metadata.xml b/dev-python/griffe/metadata.xml
new file mode 100644
index 0000000000..fabb16ac17
--- /dev/null
+++ b/dev-python/griffe/metadata.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ gasc@eurecom.fr
+ Gasc Henri
+
+
+ griffe
+ mkdocstrings/griffe
+
+
+ Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API.
+
+
diff --git a/dev-python/invoke/Manifest b/dev-python/invoke/Manifest
new file mode 100644
index 0000000000..27a59726cb
--- /dev/null
+++ b/dev-python/invoke/Manifest
@@ -0,0 +1 @@
+DIST invoke-2.0.0.gh.tar.gz 308039 BLAKE2B 1c4e601014be953fcdef502d9d513db8deec75afc64f0445fd5eae0a05b04d9ebeffc1266cb25184f0e6dc0dc49d712661f4644258db6226e060ea20b735772e SHA512 d7ae2099f550216bd1ea7df1d3d6c253fc4740a1ef945a64d0293670eef4913b5a5d170ff2052bdff7c9801da31fbdc5bc6b323d4467caba4d1486839bca3ba1
diff --git a/dev-python/invoke/invoke-2.0.0.ebuild b/dev-python/invoke/invoke-2.0.0.ebuild
new file mode 100644
index 0000000000..57d5edebab
--- /dev/null
+++ b/dev-python/invoke/invoke-2.0.0.ebuild
@@ -0,0 +1,21 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..11} )
+inherit distutils-r1
+
+DESCRIPTION="Pythonic task execution"
+HOMEPAGE="https://github.com/pyinvoke/invoke https://pypi.org/project/invoke/"
+SRC_URI="https://github.com/pyinvoke/invoke/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~amd64"
+
+src_prepare(){
+ rm -r ./invoke/vendor/yaml2
+ eapply_user
+}
diff --git a/dev-python/invoke/metadata.xml b/dev-python/invoke/metadata.xml
new file mode 100644
index 0000000000..6df7211a81
--- /dev/null
+++ b/dev-python/invoke/metadata.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ gasc@eurecom.fr
+ Gasc Henri
+
+
+ invoke
+ pyinvoke/invoke
+
+
diff --git a/dev-python/mkdocs-autorefs/Manifest b/dev-python/mkdocs-autorefs/Manifest
new file mode 100644
index 0000000000..b54c246742
--- /dev/null
+++ b/dev-python/mkdocs-autorefs/Manifest
@@ -0,0 +1 @@
+DIST mkdocs-autorefs-0.4.1.gh.tar.gz 23793 BLAKE2B 31700c80decea013fb5b57772942d05665ac8b06b2948a69c09dd8c8266b2922d8679a6c053a9b19f5887087d24b9f2a1f1df569f953afb59b80df77adbf8e07 SHA512 5ff36eb2f6fcf3885a8b660fa5063af283f464c6d3e5b257cd5e2a84a2e5826c539d562eccd48d0ea61a2d57f461611759999fe524607638e1b097f5a32aa369
diff --git a/dev-python/mkdocs-autorefs/metadata.xml b/dev-python/mkdocs-autorefs/metadata.xml
new file mode 100644
index 0000000000..b5b149724b
--- /dev/null
+++ b/dev-python/mkdocs-autorefs/metadata.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ gasc@eurecom.fr
+ Gasc Henri
+
+
+ autorefs
+ mkdocstrings/autorefs
+
+
diff --git a/dev-python/mkdocs-autorefs/mkdocs-autorefs-0.4.1.ebuild b/dev-python/mkdocs-autorefs/mkdocs-autorefs-0.4.1.ebuild
new file mode 100644
index 0000000000..54162f0186
--- /dev/null
+++ b/dev-python/mkdocs-autorefs/mkdocs-autorefs-0.4.1.ebuild
@@ -0,0 +1,27 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pdm
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit distutils-r1
+
+DESCRIPTION="Automatically link across pages in MkDocs."
+HOMEPAGE="https://github.com/mkdocstrings/autorefs https://pypi.org/project/autorefs"
+SRC_URI="https://github.com/mkdocstrings/autorefs/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz"
+S="${WORKDIR}/autorefs-${PV}"
+
+LICENSE="ISC"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND=""
+BDEPEND="
+ dev-python/pdm-pep517[${PYTHON_USEDEP}]
+ dev-python/mkdocs[${PYTHON_USEDEP}]
+"
+DEPEND="${BDEPEND}"
+
+distutils_enable_tests pytest
diff --git a/dev-python/mkdocs-blog-plugin/metadata.xml b/dev-python/mkdocs-blog-plugin/metadata.xml
new file mode 100644
index 0000000000..956533a03a
--- /dev/null
+++ b/dev-python/mkdocs-blog-plugin/metadata.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ gasc@eurecom.fr
+ Gasc Henri
+
+
+ mkdocs-blog-plugin
+ fmaida/mkdocs-blog-plugin
+
+
diff --git a/dev-python/mkdocs-blog-plugin/mkdocs-blog-plugin-9999.ebuild b/dev-python/mkdocs-blog-plugin/mkdocs-blog-plugin-9999.ebuild
new file mode 100644
index 0000000000..a159aaa07c
--- /dev/null
+++ b/dev-python/mkdocs-blog-plugin/mkdocs-blog-plugin-9999.ebuild
@@ -0,0 +1,22 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit distutils-r1 git-r3
+
+DESCRIPTION="Plugin for MkDocs to keep a simple blog section inside your documentation."
+HOMEPAGE="https://github.com/fmaida/mkdocs-blog-plugin https://pypi.org/project/mkdocs-blog-plugin"
+EGIT_REPO_URI="https://github.com/fmaida/mkdocs-blog-plugin.git"
+
+LICENSE="MIT"
+SLOT="0"
+
+BDEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ dev-python/mkdocs[${PYTHON_USEDEP}]
+"
+DEPEND="${BDEPEND}"
diff --git a/dev-python/mkdocs-mkdocstrings-python/Manifest b/dev-python/mkdocs-mkdocstrings-python/Manifest
new file mode 100644
index 0000000000..0d75fc5014
--- /dev/null
+++ b/dev-python/mkdocs-mkdocstrings-python/Manifest
@@ -0,0 +1 @@
+DIST mkdocs-mkdocstrings-python-0.8.3.gh.tar.gz 100049 BLAKE2B 796b26babacb6d6d711d7c748b5bb06e705881929109984d26ebdea1ee64c3d7d3b6427f54e2836d3256921243885518cf12a8ff74d04f2caf39871f08fd3f5a SHA512 af5e4470efd9de23710a2d9ec65430d48ef34b91fa9d6162be491852ed27c3775f3be41eb7703e440924566eeabee897e6cc8bba749f59377bdca617ec887c41
diff --git a/dev-python/mkdocs-mkdocstrings-python/metadata.xml b/dev-python/mkdocs-mkdocstrings-python/metadata.xml
new file mode 100644
index 0000000000..eb1d746911
--- /dev/null
+++ b/dev-python/mkdocs-mkdocstrings-python/metadata.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ gasc@eurecom.fr
+ Gasc Henri
+
+
+ mkdocstrings-python
+ mkdocstrings/python
+
+
diff --git a/dev-python/mkdocs-mkdocstrings-python/mkdocs-mkdocstrings-python-0.8.3.ebuild b/dev-python/mkdocs-mkdocstrings-python/mkdocs-mkdocstrings-python-0.8.3.ebuild
new file mode 100644
index 0000000000..7d4fc6bb40
--- /dev/null
+++ b/dev-python/mkdocs-mkdocstrings-python/mkdocs-mkdocstrings-python-0.8.3.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pdm
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit distutils-r1
+
+DESCRIPTION="A Python handler for mkdocstrings."
+HOMEPAGE="https://github.com/mkdocstrings/python https://pypi.org/project/mkdocstrings-python"
+SRC_URI="https://github.com/mkdocstrings/python/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz"
+S="${WORKDIR}/python-${PV}"
+
+LICENSE="ISC"
+SLOT="0"
+KEYWORDS="~amd64"
+ISUE="test"
+
+RDEPEND=""
+BDEPEND="
+ dev-python/pdm-pep517[${PYTHON_USEDEP}]
+ dev-python/mkdocs[${PYTHON_USEDEP}]
+ dev-python/griffe[${PYTHON_USEDEP}]
+ test? (
+ dev-python/mkdocs-mkdocstrings[${PYTHON_USEDEP}]
+ dev-python/mkdocs-autorefs[${PYTHON_USEDEP}]
+ dev-python/pymdown-extensions[${PYTHON_USEDEP}]
+ dev-python/mkdocs_pymdownx_material_extras[${PYTHON_USEDEP}]
+ )
+"
+DEPEND="${BDEPEND}"
+
+distutils_enable_tests pytest
diff --git a/dev-python/mkdocs-mkdocstrings/Manifest b/dev-python/mkdocs-mkdocstrings/Manifest
new file mode 100644
index 0000000000..3d9e3221e8
--- /dev/null
+++ b/dev-python/mkdocs-mkdocstrings/Manifest
@@ -0,0 +1 @@
+DIST mkdocs-mkdocstrings-0.20.0.gh.tar.gz 69064 BLAKE2B 9b0a1dc3b5e21924e00ba75a6ec79bab33629c65010ec8b0669c17d4000c55fd250f628410c583f14f2d91ee34a0ab419306630025474a820a7377a7beb8b51a SHA512 7a1c5a20c4070d9dec3cf959b38110427efdfc211f66e8423b478903e646f8ef8c8242393d1689392763512a718343b140f01297e57cfbd5f246928c3fbba97b
diff --git a/dev-python/mkdocs-mkdocstrings/metadata.xml b/dev-python/mkdocs-mkdocstrings/metadata.xml
new file mode 100644
index 0000000000..b5b149724b
--- /dev/null
+++ b/dev-python/mkdocs-mkdocstrings/metadata.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ gasc@eurecom.fr
+ Gasc Henri
+
+
+ autorefs
+ mkdocstrings/autorefs
+
+
diff --git a/dev-python/mkdocs-mkdocstrings/mkdocs-mkdocstrings-0.20.0.ebuild b/dev-python/mkdocs-mkdocstrings/mkdocs-mkdocstrings-0.20.0.ebuild
new file mode 100644
index 0000000000..337f11974a
--- /dev/null
+++ b/dev-python/mkdocs-mkdocstrings/mkdocs-mkdocstrings-0.20.0.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pdm
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit distutils-r1
+
+DESCRIPTION="Automatic documentation from sources, for MkDocs."
+HOMEPAGE="https://github.com/mkdocstrings/mkdocstrings https://pypi.org/project/mkdocstrings"
+SRC_URI="https://github.com/mkdocstrings/mkdocstrings/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz"
+S="${WORKDIR}/mkdocstrings-${PV}"
+
+LICENSE="ISC"
+SLOT="0"
+KEYWORDS="~amd64"
+ISUE="test"
+
+RDEPEND=""
+BDEPEND="
+ dev-python/pdm-pep517[${PYTHON_USEDEP}]
+ dev-python/mkdocs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/pymdown-extensions[${PYTHON_USEDEP}]
+ dev-python/mkdocs-autorefs[${PYTHON_USEDEP}]
+ dev-python/mkdocs-mkdocstrings-python[${PYTHON_USEDEP}]
+ )
+"
+DEPEND="${BDEPEND}"
+
+distutils_enable_tests pytest
diff --git a/dev-python/mkdocs-rss-plugin/Manifest b/dev-python/mkdocs-rss-plugin/Manifest
new file mode 100644
index 0000000000..4ba441bacd
--- /dev/null
+++ b/dev-python/mkdocs-rss-plugin/Manifest
@@ -0,0 +1 @@
+DIST mkdocs-rss-plugin-1.5.0.gh.tar.gz 39301 BLAKE2B 8d92ee030115b3d8ea589509a9558d61d72bfa4abd55b3451262928df8a63c9ed0399c2cd883a8d070c15241396cffcd96fd953a6b8e781b0d922d287b950886 SHA512 1ed861bca8feaab869c1e88a0533110a7b617b7a5bd68b6ea4b454975c56fee1aaa118d65abf8e8c03d41ff5b367f9561dee08cdffbcf7bfffa7268306c3f4b8
diff --git a/dev-python/mkdocs-rss-plugin/metadata.xml b/dev-python/mkdocs-rss-plugin/metadata.xml
new file mode 100644
index 0000000000..61ccab5994
--- /dev/null
+++ b/dev-python/mkdocs-rss-plugin/metadata.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ gasc@eurecom.fr
+ Gasc Henri
+
+
+ mkdocs-rss-plugin
+ Guts/mkdocs-rss-plugin
+
+
diff --git a/dev-python/mkdocs-rss-plugin/mkdocs-rss-plugin-1.5.0.ebuild b/dev-python/mkdocs-rss-plugin/mkdocs-rss-plugin-1.5.0.ebuild
new file mode 100644
index 0000000000..ad0721f474
--- /dev/null
+++ b/dev-python/mkdocs-rss-plugin/mkdocs-rss-plugin-1.5.0.ebuild
@@ -0,0 +1,43 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit distutils-r1
+
+DESCRIPTION="MkDocs plugin to generate a RSS feeds."
+HOMEPAGE="https://github.com/Guts/mkdocs-rss-plugin https://pypi.org/project/mkdocs-rss-plugin"
+SRC_URI="https://github.com/Guts/mkdocs-rss-plugin/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="doc"
+
+RDEPEND=""
+BDEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ dev-python/mkdocs[${PYTHON_USEDEP}]
+ dev-python/GitPython[${PYTHON_USEDEP}]
+ doc? (
+ dev-python/mkdocs-bootswatch[${PYTHON_USEDEP}]
+ dev-python/mkdocs-minify-plugin[${PYTHON_USEDEP}]
+ dev-python/pygments[${PYTHON_USEDEP}]
+ dev-python/pymdown-extensions[${PYTHON_USEDEP}]
+ )
+"
+DEPEND="${BDEPEND}"
+
+# No test because of upstream bug
+# BDEPEND+="
+# test? (
+# dev-python/black[${PYTHON_USEDEP}]
+# dev-python/feedparser[${PYTHON_USEDEP}]
+# dev-python/flake8[${PYTHON_USEDEP}]
+# dev-vcs/pre-commit
+# dev-python/pytest-cov[${PYTHON_USEDEP}]
+# )"
+# distutils_enable_tests pytest
diff --git a/dev-python/osprofiler/osprofiler-3.4.3.ebuild b/dev-python/osprofiler/osprofiler-3.4.3.ebuild
index a599facb19..5719aa521c 100644
--- a/dev-python/osprofiler/osprofiler-3.4.3.ebuild
+++ b/dev-python/osprofiler/osprofiler-3.4.3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -46,7 +46,7 @@ DEPEND="
>=dev-python/testtools-2.2.0[${PYTHON_USEDEP}]
>=dev-python/pymongo-3.0.2[${PYTHON_USEDEP}]
>=dev-python/elasticsearch-py-2.0.0[${PYTHON_USEDEP}]
- >=dev-python/redis-py-2.10.0[${PYTHON_USEDEP}]
+ >=dev-python/redis-2.10.0[${PYTHON_USEDEP}]
>=dev-python/reno-3.1.0[${PYTHON_USEDEP}]
)
"
diff --git a/dev-python/py-nanoid/metadata.xml b/dev-python/py-nanoid/metadata.xml
new file mode 100644
index 0000000000..30afa2949d
--- /dev/null
+++ b/dev-python/py-nanoid/metadata.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ gasc@eurecom.fr
+ Gasc Henri
+
+
+ nanoid
+ puyuan/py-nanoid
+
+
diff --git a/dev-python/py-nanoid/py-nanoid-9999.ebuild b/dev-python/py-nanoid/py-nanoid-9999.ebuild
new file mode 100644
index 0000000000..75a5c7ae02
--- /dev/null
+++ b/dev-python/py-nanoid/py-nanoid-9999.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit distutils-r1 git-r3
+
+DESCRIPTION="Python Nanoid"
+HOMEPAGE="https://github.com/puyuan/py-nanoid https://pypi.org/project/nanoid"
+EGIT_REPO_URI="https://github.com/puyuan/py-nanoid.git"
+
+LICENSE="MIT"
+SLOT="0"
+
+RDEPEND=""
+BDEPEND="
+ dev-python/pytest[${PYTHON_USEDEP}]
+ dev-python/flake8[${PYTHON_USEDEP}]
+"
+DEPEND="${BDEPEND}"
+
+distutils_enable_tests pytest
diff --git a/dev-python/pytest-syrupy/Manifest b/dev-python/pytest-syrupy/Manifest
new file mode 100644
index 0000000000..5b1ce1c0d9
--- /dev/null
+++ b/dev-python/pytest-syrupy/Manifest
@@ -0,0 +1 @@
+DIST pytest-syrupy-4.0.0.gh.tar.gz 2294943 BLAKE2B ac968eaaccfb4258237af165bf576a635ac858b0e8b52b2089b99b1dcfd3d49cc16bd7550ceb95809340a0e568fb37081e3c59820be8292fbe55f0223dc5dffa SHA512 006a28283c1ba148845bc4f447b066112a791adf47d405ce0351a25d2f100c64240719531ec62ed83f6c2a899f8d4ddeec9209fa152a290b6bb4e7b0e6ed1797
diff --git a/dev-python/pytest-syrupy/metadata.xml b/dev-python/pytest-syrupy/metadata.xml
new file mode 100644
index 0000000000..2bfa8b7ba2
--- /dev/null
+++ b/dev-python/pytest-syrupy/metadata.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ gasc@eurecom.fr
+ Gasc Henri
+
+
+ syrupy
+ tophat/syrupy
+
+
diff --git a/dev-python/pytest-syrupy/pytest-syrupy-4.0.0.ebuild b/dev-python/pytest-syrupy/pytest-syrupy-4.0.0.ebuild
new file mode 100644
index 0000000000..240c594c42
--- /dev/null
+++ b/dev-python/pytest-syrupy/pytest-syrupy-4.0.0.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( python3_10 )
+
+inherit distutils-r1
+
+DESCRIPTION="The sweeter pytest snapshot plugin"
+HOMEPAGE="https://github.com/tophat/syrupy https://pypi.org/project/syrupy"
+SRC_URI="https://github.com/tophat/syrupy/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz"
+S="${WORKDIR}/syrupy-${PV}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ dev-python/rich[${PYTHON_USEDEP}]
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/poetry-core[${PYTHON_USEDEP}]
+ dev-python/colored[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ test? (
+ dev-python/codecov[${PYTHON_USEDEP}]
+ dev-python/invoke[${PYTHON_USEDEP}]
+ dev-python/coverage[${PYTHON_USEDEP}]
+ dev-python/pytest-benchmark[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ )
+"
+DEPEND="
+ ${BDEPEND}
+ ${RDEPEND}
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/sphinxcontrib-jquery/Manifest b/dev-python/sphinxcontrib-jquery/Manifest
deleted file mode 100644
index 128c4662f9..0000000000
--- a/dev-python/sphinxcontrib-jquery/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST sphinxcontrib-jquery-3.0.0.gh.tar.gz 121750 BLAKE2B 5b160fa1434b111683824442a0ecb0da230dba7f29161495859845282e1b6471faa256be6fffc2d34c6fc97e4e188bb1247284613bf65bf322fcb77463b6cf83 SHA512 a681f42734f2925b597f8d90c7b90a3f6df9549d1c97195799670542c5eabdc4d4d4aecfef29f56bd74ffad18ab179cc47f27b8395c11388259473690601901a
diff --git a/dev-python/sphinxcontrib-jquery/sphinxcontrib-jquery-3.0.0.ebuild b/dev-python/sphinxcontrib-jquery/sphinxcontrib-jquery-3.0.0.ebuild
deleted file mode 100644
index e4f4cfc388..0000000000
--- a/dev-python/sphinxcontrib-jquery/sphinxcontrib-jquery-3.0.0.ebuild
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{8..10} )
-DISTUTILS_USE_PEP517=flit
-inherit distutils-r1
-
-MY_PN=${PN#sphinxcontrib-}
-DESCRIPTION="Extension to include jQuery on newer Sphinx releases"
-HOMEPAGE="
- https://pypi.org/project/sphinxcontrib-jquery/
- https://github.com/sphinx-contrib/jquery
-"
-SRC_URI="https://github.com/sphinx-contrib/${MY_PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz"
-S="${WORKDIR}/${MY_PN}-${PV}"
-
-LICENSE="0BSD"
-SLOT="0"
-KEYWORDS="~amd64"
-
-RDEPEND="
- dev-python/setuptools[${PYTHON_USEDEP}]
- dev-python/sphinx[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/sphinx-testing[${PYTHON_USEDEP}]
- )
-"
-
-DOCS=( AUTHORS {CHANGES,README}.rst )
-
-distutils_enable_tests pytest
diff --git a/dev-python/validator-collection/Manifest b/dev-python/validator-collection/Manifest
new file mode 100644
index 0000000000..98aa833371
--- /dev/null
+++ b/dev-python/validator-collection/Manifest
@@ -0,0 +1 @@
+DIST validator-collection-1.5.0.gh.tar.gz 88317 BLAKE2B cfca5c094a24105d7e4e9d4b802808ad62c50c4228d1c0ffca8e68e52098ee1358dfbfba6364b58e5377903823683668abfe79ccd4d6d96bb885b0ce33cb27d0 SHA512 802b7d1516ad55ef8506ea9785b776024f2c041fc5d550d345459bc545600a66402eb32ccc3c59903c895d2c55e17d087429b3a6bd787b9ae890eb00c1c19fc3
diff --git a/dev-python/validator-collection/metadata.xml b/dev-python/validator-collection/metadata.xml
new file mode 100644
index 0000000000..e442218bbb
--- /dev/null
+++ b/dev-python/validator-collection/metadata.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ gasc@eurecom.fr
+ Gasc Henri
+
+
+ validator-collection
+ insightindustry/validator-collection
+
+
diff --git a/dev-python/validator-collection/validator-collection-1.5.0.ebuild b/dev-python/validator-collection/validator-collection-1.5.0.ebuild
new file mode 100644
index 0000000000..a5a8e34081
--- /dev/null
+++ b/dev-python/validator-collection/validator-collection-1.5.0.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_10 )
+
+inherit distutils-r1
+
+DESCRIPTION="Python library of 60+ commonly-used validator functions."
+HOMEPAGE="https://github.com/insightindustry/validator-collection https://pypi.org/project/validator-collection"
+SRC_URI="https://github.com/insightindustry/validator-collection/archive/refs/tags/v.${PV}.tar.gz -> ${P}.gh.tar.gz"
+S="${WORKDIR}/${PN}-v.${PV}"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="test"
+
+RDEPEND=""
+BDEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ dev-python/sphinx[${PYTHON_USEDEP}]
+ dev-python/sphinx-tabs[${PYTHON_USEDEP}]
+ dev-python/sphinx_rtd_theme[${PYTHON_USEDEP}]
+ test? (
+ dev-python/coverage[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ dev-python/pytest-benchmark[${PYTHON_USEDEP}]
+ dev-python/pytest-cov[${PYTHON_USEDEP}]
+ dev-python/codecov[${PYTHON_USEDEP}]
+ dev-python/pyfakefs[${PYTHON_USEDEP}]
+ )
+"
+DEPEND="${BDEPEND}"
+
+distutils_enable_tests pytest
+distutils_enable_sphinx docs
diff --git a/dev-python/xunitparser/metadata.xml b/dev-python/xunitparser/metadata.xml
index c698af2344..2092bcc33a 100644
--- a/dev-python/xunitparser/metadata.xml
+++ b/dev-python/xunitparser/metadata.xml
@@ -1,5 +1,5 @@
-
+
contact@hacktivis.me
diff --git a/dev-python/xunitparser/xunitparser-1.3.4.ebuild b/dev-python/xunitparser/xunitparser-1.3.4.ebuild
index 5c9a67a1bf..2a18397756 100644
--- a/dev-python/xunitparser/xunitparser-1.3.4.ebuild
+++ b/dev-python/xunitparser/xunitparser-1.3.4.ebuild
@@ -8,7 +8,7 @@ DISTUTILS_USE_PEP517=setuptools
inherit distutils-r1
DESCRIPTION="Read JUnit/XUnit XML files and map them to Python objects"
-HOMEPAGE="http://gitlab.com/woob/xunitparser/"
+HOMEPAGE="https://gitlab.com/woob/xunitparser/"
SRC_URI="https://gitlab.com/woob/xunitparser/-/archive/v${PV}/xunitparser-v${PV}.tar.gz"
S="${WORKDIR}/xunitparser-v${PV}/"
diff --git a/dev-util/git-bug/Manifest b/dev-util/git-bug/Manifest
index 1acbbff530..3e6a902d9f 100644
--- a/dev-util/git-bug/Manifest
+++ b/dev-util/git-bug/Manifest
@@ -1,5 +1,5 @@
DIST cloud.google.com%2Fgo%2F@v%2Fv0.26.0.mod 27 BLAKE2B 814b0fa8f12d5ce6171fa629b5a7eb34e0e882cc0c5430986896bb38c243e08dc83098f271227f4ba019e78f16dc97fbb381e833aff1819833d243b08add916b SHA512 5132f3438533427c0ab0fbb7a12112a7830ea9122662ed46019ff89c71d9cf80c02edc32dd5c892da572031b5a2cce100f2602fa6a19bea6be7c02781f701273
-DIST git-bug-0.7.1.tar.gz 1934695 BLAKE2B d74b7ba98729454282dbe83c4698bd0fbfd58cd438b161e8a3af20a60757cc9ec66b99c11e45a51372b4e22a578a35000e5d59815fa8b9fe489c24c698176c94 SHA512 87b4b5c5e23c6a4be64ed13e38cac92ed6baa02ea40c51d10080045c2392398407c254231cb8c341be8202c33723ddd54892ff59eb6ffd7787305edd4b9b8acc
+DIST git-bug-0.7.2.tar.gz 1933613 BLAKE2B a57342aa6db577f310036327e652dfd0b9f9627fb2bc8e366b3be6a90e67502c7c14c67571d8a297a28bb7b6c4e0afc8b047c120c231d8d620d06b7180d5e9fe SHA512 85dac95e09dc0946afafc8bcec303b1bcaac36081bb8c8057e767c57a488496c2e6971b7fcf257903a6021da54f946a7475a72e999e142645f29f7e228570ab2
DIST github.com%2F!burnt!sushi%2Ftoml%2F@v%2Fv0.3.1.mod 34 BLAKE2B ce54a247aef91043830bdf0603c8452ba38eceb1495af6e7a74c9119234a0dc5cd080cb25258c28f5e270acf91189a5ed33e361cbf17de2be5e37dadbda1d90d SHA512 320941bc3b7fb8bc595e6135cbc513a7583d129f0cd92508055291e141191066303cf75148e25198c21f6c6c539a790ea3210f3ecf5de6a2a03b70c753091146
DIST github.com%2F!masterminds%2Fglide%2F@v%2Fv0.13.2.mod 36 BLAKE2B 90eea1d6bfb78f872b781706703178c3c010c549c94e28eac0b3ca2ca2ee4bf126bb5320fa8bc0c22aa2aeebb2361572081014253d12a0a8dcfcf28ee607a554 SHA512 37cffb84d5a0e51f4306f042f62a549cbac31f714b497a590149c78d1a16d9b9fb7c3ea9c4c89856dc38b1548fe18afbb537628f0c511faab6a4eb631bcbf43f
DIST github.com%2F!masterminds%2Fsemver%2F@v%2Fv1.4.2.mod 37 BLAKE2B 60b2ec6aeaaece8fbe3ca154b432f677dbb46672fdbc95b503f613190df535c7254900c9cfaa3319ab2d7562513640c7cc9fe650d75d97dc09fe84a17e359a86 SHA512 4f01cd11b3ae6f26266154ee37e7a4084e61e865fa9427187a24a02631415f2367a4afad83b4e1cf772b263aaf8f180b4b177e30ae884cdcab239919c9e08bbc
diff --git a/dev-util/git-bug/git-bug-0.7.1.ebuild b/dev-util/git-bug/git-bug-0.7.2.ebuild
similarity index 99%
rename from dev-util/git-bug/git-bug-0.7.1.ebuild
rename to dev-util/git-bug/git-bug-0.7.2.ebuild
index 5e0a43ef86..a259332128 100644
--- a/dev-util/git-bug/git-bug-0.7.1.ebuild
+++ b/dev-util/git-bug/git-bug-0.7.2.ebuild
@@ -330,7 +330,7 @@ EGO_SUM=(
"sourcegraph.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67/go.mod"
)
go-module_set_globals
-SRC_URI="https://github.com/MichaelMure/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz
+SRC_URI="https://github.com/MichaelMure/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz
${EGO_SUM_SRC_URI}"
RESTRICT="strip"
diff --git a/dev-vcs/gitqlient-gitserver-plugin/Manifest b/dev-vcs/gitqlient-gitserver-plugin/Manifest
new file mode 100644
index 0000000000..403902245b
--- /dev/null
+++ b/dev-vcs/gitqlient-gitserver-plugin/Manifest
@@ -0,0 +1,2 @@
+DIST gitqlient-1.6.1.tar.gz 4971880 BLAKE2B b793dd406d1dff7aa193916a08dc5c10159eb54f79d2d9930b672aed5ee5d98fe3d6afb1869032bdeee1790b078a5fefa8064506353d56e870ea95bb24ebcc26 SHA512 e115c9fca6c8fe17b32d326a7f649d35ea55fd1f4c1df7c30962e9f07382d246cd23b8dbdbf6759620d1ba7ba9c48c7a391b2e0a730a58bba9f1ba6425a2da9e
+DIST gitqlient-GitServerPlugin-0.2.0.tar.gz 78411 BLAKE2B 4220f0d53abccac79a21cb5cb2e1cad608fbfc62afe797ed446594a642010f6476c519c3ba807db4cbc8f51150420186933cfeb18b27b98ddfd18882213e04e2 SHA512 d01c8fd3132d03f1f819ec7c81f920f6e37146f43182c322d6048ba008ab83dac71b43510445fe9ec5612555e1b18c2afb4a0193dd1a3dabb3b80ae35e9e9381
diff --git a/dev-vcs/gitqlient-gitserver-plugin/gitqlient-gitserver-plugin-0.2.0.ebuild b/dev-vcs/gitqlient-gitserver-plugin/gitqlient-gitserver-plugin-0.2.0.ebuild
new file mode 100644
index 0000000000..a2d34bacd7
--- /dev/null
+++ b/dev-vcs/gitqlient-gitserver-plugin/gitqlient-gitserver-plugin-0.2.0.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit qmake-utils
+
+MY_PN="GitServerPlugin"
+GQ="GitQlient"
+GQ_PN="gitqlient"
+GQ_PV="1.6.1"
+
+DESCRIPTION="GitQlient GitServer plugin"
+HOMEPAGE="https://github.com/francescmm/GitServerPlugin"
+SRC_URI="
+ https://github.com/francescmm/${MY_PN}/archive/refs/tags/${PV}.tar.gz -> ${GQ_PN}-${MY_PN}-${PV}.tar.gz
+ https://github.com/francescmm/${GQ}/releases/download/v${GQ_PV}/${GQ_PN}_${GQ_PV}.tar.gz -> ${GQ_PN}-${GQ_PV}.tar.gz
+"
+
+KEYWORDS="~amd64"
+LICENSE="LGPL-2.1"
+SLOT="0"
+
+S="${WORKDIR}/${MY_PN}-${PV}"
+
+PDEPEND=">=dev-vcs/gitqlient-1.6.1"
+RDEPEND="
+ dev-qt/qtnetwork:5
+ dev-qt/qtwidgets:5
+ dev-qt/qtwebengine:5[widgets]
+"
+DEPEND="${DEPEND}"
+
+# No need SONAME for runtime plugin
+QA_SONAME="usr/lib.*/lib${MY_PN}.so"
+
+src_prepare() {
+ default
+
+ mv -T ../"${GQ_PN}_${GQ_PV}"/src/AuxiliarCustomWidgets src/AuxiliarCustomWidgets || die
+ mv -T ../"${GQ_PN}_${GQ_PV}"/src/QLogger src/QLogger || die
+ mv -T ../"${GQ_PN}_${GQ_PV}"/src/git src/git || die
+}
+
+src_configure() {
+ eqmake5 "${MY_PN}".pro
+}
+
+src_install() {
+ dolib.so lib/lib"${MY_PN}".so
+}
+
+pkg_postinst() {
+ elog "To use ${MY_PN} set PluginFolder in GitQlient settings Plugin tab to /usr/$(get_libdir)"
+}
diff --git a/dev-vcs/gitqlient-gitserver-plugin/metadata.xml b/dev-vcs/gitqlient-gitserver-plugin/metadata.xml
new file mode 100644
index 0000000000..91604cefd9
--- /dev/null
+++ b/dev-vcs/gitqlient-gitserver-plugin/metadata.xml
@@ -0,0 +1,11 @@
+
+
+
+
+ torokhov-s-a@yandex.ru
+ Sergey Torokhov
+
+
+ francescmm/GitServerPlugin
+
+
diff --git a/dev-vcs/gitqlient-jenkins-plugin/Manifest b/dev-vcs/gitqlient-jenkins-plugin/Manifest
new file mode 100644
index 0000000000..ff31e25c39
--- /dev/null
+++ b/dev-vcs/gitqlient-jenkins-plugin/Manifest
@@ -0,0 +1,2 @@
+DIST gitqlient-1.6.1.tar.gz 4971880 BLAKE2B b793dd406d1dff7aa193916a08dc5c10159eb54f79d2d9930b672aed5ee5d98fe3d6afb1869032bdeee1790b078a5fefa8064506353d56e870ea95bb24ebcc26 SHA512 e115c9fca6c8fe17b32d326a7f649d35ea55fd1f4c1df7c30962e9f07382d246cd23b8dbdbf6759620d1ba7ba9c48c7a391b2e0a730a58bba9f1ba6425a2da9e
+DIST gitqlient-JenkinsPlugin-0.2.0.tar.gz 29474 BLAKE2B f8dfb020f68ec474b0d15b62a5566316f21cd29f4878170bcf7940e3df596a970535d5db3c3f05f12d18fdff5f5b6f99db242c807e8554754f08f14ad31997a0 SHA512 0c3089b80116974a687821940d7e78c6b663acf50cb060cff824d3e1e1838773eca8ed671778d2cf016d0b3e5fff8daab958f765af4eacc04dea66864966ae8e
diff --git a/dev-vcs/gitqlient-jenkins-plugin/gitqlient-jenkins-plugin-0.2.0.ebuild b/dev-vcs/gitqlient-jenkins-plugin/gitqlient-jenkins-plugin-0.2.0.ebuild
new file mode 100644
index 0000000000..6dd31629a2
--- /dev/null
+++ b/dev-vcs/gitqlient-jenkins-plugin/gitqlient-jenkins-plugin-0.2.0.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit qmake-utils
+
+MY_PN="JenkinsPlugin"
+GQ="GitQlient"
+GQ_PN="gitqlient"
+GQ_PV="1.6.1"
+
+DESCRIPTION="GitQlient Jenkins plugin"
+HOMEPAGE="https://github.com/francescmm/JenkinsPlugin"
+SRC_URI="
+ https://github.com/francescmm/${MY_PN}/archive/refs/tags/${PV}.tar.gz -> ${GQ_PN}-${MY_PN}-${PV}.tar.gz
+ https://github.com/francescmm/${GQ}/releases/download/v${GQ_PV}/${GQ_PN}_${GQ_PV}.tar.gz -> ${GQ_PN}-${GQ_PV}.tar.gz
+"
+
+KEYWORDS="~amd64"
+LICENSE="LGPL-2.1"
+SLOT="0"
+
+S="${WORKDIR}/${MY_PN}-${PV}"
+
+PDEPEND=">=dev-vcs/gitqlient-1.6.1"
+RDEPEND="
+ dev-qt/qtnetwork:5
+ dev-qt/qtwidgets:5
+ dev-qt/qtwebengine:5[widgets]
+"
+DEPEND="${DEPEND}"
+
+# No need SONAME for runtime plugin
+QA_SONAME="usr/lib.*/lib${MY_PN}.so"
+
+src_prepare() {
+ default
+
+ mv -T ../"${GQ_PN}_${GQ_PV}"/src/AuxiliarCustomWidgets src/AuxiliarCustomWidgets || die
+ mv -T ../"${GQ_PN}_${GQ_PV}"/src/QLogger src/QLogger || die
+ mv -T ../"${GQ_PN}_${GQ_PV}"/src/QPinnableTabWidget src/QPinnableTabWidget || die
+}
+
+src_configure() {
+ eqmake5 "${MY_PN}".pro
+}
+
+src_install() {
+ dolib.so lib/lib"${MY_PN}".so
+}
+
+pkg_postinst() {
+ elog "To use ${MY_PN} set PluginFolder in GitQlient settings Plugin tab to /usr/$(get_libdir)"
+}
diff --git a/dev-vcs/gitqlient-jenkins-plugin/metadata.xml b/dev-vcs/gitqlient-jenkins-plugin/metadata.xml
new file mode 100644
index 0000000000..6df263613a
--- /dev/null
+++ b/dev-vcs/gitqlient-jenkins-plugin/metadata.xml
@@ -0,0 +1,11 @@
+
+
+
+
+ torokhov-s-a@yandex.ru
+ Sergey Torokhov
+
+
+ francescmm/JenkinsPlugin
+
+
diff --git a/dev-vcs/gitqlient/files/gitqlient-1.6.1_fix_commit_longLog.patch b/dev-vcs/gitqlient/files/gitqlient-1.6.1_fix_commit_longLog.patch
new file mode 100644
index 0000000000..b955ea2dcf
--- /dev/null
+++ b/dev-vcs/gitqlient/files/gitqlient-1.6.1_fix_commit_longLog.patch
@@ -0,0 +1,34 @@
+diff -Naur a/src/cache/CommitInfo.cpp b/src/cache/CommitInfo.cpp
+--- a/src/cache/CommitInfo.cpp
++++ b/src/cache/CommitInfo.cpp
+@@ -16,7 +16,7 @@
+ parseDiff(data, 1);
+ }
+
+-void CommitInfo::parseDiff(QByteArray &data, int startingField)
++void CommitInfo::parseDiff(QByteArray &data, qsizetype startingField)
+ {
+ if (data.isEmpty())
+ return;
+@@ -39,9 +39,9 @@
+ committer = fields.at(startingField++);
+ author = fields.at(startingField++);
+ dateSinceEpoch = std::chrono::seconds(fields.at(startingField++).toInt());
+- shortLog = fields.at(startingField);
++ shortLog = fields.at(startingField++);
+
+- for (auto i = 6; i < fields.count(); ++i)
++ for (auto i = startingField; i < fields.count(); ++i)
+ longLog += fields.at(i) + '\n';
+
+ longLog = longLog.trimmed();
+diff -Naur a/src/cache/CommitInfo.h b/src/cache/CommitInfo.h
+--- a/src/cache/CommitInfo.h
++++ b/src/cache/CommitInfo.h
+@@ -96,5 +96,5 @@
+
+ friend class GitCache;
+
+- void parseDiff(QByteArray &data, int startingField);
++ void parseDiff(QByteArray &data, qsizetype startingField);
+ };
diff --git a/dev-vcs/gitqlient/files/gitqlient-1.6.1_fix_tabs_style.patch b/dev-vcs/gitqlient/files/gitqlient-1.6.1_fix_tabs_style.patch
new file mode 100644
index 0000000000..34af553bec
--- /dev/null
+++ b/dev-vcs/gitqlient/files/gitqlient-1.6.1_fix_tabs_style.patch
@@ -0,0 +1,102 @@
+diff -Naur a/src/aux_widgets/InitialRepoConfig.ui b/src/aux_widgets/InitialRepoConfig.ui
+--- a/src/aux_widgets/InitialRepoConfig.ui
++++ b/src/aux_widgets/InitialRepoConfig.ui
+@@ -7,7 +7,7 @@
+ 0
+ 0
+ 600
+- 400
++ 500
+
+
+
+@@ -184,6 +184,12 @@
+
+ Credentials configuration
+
++
++ false
++
++
++ background: transparent;
++
+
+
+ 0
+diff -Naur a/src/big_widgets/ConfigWidget.ui b/src/big_widgets/ConfigWidget.ui
+--- a/src/big_widgets/ConfigWidget.ui
++++ b/src/big_widgets/ConfigWidget.ui
+@@ -678,7 +678,7 @@
+ 10
+
+
+-
++
+
+ Store credentials using GitQlient (Current session or in Storage)
+
+@@ -1018,6 +1018,12 @@
+
+ Installed plugins
+
++
++ false
++
++
++ background: transparent;
++
+
+
+ 10
+@@ -1129,6 +1135,12 @@
+
+ Official GitQlient plugins
+
++
++ false
++
++
++ background: transparent;
++
+
+
+ 10
+@@ -1213,6 +1225,12 @@
+
+ Branches panel
+
++
++ false
++
++
++ background: transparent;
++
+
+
+
+@@ -1250,6 +1268,12 @@
+
+ GitQlient repo operations
+
++
++ false
++
++
++ background: transparent;
++
+
+
+
+@@ -1315,6 +1339,12 @@
+
+ GitQlient general
+
++
++ false
++
++
++ background: transparent;
++
+
+
+
diff --git a/dev-vcs/gitqlient/gitqlient-1.6.1-r1.ebuild b/dev-vcs/gitqlient/gitqlient-1.6.1-r1.ebuild
new file mode 100644
index 0000000000..3108b7dc01
--- /dev/null
+++ b/dev-vcs/gitqlient/gitqlient-1.6.1-r1.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit optfeature qmake-utils xdg
+
+MY_PN="GitQlient"
+
+DESCRIPTION="Multi-platform Git client written with Qt"
+HOMEPAGE="https://github.com/francescmm/GitQlient"
+
+SRC_URI="https://github.com/francescmm/${MY_PN}/releases/download/v${PV}/${PN}_${PV}.tar.gz -> ${P}.tar.gz"
+KEYWORDS="~amd64 ~x86"
+S="${WORKDIR}/${PN}_${PV}"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+
+DEPEND="
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ dev-qt/qtnetwork:5
+ dev-qt/qtwidgets:5
+"
+RDEPEND="
+ ${DEPEND}
+ dev-vcs/git
+"
+
+PATCHES=(
+ "$FILESDIR/${P}_fix_tabs_style.patch"
+ "$FILESDIR/${P}_fix_commit_longLog.patch"
+)
+
+src_prepare() {
+ default
+
+ # Drop 'fatal' warning on version detection via git command:
+ sed -i -e "/^GQ_SHA/d" \
+ -e "/VERSION =/s| \$\$system(git rev-parse --short HEAD)||" "${MY_PN}".pro || die
+
+ sed -i -e "s/Office/Development/" "${S}/src/resources/${PN}.desktop" || die
+}
+
+src_configure() {
+ eqmake5 PREFIX=/usr "${MY_PN}".pro
+}
+
+src_install() {
+ emake INSTALL_ROOT="${D}" install
+}
+
+pkg_postinst() {
+ optfeature "Terminal tab plugin support" x11-libs/qtermwidget
+ optfeature "GitServer plugin support" dev-vcs/gitqlient-gitserver-plugin
+ optfeature "Jenkins plugin support" dev-vcs/gitqlient-jenkins-plugin
+ elog "To use plugins set PluginFolder in GitQlient settings Plugin tab to /usr/$(get_libdir)"
+ xdg_pkg_postinst
+}
diff --git a/dev-vcs/gitqlient/gitqlient-1.6.1.ebuild b/dev-vcs/gitqlient/gitqlient-1.6.1.ebuild
index 2e48887c52..12d53c9ff1 100644
--- a/dev-vcs/gitqlient/gitqlient-1.6.1.ebuild
+++ b/dev-vcs/gitqlient/gitqlient-1.6.1.ebuild
@@ -48,6 +48,8 @@ src_install() {
pkg_postinst() {
optfeature "Terminal tab plugin support" x11-libs/qtermwidget
- optfeature "Jenkins and/or GitServer plugins support" dev-qt/qtwebchannel:5 dev-qt/qtwebengine:5[widgets]
+ optfeature "GitServer plugin support" dev-vcs/gitqlient-gitserver-plugin
+ optfeature "Jenkins plugin support" dev-vcs/gitqlient-jenkins-plugin
+ elog "To use plugins set PluginFolder in GitQlient settings Plugin tab to /usr/$(get_libdir)"
xdg_pkg_postinst
}
diff --git a/dev-vcs/gitqlient/gitqlient-9999.ebuild b/dev-vcs/gitqlient/gitqlient-9999.ebuild
index 4d97268693..7e5ab5757f 100644
--- a/dev-vcs/gitqlient/gitqlient-9999.ebuild
+++ b/dev-vcs/gitqlient/gitqlient-9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -25,12 +25,6 @@ RDEPEND="
dev-vcs/git
"
-src_prepare() {
- default
- sed -i -e "/QMAKE_CXXFLAGS/s:-Werror::" "${MY_PN}".pro || die
- sed -i -e "s:Office:Development:" "${S}/src/resources/${PN}.desktop" || die
-}
-
src_configure() {
eqmake5 PREFIX=/usr "${MY_PN}".pro
}
@@ -40,6 +34,9 @@ src_install() {
}
pkg_postinst() {
- optfeature "Jenkins and/or GitServer plugins support" dev-qt/qtwebchannel:5 dev-qt/qtwebengine:5[widgets]
+ optfeature "Terminal tab plugin support" x11-libs/qtermwidget
+ optfeature "GitServer plugin support" dev-vcs/gitqlient-gitserver-plugin
+ optfeature "Jenkins plugin support" dev-vcs/gitqlient-jenkins-plugin
+ elog "To use plugins set PluginFolder in GitQlient settings Plugin tab to /usr/$(get_libdir)"
xdg_pkg_postinst
}
diff --git a/dev-zig/zls/Manifest b/dev-zig/zls/Manifest
new file mode 100644
index 0000000000..1bb0f6d7b6
--- /dev/null
+++ b/dev-zig/zls/Manifest
@@ -0,0 +1,3 @@
+DIST known-folders-24845b0103e611c108d6bc334231c464e699742c.tar.gz 6618 BLAKE2B cdfe56329edcf50a07eea919b1a753ce965eeaa3c1d9e08289d74704809e489a7a674fb41c0fa16115a406512477cfa99953d434d44c52429c241df7e7bb4f1d SHA512 4ac156ad51793a733d8fd5a24936bd7b0bb8a527b9d19d9cb7d43c9ec7ac983f37dfc00fdfec23147964689201cdbee213e66b4af0917b0bb324b02e8a3a7151
+DIST tracy-f493d4aa8ba8141d9680473fad007d8a6348628e.tar.gz 5401470 BLAKE2B 8a027bfe82842d6d3caeddcf03499a3671a99f2210a40b434e9893a60da88775c19738230e8d55cb1de020fe9f0d7d414df76f36f4a55b04a0c41c8c0de8232b SHA512 e8a844ff015b4c7a261e3251be33deced4f4a29a8fc8254244c125b391266e7a38bdf8d988ff4aac10bd0ee5538fca1e274a0d91dcde08d0bd021006cb326e6f
+DIST zls-0.10.0.tar.gz 320226 BLAKE2B fc9c7c6e37d9347710520ddf0bc90b704ff6115210e044e68a973a2edefe024d14cf410ed0fe74400c1bed8b57f8316dc4298561f78de3abe112bc38df70404b SHA512 16a55ef0ecfac1bf43c4d917741db8389dc835cfdd9e78e9853180dad7218656c6a09b67b7185e7d87ccb2196a4deb457c3d476300eff01ce8c9bfab597576ad
diff --git a/dev-zig/zls/files/zls-0.10.0-add-builtin-data-for-new-zig-versions.patch b/dev-zig/zls/files/zls-0.10.0-add-builtin-data-for-new-zig-versions.patch
new file mode 100644
index 0000000000..1810aef351
--- /dev/null
+++ b/dev-zig/zls/files/zls-0.10.0-add-builtin-data-for-new-zig-versions.patch
@@ -0,0 +1,3764 @@
+From 95f21d0d23fa67c3c1688cfbfa53905ab1f6a7d5 Mon Sep 17 00:00:00 2001
+From: BratishkaErik <25210740+BratishkaErik@users.noreply.github.com>
+Date: Thu, 3 Nov 2022 02:24:51 +0600
+Subject: [PATCH] Add builtin data for 0.9.1 and 0.10.0 (#735)
+
+* Add builtin data for 0.9.1
+
+* Add builtin data for 0.10.0
+
+* Update builtin data for master
+---
+ src/data/0.10.0.zig | 1805 +++++++++++++++++++++++++++++++++++++++++++
+ src/data/0.9.1.zig | 1777 ++++++++++++++++++++++++++++++++++++++++++
+ src/data/data.zig | 2 +
+ src/data/master.zig | 40 +-
+ src/shared.zig | 2 +
+ 5 files changed, 3609 insertions(+), 17 deletions(-)
+ create mode 100644 src/data/0.10.0.zig
+ create mode 100644 src/data/0.9.1.zig
+
+diff --git a/src/data/0.10.0.zig b/src/data/0.10.0.zig
+new file mode 100644
+index 00000000..82f7a25a
+--- /dev/null
++++ b/src/data/0.10.0.zig
+@@ -0,0 +1,1805 @@
++const Builtin = struct {
++ name: []const u8,
++ signature: []const u8,
++ snippet: []const u8,
++ documentation: []const u8,
++ arguments: []const []const u8,
++};
++
++pub const builtins = [_]Builtin{
++ .{
++ .name = "@addrSpaceCast",
++ .signature = "@addrSpaceCast(comptime addrspace: std.builtin.AddressSpace, ptr: anytype) anytype",
++ .snippet = "@addrSpaceCast(${1:comptime addrspace: std.builtin.AddressSpace}, ${2:ptr: anytype})",
++ .documentation =
++ \\Converts a pointer from one address space to another. Depending on the current target and address spaces, this cast may be a no-op, a complex operation, or illegal. If the cast is legal, then the resulting pointer points to the same memory location as the pointer operand. It is always valid to cast a pointer between the same address spaces.
++ ,
++ .arguments = &.{
++ "comptime addrspace: std.builtin.AddressSpace",
++ "ptr: anytype",
++ },
++ },
++ .{
++ .name = "@addWithOverflow",
++ .signature = "@addWithOverflow(comptime T: type, a: T, b: T, result: *T) bool",
++ .snippet = "@addWithOverflow(${1:comptime T: type}, ${2:a: T}, ${3:b: T}, ${4:result: *T})",
++ .documentation =
++ \\Performs `result.* = a + b`. If overflow or underflow occurs, stores the overflowed bits in `result` and returns `true`. If no overflow or underflow occurs, returns `false`.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "a: T",
++ "b: T",
++ "result: *T",
++ },
++ },
++ .{
++ .name = "@alignCast",
++ .signature = "@alignCast(comptime alignment: u29, ptr: anytype) anytype",
++ .snippet = "@alignCast(${1:comptime alignment: u29}, ${2:ptr: anytype})",
++ .documentation =
++ \\`ptr` can be `*T`, `?*T`, or `[]T`. It returns the same type as `ptr` except with the alignment adjusted to the new value.
++ \\
++ \\A [pointer alignment safety check](https://ziglang.org/documentation/0.10.0/#Incorrect-Pointer-Alignment) is added to the generated code to make sure the pointer is aligned as promised.
++ ,
++ .arguments = &.{
++ "comptime alignment: u29",
++ "ptr: anytype",
++ },
++ },
++ .{
++ .name = "@alignOf",
++ .signature = "@alignOf(comptime T: type) comptime_int",
++ .snippet = "@alignOf(${1:comptime T: type})",
++ .documentation =
++ \\This function returns the number of bytes that this type should be aligned to for the current target to match the C ABI. When the child type of a pointer has this alignment, the alignment can be omitted from the type.
++ \\
++ \\```zig
++ \\const assert = @import("std").debug.assert;
++ \\comptime {
++ \\ assert(*u32 == *align(@alignOf(u32)) u32);
++ \\}
++ \\```
++ \\
++ \\The result is a target-specific compile time constant. It is guaranteed to be less than or equal to [@sizeOf(T)](https://ziglang.org/documentation/0.10.0/#@sizeOf).
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ },
++ },
++ .{
++ .name = "@as",
++ .signature = "@as(comptime T: type, expression) T",
++ .snippet = "@as(${1:comptime T: type}, ${2:expression})",
++ .documentation =
++ \\Performs [Type Coercion](https://ziglang.org/documentation/0.10.0/#Type-Coercion). This cast is allowed when the conversion is unambiguous and safe, and is the preferred way to convert between types, whenever possible.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "expression",
++ },
++ },
++ .{
++ .name = "@asyncCall",
++ .signature = "@asyncCall(frame_buffer: []align(@alignOf(@Frame(anyAsyncFunction))) u8, result_ptr, function_ptr, args: anytype) anyframe->T",
++ .snippet = "@asyncCall(${1:frame_buffer: []align(@alignOf(@Frame(anyAsyncFunction))) u8}, ${2:result_ptr}, ${3:function_ptr}, ${4:args: anytype})",
++ .documentation =
++ \\`@asyncCall` performs an `async` call on a function pointer, which may or may not be an [async function](https://ziglang.org/documentation/0.10.0/#Async-Functions).
++ \\
++ \\The provided `frame_buffer` must be large enough to fit the entire function frame. This size can be determined with [@frameSize](https://ziglang.org/documentation/0.10.0/#frameSize). To provide a too-small buffer invokes safety-checked [Undefined Behavior](https://ziglang.org/documentation/0.10.0/#Undefined-Behavior).
++ \\
++ \\`result_ptr` is optional ([null](https://ziglang.org/documentation/0.10.0/#null) may be provided). If provided, the function call will write its result directly to the result pointer, which will be available to read after [await](https://ziglang.org/documentation/0.10.0/#Async-and-Await) completes. Any result location provided to `await` will copy the result from `result_ptr`.
{#code_begin|test|async_struct_field_fn_pointer#} {#backend_stage1#} const std = @import("std"); const expect = std.testing.expect; test "async fn pointer in a struct field" { var data: i32 = 1; const Foo = struct { bar: fn (*i32) callconv(.Async) void, }; var foo = Foo{ .bar = func }; var bytes: [64]u8 align(@alignOf(@Frame(func))) = undefined; const f = @asyncCall(&bytes, {}, foo.bar, .{&data}); try expect(data == 2); resume f; try expect(data == 4); } fn func(y: *i32) void { defer y.* += 2; y.* += 1; suspend {} }`
++ ,
++ .arguments = &.{
++ "frame_buffer: []align(@alignOf(@Frame(anyAsyncFunction))) u8",
++ "result_ptr",
++ "function_ptr",
++ "args: anytype",
++ },
++ },
++ .{
++ .name = "@atomicLoad",
++ .signature = "@atomicLoad(comptime T: type, ptr: *const T, comptime ordering: builtin.AtomicOrder) T",
++ .snippet = "@atomicLoad(${1:comptime T: type}, ${2:ptr: *const T}, ${3:comptime ordering: builtin.AtomicOrder})",
++ .documentation =
++ \\This builtin function atomically dereferences a pointer and returns the value.
++ \\
++ \\`T` must be a pointer, a `bool`, a float, an integer or an enum.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "ptr: *const T",
++ "comptime ordering: builtin.AtomicOrder",
++ },
++ },
++ .{
++ .name = "@atomicRmw",
++ .signature = "@atomicRmw(comptime T: type, ptr: *T, comptime op: builtin.AtomicRmwOp, operand: T, comptime ordering: builtin.AtomicOrder) T",
++ .snippet = "@atomicRmw(${1:comptime T: type}, ${2:ptr: *T}, ${3:comptime op: builtin.AtomicRmwOp}, ${4:operand: T}, ${5:comptime ordering: builtin.AtomicOrder})",
++ .documentation =
++ \\This builtin function atomically modifies memory and then returns the previous value.
++ \\
++ \\`T` must be a pointer, a `bool`, a float, an integer or an enum.
++ \\
++ \\Supported operations:
++ \\ - `.Xchg` - stores the operand unmodified. Supports enums, integers and floats.
++ \\ - `.Add` - for integers, twos complement wraparound addition. Also supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats).
++ \\ - `.Sub` - for integers, twos complement wraparound subtraction. Also supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats).
++ \\ - `.And` - bitwise and
++ \\ - `.Nand` - bitwise nand
++ \\ - `.Or` - bitwise or
++ \\ - `.Xor` - bitwise xor
++ \\ - `.Max` - stores the operand if it is larger. Supports integers and floats.
++ \\ - `.Min` - stores the operand if it is smaller. Supports integers and floats.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "ptr: *T",
++ "comptime op: builtin.AtomicRmwOp",
++ "operand: T",
++ "comptime ordering: builtin.AtomicOrder",
++ },
++ },
++ .{
++ .name = "@atomicStore",
++ .signature = "@atomicStore(comptime T: type, ptr: *T, value: T, comptime ordering: builtin.AtomicOrder) void",
++ .snippet = "@atomicStore(${1:comptime T: type}, ${2:ptr: *T}, ${3:value: T}, ${4:comptime ordering: builtin.AtomicOrder})",
++ .documentation =
++ \\This builtin function atomically stores a value.
++ \\
++ \\`T` must be a pointer, a `bool`, a float, an integer or an enum.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "ptr: *T",
++ "value: T",
++ "comptime ordering: builtin.AtomicOrder",
++ },
++ },
++ .{
++ .name = "@bitCast",
++ .signature = "@bitCast(comptime DestType: type, value: anytype) DestType",
++ .snippet = "@bitCast(${1:comptime DestType: type}, ${2:value: anytype})",
++ .documentation =
++ \\Converts a value of one type to another type.
++ \\
++ \\Asserts that `@sizeOf(@TypeOf(value)) == @sizeOf(DestType)`.
++ \\
++ \\Asserts that `@typeInfo(DestType) != .Pointer`. Use `@ptrCast` or `@intToPtr` if you need this.
++ \\
++ \\Can be used for these things for example:
++ \\ - Convert `f32` to `u32` bits
++ \\ - Convert `i32` to `u32` preserving twos complement
++ \\
++ \\Works at compile-time if `value` is known at compile time. It's a compile error to bitcast a value of undefined layout; this means that, besides the restriction from types which possess dedicated casting builtins (enums, pointers, error sets), bare structs, error unions, slices, optionals, and any other type without a well-defined memory layout, also cannot be used in this operation.
++ ,
++ .arguments = &.{
++ "comptime DestType: type",
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@bitOffsetOf",
++ .signature = "@bitOffsetOf(comptime T: type, comptime field_name: []const u8) comptime_int",
++ .snippet = "@bitOffsetOf(${1:comptime T: type}, ${2:comptime field_name: []const u8})",
++ .documentation =
++ \\Returns the bit offset of a field relative to its containing struct.
++ \\
++ \\For non [packed structs](https://ziglang.org/documentation/0.10.0/#packed-struct), this will always be divisible by `8`. For packed structs, non-byte-aligned fields will share a byte offset, but they will have different bit offsets.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "comptime field_name: []const u8",
++ },
++ },
++ .{
++ .name = "@boolToInt",
++ .signature = "@boolToInt(value: bool) u1",
++ .snippet = "@boolToInt(${1:value: bool})",
++ .documentation =
++ \\Converts `true` to `@as(u1, 1)` and `false` to `@as(u1, 0)`.
++ \\
++ \\If the value is known at compile-time, the return type is `comptime_int` instead of `u1`.
++ ,
++ .arguments = &.{
++ "value: bool",
++ },
++ },
++ .{
++ .name = "@bitSizeOf",
++ .signature = "@bitSizeOf(comptime T: type) comptime_int",
++ .snippet = "@bitSizeOf(${1:comptime T: type})",
++ .documentation =
++ \\This function returns the number of bits it takes to store `T` in memory if the type were a field in a packed struct/union. The result is a target-specific compile time constant.
++ \\
++ \\This function measures the size at runtime. For types that are disallowed at runtime, such as `comptime_int` and `type`, the result is `0`.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ },
++ },
++ .{
++ .name = "@breakpoint",
++ .signature = "@breakpoint()",
++ .snippet = "@breakpoint()",
++ .documentation =
++ \\This function inserts a platform-specific debug trap instruction which causes debuggers to break there.
++ \\
++ \\This function is only valid within function scope.
++ ,
++ .arguments = &.{},
++ },
++ .{
++ .name = "@mulAdd",
++ .signature = "@mulAdd(comptime T: type, a: T, b: T, c: T) T",
++ .snippet = "@mulAdd(${1:comptime T: type}, ${2:a: T}, ${3:b: T}, ${4:c: T})",
++ .documentation =
++ \\Fused multiply-add, similar to `(a * b) + c`, except only rounds once, and is thus more accurate.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats) and [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors) of floats.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "a: T",
++ "b: T",
++ "c: T",
++ },
++ },
++ .{
++ .name = "@byteSwap",
++ .signature = "@byteSwap(operand: anytype) T",
++ .snippet = "@byteSwap(${1:operand: anytype})",
++ .documentation =
++ \\`@TypeOf(operand)` must be an integer type or an integer vector type with bit count evenly divisible by 8.
++ \\
++ \\`operand` may be an [integer](https://ziglang.org/documentation/0.10.0/#Integers) or [vector](https://ziglang.org/documentation/0.10.0/#Vectors).
++ \\
++ \\Swaps the byte order of the integer. This converts a big endian integer to a little endian integer, and converts a little endian integer to a big endian integer.
++ \\
++ \\Note that for the purposes of memory layout with respect to endianness, the integer type should be related to the number of bytes reported by [@sizeOf](https://ziglang.org/documentation/0.10.0/#sizeOf) bytes. This is demonstrated with `u24`. `@sizeOf(u24) == 4`, which means that a `u24` stored in memory takes 4 bytes, and those 4 bytes are what are swapped on a little vs big endian system. On the other hand, if `T` is specified to be `u24`, then only 3 bytes are reversed.
++ ,
++ .arguments = &.{
++ "operand: anytype",
++ },
++ },
++ .{
++ .name = "@bitReverse",
++ .signature = "@bitReverse(integer: anytype) T",
++ .snippet = "@bitReverse(${1:integer: anytype})",
++ .documentation =
++ \\`@TypeOf(anytype)` accepts any integer type or integer vector type.
++ \\
++ \\Reverses the bitpattern of an integer value, including the sign bit if applicable.
++ \\
++ \\For example 0b10110110 (`u8 = 182`, `i8 = -74`) becomes 0b01101101 (`u8 = 109`, `i8 = 109`).
++ ,
++ .arguments = &.{
++ "integer: anytype",
++ },
++ },
++ .{
++ .name = "@offsetOf",
++ .signature = "@offsetOf(comptime T: type, comptime field_name: []const u8) comptime_int",
++ .snippet = "@offsetOf(${1:comptime T: type}, ${2:comptime field_name: []const u8})",
++ .documentation =
++ \\Returns the byte offset of a field relative to its containing struct.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "comptime field_name: []const u8",
++ },
++ },
++ .{
++ .name = "@call",
++ .signature = "@call(options: std.builtin.CallOptions, function: anytype, args: anytype) anytype",
++ .snippet = "@call(${1:options: std.builtin.CallOptions}, ${2:function: anytype}, ${3:args: anytype})",
++ .documentation =
++ \\Calls a function, in the same way that invoking an expression with parentheses does:
++ \\
++ \\```zig
++ \\const expect = @import("std").testing.expect;
++ \\
++ \\test "noinline function call" {
++ \\ try expect(@call(.{}, add, .{3, 9}) == 12);
++ \\}
++ \\
++ \\fn add(a: i32, b: i32) i32 {
++ \\ return a + b;
++ \\}
++ \\```
++ \\
++ \\`@call` allows more flexibility than normal function call syntax does. The `CallOptions` struct is reproduced here: {#syntax_block|zig|builtin.CallOptions struct#} pub const CallOptions = struct { modifier: Modifier = .auto, /// Only valid when `Modifier` is `Modifier.async_kw`. stack: ?[]align(std.Target.stack_align) u8 = null, pub const Modifier = enum { /// Equivalent to function call syntax. auto, /// Equivalent to async keyword used with function call syntax. async_kw, /// Prevents tail call optimization. This guarantees that the return /// address will point to the callsite, as opposed to the callsite's /// callsite. If the call is otherwise required to be tail-called /// or inlined, a compile error is emitted instead. never_tail, /// Guarantees that the call will not be inlined. If the call is /// otherwise required to be inlined, a compile error is emitted instead. never_inline, /// Asserts that the function call will not suspend. This allows a /// non-async function to call an async function. no_async, /// Guarantees that the call will be generated with tail call optimization. /// If this is not possible, a compile error is emitted instead. always_tail, /// Guarantees that the call will inlined at the callsite. /// If this is not possible, a compile error is emitted instead. always_inline, /// Evaluates the call at compile-time. If the call cannot be completed at /// compile-time, a compile error is emitted instead. compile_time, }; }; {#end_syntax_block#}
++ ,
++ .arguments = &.{
++ "options: std.builtin.CallOptions",
++ "function: anytype",
++ "args: anytype",
++ },
++ },
++ .{
++ .name = "@cDefine",
++ .signature = "@cDefine(comptime name: []u8, value)",
++ .snippet = "@cDefine(${1:comptime name: []u8}, ${2:value})",
++ .documentation =
++ \\This function can only occur inside `@cImport`.
++ \\
++ \\This appends `#define $name $value` to the `@cImport` temporary buffer.
++ \\
++ \\To define without a value, like this:`#define _GNU_SOURCE`
++ \\
++ \\Use the void value, like this:
++ \\
++ \\```zig
++ \\@cDefine("_GNU_SOURCE", {})
++ \\```
++ ,
++ .arguments = &.{
++ "comptime name: []u8",
++ "value",
++ },
++ },
++ .{
++ .name = "@cImport",
++ .signature = "@cImport(expression) type",
++ .snippet = "@cImport(${1:expression})",
++ .documentation =
++ \\This function parses C code and imports the functions, types, variables, and compatible macro definitions into a new empty struct type, and then returns that type.
++ \\
++ \\`expression` is interpreted at compile time. The builtin functions `@cInclude`, `@cDefine`, and `@cUndef` work within this expression, appending to a temporary buffer which is then parsed as C code.
++ \\
++ \\Usually you should only have one `@cImport` in your entire application, because it saves the compiler from invoking clang multiple times, and prevents inline functions from being duplicated.
++ \\
++ \\Reasons for having multiple `@cImport` expressions would be:
++ \\ - To avoid a symbol collision, for example if foo.h and bar.h both `#define CONNECTION_COUNT`
++ \\ - To analyze the C code with different preprocessor defines
++ ,
++ .arguments = &.{
++ "expression",
++ },
++ },
++ .{
++ .name = "@cInclude",
++ .signature = "@cInclude(comptime path: []u8)",
++ .snippet = "@cInclude(${1:comptime path: []u8})",
++ .documentation =
++ \\This function can only occur inside `@cImport`.
++ \\
++ \\This appends `#include <$path>\n` to the `c_import` temporary buffer.
++ ,
++ .arguments = &.{
++ "comptime path: []u8",
++ },
++ },
++ .{
++ .name = "@clz",
++ .signature = "@clz(operand: anytype)",
++ .snippet = "@clz(${1:operand: anytype})",
++ .documentation =
++ \\`@TypeOf(operand)` must be an integer type or an integer vector type.
++ \\
++ \\`operand` may be an [integer](https://ziglang.org/documentation/0.10.0/#Integers) or [vector](https://ziglang.org/documentation/0.10.0/#Vectors).
++ \\
++ \\This function counts the number of most-significant (leading in a big-Endian sense) zeroes in an integer.
++ \\
++ \\If `operand` is a [comptime](https://ziglang.org/documentation/0.10.0/#comptime)-known integer, the return type is `comptime_int`. Otherwise, the return type is an unsigned integer or vector of unsigned integers with the minimum number of bits that can represent the bit count of the integer type.
++ \\
++ \\If `operand` is zero, `@clz` returns the bit width of integer type `T`.
++ ,
++ .arguments = &.{
++ "operand: anytype",
++ },
++ },
++ .{
++ .name = "@cmpxchgStrong",
++ .signature = "@cmpxchgStrong(comptime T: type, ptr: *T, expected_value: T, new_value: T, success_order: AtomicOrder, fail_order: AtomicOrder) ?T",
++ .snippet = "@cmpxchgStrong(${1:comptime T: type}, ${2:ptr: *T}, ${3:expected_value: T}, ${4:new_value: T}, ${5:success_order: AtomicOrder}, ${6:fail_order: AtomicOrder})",
++ .documentation =
++ \\This function performs a strong atomic compare exchange operation. It's the equivalent of this code, except atomic:
++ \\
++ \\```zig
++ \\fn cmpxchgStrongButNotAtomic(comptime T: type, ptr: *T, expected_value: T, new_value: T) ?T {
++ \\ const old_value = ptr.*;
++ \\ if (old_value == expected_value) {
++ \\ ptr.* = new_value;
++ \\ return null;
++ \\ } else {
++ \\ return old_value;
++ \\ }
++ \\}
++ \\```
++ \\
++ \\If you are using cmpxchg in a loop, [@cmpxchgWeak](https://ziglang.org/documentation/0.10.0/#cmpxchgWeak) is the better choice, because it can be implemented more efficiently in machine instructions.
++ \\
++ \\`T` must be a pointer, a `bool`, a float, an integer or an enum.
++ \\
++ \\`@typeInfo(@TypeOf(ptr)).Pointer.alignment` must be `>= @sizeOf(T).`
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "ptr: *T",
++ "expected_value: T",
++ "new_value: T",
++ "success_order: AtomicOrder",
++ "fail_order: AtomicOrder",
++ },
++ },
++ .{
++ .name = "@cmpxchgWeak",
++ .signature = "@cmpxchgWeak(comptime T: type, ptr: *T, expected_value: T, new_value: T, success_order: AtomicOrder, fail_order: AtomicOrder) ?T",
++ .snippet = "@cmpxchgWeak(${1:comptime T: type}, ${2:ptr: *T}, ${3:expected_value: T}, ${4:new_value: T}, ${5:success_order: AtomicOrder}, ${6:fail_order: AtomicOrder})",
++ .documentation =
++ \\This function performs a weak atomic compare exchange operation. It's the equivalent of this code, except atomic: {#syntax_block|zig|cmpxchgWeakButNotAtomic#} fn cmpxchgWeakButNotAtomic(comptime T: type, ptr: *T, expected_value: T, new_value: T) ?T { const old_value = ptr.*; if (old_value == expected_value and usuallyTrueButSometimesFalse()) { ptr.* = new_value; return null; } else { return old_value; } } {#end_syntax_block#}
++ \\
++ \\If you are using cmpxchg in a loop, the sporadic failure will be no problem, and `cmpxchgWeak` is the better choice, because it can be implemented more efficiently in machine instructions. However if you need a stronger guarantee, use [@cmpxchgStrong](https://ziglang.org/documentation/0.10.0/#cmpxchgStrong).
++ \\
++ \\`T` must be a pointer, a `bool`, a float, an integer or an enum.
++ \\
++ \\`@typeInfo(@TypeOf(ptr)).Pointer.alignment` must be `>= @sizeOf(T).`
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "ptr: *T",
++ "expected_value: T",
++ "new_value: T",
++ "success_order: AtomicOrder",
++ "fail_order: AtomicOrder",
++ },
++ },
++ .{
++ .name = "@compileError",
++ .signature = "@compileError(comptime msg: []u8)",
++ .snippet = "@compileError(${1:comptime msg: []u8})",
++ .documentation =
++ \\This function, when semantically analyzed, causes a compile error with the message `msg`.
++ \\
++ \\There are several ways that code avoids being semantically checked, such as using `if` or `switch` with compile time constants, and `comptime` functions.
++ ,
++ .arguments = &.{
++ "comptime msg: []u8",
++ },
++ },
++ .{
++ .name = "@compileLog",
++ .signature = "@compileLog(args: ...)",
++ .snippet = "@compileLog(${1:args: ...})",
++ .documentation =
++ \\This function prints the arguments passed to it at compile-time.
++ \\
++ \\To prevent accidentally leaving compile log statements in a codebase, a compilation error is added to the build, pointing to the compile log statement. This error prevents code from being generated, but does not otherwise interfere with analysis.
++ \\
++ \\This function can be used to do "printf debugging" on compile-time executing code.
++ \\
++ \\```zig
++ \\const print = @import("std").debug.print;
++ \\
++ \\const num1 = blk: {
++ \\ var val1: i32 = 99;
++ \\ @compileLog("comptime val1 = ", val1);
++ \\ val1 = val1 + 1;
++ \\ break :blk val1;
++ \\};
++ \\
++ \\test "main" {
++ \\ @compileLog("comptime in main");
++ \\
++ \\ print("Runtime in main, num1 = {}.\n", .{num1});
++ \\}
++ \\```
++ \\
++ \\If all `@compileLog` calls are removed or not encountered by analysis, the program compiles successfully and the generated executable prints: {#code_begin|test|without_compileLog#} const print = @import("std").debug.print; const num1 = blk: { var val1: i32 = 99; val1 = val1 + 1; break :blk val1; }; test "main" { print("Runtime in main, num1 = {}.\n", .{num1}); }`
++ ,
++ .arguments = &.{
++ "args: ...",
++ },
++ },
++ .{
++ .name = "@ctz",
++ .signature = "@ctz(operand: anytype)",
++ .snippet = "@ctz(${1:operand: anytype})",
++ .documentation =
++ \\`@TypeOf(operand)` must be an integer type or an integer vector type.
++ \\
++ \\`operand` may be an [integer](https://ziglang.org/documentation/0.10.0/#Integers) or [vector](https://ziglang.org/documentation/0.10.0/#Vectors).
++ \\
++ \\This function counts the number of least-significant (trailing in a big-Endian sense) zeroes in an integer.
++ \\
++ \\If `operand` is a [comptime](https://ziglang.org/documentation/0.10.0/#comptime)-known integer, the return type is `comptime_int`. Otherwise, the return type is an unsigned integer or vector of unsigned integers with the minimum number of bits that can represent the bit count of the integer type.
++ \\
++ \\If `operand` is zero, `@ctz` returns the bit width of integer type `T`.
++ ,
++ .arguments = &.{
++ "operand: anytype",
++ },
++ },
++ .{
++ .name = "@cUndef",
++ .signature = "@cUndef(comptime name: []u8)",
++ .snippet = "@cUndef(${1:comptime name: []u8})",
++ .documentation =
++ \\This function can only occur inside `@cImport`.
++ \\
++ \\This appends `#undef $name` to the `@cImport` temporary buffer.
++ ,
++ .arguments = &.{
++ "comptime name: []u8",
++ },
++ },
++ .{
++ .name = "@divExact",
++ .signature = "@divExact(numerator: T, denominator: T) T",
++ .snippet = "@divExact(${1:numerator: T}, ${2:denominator: T})",
++ .documentation =
++ \\Exact division. Caller guarantees `denominator != 0` and `@divTrunc(numerator, denominator) * denominator == numerator`.
++ \\ - `@divExact(6, 3) == 2`
++ \\ - `@divExact(a, b) * b == a`
++ \\
++ \\For a function that returns a possible error code, use `@import("std").math.divExact`.
++ ,
++ .arguments = &.{
++ "numerator: T",
++ "denominator: T",
++ },
++ },
++ .{
++ .name = "@divFloor",
++ .signature = "@divFloor(numerator: T, denominator: T) T",
++ .snippet = "@divFloor(${1:numerator: T}, ${2:denominator: T})",
++ .documentation =
++ \\Floored division. Rounds toward negative infinity. For unsigned integers it is the same as `numerator / denominator`. Caller guarantees `denominator != 0` and `!(@typeInfo(T) == .Int and T.is_signed and numerator == std.math.minInt(T) and denominator == -1)`.
++ \\ - `@divFloor(-5, 3) == -2`
++ \\ - `(@divFloor(a, b) * b) + @mod(a, b) == a`
++ \\
++ \\For a function that returns a possible error code, use `@import("std").math.divFloor`.
++ ,
++ .arguments = &.{
++ "numerator: T",
++ "denominator: T",
++ },
++ },
++ .{
++ .name = "@divTrunc",
++ .signature = "@divTrunc(numerator: T, denominator: T) T",
++ .snippet = "@divTrunc(${1:numerator: T}, ${2:denominator: T})",
++ .documentation =
++ \\Truncated division. Rounds toward zero. For unsigned integers it is the same as `numerator / denominator`. Caller guarantees `denominator != 0` and `!(@typeInfo(T) == .Int and T.is_signed and numerator == std.math.minInt(T) and denominator == -1)`.
++ \\ - `@divTrunc(-5, 3) == -1`
++ \\ - `(@divTrunc(a, b) * b) + @rem(a, b) == a`
++ \\
++ \\For a function that returns a possible error code, use `@import("std").math.divTrunc`.
++ ,
++ .arguments = &.{
++ "numerator: T",
++ "denominator: T",
++ },
++ },
++ .{
++ .name = "@embedFile",
++ .signature = "@embedFile(comptime path: []const u8) *const [N:0]u8",
++ .snippet = "@embedFile(${1:comptime path: []const u8})",
++ .documentation =
++ \\This function returns a compile time constant pointer to null-terminated, fixed-size array with length equal to the byte count of the file given by `path`. The contents of the array are the contents of the file. This is equivalent to a [string literal](https://ziglang.org/documentation/0.10.0/#String-Literals-and-Unicode-Code-Point-Literals) with the file contents.
++ \\
++ \\`path` is absolute or relative to the current file, just like `@import`.
++ ,
++ .arguments = &.{
++ "comptime path: []const u8",
++ },
++ },
++ .{
++ .name = "@enumToInt",
++ .signature = "@enumToInt(enum_or_tagged_union: anytype) anytype",
++ .snippet = "@enumToInt(${1:enum_or_tagged_union: anytype})",
++ .documentation =
++ \\Converts an enumeration value into its integer tag type. When a tagged union is passed, the tag value is used as the enumeration value.
++ \\
++ \\If there is only one possible enum value, the result is a `comptime_int` known at [comptime](https://ziglang.org/documentation/0.10.0/#comptime).
++ ,
++ .arguments = &.{
++ "enum_or_tagged_union: anytype",
++ },
++ },
++ .{
++ .name = "@errorName",
++ .signature = "@errorName(err: anyerror) [:0]const u8",
++ .snippet = "@errorName(${1:err: anyerror})",
++ .documentation =
++ \\This function returns the string representation of an error. The string representation of `error.OutOfMem` is `"OutOfMem"`.
++ \\
++ \\If there are no calls to `@errorName` in an entire application, or all calls have a compile-time known value for `err`, then no error name table will be generated.
++ ,
++ .arguments = &.{
++ "err: anyerror",
++ },
++ },
++ .{
++ .name = "@errorReturnTrace",
++ .signature = "@errorReturnTrace() ?*builtin.StackTrace",
++ .snippet = "@errorReturnTrace()",
++ .documentation =
++ \\If the binary is built with error return tracing, and this function is invoked in a function that calls a function with an error or error union return type, returns a stack trace object. Otherwise returns [null](https://ziglang.org/documentation/0.10.0/#null).
++ ,
++ .arguments = &.{},
++ },
++ .{
++ .name = "@errorToInt",
++ .signature = "@errorToInt(err: anytype) std.meta.Int(.unsigned, @sizeOf(anyerror) * 8)",
++ .snippet = "@errorToInt(${1:err: anytype})",
++ .documentation =
++ \\Supports the following types:
++ \\ - [The Global Error Set](https://ziglang.org/documentation/0.10.0/#The-Global-Error-Set)
++ \\ - [Error Set Type](https://ziglang.org/documentation/0.10.0/#Error-Set-Type)
++ \\ - [Error Union Type](https://ziglang.org/documentation/0.10.0/#Error-Union-Type)
++ \\
++ \\Converts an error to the integer representation of an error.
++ \\
++ \\It is generally recommended to avoid this cast, as the integer representation of an error is not stable across source code changes.
++ ,
++ .arguments = &.{
++ "err: anytype",
++ },
++ },
++ .{
++ .name = "@errSetCast",
++ .signature = "@errSetCast(comptime T: DestType, value: anytype) DestType",
++ .snippet = "@errSetCast(${1:comptime T: DestType}, ${2:value: anytype})",
++ .documentation =
++ \\Converts an error value from one error set to another error set. Attempting to convert an error which is not in the destination error set results in safety-protected [Undefined Behavior](https://ziglang.org/documentation/0.10.0/#Undefined-Behavior).
++ ,
++ .arguments = &.{
++ "comptime T: DestType",
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@export",
++ .signature = "@export(declaration, comptime options: std.builtin.ExportOptions) void",
++ .snippet = "@export(${1:declaration}, ${2:comptime options: std.builtin.ExportOptions})",
++ .documentation =
++ \\Creates a symbol in the output object file.
++ \\
++ \\`declaration` must be one of two things:
++ \\ - An identifier (`x`) identifying a [function](https://ziglang.org/documentation/0.10.0/#Functions) or a [variable](https://ziglang.org/documentation/0.10.0/#Container-Level-Variables).
++ \\ - Field access (`x.y`) looking up a [function](https://ziglang.org/documentation/0.10.0/#Functions) or a [variable](https://ziglang.org/documentation/0.10.0/#Container-Level-Variables).
++ \\
++ \\This builtin can be called from a [comptime](https://ziglang.org/documentation/0.10.0/#comptime) block to conditionally export symbols. When `declaration` is a function with the C calling convention and `options.linkage` is `Strong`, this is equivalent to the `export` keyword used on a function:
++ \\
++ \\```zig
++ \\comptime {
++ \\ @export(internalName, .{ .name = "foo", .linkage = .Strong });
++ \\}
++ \\
++ \\fn internalName() callconv(.C) void {}
++ \\```
++ \\
++ \\This is equivalent to:
++ \\
++ \\```zig
++ \\export fn foo() void {}
++ \\```
++ \\
++ \\Note that even when using `export`, the `@"foo"` syntax for [identifiers](https://ziglang.org/documentation/0.10.0/#Identifiers) can be used to choose any string for the symbol name:
++ \\
++ \\```zig
++ \\export fn @"A function name that is a complete sentence."() void {}
++ \\```
++ \\
++ \\When looking at the resulting object, you can see the symbol is used verbatim:
++ \\
++ \\```zig
++ \\00000000000001f0 T A function name that is a complete sentence.
++ \\```
++ ,
++ .arguments = &.{
++ "declaration",
++ "comptime options: std.builtin.ExportOptions",
++ },
++ },
++ .{
++ .name = "@extern",
++ .signature = "@extern(T: type, comptime options: std.builtin.ExternOptions) *T",
++ .snippet = "@extern(${1:T: type}, ${2:comptime options: std.builtin.ExternOptions})",
++ .documentation =
++ \\Creates a reference to an external symbol in the output object file.
++ ,
++ .arguments = &.{
++ "T: type",
++ "comptime options: std.builtin.ExternOptions",
++ },
++ },
++ .{
++ .name = "@fence",
++ .signature = "@fence(order: AtomicOrder)",
++ .snippet = "@fence(${1:order: AtomicOrder})",
++ .documentation =
++ \\The `fence` function is used to introduce happens-before edges between operations.
++ \\
++ \\`AtomicOrder` can be found with `@import("std").builtin.AtomicOrder`.
++ ,
++ .arguments = &.{
++ "order: AtomicOrder",
++ },
++ },
++ .{
++ .name = "@field",
++ .signature = "@field(lhs: anytype, comptime field_name: []const u8) (field)",
++ .snippet = "@field(${1:lhs: anytype}, ${2:comptime field_name: []const u8})",
++ .documentation =
++ \\Performs field access by a compile-time string. Works on both fields and declarations. {#code_begin|test|field_decl_access_by_string#} const std = @import("std"); const Point = struct { x: u32, y: u32, pub var z: u32 = 1; }; test "field access by string" { const expect = std.testing.expect; var p = Point{ .x = 0, .y = 0 }; @field(p, "x") = 4; @field(p, "y") = @field(p, "x") + 1; try expect(@field(p, "x") == 4); try expect(@field(p, "y") == 5); } test "decl access by string" { const expect = std.testing.expect; try expect(@field(Point, "z") == 1); @field(Point, "z") = 2; try expect(@field(Point, "z") == 2); }`
++ ,
++ .arguments = &.{
++ "lhs: anytype",
++ "comptime field_name: []const u8",
++ },
++ },
++ .{
++ .name = "@fieldParentPtr",
++ .signature = "@fieldParentPtr(comptime ParentType: type, comptime field_name: []const u8, field_ptr: *T) *ParentType",
++ .snippet = "@fieldParentPtr(${1:comptime ParentType: type}, ${2:comptime field_name: []const u8}, ${3:field_ptr: *T})",
++ .documentation =
++ \\Given a pointer to a field, returns the base pointer of a struct.
++ ,
++ .arguments = &.{
++ "comptime ParentType: type",
++ "comptime field_name: []const u8",
++ "field_ptr: *T",
++ },
++ },
++ .{
++ .name = "@floatCast",
++ .signature = "@floatCast(comptime DestType: type, value: anytype) DestType",
++ .snippet = "@floatCast(${1:comptime DestType: type}, ${2:value: anytype})",
++ .documentation =
++ \\Convert from one float type to another. This cast is safe, but may cause the numeric value to lose precision.
++ ,
++ .arguments = &.{
++ "comptime DestType: type",
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@floatToInt",
++ .signature = "@floatToInt(comptime DestType: type, float: anytype) DestType",
++ .snippet = "@floatToInt(${1:comptime DestType: type}, ${2:float: anytype})",
++ .documentation =
++ \\Converts the integer part of a floating point number to the destination type.
++ \\
++ \\If the integer part of the floating point number cannot fit in the destination type, it invokes safety-checked [Undefined Behavior](https://ziglang.org/documentation/0.10.0/#Undefined-Behavior).
++ ,
++ .arguments = &.{
++ "comptime DestType: type",
++ "float: anytype",
++ },
++ },
++ .{
++ .name = "@frame",
++ .signature = "@frame() *@Frame(func)",
++ .snippet = "@frame()",
++ .documentation =
++ \\This function returns a pointer to the frame for a given function. This type can be [coerced](https://ziglang.org/documentation/0.10.0/#Type-Coercion) to `anyframe->T` and to `anyframe`, where `T` is the return type of the function in scope.
++ \\
++ \\This function does not mark a suspension point, but it does cause the function in scope to become an [async function](https://ziglang.org/documentation/0.10.0/#Async-Functions).
++ ,
++ .arguments = &.{},
++ },
++ .{
++ .name = "@Frame",
++ .signature = "@Frame(func: anytype) type",
++ .snippet = "@Frame(${1:func: anytype})",
++ .documentation =
++ \\This function returns the frame type of a function. This works for [Async Functions](https://ziglang.org/documentation/0.10.0/#Async-Functions) as well as any function without a specific calling convention.
++ \\
++ \\This type is suitable to be used as the return type of [async](https://ziglang.org/documentation/0.10.0/#Async-and-Await) which allows one to, for example, heap-allocate an async function frame: {#code_begin|test|heap_allocated_frame#} {#backend_stage1#} const std = @import("std"); test "heap allocated frame" { const frame = try std.heap.page_allocator.create(@Frame(func)); frame.* = async func(); } fn func() void { suspend {} }`
++ ,
++ .arguments = &.{
++ "func: anytype",
++ },
++ },
++ .{
++ .name = "@frameAddress",
++ .signature = "@frameAddress() usize",
++ .snippet = "@frameAddress()",
++ .documentation =
++ \\This function returns the base pointer of the current stack frame.
++ \\
++ \\The implications of this are target-specific and not consistent across all platforms. The frame address may not be available in release mode due to aggressive optimizations.
++ \\
++ \\This function is only valid within function scope.
++ ,
++ .arguments = &.{},
++ },
++ .{
++ .name = "@frameSize",
++ .signature = "@frameSize(func: anytype) usize",
++ .snippet = "@frameSize(${1:func: anytype})",
++ .documentation =
++ \\This is the same as `@sizeOf(@Frame(func))`, where `func` may be runtime-known.
++ \\
++ \\This function is typically used in conjunction with [@asyncCall](https://ziglang.org/documentation/0.10.0/#asyncCall).
++ ,
++ .arguments = &.{
++ "func: anytype",
++ },
++ },
++ .{
++ .name = "@hasDecl",
++ .signature = "@hasDecl(comptime Container: type, comptime name: []const u8) bool",
++ .snippet = "@hasDecl(${1:comptime Container: type}, ${2:comptime name: []const u8})",
++ .documentation =
++ \\Returns whether or not a [struct](https://ziglang.org/documentation/0.10.0/#struct), [enum](https://ziglang.org/documentation/0.10.0/#enum), or [union](https://ziglang.org/documentation/0.10.0/#union) has a declaration matching `name`. {#code_begin|test|hasDecl#} const std = @import("std"); const expect = std.testing.expect; const Foo = struct { nope: i32, pub var blah = "xxx"; const hi = 1; }; test "@hasDecl" { try expect(@hasDecl(Foo, "blah")); // Even though `hi` is private, @hasDecl returns true because this test is // in the same file scope as Foo. It would return false if Foo was declared // in a different file. try expect(@hasDecl(Foo, "hi")); // @hasDecl is for declarations; not fields. try expect(!@hasDecl(Foo, "nope")); try expect(!@hasDecl(Foo, "nope1234")); }`
++ ,
++ .arguments = &.{
++ "comptime Container: type",
++ "comptime name: []const u8",
++ },
++ },
++ .{
++ .name = "@hasField",
++ .signature = "@hasField(comptime Container: type, comptime name: []const u8) bool",
++ .snippet = "@hasField(${1:comptime Container: type}, ${2:comptime name: []const u8})",
++ .documentation =
++ \\Returns whether the field name of a struct, union, or enum exists.
++ \\
++ \\The result is a compile time constant.
++ \\
++ \\It does not include functions, variables, or constants.
++ ,
++ .arguments = &.{
++ "comptime Container: type",
++ "comptime name: []const u8",
++ },
++ },
++ .{
++ .name = "@import",
++ .signature = "@import(comptime path: []u8) type",
++ .snippet = "@import(${1:comptime path: []u8})",
++ .documentation =
++ \\This function finds a zig file corresponding to `path` and adds it to the build, if it is not already added.
++ \\
++ \\Zig source files are implicitly structs, with a name equal to the file's basename with the extension truncated. `@import` returns the struct type corresponding to the file.
++ \\
++ \\Declarations which have the `pub` keyword may be referenced from a different source file than the one they are declared in.
++ \\
++ \\`path` can be a relative path or it can be the name of a package. If it is a relative path, it is relative to the file that contains the `@import` function call.
++ \\
++ \\The following packages are always available:
++ \\ - `@import("std")` - Zig Standard Library
++ \\ - `@import("builtin")` - Target-specific information. The command `zig build-exe --show-builtin` outputs the source to stdout for reference.
++ \\ - `@import("root")` - Points to the root source file. This is usually `src/main.zig` but it depends on what file is chosen to be built.
++ ,
++ .arguments = &.{
++ "comptime path: []u8",
++ },
++ },
++ .{
++ .name = "@intCast",
++ .signature = "@intCast(comptime DestType: type, int: anytype) DestType",
++ .snippet = "@intCast(${1:comptime DestType: type}, ${2:int: anytype})",
++ .documentation =
++ \\Converts an integer to another integer while keeping the same numerical value. Attempting to convert a number which is out of range of the destination type results in safety-protected [Undefined Behavior](https://ziglang.org/documentation/0.10.0/#Undefined-Behavior).
++ \\
++ \\```zig
++ \\test "integer cast panic" {
++ \\ var a: u16 = 0xabcd;
++ \\ var b: u8 = @intCast(u8, a);
++ \\ _ = b;
++ \\}
++ \\```
++ \\
++ \\To truncate the significant bits of a number out of range of the destination type, use [@truncate](https://ziglang.org/documentation/0.10.0/#truncate).
++ \\
++ \\If `T` is `comptime_int`, then this is semantically equivalent to [Type Coercion](https://ziglang.org/documentation/0.10.0/#Type-Coercion).
++ ,
++ .arguments = &.{
++ "comptime DestType: type",
++ "int: anytype",
++ },
++ },
++ .{
++ .name = "@intToEnum",
++ .signature = "@intToEnum(comptime DestType: type, integer: anytype) DestType",
++ .snippet = "@intToEnum(${1:comptime DestType: type}, ${2:integer: anytype})",
++ .documentation =
++ \\Converts an integer into an [enum](https://ziglang.org/documentation/0.10.0/#enum) value.
++ \\
++ \\Attempting to convert an integer which represents no value in the chosen enum type invokes safety-checked [Undefined Behavior](https://ziglang.org/documentation/0.10.0/#Undefined-Behavior).
++ ,
++ .arguments = &.{
++ "comptime DestType: type",
++ "integer: anytype",
++ },
++ },
++ .{
++ .name = "@intToError",
++ .signature = "@intToError(value: std.meta.Int(.unsigned, @sizeOf(anyerror) * 8)) anyerror",
++ .snippet = "@intToError(${1:value: std.meta.Int(.unsigned, @sizeOf(anyerror) * 8)})",
++ .documentation =
++ \\Converts from the integer representation of an error into [The Global Error Set](https://ziglang.org/documentation/0.10.0/#The-Global-Error-Set) type.
++ \\
++ \\It is generally recommended to avoid this cast, as the integer representation of an error is not stable across source code changes.
++ \\
++ \\Attempting to convert an integer that does not correspond to any error results in safety-protected [Undefined Behavior](https://ziglang.org/documentation/0.10.0/#Undefined-Behavior).
++ ,
++ .arguments = &.{
++ "value: std.meta.Int(.unsigned, @sizeOf(anyerror) * 8)",
++ },
++ },
++ .{
++ .name = "@intToFloat",
++ .signature = "@intToFloat(comptime DestType: type, int: anytype) DestType",
++ .snippet = "@intToFloat(${1:comptime DestType: type}, ${2:int: anytype})",
++ .documentation =
++ \\Converts an integer to the closest floating point representation. To convert the other way, use [@floatToInt](https://ziglang.org/documentation/0.10.0/#floatToInt). This cast is always safe.
++ ,
++ .arguments = &.{
++ "comptime DestType: type",
++ "int: anytype",
++ },
++ },
++ .{
++ .name = "@intToPtr",
++ .signature = "@intToPtr(comptime DestType: type, address: usize) DestType",
++ .snippet = "@intToPtr(${1:comptime DestType: type}, ${2:address: usize})",
++ .documentation =
++ \\Converts an integer to a [pointer](https://ziglang.org/documentation/0.10.0/#Pointers). To convert the other way, use [@ptrToInt](https://ziglang.org/documentation/0.10.0/#ptrToInt). Casting an address of 0 to a destination type which in not [optional](https://ziglang.org/documentation/0.10.0/#Optional-Pointers) and does not have the `allowzero` attribute will result in a [Pointer Cast Invalid Null](https://ziglang.org/documentation/0.10.0/#Pointer-Cast-Invalid-Null) panic when runtime safety checks are enabled.
++ \\
++ \\If the destination pointer type does not allow address zero and `address` is zero, this invokes safety-checked [Undefined Behavior](https://ziglang.org/documentation/0.10.0/#Undefined-Behavior).
++ ,
++ .arguments = &.{
++ "comptime DestType: type",
++ "address: usize",
++ },
++ },
++ .{
++ .name = "@max",
++ .signature = "@max(a: T, b: T) T",
++ .snippet = "@max(${1:a: T}, ${2:b: T})",
++ .documentation =
++ \\Returns the maximum value of `a` and `b`. This builtin accepts integers, floats, and vectors of either. In the latter case, the operation is performed element wise.
++ \\
++ \\NaNs are handled as follows: if one of the operands of a (pairwise) operation is NaN, the other operand is returned. If both operands are NaN, NaN is returned.
++ ,
++ .arguments = &.{
++ "a: T",
++ "b: T",
++ },
++ },
++ .{
++ .name = "@memcpy",
++ .signature = "@memcpy(noalias dest: [*]u8, noalias source: [*]const u8, byte_count: usize)",
++ .snippet = "@memcpy(${1:noalias dest: [*]u8}, ${2:noalias source: [*]const u8}, ${3:byte_count: usize})",
++ .documentation =
++ \\This function copies bytes from one region of memory to another. `dest` and `source` are both pointers and must not overlap.
++ \\
++ \\This function is a low level intrinsic with no safety mechanisms. Most code should not use this function, instead using something like this:
++ \\
++ \\```zig
++ \\for (source[0..byte_count]) |b, i| dest[i] = b;
++ \\```
++ \\
++ \\The optimizer is intelligent enough to turn the above snippet into a memcpy.
++ \\
++ \\There is also a standard library function for this:
++ \\
++ \\```zig
++ \\const mem = @import("std").mem;
++ \\mem.copy(u8, dest[0..byte_count], source[0..byte_count]);
++ \\```
++ ,
++ .arguments = &.{
++ "noalias dest: [*]u8",
++ "noalias source: [*]const u8",
++ "byte_count: usize",
++ },
++ },
++ .{
++ .name = "@memset",
++ .signature = "@memset(dest: [*]u8, c: u8, byte_count: usize)",
++ .snippet = "@memset(${1:dest: [*]u8}, ${2:c: u8}, ${3:byte_count: usize})",
++ .documentation =
++ \\This function sets a region of memory to `c`. `dest` is a pointer.
++ \\
++ \\This function is a low level intrinsic with no safety mechanisms. Most code should not use this function, instead using something like this:
++ \\
++ \\```zig
++ \\for (dest[0..byte_count]) |*b| b.* = c;
++ \\```
++ \\
++ \\The optimizer is intelligent enough to turn the above snippet into a memset.
++ \\
++ \\There is also a standard library function for this:
++ \\
++ \\```zig
++ \\const mem = @import("std").mem;
++ \\mem.set(u8, dest, c);
++ \\```
++ ,
++ .arguments = &.{
++ "dest: [*]u8",
++ "c: u8",
++ "byte_count: usize",
++ },
++ },
++ .{
++ .name = "@min",
++ .signature = "@min(a: T, b: T) T",
++ .snippet = "@min(${1:a: T}, ${2:b: T})",
++ .documentation =
++ \\Returns the minimum value of `a` and `b`. This builtin accepts integers, floats, and vectors of either. In the latter case, the operation is performed element wise.
++ \\
++ \\NaNs are handled as follows: if one of the operands of a (pairwise) operation is NaN, the other operand is returned. If both operands are NaN, NaN is returned.
++ ,
++ .arguments = &.{
++ "a: T",
++ "b: T",
++ },
++ },
++ .{
++ .name = "@wasmMemorySize",
++ .signature = "@wasmMemorySize(index: u32) u32",
++ .snippet = "@wasmMemorySize(${1:index: u32})",
++ .documentation =
++ \\This function returns the size of the Wasm memory identified by `index` as an unsigned value in units of Wasm pages. Note that each Wasm page is 64KB in size.
++ \\
++ \\This function is a low level intrinsic with no safety mechanisms usually useful for allocator designers targeting Wasm. So unless you are writing a new allocator from scratch, you should use something like `@import("std").heap.WasmPageAllocator`.
++ ,
++ .arguments = &.{
++ "index: u32",
++ },
++ },
++ .{
++ .name = "@wasmMemoryGrow",
++ .signature = "@wasmMemoryGrow(index: u32, delta: u32) i32",
++ .snippet = "@wasmMemoryGrow(${1:index: u32}, ${2:delta: u32})",
++ .documentation =
++ \\This function increases the size of the Wasm memory identified by `index` by `delta` in units of unsigned number of Wasm pages. Note that each Wasm page is 64KB in size. On success, returns previous memory size; on failure, if the allocation fails, returns -1.
++ \\
++ \\This function is a low level intrinsic with no safety mechanisms usually useful for allocator designers targeting Wasm. So unless you are writing a new allocator from scratch, you should use something like `@import("std").heap.WasmPageAllocator`. {#code_begin|test|wasmMemoryGrow#} const std = @import("std"); const native_arch = @import("builtin").target.cpu.arch; const expect = std.testing.expect; test "@wasmMemoryGrow" { if (native_arch != .wasm32) return error.SkipZigTest; var prev = @wasmMemorySize(0); try expect(prev == @wasmMemoryGrow(0, 1)); try expect(prev + 1 == @wasmMemorySize(0)); }`
++ ,
++ .arguments = &.{
++ "index: u32",
++ "delta: u32",
++ },
++ },
++ .{
++ .name = "@mod",
++ .signature = "@mod(numerator: T, denominator: T) T",
++ .snippet = "@mod(${1:numerator: T}, ${2:denominator: T})",
++ .documentation =
++ \\Modulus division. For unsigned integers this is the same as `numerator % denominator`. Caller guarantees `denominator > 0`, otherwise the operation will result in a [Remainder Division by Zero](https://ziglang.org/documentation/0.10.0/#Remainder-Division-by-Zero) when runtime safety checks are enabled.
++ \\ - `@mod(-5, 3) == 1`
++ \\ - `(@divFloor(a, b) * b) + @mod(a, b) == a`
++ \\
++ \\For a function that returns an error code, see `@import("std").math.mod`.
++ ,
++ .arguments = &.{
++ "numerator: T",
++ "denominator: T",
++ },
++ },
++ .{
++ .name = "@mulWithOverflow",
++ .signature = "@mulWithOverflow(comptime T: type, a: T, b: T, result: *T) bool",
++ .snippet = "@mulWithOverflow(${1:comptime T: type}, ${2:a: T}, ${3:b: T}, ${4:result: *T})",
++ .documentation =
++ \\Performs `result.* = a * b`. If overflow or underflow occurs, stores the overflowed bits in `result` and returns `true`. If no overflow or underflow occurs, returns `false`.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "a: T",
++ "b: T",
++ "result: *T",
++ },
++ },
++ .{
++ .name = "@panic",
++ .signature = "@panic(message: []const u8) noreturn",
++ .snippet = "@panic(${1:message: []const u8})",
++ .documentation =
++ \\Invokes the panic handler function. By default the panic handler function calls the public `panic` function exposed in the root source file, or if there is not one specified, the `std.builtin.default_panic` function from `std/builtin.zig`.
++ \\
++ \\Generally it is better to use `@import("std").debug.panic`. However, `@panic` can be useful for 2 scenarios:
++ \\ - From library code, calling the programmer's panic function if they exposed one in the root source file.
++ \\ - When mixing C and Zig code, calling the canonical panic implementation across multiple .o files.
++ ,
++ .arguments = &.{
++ "message: []const u8",
++ },
++ },
++ .{
++ .name = "@popCount",
++ .signature = "@popCount(operand: anytype)",
++ .snippet = "@popCount(${1:operand: anytype})",
++ .documentation =
++ \\`@TypeOf(operand)` must be an integer type.
++ \\
++ \\`operand` may be an [integer](https://ziglang.org/documentation/0.10.0/#Integers) or [vector](https://ziglang.org/documentation/0.10.0/#Vectors).
++ \\
++ \\Counts the number of bits set in an integer.
++ \\
++ \\If `operand` is a [comptime](https://ziglang.org/documentation/0.10.0/#comptime)-known integer, the return type is `comptime_int`. Otherwise, the return type is an unsigned integer or vector of unsigned integers with the minimum number of bits that can represent the bit count of the integer type.
++ ,
++ .arguments = &.{
++ "operand: anytype",
++ },
++ },
++ .{
++ .name = "@prefetch",
++ .signature = "@prefetch(ptr: anytype, comptime options: std.builtin.PrefetchOptions)",
++ .snippet = "@prefetch(${1:ptr: anytype}, ${2:comptime options: std.builtin.PrefetchOptions})",
++ .documentation =
++ \\This builtin tells the compiler to emit a prefetch instruction if supported by the target CPU. If the target CPU does not support the requested prefetch instruction, this builtin is a no-op. This function has no effect on the behavior of the program, only on the performance characteristics.
++ \\
++ \\The `ptr` argument may be any pointer type and determines the memory address to prefetch. This function does not dereference the pointer, it is perfectly legal to pass a pointer to invalid memory to this function and no illegal behavior will result.
++ \\
++ \\The `options` argument is the following struct: {#code_begin|syntax|builtin#} /// This data structure is used by the Zig language code generation and /// therefore must be kept in sync with the compiler implementation. pub const PrefetchOptions = struct { /// Whether the prefetch should prepare for a read or a write. rw: Rw = .read, /// 0 means no temporal locality. That is, the data can be immediately /// dropped from the cache after it is accessed. /// /// 3 means high temporal locality. That is, the data should be kept in /// the cache as it is likely to be accessed again soon. locality: u2 = 3, /// The cache that the prefetch should be preformed on. cache: Cache = .data, pub const Rw = enum { read, write, }; pub const Cache = enum { instruction, data, }; };`
++ ,
++ .arguments = &.{
++ "ptr: anytype",
++ "comptime options: std.builtin.PrefetchOptions",
++ },
++ },
++ .{
++ .name = "@ptrCast",
++ .signature = "@ptrCast(comptime DestType: type, value: anytype) DestType",
++ .snippet = "@ptrCast(${1:comptime DestType: type}, ${2:value: anytype})",
++ .documentation =
++ \\Converts a pointer of one type to a pointer of another type.
++ \\
++ \\[Optional Pointers](https://ziglang.org/documentation/0.10.0/#Optional-Pointers) are allowed. Casting an optional pointer which is [null](https://ziglang.org/documentation/0.10.0/#null) to a non-optional pointer invokes safety-checked [Undefined Behavior](https://ziglang.org/documentation/0.10.0/#Undefined-Behavior).
++ ,
++ .arguments = &.{
++ "comptime DestType: type",
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@ptrToInt",
++ .signature = "@ptrToInt(value: anytype) usize",
++ .snippet = "@ptrToInt(${1:value: anytype})",
++ .documentation =
++ \\Converts `value` to a `usize` which is the address of the pointer. `value` can be `*T` or `?*T`.
++ \\
++ \\To convert the other way, use [@intToPtr](https://ziglang.org/documentation/0.10.0/#intToPtr)
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@rem",
++ .signature = "@rem(numerator: T, denominator: T) T",
++ .snippet = "@rem(${1:numerator: T}, ${2:denominator: T})",
++ .documentation =
++ \\Remainder division. For unsigned integers this is the same as `numerator % denominator`. Caller guarantees `denominator > 0`, otherwise the operation will result in a [Remainder Division by Zero](https://ziglang.org/documentation/0.10.0/#Remainder-Division-by-Zero) when runtime safety checks are enabled.
++ \\ - `@rem(-5, 3) == -2`
++ \\ - `(@divTrunc(a, b) * b) + @rem(a, b) == a`
++ \\
++ \\For a function that returns an error code, see `@import("std").math.rem`.
++ ,
++ .arguments = &.{
++ "numerator: T",
++ "denominator: T",
++ },
++ },
++ .{
++ .name = "@returnAddress",
++ .signature = "@returnAddress() usize",
++ .snippet = "@returnAddress()",
++ .documentation =
++ \\This function returns the address of the next machine code instruction that will be executed when the current function returns.
++ \\
++ \\The implications of this are target-specific and not consistent across all platforms.
++ \\
++ \\This function is only valid within function scope. If the function gets inlined into a calling function, the returned address will apply to the calling function.
++ ,
++ .arguments = &.{},
++ },
++ .{
++ .name = "@select",
++ .signature = "@select(comptime T: type, pred: @Vector(len, bool), a: @Vector(len, T), b: @Vector(len, T)) @Vector(len, T)",
++ .snippet = "@select(${1:comptime T: type}, ${2:pred: @Vector(len, bool)}, ${3:a: @Vector(len, T)}, ${4:b: @Vector(len, T)})",
++ .documentation =
++ \\Selects values element-wise from `a` or `b` based on `pred`. If `pred[i]` is `true`, the corresponding element in the result will be `a[i]` and otherwise `b[i]`.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "pred: @Vector(len, bool)",
++ "a: @Vector(len, T)",
++ "b: @Vector(len, T)",
++ },
++ },
++ .{
++ .name = "@setAlignStack",
++ .signature = "@setAlignStack(comptime alignment: u29)",
++ .snippet = "@setAlignStack(${1:comptime alignment: u29})",
++ .documentation =
++ \\Ensures that a function will have a stack alignment of at least `alignment` bytes.
++ ,
++ .arguments = &.{
++ "comptime alignment: u29",
++ },
++ },
++ .{
++ .name = "@setCold",
++ .signature = "@setCold(comptime is_cold: bool)",
++ .snippet = "@setCold(${1:comptime is_cold: bool})",
++ .documentation =
++ \\Tells the optimizer that a function is rarely called.
++ ,
++ .arguments = &.{
++ "comptime is_cold: bool",
++ },
++ },
++ .{
++ .name = "@setEvalBranchQuota",
++ .signature = "@setEvalBranchQuota(comptime new_quota: u32)",
++ .snippet = "@setEvalBranchQuota(${1:comptime new_quota: u32})",
++ .documentation =
++ \\Changes the maximum number of backwards branches that compile-time code execution can use before giving up and making a compile error.
++ \\
++ \\If the `new_quota` is smaller than the default quota (`1000`) or a previously explicitly set quota, it is ignored.
++ \\
++ \\Example:
++ \\
++ \\```zig
++ \\test "foo" {
++ \\ comptime {
++ \\ var i = 0;
++ \\ while (i < 1001) : (i += 1) {}
++ \\ }
++ \\}
++ \\```
++ \\
++ \\Now we use `@setEvalBranchQuota`: {#code_begin|test|setEvalBranchQuota#} test "foo" { comptime { @setEvalBranchQuota(1001); var i = 0; while (i < 1001) : (i += 1) {} } }`
++ ,
++ .arguments = &.{
++ "comptime new_quota: u32",
++ },
++ },
++ .{
++ .name = "@setFloatMode",
++ .signature = "@setFloatMode(comptime mode: @import(\"std\").builtin.FloatMode)",
++ .snippet = "@setFloatMode(${1:comptime mode: @import(\"std\").builtin.FloatMode})",
++ .documentation =
++ \\Sets the floating point mode of the current scope. Possible values are:
++ \\
++ \\```zig
++ \\pub const FloatMode = enum {
++ \\ Strict,
++ \\ Optimized,
++ \\};
++ \\```
++ \\
++ \\ - `Strict` (default) - Floating point operations follow strict IEEE compliance.
++ \\ - `Optimized` - Floating point operations may do all of the following:
++ \\ - Assume the arguments and result are not NaN. Optimizations are required to retain defined behavior over NaNs, but the value of the result is undefined.
++ \\ - Assume the arguments and result are not +/-Inf. Optimizations are required to retain defined behavior over +/-Inf, but the value of the result is undefined.
++ \\ - Treat the sign of a zero argument or result as insignificant.
++ \\ - Use the reciprocal of an argument rather than perform division.
++ \\ - Perform floating-point contraction (e.g. fusing a multiply followed by an addition into a fused multiply-add).
++ \\ - Perform algebraically equivalent transformations that may change results in floating point (e.g. reassociate). This is equivalent to `-ffast-math` in GCC.
++ \\
++ \\The floating point mode is inherited by child scopes, and can be overridden in any scope. You can set the floating point mode in a struct or module scope by using a comptime block.
++ ,
++ .arguments = &.{
++ "comptime mode: @import(\"std\").builtin.FloatMode",
++ },
++ },
++ .{
++ .name = "@setRuntimeSafety",
++ .signature = "@setRuntimeSafety(comptime safety_on: bool) void",
++ .snippet = "@setRuntimeSafety(${1:comptime safety_on: bool})",
++ .documentation =
++ \\Sets whether runtime safety checks are enabled for the scope that contains the function call.
++ \\
++ \\```zig
++ \\test "@setRuntimeSafety" {
++ \\ // The builtin applies to the scope that it is called in. So here, integer overflow
++ \\ // will not be caught in ReleaseFast and ReleaseSmall modes:
++ \\ // var x: u8 = 255;
++ \\ // x += 1; // undefined behavior in ReleaseFast/ReleaseSmall modes.
++ \\ {
++ \\ // However this block has safety enabled, so safety checks happen here,
++ \\ // even in ReleaseFast and ReleaseSmall modes.
++ \\ @setRuntimeSafety(true);
++ \\ var x: u8 = 255;
++ \\ x += 1;
++ \\
++ \\ {
++ \\ // The value can be overridden at any scope. So here integer overflow
++ \\ // would not be caught in any build mode.
++ \\ @setRuntimeSafety(false);
++ \\ // var x: u8 = 255;
++ \\ // x += 1; // undefined behavior in all build modes.
++ \\ }
++ \\ }
++ \\}
++ \\```
++ \\
++ \\Note: it is [planned](https://github.com/ziglang/zig/issues/978) to replace `@setRuntimeSafety` with `@optimizeFor`
++ ,
++ .arguments = &.{
++ "comptime safety_on: bool",
++ },
++ },
++ .{
++ .name = "@shlExact",
++ .signature = "@shlExact(value: T, shift_amt: Log2T) T",
++ .snippet = "@shlExact(${1:value: T}, ${2:shift_amt: Log2T})",
++ .documentation =
++ \\Performs the left shift operation (`<<`). For unsigned integers, the result is [undefined](https://ziglang.org/documentation/0.10.0/#undefined) if any 1 bits are shifted out. For signed integers, the result is [undefined](https://ziglang.org/documentation/0.10.0/#undefined) if any bits that disagree with the resultant sign bit are shifted out.
++ \\
++ \\The type of `shift_amt` is an unsigned integer with `log2(@typeInfo(T).Int.bits)` bits. This is because `shift_amt >= @typeInfo(T).Int.bits` is undefined behavior.
++ ,
++ .arguments = &.{
++ "value: T",
++ "shift_amt: Log2T",
++ },
++ },
++ .{
++ .name = "@shlWithOverflow",
++ .signature = "@shlWithOverflow(comptime T: type, a: T, shift_amt: Log2T, result: *T) bool",
++ .snippet = "@shlWithOverflow(${1:comptime T: type}, ${2:a: T}, ${3:shift_amt: Log2T}, ${4:result: *T})",
++ .documentation =
++ \\Performs `result.* = a << b`. If overflow or underflow occurs, stores the overflowed bits in `result` and returns `true`. If no overflow or underflow occurs, returns `false`.
++ \\
++ \\The type of `shift_amt` is an unsigned integer with `log2(@typeInfo(T).Int.bits)` bits. This is because `shift_amt >= @typeInfo(T).Int.bits` is undefined behavior.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "a: T",
++ "shift_amt: Log2T",
++ "result: *T",
++ },
++ },
++ .{
++ .name = "@shrExact",
++ .signature = "@shrExact(value: T, shift_amt: Log2T) T",
++ .snippet = "@shrExact(${1:value: T}, ${2:shift_amt: Log2T})",
++ .documentation =
++ \\Performs the right shift operation (`>>`). Caller guarantees that the shift will not shift any 1 bits out.
++ \\
++ \\The type of `shift_amt` is an unsigned integer with `log2(@typeInfo(T).Int.bits)` bits. This is because `shift_amt >= @typeInfo(T).Int.bits` is undefined behavior.
++ ,
++ .arguments = &.{
++ "value: T",
++ "shift_amt: Log2T",
++ },
++ },
++ .{
++ .name = "@shuffle",
++ .signature = "@shuffle(comptime E: type, a: @Vector(a_len, E), b: @Vector(b_len, E), comptime mask: @Vector(mask_len, i32)) @Vector(mask_len, E)",
++ .snippet = "@shuffle(${1:comptime E: type}, ${2:a: @Vector(a_len, E)}, ${3:b: @Vector(b_len, E)}, ${4:comptime mask: @Vector(mask_len, i32)})",
++ .documentation =
++ \\Constructs a new [vector](https://ziglang.org/documentation/0.10.0/#Vectors) by selecting elements from `a` and `b` based on `mask`.
++ \\
++ \\Each element in `mask` selects an element from either `a` or `b`. Positive numbers select from `a` starting at 0. Negative values select from `b`, starting at `-1` and going down. It is recommended to use the `~` operator for indexes from `b` so that both indexes can start from `0` (i.e. `~@as(i32, 0)` is `-1`).
++ \\
++ \\For each element of `mask`, if it or the selected value from `a` or `b` is `undefined`, then the resulting element is `undefined`.
++ \\
++ \\`a_len` and `b_len` may differ in length. Out-of-bounds element indexes in `mask` result in compile errors.
++ \\
++ \\If `a` or `b` is `undefined`, it is equivalent to a vector of all `undefined` with the same length as the other vector. If both vectors are `undefined`, `@shuffle` returns a vector with all elements `undefined`.
++ \\
++ \\`E` must be an [integer](https://ziglang.org/documentation/0.10.0/#Integers), [float](https://ziglang.org/documentation/0.10.0/#Floats), [pointer](https://ziglang.org/documentation/0.10.0/#Pointers), or `bool`. The mask may be any vector length, and its length determines the result length. {#code_begin|test|vector_shuffle#} const std = @import("std"); const expect = std.testing.expect; test "vector @shuffle" { const a = @Vector(7, u8){ 'o', 'l', 'h', 'e', 'r', 'z', 'w' }; const b = @Vector(4, u8){ 'w', 'd', '!', 'x' }; // To shuffle within a single vector, pass undefined as the second argument. // Notice that we can re-order, duplicate, or omit elements of the input vector const mask1 = @Vector(5, i32){ 2, 3, 1, 1, 0 }; const res1: @Vector(5, u8) = @shuffle(u8, a, undefined, mask1); try expect(std.mem.eql(u8, &@as([5]u8, res1), "hello")); // Combining two vectors const mask2 = @Vector(6, i32){ -1, 0, 4, 1, -2, -3 }; const res2: @Vector(6, u8) = @shuffle(u8, a, b, mask2); try expect(std.mem.eql(u8, &@as([6]u8, res2), "world!")); }`
++ ,
++ .arguments = &.{
++ "comptime E: type",
++ "a: @Vector(a_len, E)",
++ "b: @Vector(b_len, E)",
++ "comptime mask: @Vector(mask_len, i32)",
++ },
++ },
++ .{
++ .name = "@sizeOf",
++ .signature = "@sizeOf(comptime T: type) comptime_int",
++ .snippet = "@sizeOf(${1:comptime T: type})",
++ .documentation =
++ \\This function returns the number of bytes it takes to store `T` in memory. The result is a target-specific compile time constant.
++ \\
++ \\This size may contain padding bytes. If there were two consecutive T in memory, this would be the offset in bytes between element at index 0 and the element at index 1. For [integer](https://ziglang.org/documentation/0.10.0/#Integers), consider whether you want to use `@sizeOf(T)` or `@typeInfo(T).Int.bits`.
++ \\
++ \\This function measures the size at runtime. For types that are disallowed at runtime, such as `comptime_int` and `type`, the result is `0`.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ },
++ },
++ .{
++ .name = "@splat",
++ .signature = "@splat(comptime len: u32, scalar: anytype) @Vector(len, @TypeOf(scalar))",
++ .snippet = "@splat(${1:comptime len: u32}, ${2:scalar: anytype})",
++ .documentation =
++ \\Produces a vector of length `len` where each element is the value `scalar`: {#code_begin|test|vector_splat#} const std = @import("std"); const expect = std.testing.expect; test "vector @splat" { const scalar: u32 = 5; const result = @splat(4, scalar); comptime try expect(@TypeOf(result) == @Vector(4, u32)); try expect(std.mem.eql(u32, &@as([4]u32, result), &[_]u32{ 5, 5, 5, 5 })); }`
++ \\
++ \\`scalar` must be an [integer](https://ziglang.org/documentation/0.10.0/#Integers), [bool](https://ziglang.org/documentation/0.10.0/#Primitive-Types), [float](https://ziglang.org/documentation/0.10.0/#Floats), or [pointer](https://ziglang.org/documentation/0.10.0/#Pointers).
++ ,
++ .arguments = &.{
++ "comptime len: u32",
++ "scalar: anytype",
++ },
++ },
++ .{
++ .name = "@reduce",
++ .signature = "@reduce(comptime op: std.builtin.ReduceOp, value: anytype) E",
++ .snippet = "@reduce(${1:comptime op: std.builtin.ReduceOp}, ${2:value: anytype})",
++ .documentation =
++ \\Transforms a [vector](https://ziglang.org/documentation/0.10.0/#Vectors) into a scalar value (of type `E`) by performing a sequential horizontal reduction of its elements using the specified operator `op`.
++ \\
++ \\Not every operator is available for every vector element type:
++ \\ - Every operator is available for [integer](https://ziglang.org/documentation/0.10.0/#Integers) vectors.
++ \\ - `.And`, `.Or`, `.Xor` are additionally available for `bool` vectors,
++ \\ - `.Min`, `.Max`, `.Add`, `.Mul` are additionally available for [floating point](https://ziglang.org/documentation/0.10.0/#Floats) vectors,
++ \\
++ \\Note that `.Add` and `.Mul` reductions on integral types are wrapping; when applied on floating point types the operation associativity is preserved, unless the float mode is set to `Optimized`. {#code_begin|test|vector_reduce#} const std = @import("std"); const expect = std.testing.expect; test "vector @reduce" { const value = @Vector(4, i32){ 1, -1, 1, -1 }; const result = value > @splat(4, @as(i32, 0)); // result is { true, false, true, false }; comptime try expect(@TypeOf(result) == @Vector(4, bool)); const is_all_true = @reduce(.And, result); comptime try expect(@TypeOf(is_all_true) == bool); try expect(is_all_true == false); }`
++ ,
++ .arguments = &.{
++ "comptime op: std.builtin.ReduceOp",
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@src",
++ .signature = "@src() std.builtin.SourceLocation",
++ .snippet = "@src()",
++ .documentation =
++ \\Returns a `SourceLocation` struct representing the function's name and location in the source code. This must be called in a function. {#code_begin|test|source_location#} const std = @import("std"); const expect = std.testing.expect; test "@src" { try doTheTest(); } fn doTheTest() !void { const src = @src(); try expect(src.line == 9); try expect(src.column == 17); try expect(std.mem.endsWith(u8, src.fn_name, "doTheTest")); try expect(std.mem.endsWith(u8, src.file, "source_location.zig")); }`
++ ,
++ .arguments = &.{},
++ },
++ .{
++ .name = "@sqrt",
++ .signature = "@sqrt(value: anytype) @TypeOf(value)",
++ .snippet = "@sqrt(${1:value: anytype})",
++ .documentation =
++ \\Performs the square root of a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats) and [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@sin",
++ .signature = "@sin(value: anytype) @TypeOf(value)",
++ .snippet = "@sin(${1:value: anytype})",
++ .documentation =
++ \\Sine trigonometric function on a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats) and [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@cos",
++ .signature = "@cos(value: anytype) @TypeOf(value)",
++ .snippet = "@cos(${1:value: anytype})",
++ .documentation =
++ \\Cosine trigonometric function on a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats) and [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@tan",
++ .signature = "@tan(value: anytype) @TypeOf(value)",
++ .snippet = "@tan(${1:value: anytype})",
++ .documentation =
++ \\Tangent trigonometric function on a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats) and [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@exp",
++ .signature = "@exp(value: anytype) @TypeOf(value)",
++ .snippet = "@exp(${1:value: anytype})",
++ .documentation =
++ \\Base-e exponential function on a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats) and [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@exp2",
++ .signature = "@exp2(value: anytype) @TypeOf(value)",
++ .snippet = "@exp2(${1:value: anytype})",
++ .documentation =
++ \\Base-2 exponential function on a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats) and [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@log",
++ .signature = "@log(value: anytype) @TypeOf(value)",
++ .snippet = "@log(${1:value: anytype})",
++ .documentation =
++ \\Returns the natural logarithm of a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats) and [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@log2",
++ .signature = "@log2(value: anytype) @TypeOf(value)",
++ .snippet = "@log2(${1:value: anytype})",
++ .documentation =
++ \\Returns the logarithm to the base 2 of a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats) and [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@log10",
++ .signature = "@log10(value: anytype) @TypeOf(value)",
++ .snippet = "@log10(${1:value: anytype})",
++ .documentation =
++ \\Returns the logarithm to the base 10 of a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats) and [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@fabs",
++ .signature = "@fabs(value: anytype) @TypeOf(value)",
++ .snippet = "@fabs(${1:value: anytype})",
++ .documentation =
++ \\Returns the absolute value of a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats) and [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@floor",
++ .signature = "@floor(value: anytype) @TypeOf(value)",
++ .snippet = "@floor(${1:value: anytype})",
++ .documentation =
++ \\Returns the largest integral value not greater than the given floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats) and [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@ceil",
++ .signature = "@ceil(value: anytype) @TypeOf(value)",
++ .snippet = "@ceil(${1:value: anytype})",
++ .documentation =
++ \\Returns the smallest integral value not less than the given floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats) and [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@trunc",
++ .signature = "@trunc(value: anytype) @TypeOf(value)",
++ .snippet = "@trunc(${1:value: anytype})",
++ .documentation =
++ \\Rounds the given floating point number to an integer, towards zero. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats) and [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@round",
++ .signature = "@round(value: anytype) @TypeOf(value)",
++ .snippet = "@round(${1:value: anytype})",
++ .documentation =
++ \\Rounds the given floating point number to an integer, away from zero. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.10.0/#Floats) and [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@subWithOverflow",
++ .signature = "@subWithOverflow(comptime T: type, a: T, b: T, result: *T) bool",
++ .snippet = "@subWithOverflow(${1:comptime T: type}, ${2:a: T}, ${3:b: T}, ${4:result: *T})",
++ .documentation =
++ \\Performs `result.* = a - b`. If overflow or underflow occurs, stores the overflowed bits in `result` and returns `true`. If no overflow or underflow occurs, returns `false`.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "a: T",
++ "b: T",
++ "result: *T",
++ },
++ },
++ .{
++ .name = "@tagName",
++ .signature = "@tagName(value: anytype) [:0]const u8",
++ .snippet = "@tagName(${1:value: anytype})",
++ .documentation =
++ \\Converts an enum value or union value to a string literal representing the name.
++ \\
++ \\If the enum is non-exhaustive and the tag value does not map to a name, it invokes safety-checked [Undefined Behavior](https://ziglang.org/documentation/0.10.0/#Undefined-Behavior).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@This",
++ .signature = "@This() type",
++ .snippet = "@This()",
++ .documentation =
++ \\Returns the innermost struct, enum, or union that this function call is inside. This can be useful for an anonymous struct that needs to refer to itself: {#code_begin|test|this_innermost#} const std = @import("std"); const expect = std.testing.expect; test "@This()" { var items = [_]i32{ 1, 2, 3, 4 }; const list = List(i32){ .items = items[0..] }; try expect(list.length() == 4); } fn List(comptime T: type) type { return struct { const Self = @This(); items: []T, fn length(self: Self) usize { return self.items.len; } }; }`
++ \\
++ \\When `@This()` is used at file scope, it returns a reference to the struct that corresponds to the current file.
++ ,
++ .arguments = &.{},
++ },
++ .{
++ .name = "@truncate",
++ .signature = "@truncate(comptime T: type, integer: anytype) T",
++ .snippet = "@truncate(${1:comptime T: type}, ${2:integer: anytype})",
++ .documentation =
++ \\This function truncates bits from an integer type, resulting in a smaller or same-sized integer type.
++ \\
++ \\This function always truncates the significant bits of the integer, regardless of endianness on the target platform.
++ \\
++ \\Calling `@truncate` on a number out of range of the destination type is well defined and working code:
++ \\
++ \\```zig
++ \\const std = @import("std");
++ \\const expect = std.testing.expect;
++ \\
++ \\test "integer truncation" {
++ \\ var a: u16 = 0xabcd;
++ \\ var b: u8 = @truncate(u8, a);
++ \\ try expect(b == 0xcd);
++ \\}
++ \\```
++ \\
++ \\Use [@intCast](https://ziglang.org/documentation/0.10.0/#intCast) to convert numbers guaranteed to fit the destination type.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "integer: anytype",
++ },
++ },
++ .{
++ .name = "@Type",
++ .signature = "@Type(comptime info: std.builtin.Type) type",
++ .snippet = "@Type(${1:comptime info: std.builtin.Type})",
++ .documentation =
++ \\This function is the inverse of [@typeInfo](https://ziglang.org/documentation/0.10.0/#typeInfo). It reifies type information into a `type`.
++ \\
++ \\It is available for the following types:
++ \\ - `type`
++ \\ - `noreturn`
++ \\ - `void`
++ \\ - `bool`
++ \\ - [Integers](https://ziglang.org/documentation/0.10.0/#Integers) - The maximum bit count for an integer type is `65535`.
++ \\ - [Floats](https://ziglang.org/documentation/0.10.0/#Floats)
++ \\ - [Pointers](https://ziglang.org/documentation/0.10.0/#Pointers)
++ \\ - `comptime_int`
++ \\ - `comptime_float`
++ \\ - `@TypeOf(undefined)`
++ \\ - `@TypeOf(null)`
++ \\ - [Arrays](https://ziglang.org/documentation/0.10.0/#Arrays)
++ \\ - [Optionals](https://ziglang.org/documentation/0.10.0/#Optionals)
++ \\ - [Error Set Type](https://ziglang.org/documentation/0.10.0/#Error-Set-Type)
++ \\ - [Error Union Type](https://ziglang.org/documentation/0.10.0/#Error-Union-Type)
++ \\ - [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors)
++ \\ - [opaque](https://ziglang.org/documentation/0.10.0/#opaque)
++ \\ - [@Frame](https://ziglang.org/documentation/0.10.0/#Frame)
++ \\ - `anyframe`
++ \\ - [struct](https://ziglang.org/documentation/0.10.0/#struct)
++ \\ - [enum](https://ziglang.org/documentation/0.10.0/#enum)
++ \\ - [Enum Literals](https://ziglang.org/documentation/0.10.0/#Enum-Literals)
++ \\ - [union](https://ziglang.org/documentation/0.10.0/#union)
++ \\
++ \\For these types, `@Type` is not available:
++ \\ - [Functions](https://ziglang.org/documentation/0.10.0/#Functions)
++ \\ - BoundFn
++ ,
++ .arguments = &.{
++ "comptime info: std.builtin.Type",
++ },
++ },
++ .{
++ .name = "@typeInfo",
++ .signature = "@typeInfo(comptime T: type) std.builtin.Type",
++ .snippet = "@typeInfo(${1:comptime T: type})",
++ .documentation =
++ \\Provides type reflection.
++ \\
++ \\Type information of [structs](https://ziglang.org/documentation/0.10.0/#struct), [unions](https://ziglang.org/documentation/0.10.0/#union), [enums](https://ziglang.org/documentation/0.10.0/#enum), and [error sets](https://ziglang.org/documentation/0.10.0/#Error-Set-Type) has fields which are guaranteed to be in the same order as appearance in the source file.
++ \\
++ \\Type information of [structs](https://ziglang.org/documentation/0.10.0/#struct), [unions](https://ziglang.org/documentation/0.10.0/#union), [enums](https://ziglang.org/documentation/0.10.0/#enum), and [opaques](https://ziglang.org/documentation/0.10.0/#opaque) has declarations, which are also guaranteed to be in the same order as appearance in the source file.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ },
++ },
++ .{
++ .name = "@typeName",
++ .signature = "@typeName(T: type) *const [N:0]u8",
++ .snippet = "@typeName(${1:T: type})",
++ .documentation =
++ \\This function returns the string representation of a type, as an array. It is equivalent to a string literal of the type name. The returned type name is fully qualified with the parent namespace included as part of the type name with a series of dots.
++ ,
++ .arguments = &.{
++ "T: type",
++ },
++ },
++ .{
++ .name = "@TypeOf",
++ .signature = "@TypeOf(...) type",
++ .snippet = "@TypeOf(${1:...})",
++ .documentation =
++ \\`@TypeOf` is a special builtin function that takes any (nonzero) number of expressions as parameters and returns the type of the result, using [Peer Type Resolution](https://ziglang.org/documentation/0.10.0/#Peer-Type-Resolution).
++ \\
++ \\The expressions are evaluated, however they are guaranteed to have no *runtime* side-effects: {#code_begin|test|no_runtime_side_effects#} const std = @import("std"); const expect = std.testing.expect; test "no runtime side effects" { var data: i32 = 0; const T = @TypeOf(foo(i32, &data)); comptime try expect(T == i32); try expect(data == 0); } fn foo(comptime T: type, ptr: *T) T { ptr.* += 1; return ptr.*; }`
++ ,
++ .arguments = &.{
++ "...",
++ },
++ },
++ .{
++ .name = "@unionInit",
++ .signature = "@unionInit(comptime Union: type, comptime active_field_name: []const u8, init_expr) Union",
++ .snippet = "@unionInit(${1:comptime Union: type}, ${2:comptime active_field_name: []const u8}, ${3:init_expr})",
++ .documentation =
++ \\This is the same thing as [union](https://ziglang.org/documentation/0.10.0/#union) initialization syntax, except that the field name is a [comptime](https://ziglang.org/documentation/0.10.0/#comptime)-known value rather than an identifier token.
++ \\
++ \\`@unionInit` forwards its [result location](https://ziglang.org/documentation/0.10.0/#Result-Location-Semantics) to `init_expr`.
++ ,
++ .arguments = &.{
++ "comptime Union: type",
++ "comptime active_field_name: []const u8",
++ "init_expr",
++ },
++ },
++ .{
++ .name = "@Vector",
++ .signature = "@Vector(len: comptime_int, Element: type) type",
++ .snippet = "@Vector(${1:len: comptime_int}, ${2:Element: type})",
++ .documentation =
++ \\Creates [Vectors](https://ziglang.org/documentation/0.10.0/#Vectors).
++ ,
++ .arguments = &.{
++ "len: comptime_int",
++ "Element: type",
++ },
++ },
++};
+diff --git a/src/data/0.9.1.zig b/src/data/0.9.1.zig
+new file mode 100644
+index 00000000..da1eddd5
+--- /dev/null
++++ b/src/data/0.9.1.zig
+@@ -0,0 +1,1777 @@
++const Builtin = struct {
++ name: []const u8,
++ signature: []const u8,
++ snippet: []const u8,
++ documentation: []const u8,
++ arguments: []const []const u8,
++};
++
++pub const builtins = [_]Builtin{
++ .{
++ .name = "@addWithOverflow",
++ .signature = "@addWithOverflow(comptime T: type, a: T, b: T, result: *T) bool",
++ .snippet = "@addWithOverflow(${1:comptime T: type}, ${2:a: T}, ${3:b: T}, ${4:result: *T})",
++ .documentation =
++ \\Performs `result.* = a + b`. If overflow or underflow occurs, stores the overflowed bits in `result` and returns `true`. If no overflow or underflow occurs, returns `false`.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "a: T",
++ "b: T",
++ "result: *T",
++ },
++ },
++ .{
++ .name = "@alignCast",
++ .signature = "@alignCast(comptime alignment: u29, ptr: anytype) anytype",
++ .snippet = "@alignCast(${1:comptime alignment: u29}, ${2:ptr: anytype})",
++ .documentation =
++ \\`ptr` can be `*T`, `fn()`, `?*T`, `?fn()`, or `[]T`. It returns the same type as `ptr` except with the alignment adjusted to the new value.
++ \\
++ \\A [pointer alignment safety check](https://ziglang.org/documentation/0.9.1/#Incorrect-Pointer-Alignment) is added to the generated code to make sure the pointer is aligned as promised.
++ ,
++ .arguments = &.{
++ "comptime alignment: u29",
++ "ptr: anytype",
++ },
++ },
++ .{
++ .name = "@alignOf",
++ .signature = "@alignOf(comptime T: type) comptime_int",
++ .snippet = "@alignOf(${1:comptime T: type})",
++ .documentation =
++ \\This function returns the number of bytes that this type should be aligned to for the current target to match the C ABI. When the child type of a pointer has this alignment, the alignment can be omitted from the type.
++ \\
++ \\```zig
++ \\const expect = @import("std").debug.assert;
++ \\comptime {
++ \\ assert(*u32 == *align(@alignOf(u32)) u32);
++ \\}
++ \\```
++ \\
++ \\The result is a target-specific compile time constant. It is guaranteed to be less than or equal to [@sizeOf(T)](https://ziglang.org/documentation/0.9.1/#@sizeOf).
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ },
++ },
++ .{
++ .name = "@as",
++ .signature = "@as(comptime T: type, expression) T",
++ .snippet = "@as(${1:comptime T: type}, ${2:expression})",
++ .documentation =
++ \\Performs [Type Coercion](https://ziglang.org/documentation/0.9.1/#Type-Coercion). This cast is allowed when the conversion is unambiguous and safe, and is the preferred way to convert between types, whenever possible.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "expression",
++ },
++ },
++ .{
++ .name = "@asyncCall",
++ .signature = "@asyncCall(frame_buffer: []align(@alignOf(@Frame(anyAsyncFunction))) u8, result_ptr, function_ptr, args: anytype) anyframe->T",
++ .snippet = "@asyncCall(${1:frame_buffer: []align(@alignOf(@Frame(anyAsyncFunction))) u8}, ${2:result_ptr}, ${3:function_ptr}, ${4:args: anytype})",
++ .documentation =
++ \\`@asyncCall` performs an `async` call on a function pointer, which may or may not be an [async function](https://ziglang.org/documentation/0.9.1/#Async-Functions).
++ \\
++ \\The provided `frame_buffer` must be large enough to fit the entire function frame. This size can be determined with [@frameSize](https://ziglang.org/documentation/0.9.1/#frameSize). To provide a too-small buffer invokes safety-checked [Undefined Behavior](https://ziglang.org/documentation/0.9.1/#Undefined-Behavior).
++ \\
++ \\`result_ptr` is optional ([null](https://ziglang.org/documentation/0.9.1/#null) may be provided). If provided, the function call will write its result directly to the result pointer, which will be available to read after [await](https://ziglang.org/documentation/0.9.1/#Async-and-Await) completes. Any result location provided to `await` will copy the result from `result_ptr`. {#code_begin|test|async_struct_field_fn_pointer#} const std = @import("std"); const expect = std.testing.expect; test "async fn pointer in a struct field" { var data: i32 = 1; const Foo = struct { bar: fn (*i32) callconv(.Async) void, }; var foo = Foo{ .bar = func }; var bytes: [64]u8 align(@alignOf(@Frame(func))) = undefined; const f = @asyncCall(&bytes, {}, foo.bar, .{&data}); try expect(data == 2); resume f; try expect(data == 4); } fn func(y: *i32) void { defer y.* += 2; y.* += 1; suspend {} }`
++ ,
++ .arguments = &.{
++ "frame_buffer: []align(@alignOf(@Frame(anyAsyncFunction))) u8",
++ "result_ptr",
++ "function_ptr",
++ "args: anytype",
++ },
++ },
++ .{
++ .name = "@atomicLoad",
++ .signature = "@atomicLoad(comptime T: type, ptr: *const T, comptime ordering: builtin.AtomicOrder) T",
++ .snippet = "@atomicLoad(${1:comptime T: type}, ${2:ptr: *const T}, ${3:comptime ordering: builtin.AtomicOrder})",
++ .documentation =
++ \\This builtin function atomically dereferences a pointer and returns the value.
++ \\
++ \\`T` must be a pointer, a `bool`, a float, an integer or an enum.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "ptr: *const T",
++ "comptime ordering: builtin.AtomicOrder",
++ },
++ },
++ .{
++ .name = "@atomicRmw",
++ .signature = "@atomicRmw(comptime T: type, ptr: *T, comptime op: builtin.AtomicRmwOp, operand: T, comptime ordering: builtin.AtomicOrder) T",
++ .snippet = "@atomicRmw(${1:comptime T: type}, ${2:ptr: *T}, ${3:comptime op: builtin.AtomicRmwOp}, ${4:operand: T}, ${5:comptime ordering: builtin.AtomicOrder})",
++ .documentation =
++ \\This builtin function atomically modifies memory and then returns the previous value.
++ \\
++ \\`T` must be a pointer, a `bool`, a float, an integer or an enum.
++ \\
++ \\Supported operations:
++ \\ - `.Xchg` - stores the operand unmodified. Supports enums, integers and floats.
++ \\ - `.Add` - for integers, twos complement wraparound addition. Also supports [Floats](https://ziglang.org/documentation/0.9.1/#Floats).
++ \\ - `.Sub` - for integers, twos complement wraparound subtraction. Also supports [Floats](https://ziglang.org/documentation/0.9.1/#Floats).
++ \\ - `.And` - bitwise and
++ \\ - `.Nand` - bitwise nand
++ \\ - `.Or` - bitwise or
++ \\ - `.Xor` - bitwise xor
++ \\ - `.Max` - stores the operand if it is larger. Supports integers and floats.
++ \\ - `.Min` - stores the operand if it is smaller. Supports integers and floats.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "ptr: *T",
++ "comptime op: builtin.AtomicRmwOp",
++ "operand: T",
++ "comptime ordering: builtin.AtomicOrder",
++ },
++ },
++ .{
++ .name = "@atomicStore",
++ .signature = "@atomicStore(comptime T: type, ptr: *T, value: T, comptime ordering: builtin.AtomicOrder) void",
++ .snippet = "@atomicStore(${1:comptime T: type}, ${2:ptr: *T}, ${3:value: T}, ${4:comptime ordering: builtin.AtomicOrder})",
++ .documentation =
++ \\This builtin function atomically stores a value.
++ \\
++ \\`T` must be a pointer, a `bool`, a float, an integer or an enum.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "ptr: *T",
++ "value: T",
++ "comptime ordering: builtin.AtomicOrder",
++ },
++ },
++ .{
++ .name = "@bitCast",
++ .signature = "@bitCast(comptime DestType: type, value: anytype) DestType",
++ .snippet = "@bitCast(${1:comptime DestType: type}, ${2:value: anytype})",
++ .documentation =
++ \\Converts a value of one type to another type.
++ \\
++ \\Asserts that `@sizeOf(@TypeOf(value)) == @sizeOf(DestType)`.
++ \\
++ \\Asserts that `@typeInfo(DestType) != .Pointer`. Use `@ptrCast` or `@intToPtr` if you need this.
++ \\
++ \\Can be used for these things for example:
++ \\ - Convert `f32` to `u32` bits
++ \\ - Convert `i32` to `u32` preserving twos complement
++ \\
++ \\Works at compile-time if `value` is known at compile time. It's a compile error to bitcast a struct to a scalar type of the same size since structs have undefined layout. However if the struct is packed then it works.
++ ,
++ .arguments = &.{
++ "comptime DestType: type",
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@bitOffsetOf",
++ .signature = "@bitOffsetOf(comptime T: type, comptime field_name: []const u8) comptime_int",
++ .snippet = "@bitOffsetOf(${1:comptime T: type}, ${2:comptime field_name: []const u8})",
++ .documentation =
++ \\Returns the bit offset of a field relative to its containing struct.
++ \\
++ \\For non [packed structs](https://ziglang.org/documentation/0.9.1/#packed-struct), this will always be divisible by `8`. For packed structs, non-byte-aligned fields will share a byte offset, but they will have different bit offsets.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "comptime field_name: []const u8",
++ },
++ },
++ .{
++ .name = "@boolToInt",
++ .signature = "@boolToInt(value: bool) u1",
++ .snippet = "@boolToInt(${1:value: bool})",
++ .documentation =
++ \\Converts `true` to `@as(u1, 1)` and `false` to `@as(u1, 0)`.
++ \\
++ \\If the value is known at compile-time, the return type is `comptime_int` instead of `u1`.
++ ,
++ .arguments = &.{
++ "value: bool",
++ },
++ },
++ .{
++ .name = "@bitSizeOf",
++ .signature = "@bitSizeOf(comptime T: type) comptime_int",
++ .snippet = "@bitSizeOf(${1:comptime T: type})",
++ .documentation =
++ \\This function returns the number of bits it takes to store `T` in memory if the type were a field in a packed struct/union. The result is a target-specific compile time constant.
++ \\
++ \\This function measures the size at runtime. For types that are disallowed at runtime, such as `comptime_int` and `type`, the result is `0`.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ },
++ },
++ .{
++ .name = "@breakpoint",
++ .signature = "@breakpoint()",
++ .snippet = "@breakpoint()",
++ .documentation =
++ \\This function inserts a platform-specific debug trap instruction which causes debuggers to break there.
++ \\
++ \\This function is only valid within function scope.
++ ,
++ .arguments = &.{},
++ },
++ .{
++ .name = "@mulAdd",
++ .signature = "@mulAdd(comptime T: type, a: T, b: T, c: T) T",
++ .snippet = "@mulAdd(${1:comptime T: type}, ${2:a: T}, ${3:b: T}, ${4:c: T})",
++ .documentation =
++ \\Fused multiply add, similar to `(a * b) + c`, except only rounds once, and is thus more accurate.
++ \\
++ \\Supports Floats and Vectors of floats.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "a: T",
++ "b: T",
++ "c: T",
++ },
++ },
++ .{
++ .name = "@byteSwap",
++ .signature = "@byteSwap(comptime T: type, operand: T) T",
++ .snippet = "@byteSwap(${1:comptime T: type}, ${2:operand: T})",
++ .documentation =
++ \\`T` must be an integer type with bit count evenly divisible by 8.
++ \\
++ \\`operand` may be an [integer](https://ziglang.org/documentation/0.9.1/#Integers) or [vector](https://ziglang.org/documentation/0.9.1/#Vectors).
++ \\
++ \\Swaps the byte order of the integer. This converts a big endian integer to a little endian integer, and converts a little endian integer to a big endian integer.
++ \\
++ \\Note that for the purposes of memory layout with respect to endianness, the integer type should be related to the number of bytes reported by [@sizeOf](https://ziglang.org/documentation/0.9.1/#sizeOf) bytes. This is demonstrated with `u24`. `@sizeOf(u24) == 4`, which means that a `u24` stored in memory takes 4 bytes, and those 4 bytes are what are swapped on a little vs big endian system. On the other hand, if `T` is specified to be `u24`, then only 3 bytes are reversed.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "operand: T",
++ },
++ },
++ .{
++ .name = "@bitReverse",
++ .signature = "@bitReverse(comptime T: type, integer: T) T",
++ .snippet = "@bitReverse(${1:comptime T: type}, ${2:integer: T})",
++ .documentation =
++ \\`T` accepts any integer type.
++ \\
++ \\Reverses the bitpattern of an integer value, including the sign bit if applicable.
++ \\
++ \\For example 0b10110110 (`u8 = 182`, `i8 = -74`) becomes 0b01101101 (`u8 = 109`, `i8 = 109`).
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "integer: T",
++ },
++ },
++ .{
++ .name = "@offsetOf",
++ .signature = "@offsetOf(comptime T: type, comptime field_name: []const u8) comptime_int",
++ .snippet = "@offsetOf(${1:comptime T: type}, ${2:comptime field_name: []const u8})",
++ .documentation =
++ \\Returns the byte offset of a field relative to its containing struct.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "comptime field_name: []const u8",
++ },
++ },
++ .{
++ .name = "@call",
++ .signature = "@call(options: std.builtin.CallOptions, function: anytype, args: anytype) anytype",
++ .snippet = "@call(${1:options: std.builtin.CallOptions}, ${2:function: anytype}, ${3:args: anytype})",
++ .documentation =
++ \\Calls a function, in the same way that invoking an expression with parentheses does:
++ \\
++ \\```zig
++ \\const expect = @import("std").testing.expect;
++ \\
++ \\test "noinline function call" {
++ \\ try expect(@call(.{}, add, .{3, 9}) == 12);
++ \\}
++ \\
++ \\fn add(a: i32, b: i32) i32 {
++ \\ return a + b;
++ \\}
++ \\```
++ \\
++ \\`@call` allows more flexibility than normal function call syntax does. The `CallOptions` struct is reproduced here: {#syntax_block|zig|builtin.CallOptions struct#} pub const CallOptions = struct { modifier: Modifier = .auto, /// Only valid when `Modifier` is `Modifier.async_kw`. stack: ?[]align(std.Target.stack_align) u8 = null, pub const Modifier = enum { /// Equivalent to function call syntax. auto, /// Equivalent to async keyword used with function call syntax. async_kw, /// Prevents tail call optimization. This guarantees that the return /// address will point to the callsite, as opposed to the callsite's /// callsite. If the call is otherwise required to be tail-called /// or inlined, a compile error is emitted instead. never_tail, /// Guarantees that the call will not be inlined. If the call is /// otherwise required to be inlined, a compile error is emitted instead. never_inline, /// Asserts that the function call will not suspend. This allows a /// non-async function to call an async function. no_async, /// Guarantees that the call will be generated with tail call optimization. /// If this is not possible, a compile error is emitted instead. always_tail, /// Guarantees that the call will inlined at the callsite. /// If this is not possible, a compile error is emitted instead. always_inline, /// Evaluates the call at compile-time. If the call cannot be completed at /// compile-time, a compile error is emitted instead. compile_time, }; }; {#end_syntax_block#}
++ ,
++ .arguments = &.{
++ "options: std.builtin.CallOptions",
++ "function: anytype",
++ "args: anytype",
++ },
++ },
++ .{
++ .name = "@cDefine",
++ .signature = "@cDefine(comptime name: []u8, value)",
++ .snippet = "@cDefine(${1:comptime name: []u8}, ${2:value})",
++ .documentation =
++ \\This function can only occur inside `@cImport`.
++ \\
++ \\This appends `#define $name $value` to the `@cImport` temporary buffer.
++ \\
++ \\To define without a value, like this:`#define _GNU_SOURCE`
++ \\
++ \\Use the void value, like this:
++ \\
++ \\```zig
++ \\@cDefine("_GNU_SOURCE", {})
++ \\```
++ ,
++ .arguments = &.{
++ "comptime name: []u8",
++ "value",
++ },
++ },
++ .{
++ .name = "@cImport",
++ .signature = "@cImport(expression) type",
++ .snippet = "@cImport(${1:expression})",
++ .documentation =
++ \\This function parses C code and imports the functions, types, variables, and compatible macro definitions into a new empty struct type, and then returns that type.
++ \\
++ \\`expression` is interpreted at compile time. The builtin functions `@cInclude`, `@cDefine`, and `@cUndef` work within this expression, appending to a temporary buffer which is then parsed as C code.
++ \\
++ \\Usually you should only have one `@cImport` in your entire application, because it saves the compiler from invoking clang multiple times, and prevents inline functions from being duplicated.
++ \\
++ \\Reasons for having multiple `@cImport` expressions would be:
++ \\ - To avoid a symbol collision, for example if foo.h and bar.h both `#define CONNECTION_COUNT`
++ \\ - To analyze the C code with different preprocessor defines
++ ,
++ .arguments = &.{
++ "expression",
++ },
++ },
++ .{
++ .name = "@cInclude",
++ .signature = "@cInclude(comptime path: []u8)",
++ .snippet = "@cInclude(${1:comptime path: []u8})",
++ .documentation =
++ \\This function can only occur inside `@cImport`.
++ \\
++ \\This appends `#include <$path>\n` to the `c_import` temporary buffer.
++ ,
++ .arguments = &.{
++ "comptime path: []u8",
++ },
++ },
++ .{
++ .name = "@clz",
++ .signature = "@clz(comptime T: type, operand: T)",
++ .snippet = "@clz(${1:comptime T: type}, ${2:operand: T})",
++ .documentation =
++ \\`T` must be an integer type.
++ \\
++ \\`operand` may be an [integer](https://ziglang.org/documentation/0.9.1/#Integers) or [vector](https://ziglang.org/documentation/0.9.1/#Vectors).
++ \\
++ \\This function counts the number of most-significant (leading in a big-Endian sense) zeroes in an integer.
++ \\
++ \\If `operand` is a [comptime](https://ziglang.org/documentation/0.9.1/#comptime)-known integer, the return type is `comptime_int`. Otherwise, the return type is an unsigned integer or vector of unsigned integers with the minimum number of bits that can represent the bit count of the integer type.
++ \\
++ \\If `operand` is zero, `@clz` returns the bit width of integer type `T`.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "operand: T",
++ },
++ },
++ .{
++ .name = "@cmpxchgStrong",
++ .signature = "@cmpxchgStrong(comptime T: type, ptr: *T, expected_value: T, new_value: T, success_order: AtomicOrder, fail_order: AtomicOrder) ?T",
++ .snippet = "@cmpxchgStrong(${1:comptime T: type}, ${2:ptr: *T}, ${3:expected_value: T}, ${4:new_value: T}, ${5:success_order: AtomicOrder}, ${6:fail_order: AtomicOrder})",
++ .documentation =
++ \\This function performs a strong atomic compare exchange operation. It's the equivalent of this code, except atomic:
++ \\
++ \\```zig
++ \\fn cmpxchgStrongButNotAtomic(comptime T: type, ptr: *T, expected_value: T, new_value: T) ?T {
++ \\ const old_value = ptr.*;
++ \\ if (old_value == expected_value) {
++ \\ ptr.* = new_value;
++ \\ return null;
++ \\ } else {
++ \\ return old_value;
++ \\ }
++ \\}
++ \\```
++ \\
++ \\If you are using cmpxchg in a loop, [@cmpxchgWeak](https://ziglang.org/documentation/0.9.1/#cmpxchgWeak) is the better choice, because it can be implemented more efficiently in machine instructions.
++ \\
++ \\`T` must be a pointer, a `bool`, a float, an integer or an enum.
++ \\
++ \\`@typeInfo(@TypeOf(ptr)).Pointer.alignment` must be `>= @sizeOf(T).`
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "ptr: *T",
++ "expected_value: T",
++ "new_value: T",
++ "success_order: AtomicOrder",
++ "fail_order: AtomicOrder",
++ },
++ },
++ .{
++ .name = "@cmpxchgWeak",
++ .signature = "@cmpxchgWeak(comptime T: type, ptr: *T, expected_value: T, new_value: T, success_order: AtomicOrder, fail_order: AtomicOrder) ?T",
++ .snippet = "@cmpxchgWeak(${1:comptime T: type}, ${2:ptr: *T}, ${3:expected_value: T}, ${4:new_value: T}, ${5:success_order: AtomicOrder}, ${6:fail_order: AtomicOrder})",
++ .documentation =
++ \\This function performs a weak atomic compare exchange operation. It's the equivalent of this code, except atomic: {#syntax_block|zig|cmpxchgWeakButNotAtomic#} fn cmpxchgWeakButNotAtomic(comptime T: type, ptr: *T, expected_value: T, new_value: T) ?T { const old_value = ptr.*; if (old_value == expected_value and usuallyTrueButSometimesFalse()) { ptr.* = new_value; return null; } else { return old_value; } } {#end_syntax_block#}
++ \\
++ \\If you are using cmpxchg in a loop, the sporadic failure will be no problem, and `cmpxchgWeak` is the better choice, because it can be implemented more efficiently in machine instructions. However if you need a stronger guarantee, use [@cmpxchgStrong](https://ziglang.org/documentation/0.9.1/#cmpxchgStrong).
++ \\
++ \\`T` must be a pointer, a `bool`, a float, an integer or an enum.
++ \\
++ \\`@typeInfo(@TypeOf(ptr)).Pointer.alignment` must be `>= @sizeOf(T).`
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "ptr: *T",
++ "expected_value: T",
++ "new_value: T",
++ "success_order: AtomicOrder",
++ "fail_order: AtomicOrder",
++ },
++ },
++ .{
++ .name = "@compileError",
++ .signature = "@compileError(comptime msg: []u8)",
++ .snippet = "@compileError(${1:comptime msg: []u8})",
++ .documentation =
++ \\This function, when semantically analyzed, causes a compile error with the message `msg`.
++ \\
++ \\There are several ways that code avoids being semantically checked, such as using `if` or `switch` with compile time constants, and `comptime` functions.
++ ,
++ .arguments = &.{
++ "comptime msg: []u8",
++ },
++ },
++ .{
++ .name = "@compileLog",
++ .signature = "@compileLog(args: ...)",
++ .snippet = "@compileLog(${1:args: ...})",
++ .documentation =
++ \\This function prints the arguments passed to it at compile-time.
++ \\
++ \\To prevent accidentally leaving compile log statements in a codebase, a compilation error is added to the build, pointing to the compile log statement. This error prevents code from being generated, but does not otherwise interfere with analysis.
++ \\
++ \\This function can be used to do "printf debugging" on compile-time executing code.
++ \\
++ \\```zig
++ \\const print = @import("std").debug.print;
++ \\
++ \\const num1 = blk: {
++ \\ var val1: i32 = 99;
++ \\ @compileLog("comptime val1 = ", val1);
++ \\ val1 = val1 + 1;
++ \\ break :blk val1;
++ \\};
++ \\
++ \\test "main" {
++ \\ @compileLog("comptime in main");
++ \\
++ \\ print("Runtime in main, num1 = {}.\n", .{num1});
++ \\}
++ \\```
++ \\
++ \\will output:
++ \\
++ \\If all `@compileLog` calls are removed or not encountered by analysis, the program compiles successfully and the generated executable prints: {#code_begin|test|without_compileLog#} const print = @import("std").debug.print; const num1 = blk: { var val1: i32 = 99; val1 = val1 + 1; break :blk val1; }; test "main" { print("Runtime in main, num1 = {}.\n", .{num1}); }`
++ ,
++ .arguments = &.{
++ "args: ...",
++ },
++ },
++ .{
++ .name = "@ctz",
++ .signature = "@ctz(comptime T: type, operand: T)",
++ .snippet = "@ctz(${1:comptime T: type}, ${2:operand: T})",
++ .documentation =
++ \\`T` must be an integer type.
++ \\
++ \\`operand` may be an [integer](https://ziglang.org/documentation/0.9.1/#Integers) or [vector](https://ziglang.org/documentation/0.9.1/#Vectors).
++ \\
++ \\This function counts the number of least-significant (trailing in a big-Endian sense) zeroes in an integer.
++ \\
++ \\If `operand` is a [comptime](https://ziglang.org/documentation/0.9.1/#comptime)-known integer, the return type is `comptime_int`. Otherwise, the return type is an unsigned integer or vector of unsigned integers with the minimum number of bits that can represent the bit count of the integer type.
++ \\
++ \\If `operand` is zero, `@ctz` returns the bit width of integer type `T`.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "operand: T",
++ },
++ },
++ .{
++ .name = "@cUndef",
++ .signature = "@cUndef(comptime name: []u8)",
++ .snippet = "@cUndef(${1:comptime name: []u8})",
++ .documentation =
++ \\This function can only occur inside `@cImport`.
++ \\
++ \\This appends `#undef $name` to the `@cImport` temporary buffer.
++ ,
++ .arguments = &.{
++ "comptime name: []u8",
++ },
++ },
++ .{
++ .name = "@divExact",
++ .signature = "@divExact(numerator: T, denominator: T) T",
++ .snippet = "@divExact(${1:numerator: T}, ${2:denominator: T})",
++ .documentation =
++ \\Exact division. Caller guarantees `denominator != 0` and `@divTrunc(numerator, denominator) * denominator == numerator`.
++ \\ - `@divExact(6, 3) == 2`
++ \\ - `@divExact(a, b) * b == a`
++ \\
++ \\For a function that returns a possible error code, use `@import("std").math.divExact`.
++ ,
++ .arguments = &.{
++ "numerator: T",
++ "denominator: T",
++ },
++ },
++ .{
++ .name = "@divFloor",
++ .signature = "@divFloor(numerator: T, denominator: T) T",
++ .snippet = "@divFloor(${1:numerator: T}, ${2:denominator: T})",
++ .documentation =
++ \\Floored division. Rounds toward negative infinity. For unsigned integers it is the same as `numerator / denominator`. Caller guarantees `denominator != 0` and `!(@typeInfo(T) == .Int and T.is_signed and numerator == std.math.minInt(T) and denominator == -1)`.
++ \\ - `@divFloor(-5, 3) == -2`
++ \\ - `(@divFloor(a, b) * b) + @mod(a, b) == a`
++ \\
++ \\For a function that returns a possible error code, use `@import("std").math.divFloor`.
++ ,
++ .arguments = &.{
++ "numerator: T",
++ "denominator: T",
++ },
++ },
++ .{
++ .name = "@divTrunc",
++ .signature = "@divTrunc(numerator: T, denominator: T) T",
++ .snippet = "@divTrunc(${1:numerator: T}, ${2:denominator: T})",
++ .documentation =
++ \\Truncated division. Rounds toward zero. For unsigned integers it is the same as `numerator / denominator`. Caller guarantees `denominator != 0` and `!(@typeInfo(T) == .Int and T.is_signed and numerator == std.math.minInt(T) and denominator == -1)`.
++ \\ - `@divTrunc(-5, 3) == -1`
++ \\ - `(@divTrunc(a, b) * b) + @rem(a, b) == a`
++ \\
++ \\For a function that returns a possible error code, use `@import("std").math.divTrunc`.
++ ,
++ .arguments = &.{
++ "numerator: T",
++ "denominator: T",
++ },
++ },
++ .{
++ .name = "@embedFile",
++ .signature = "@embedFile(comptime path: []const u8) *const [N:0]u8",
++ .snippet = "@embedFile(${1:comptime path: []const u8})",
++ .documentation =
++ \\This function returns a compile time constant pointer to null-terminated, fixed-size array with length equal to the byte count of the file given by `path`. The contents of the array are the contents of the file. This is equivalent to a [string literal](https://ziglang.org/documentation/0.9.1/#String-Literals-and-Unicode-Code-Point-Literals) with the file contents.
++ \\
++ \\`path` is absolute or relative to the current file, just like `@import`.
++ ,
++ .arguments = &.{
++ "comptime path: []const u8",
++ },
++ },
++ .{
++ .name = "@enumToInt",
++ .signature = "@enumToInt(enum_or_tagged_union: anytype) anytype",
++ .snippet = "@enumToInt(${1:enum_or_tagged_union: anytype})",
++ .documentation =
++ \\Converts an enumeration value into its integer tag type. When a tagged union is passed, the tag value is used as the enumeration value.
++ \\
++ \\If there is only one possible enum value, the result is a `comptime_int` known at [comptime](https://ziglang.org/documentation/0.9.1/#comptime).
++ ,
++ .arguments = &.{
++ "enum_or_tagged_union: anytype",
++ },
++ },
++ .{
++ .name = "@errorName",
++ .signature = "@errorName(err: anyerror) [:0]const u8",
++ .snippet = "@errorName(${1:err: anyerror})",
++ .documentation =
++ \\This function returns the string representation of an error. The string representation of `error.OutOfMem` is `"OutOfMem"`.
++ \\
++ \\If there are no calls to `@errorName` in an entire application, or all calls have a compile-time known value for `err`, then no error name table will be generated.
++ ,
++ .arguments = &.{
++ "err: anyerror",
++ },
++ },
++ .{
++ .name = "@errorReturnTrace",
++ .signature = "@errorReturnTrace() ?*builtin.StackTrace",
++ .snippet = "@errorReturnTrace()",
++ .documentation =
++ \\If the binary is built with error return tracing, and this function is invoked in a function that calls a function with an error or error union return type, returns a stack trace object. Otherwise returns [null](https://ziglang.org/documentation/0.9.1/#null).
++ ,
++ .arguments = &.{},
++ },
++ .{
++ .name = "@errorToInt",
++ .signature = "@errorToInt(err: anytype) std.meta.Int(.unsigned, @sizeOf(anyerror) * 8)",
++ .snippet = "@errorToInt(${1:err: anytype})",
++ .documentation =
++ \\Supports the following types:
++ \\ - [The Global Error Set](https://ziglang.org/documentation/0.9.1/#The-Global-Error-Set)
++ \\ - [Error Set Type](https://ziglang.org/documentation/0.9.1/#Error-Set-Type)
++ \\ - [Error Union Type](https://ziglang.org/documentation/0.9.1/#Error-Union-Type)
++ \\
++ \\Converts an error to the integer representation of an error.
++ \\
++ \\It is generally recommended to avoid this cast, as the integer representation of an error is not stable across source code changes.
++ ,
++ .arguments = &.{
++ "err: anytype",
++ },
++ },
++ .{
++ .name = "@errSetCast",
++ .signature = "@errSetCast(comptime T: DestType, value: anytype) DestType",
++ .snippet = "@errSetCast(${1:comptime T: DestType}, ${2:value: anytype})",
++ .documentation =
++ \\Converts an error value from one error set to another error set. Attempting to convert an error which is not in the destination error set results in safety-protected [Undefined Behavior](https://ziglang.org/documentation/0.9.1/#Undefined-Behavior).
++ ,
++ .arguments = &.{
++ "comptime T: DestType",
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@export",
++ .signature = "@export(declaration, comptime options: std.builtin.ExportOptions) void",
++ .snippet = "@export(${1:declaration}, ${2:comptime options: std.builtin.ExportOptions})",
++ .documentation =
++ \\Creates a symbol in the output object file.
++ \\
++ \\`declaration` must be one of two things:
++ \\ - An identifier (`x`) identifying a [function](https://ziglang.org/documentation/0.9.1/#Functions) or a [variable](https://ziglang.org/documentation/0.9.1/#Container-Level-Variables).
++ \\ - Field access (`x.y`) looking up a [function](https://ziglang.org/documentation/0.9.1/#Functions) or a [variable](https://ziglang.org/documentation/0.9.1/#Container-Level-Variables).
++ \\
++ \\This builtin can be called from a [comptime](https://ziglang.org/documentation/0.9.1/#comptime) block to conditionally export symbols. When `declaration` is a function with the C calling convention and `options.linkage` is `Strong`, this is equivalent to the `export` keyword used on a function:
++ \\
++ \\```zig
++ \\comptime {
++ \\ @export(internalName, .{ .name = "foo", .linkage = .Strong });
++ \\}
++ \\
++ \\fn internalName() callconv(.C) void {}
++ \\```
++ \\
++ \\This is equivalent to:
++ \\
++ \\```zig
++ \\export fn foo() void {}
++ \\```
++ \\
++ \\Note that even when using `export`, the `@"foo"` syntax for [identifiers](https://ziglang.org/documentation/0.9.1/#Identifiers) can be used to choose any string for the symbol name:
++ \\
++ \\```zig
++ \\export fn @"A function name that is a complete sentence."() void {}
++ \\```
++ \\
++ \\When looking at the resulting object, you can see the symbol is used verbatim:
++ \\
++ \\```zig
++ \\00000000000001f0 T A function name that is a complete sentence.
++ \\```
++ ,
++ .arguments = &.{
++ "declaration",
++ "comptime options: std.builtin.ExportOptions",
++ },
++ },
++ .{
++ .name = "@extern",
++ .signature = "@extern(T: type, comptime options: std.builtin.ExternOptions) *T",
++ .snippet = "@extern(${1:T: type}, ${2:comptime options: std.builtin.ExternOptions})",
++ .documentation =
++ \\Creates a reference to an external symbol in the output object file.
++ ,
++ .arguments = &.{
++ "T: type",
++ "comptime options: std.builtin.ExternOptions",
++ },
++ },
++ .{
++ .name = "@fence",
++ .signature = "@fence(order: AtomicOrder)",
++ .snippet = "@fence(${1:order: AtomicOrder})",
++ .documentation =
++ \\The `fence` function is used to introduce happens-before edges between operations.
++ \\
++ \\`AtomicOrder` can be found with `@import("std").builtin.AtomicOrder`.
++ ,
++ .arguments = &.{
++ "order: AtomicOrder",
++ },
++ },
++ .{
++ .name = "@field",
++ .signature = "@field(lhs: anytype, comptime field_name: []const u8) (field)",
++ .snippet = "@field(${1:lhs: anytype}, ${2:comptime field_name: []const u8})",
++ .documentation =
++ \\Performs field access by a compile-time string. Works on both fields and declarations. {#code_begin|test|field_decl_access_by_string#} const std = @import("std"); const Point = struct { x: u32, y: u32, pub var z: u32 = 1; }; test "field access by string" { const expect = std.testing.expect; var p = Point{ .x = 0, .y = 0 }; @field(p, "x") = 4; @field(p, "y") = @field(p, "x") + 1; try expect(@field(p, "x") == 4); try expect(@field(p, "y") == 5); } test "decl access by string" { const expect = std.testing.expect; try expect(@field(Point, "z") == 1); @field(Point, "z") = 2; try expect(@field(Point, "z") == 2); }`
++ ,
++ .arguments = &.{
++ "lhs: anytype",
++ "comptime field_name: []const u8",
++ },
++ },
++ .{
++ .name = "@fieldParentPtr",
++ .signature = "@fieldParentPtr(comptime ParentType: type, comptime field_name: []const u8, field_ptr: *T) *ParentType",
++ .snippet = "@fieldParentPtr(${1:comptime ParentType: type}, ${2:comptime field_name: []const u8}, ${3:field_ptr: *T})",
++ .documentation =
++ \\Given a pointer to a field, returns the base pointer of a struct.
++ ,
++ .arguments = &.{
++ "comptime ParentType: type",
++ "comptime field_name: []const u8",
++ "field_ptr: *T",
++ },
++ },
++ .{
++ .name = "@floatCast",
++ .signature = "@floatCast(comptime DestType: type, value: anytype) DestType",
++ .snippet = "@floatCast(${1:comptime DestType: type}, ${2:value: anytype})",
++ .documentation =
++ \\Convert from one float type to another. This cast is safe, but may cause the numeric value to lose precision.
++ ,
++ .arguments = &.{
++ "comptime DestType: type",
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@floatToInt",
++ .signature = "@floatToInt(comptime DestType: type, float: anytype) DestType",
++ .snippet = "@floatToInt(${1:comptime DestType: type}, ${2:float: anytype})",
++ .documentation =
++ \\Converts the integer part of a floating point number to the destination type.
++ \\
++ \\If the integer part of the floating point number cannot fit in the destination type, it invokes safety-checked [Undefined Behavior](https://ziglang.org/documentation/0.9.1/#Undefined-Behavior).
++ ,
++ .arguments = &.{
++ "comptime DestType: type",
++ "float: anytype",
++ },
++ },
++ .{
++ .name = "@frame",
++ .signature = "@frame() *@Frame(func)",
++ .snippet = "@frame()",
++ .documentation =
++ \\This function returns a pointer to the frame for a given function. This type can be [coerced](https://ziglang.org/documentation/0.9.1/#Type-Coercion) to `anyframe->T` and to `anyframe`, where `T` is the return type of the function in scope.
++ \\
++ \\This function does not mark a suspension point, but it does cause the function in scope to become an [async function](https://ziglang.org/documentation/0.9.1/#Async-Functions).
++ ,
++ .arguments = &.{},
++ },
++ .{
++ .name = "@Frame",
++ .signature = "@Frame(func: anytype) type",
++ .snippet = "@Frame(${1:func: anytype})",
++ .documentation =
++ \\This function returns the frame type of a function. This works for [Async Functions](https://ziglang.org/documentation/0.9.1/#Async-Functions) as well as any function without a specific calling convention.
++ \\
++ \\This type is suitable to be used as the return type of [async](https://ziglang.org/documentation/0.9.1/#Async-and-Await) which allows one to, for example, heap-allocate an async function frame: {#code_begin|test|heap_allocated_frame#} const std = @import("std"); test "heap allocated frame" { const frame = try std.heap.page_allocator.create(@Frame(func)); frame.* = async func(); } fn func() void { suspend {} }`
++ ,
++ .arguments = &.{
++ "func: anytype",
++ },
++ },
++ .{
++ .name = "@frameAddress",
++ .signature = "@frameAddress() usize",
++ .snippet = "@frameAddress()",
++ .documentation =
++ \\This function returns the base pointer of the current stack frame.
++ \\
++ \\The implications of this are target specific and not consistent across all platforms. The frame address may not be available in release mode due to aggressive optimizations.
++ \\
++ \\This function is only valid within function scope.
++ ,
++ .arguments = &.{},
++ },
++ .{
++ .name = "@frameSize",
++ .signature = "@frameSize() usize",
++ .snippet = "@frameSize()",
++ .documentation =
++ \\This is the same as `@sizeOf(@Frame(func))`, where `func` may be runtime-known.
++ \\
++ \\This function is typically used in conjunction with [@asyncCall](https://ziglang.org/documentation/0.9.1/#asyncCall).
++ ,
++ .arguments = &.{},
++ },
++ .{
++ .name = "@hasDecl",
++ .signature = "@hasDecl(comptime Container: type, comptime name: []const u8) bool",
++ .snippet = "@hasDecl(${1:comptime Container: type}, ${2:comptime name: []const u8})",
++ .documentation =
++ \\Returns whether or not a [struct](https://ziglang.org/documentation/0.9.1/#struct), [enum](https://ziglang.org/documentation/0.9.1/#enum), or [union](https://ziglang.org/documentation/0.9.1/#union) has a declaration matching `name`. {#code_begin|test|hasDecl#} const std = @import("std"); const expect = std.testing.expect; const Foo = struct { nope: i32, pub var blah = "xxx"; const hi = 1; }; test "@hasDecl" { try expect(@hasDecl(Foo, "blah")); // Even though `hi` is private, @hasDecl returns true because this test is // in the same file scope as Foo. It would return false if Foo was declared // in a different file. try expect(@hasDecl(Foo, "hi")); // @hasDecl is for declarations; not fields. try expect(!@hasDecl(Foo, "nope")); try expect(!@hasDecl(Foo, "nope1234")); }`
++ ,
++ .arguments = &.{
++ "comptime Container: type",
++ "comptime name: []const u8",
++ },
++ },
++ .{
++ .name = "@hasField",
++ .signature = "@hasField(comptime Container: type, comptime name: []const u8) bool",
++ .snippet = "@hasField(${1:comptime Container: type}, ${2:comptime name: []const u8})",
++ .documentation =
++ \\Returns whether the field name of a struct, union, or enum exists.
++ \\
++ \\The result is a compile time constant.
++ \\
++ \\It does not include functions, variables, or constants.
++ ,
++ .arguments = &.{
++ "comptime Container: type",
++ "comptime name: []const u8",
++ },
++ },
++ .{
++ .name = "@import",
++ .signature = "@import(comptime path: []u8) type",
++ .snippet = "@import(${1:comptime path: []u8})",
++ .documentation =
++ \\This function finds a zig file corresponding to `path` and adds it to the build, if it is not already added.
++ \\
++ \\Zig source files are implicitly structs, with a name equal to the file's basename with the extension truncated. `@import` returns the struct type corresponding to the file.
++ \\
++ \\Declarations which have the `pub` keyword may be referenced from a different source file than the one they are declared in.
++ \\
++ \\`path` can be a relative path or it can be the name of a package. If it is a relative path, it is relative to the file that contains the `@import` function call.
++ \\
++ \\The following packages are always available:
++ \\ - `@import("std")` - Zig Standard Library
++ \\ - `@import("builtin")` - Target-specific information The command `zig build-exe --show-builtin` outputs the source to stdout for reference.
++ \\ - `@import("root")` - Points to the root source file This is usually `src/main.zig` but it depends on what file is chosen to be built.
++ ,
++ .arguments = &.{
++ "comptime path: []u8",
++ },
++ },
++ .{
++ .name = "@intCast",
++ .signature = "@intCast(comptime DestType: type, int: anytype) DestType",
++ .snippet = "@intCast(${1:comptime DestType: type}, ${2:int: anytype})",
++ .documentation =
++ \\Converts an integer to another integer while keeping the same numerical value. Attempting to convert a number which is out of range of the destination type results in safety-protected [Undefined Behavior](https://ziglang.org/documentation/0.9.1/#Undefined-Behavior).
++ \\
++ \\```zig
++ \\test "integer cast panic" {
++ \\ var a: u16 = 0xabcd;
++ \\ var b: u8 = @intCast(u8, a);
++ \\ _ = b;
++ \\}
++ \\```
++ \\
++ \\To truncate the significant bits of a number out of range of the destination type, use [@truncate](https://ziglang.org/documentation/0.9.1/#truncate).
++ \\
++ \\If `T` is `comptime_int`, then this is semantically equivalent to [Type Coercion](https://ziglang.org/documentation/0.9.1/#Type-Coercion).
++ ,
++ .arguments = &.{
++ "comptime DestType: type",
++ "int: anytype",
++ },
++ },
++ .{
++ .name = "@intToEnum",
++ .signature = "@intToEnum(comptime DestType: type, integer: anytype) DestType",
++ .snippet = "@intToEnum(${1:comptime DestType: type}, ${2:integer: anytype})",
++ .documentation =
++ \\Converts an integer into an [enum](https://ziglang.org/documentation/0.9.1/#enum) value.
++ \\
++ \\Attempting to convert an integer which represents no value in the chosen enum type invokes safety-checked [Undefined Behavior](https://ziglang.org/documentation/0.9.1/#Undefined-Behavior).
++ ,
++ .arguments = &.{
++ "comptime DestType: type",
++ "integer: anytype",
++ },
++ },
++ .{
++ .name = "@intToError",
++ .signature = "@intToError(value: std.meta.Int(.unsigned, @sizeOf(anyerror) * 8)) anyerror",
++ .snippet = "@intToError(${1:value: std.meta.Int(.unsigned, @sizeOf(anyerror) * 8)})",
++ .documentation =
++ \\Converts from the integer representation of an error into [The Global Error Set](https://ziglang.org/documentation/0.9.1/#The-Global-Error-Set) type.
++ \\
++ \\It is generally recommended to avoid this cast, as the integer representation of an error is not stable across source code changes.
++ \\
++ \\Attempting to convert an integer that does not correspond to any error results in safety-protected [Undefined Behavior](https://ziglang.org/documentation/0.9.1/#Undefined-Behavior).
++ ,
++ .arguments = &.{
++ "value: std.meta.Int(.unsigned, @sizeOf(anyerror) * 8)",
++ },
++ },
++ .{
++ .name = "@intToFloat",
++ .signature = "@intToFloat(comptime DestType: type, int: anytype) DestType",
++ .snippet = "@intToFloat(${1:comptime DestType: type}, ${2:int: anytype})",
++ .documentation =
++ \\Converts an integer to the closest floating point representation. To convert the other way, use [@floatToInt](https://ziglang.org/documentation/0.9.1/#floatToInt). This cast is always safe.
++ ,
++ .arguments = &.{
++ "comptime DestType: type",
++ "int: anytype",
++ },
++ },
++ .{
++ .name = "@intToPtr",
++ .signature = "@intToPtr(comptime DestType: type, address: usize) DestType",
++ .snippet = "@intToPtr(${1:comptime DestType: type}, ${2:address: usize})",
++ .documentation =
++ \\Converts an integer to a [pointer](https://ziglang.org/documentation/0.9.1/#Pointers). To convert the other way, use [@ptrToInt](https://ziglang.org/documentation/0.9.1/#ptrToInt). Casting an address of 0 to a destination type which in not [optional](https://ziglang.org/documentation/0.9.1/#Optional-Pointers) and does not have the `allowzero` attribute will result in a [Pointer Cast Invalid Null](https://ziglang.org/documentation/0.9.1/#Pointer-Cast-Invalid-Null) panic when runtime safety checks are enabled.
++ \\
++ \\If the destination pointer type does not allow address zero and `address` is zero, this invokes safety-checked [Undefined Behavior](https://ziglang.org/documentation/0.9.1/#Undefined-Behavior).
++ ,
++ .arguments = &.{
++ "comptime DestType: type",
++ "address: usize",
++ },
++ },
++ .{
++ .name = "@maximum",
++ .signature = "@maximum(a: T, b: T) T",
++ .snippet = "@maximum(${1:a: T}, ${2:b: T})",
++ .documentation =
++ \\Returns the maximum value of `a` and `b`. This builtin accepts integers, floats, and vectors of either. In the latter case, the operation is performed element wise.
++ \\
++ \\NaNs are handled as follows: if one of the operands of a (pairwise) operation is NaN, the other operand is returned. If both operands are NaN, NaN is returned.
++ ,
++ .arguments = &.{
++ "a: T",
++ "b: T",
++ },
++ },
++ .{
++ .name = "@memcpy",
++ .signature = "@memcpy(noalias dest: [*]u8, noalias source: [*]const u8, byte_count: usize)",
++ .snippet = "@memcpy(${1:noalias dest: [*]u8}, ${2:noalias source: [*]const u8}, ${3:byte_count: usize})",
++ .documentation =
++ \\This function copies bytes from one region of memory to another. `dest` and `source` are both pointers and must not overlap.
++ \\
++ \\This function is a low level intrinsic with no safety mechanisms. Most code should not use this function, instead using something like this:
++ \\
++ \\```zig
++ \\for (source[0..byte_count]) |b, i| dest[i] = b;
++ \\```
++ \\
++ \\The optimizer is intelligent enough to turn the above snippet into a memcpy.
++ \\
++ \\There is also a standard library function for this:
++ \\
++ \\```zig
++ \\const mem = @import("std").mem;
++ \\mem.copy(u8, dest[0..byte_count], source[0..byte_count]);
++ \\```
++ ,
++ .arguments = &.{
++ "noalias dest: [*]u8",
++ "noalias source: [*]const u8",
++ "byte_count: usize",
++ },
++ },
++ .{
++ .name = "@memset",
++ .signature = "@memset(dest: [*]u8, c: u8, byte_count: usize)",
++ .snippet = "@memset(${1:dest: [*]u8}, ${2:c: u8}, ${3:byte_count: usize})",
++ .documentation =
++ \\This function sets a region of memory to `c`. `dest` is a pointer.
++ \\
++ \\This function is a low level intrinsic with no safety mechanisms. Most code should not use this function, instead using something like this:
++ \\
++ \\```zig
++ \\for (dest[0..byte_count]) |*b| b.* = c;
++ \\```
++ \\
++ \\The optimizer is intelligent enough to turn the above snippet into a memset.
++ \\
++ \\There is also a standard library function for this:
++ \\
++ \\```zig
++ \\const mem = @import("std").mem;
++ \\mem.set(u8, dest, c);
++ \\```
++ ,
++ .arguments = &.{
++ "dest: [*]u8",
++ "c: u8",
++ "byte_count: usize",
++ },
++ },
++ .{
++ .name = "@minimum",
++ .signature = "@minimum(a: T, b: T) T",
++ .snippet = "@minimum(${1:a: T}, ${2:b: T})",
++ .documentation =
++ \\Returns the minimum value of `a` and `b`. This builtin accepts integers, floats, and vectors of either. In the latter case, the operation is performed element wise.
++ \\
++ \\NaNs are handled as follows: if one of the operands of a (pairwise) operation is NaN, the other operand is returned. If both operands are NaN, NaN is returned.
++ ,
++ .arguments = &.{
++ "a: T",
++ "b: T",
++ },
++ },
++ .{
++ .name = "@wasmMemorySize",
++ .signature = "@wasmMemorySize(index: u32) u32",
++ .snippet = "@wasmMemorySize(${1:index: u32})",
++ .documentation =
++ \\This function returns the size of the Wasm memory identified by `index` as an unsigned value in units of Wasm pages. Note that each Wasm page is 64KB in size.
++ \\
++ \\This function is a low level intrinsic with no safety mechanisms usually useful for allocator designers targeting Wasm. So unless you are writing a new allocator from scratch, you should use something like `@import("std").heap.WasmPageAllocator`.
++ ,
++ .arguments = &.{
++ "index: u32",
++ },
++ },
++ .{
++ .name = "@wasmMemoryGrow",
++ .signature = "@wasmMemoryGrow(index: u32, delta: u32) i32",
++ .snippet = "@wasmMemoryGrow(${1:index: u32}, ${2:delta: u32})",
++ .documentation =
++ \\This function increases the size of the Wasm memory identified by `index` by `delta` in units of unsigned number of Wasm pages. Note that each Wasm page is 64KB in size. On success, returns previous memory size; on failure, if the allocation fails, returns -1.
++ \\
++ \\This function is a low level intrinsic with no safety mechanisms usually useful for allocator designers targeting Wasm. So unless you are writing a new allocator from scratch, you should use something like `@import("std").heap.WasmPageAllocator`. {#code_begin|test|wasmMemoryGrow#} const std = @import("std"); const native_arch = @import("builtin").target.cpu.arch; const expect = std.testing.expect; test "@wasmMemoryGrow" { if (native_arch != .wasm32) return error.SkipZigTest; var prev = @wasmMemorySize(0); try expect(prev == @wasmMemoryGrow(0, 1)); try expect(prev + 1 == @wasmMemorySize(0)); }`
++ ,
++ .arguments = &.{
++ "index: u32",
++ "delta: u32",
++ },
++ },
++ .{
++ .name = "@mod",
++ .signature = "@mod(numerator: T, denominator: T) T",
++ .snippet = "@mod(${1:numerator: T}, ${2:denominator: T})",
++ .documentation =
++ \\Modulus division. For unsigned integers this is the same as `numerator % denominator`. Caller guarantees `denominator > 0`, otherwise the operation will result in a [Remainder Division by Zero](https://ziglang.org/documentation/0.9.1/#Remainder-Division-by-Zero) when runtime safety checks are enabled.
++ \\ - `@mod(-5, 3) == 1`
++ \\ - `(@divFloor(a, b) * b) + @mod(a, b) == a`
++ \\
++ \\For a function that returns an error code, see `@import("std").math.mod`.
++ ,
++ .arguments = &.{
++ "numerator: T",
++ "denominator: T",
++ },
++ },
++ .{
++ .name = "@mulWithOverflow",
++ .signature = "@mulWithOverflow(comptime T: type, a: T, b: T, result: *T) bool",
++ .snippet = "@mulWithOverflow(${1:comptime T: type}, ${2:a: T}, ${3:b: T}, ${4:result: *T})",
++ .documentation =
++ \\Performs `result.* = a * b`. If overflow or underflow occurs, stores the overflowed bits in `result` and returns `true`. If no overflow or underflow occurs, returns `false`.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "a: T",
++ "b: T",
++ "result: *T",
++ },
++ },
++ .{
++ .name = "@panic",
++ .signature = "@panic(message: []const u8) noreturn",
++ .snippet = "@panic(${1:message: []const u8})",
++ .documentation =
++ \\Invokes the panic handler function. By default the panic handler function calls the public `panic` function exposed in the root source file, or if there is not one specified, the `std.builtin.default_panic` function from `std/builtin.zig`.
++ \\
++ \\Generally it is better to use `@import("std").debug.panic`. However, `@panic` can be useful for 2 scenarios:
++ \\ - From library code, calling the programmer's panic function if they exposed one in the root source file.
++ \\ - When mixing C and Zig code, calling the canonical panic implementation across multiple .o files.
++ ,
++ .arguments = &.{
++ "message: []const u8",
++ },
++ },
++ .{
++ .name = "@popCount",
++ .signature = "@popCount(comptime T: type, operand: T)",
++ .snippet = "@popCount(${1:comptime T: type}, ${2:operand: T})",
++ .documentation =
++ \\`T` must be an integer type.
++ \\
++ \\`operand` may be an [integer](https://ziglang.org/documentation/0.9.1/#Integers) or [vector](https://ziglang.org/documentation/0.9.1/#Vectors).
++ \\
++ \\Counts the number of bits set in an integer.
++ \\
++ \\If `operand` is a [comptime](https://ziglang.org/documentation/0.9.1/#comptime)-known integer, the return type is `comptime_int`. Otherwise, the return type is an unsigned integer or vector of unsigned integers with the minimum number of bits that can represent the bit count of the integer type.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "operand: T",
++ },
++ },
++ .{
++ .name = "@prefetch",
++ .signature = "@prefetch(ptr: anytype, comptime options: std.builtin.PrefetchOptions)",
++ .snippet = "@prefetch(${1:ptr: anytype}, ${2:comptime options: std.builtin.PrefetchOptions})",
++ .documentation =
++ \\This builtin tells the compiler to emit a prefetch instruction if supported by the target CPU. If the target CPU does not support the requested prefetch instruction, this builtin is a noop. This function has no effect on the behavior of the program, only on the performance characteristics.
++ \\
++ \\The `ptr` argument may be any pointer type and determines the memory address to prefetch. This function does not dereference the pointer, it is perfectly legal to pass a pointer to invalid memory to this function and no illegal behavior will result.
++ \\
++ \\The `options` argument is the following struct: {#code_begin|syntax|builtin#} /// This data structure is used by the Zig language code generation and /// therefore must be kept in sync with the compiler implementation. pub const PrefetchOptions = struct { /// Whether the prefetch should prepare for a read or a write. rw: Rw = .read, /// 0 means no temporal locality. That is, the data can be immediately /// dropped from the cache after it is accessed. /// /// 3 means high temporal locality. That is, the data should be kept in /// the cache as it is likely to be accessed again soon. locality: u2 = 3, /// The cache that the prefetch should be preformed on. cache: Cache = .data, pub const Rw = enum { read, write, }; pub const Cache = enum { instruction, data, }; };`
++ ,
++ .arguments = &.{
++ "ptr: anytype",
++ "comptime options: std.builtin.PrefetchOptions",
++ },
++ },
++ .{
++ .name = "@ptrCast",
++ .signature = "@ptrCast(comptime DestType: type, value: anytype) DestType",
++ .snippet = "@ptrCast(${1:comptime DestType: type}, ${2:value: anytype})",
++ .documentation =
++ \\Converts a pointer of one type to a pointer of another type.
++ \\
++ \\[Optional Pointers](https://ziglang.org/documentation/0.9.1/#Optional-Pointers) are allowed. Casting an optional pointer which is [null](https://ziglang.org/documentation/0.9.1/#null) to a non-optional pointer invokes safety-checked [Undefined Behavior](https://ziglang.org/documentation/0.9.1/#Undefined-Behavior).
++ ,
++ .arguments = &.{
++ "comptime DestType: type",
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@ptrToInt",
++ .signature = "@ptrToInt(value: anytype) usize",
++ .snippet = "@ptrToInt(${1:value: anytype})",
++ .documentation =
++ \\Converts `value` to a `usize` which is the address of the pointer. `value` can be one of these types:
++ \\ - `*T`
++ \\ - `?*T`
++ \\ - `fn()`
++ \\ - `?fn()`
++ \\
++ \\To convert the other way, use [@intToPtr](https://ziglang.org/documentation/0.9.1/#intToPtr)
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@rem",
++ .signature = "@rem(numerator: T, denominator: T) T",
++ .snippet = "@rem(${1:numerator: T}, ${2:denominator: T})",
++ .documentation =
++ \\Remainder division. For unsigned integers this is the same as `numerator % denominator`. Caller guarantees `denominator > 0`, otherwise the operation will result in a [Remainder Division by Zero](https://ziglang.org/documentation/0.9.1/#Remainder-Division-by-Zero) when runtime safety checks are enabled.
++ \\ - `@rem(-5, 3) == -2`
++ \\ - `(@divTrunc(a, b) * b) + @rem(a, b) == a`
++ \\
++ \\For a function that returns an error code, see `@import("std").math.rem`.
++ ,
++ .arguments = &.{
++ "numerator: T",
++ "denominator: T",
++ },
++ },
++ .{
++ .name = "@returnAddress",
++ .signature = "@returnAddress() usize",
++ .snippet = "@returnAddress()",
++ .documentation =
++ \\This function returns the address of the next machine code instruction that will be executed when the current function returns.
++ \\
++ \\The implications of this are target specific and not consistent across all platforms.
++ \\
++ \\This function is only valid within function scope. If the function gets inlined into a calling function, the returned address will apply to the calling function.
++ ,
++ .arguments = &.{},
++ },
++ .{
++ .name = "@select",
++ .signature = "@select(comptime T: type, pred: std.meta.Vector(len, bool), a: std.meta.Vector(len, T), b: std.meta.Vector(len, T)) std.meta.Vector(len, T)",
++ .snippet = "@select(${1:comptime T: type}, ${2:pred: std.meta.Vector(len, bool)}, ${3:a: std.meta.Vector(len, T)}, ${4:b: std.meta.Vector(len, T)})",
++ .documentation =
++ \\Selects values element-wise from `a` or `b` based on `pred`. If `pred[i]` is `true`, the corresponding element in the result will be `a[i]` and otherwise `b[i]`.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "pred: std.meta.Vector(len, bool)",
++ "a: std.meta.Vector(len, T)",
++ "b: std.meta.Vector(len, T)",
++ },
++ },
++ .{
++ .name = "@setAlignStack",
++ .signature = "@setAlignStack(comptime alignment: u29)",
++ .snippet = "@setAlignStack(${1:comptime alignment: u29})",
++ .documentation =
++ \\Ensures that a function will have a stack alignment of at least `alignment` bytes.
++ ,
++ .arguments = &.{
++ "comptime alignment: u29",
++ },
++ },
++ .{
++ .name = "@setCold",
++ .signature = "@setCold(comptime is_cold: bool)",
++ .snippet = "@setCold(${1:comptime is_cold: bool})",
++ .documentation =
++ \\Tells the optimizer that a function is rarely called.
++ ,
++ .arguments = &.{
++ "comptime is_cold: bool",
++ },
++ },
++ .{
++ .name = "@setEvalBranchQuota",
++ .signature = "@setEvalBranchQuota(comptime new_quota: u32)",
++ .snippet = "@setEvalBranchQuota(${1:comptime new_quota: u32})",
++ .documentation =
++ \\Changes the maximum number of backwards branches that compile-time code execution can use before giving up and making a compile error.
++ \\
++ \\If the `new_quota` is smaller than the default quota (`1000`) or a previously explicitly set quota, it is ignored.
++ \\
++ \\Example:
++ \\
++ \\```zig
++ \\test "foo" {
++ \\ comptime {
++ \\ var i = 0;
++ \\ while (i < 1001) : (i += 1) {}
++ \\ }
++ \\}
++ \\```
++ \\
++ \\Now we use `@setEvalBranchQuota`: {#code_begin|test|setEvalBranchQuota#} test "foo" { comptime { @setEvalBranchQuota(1001); var i = 0; while (i < 1001) : (i += 1) {} } }`
++ ,
++ .arguments = &.{
++ "comptime new_quota: u32",
++ },
++ },
++ .{
++ .name = "@setFloatMode",
++ .signature = "@setFloatMode(comptime mode: @import(\"std\").builtin.FloatMode)",
++ .snippet = "@setFloatMode(${1:comptime mode: @import(\"std\").builtin.FloatMode})",
++ .documentation =
++ \\Sets the floating point mode of the current scope. Possible values are:
++ \\
++ \\```zig
++ \\pub const FloatMode = enum {
++ \\ Strict,
++ \\ Optimized,
++ \\};
++ \\```
++ \\
++ \\ - `Strict` (default) - Floating point operations follow strict IEEE compliance.
++ \\ - `Optimized` - Floating point operations may do all of the following:
++ \\ - Assume the arguments and result are not NaN. Optimizations are required to retain defined behavior over NaNs, but the value of the result is undefined.
++ \\ - Assume the arguments and result are not +/-Inf. Optimizations are required to retain defined behavior over +/-Inf, but the value of the result is undefined.
++ \\ - Treat the sign of a zero argument or result as insignificant.
++ \\ - Use the reciprocal of an argument rather than perform division.
++ \\ - Perform floating-point contraction (e.g. fusing a multiply followed by an addition into a fused multiply-and-add).
++ \\ - Perform algebraically equivalent transformations that may change results in floating point (e.g. reassociate). This is equivalent to `-ffast-math` in GCC.
++ \\
++ \\The floating point mode is inherited by child scopes, and can be overridden in any scope. You can set the floating point mode in a struct or module scope by using a comptime block.
++ ,
++ .arguments = &.{
++ "comptime mode: @import(\"std\").builtin.FloatMode",
++ },
++ },
++ .{
++ .name = "@setRuntimeSafety",
++ .signature = "@setRuntimeSafety(comptime safety_on: bool) void",
++ .snippet = "@setRuntimeSafety(${1:comptime safety_on: bool})",
++ .documentation =
++ \\Sets whether runtime safety checks are enabled for the scope that contains the function call.
++ \\
++ \\```zig
++ \\test "@setRuntimeSafety" {
++ \\ // The builtin applies to the scope that it is called in. So here, integer overflow
++ \\ // will not be caught in ReleaseFast and ReleaseSmall modes:
++ \\ // var x: u8 = 255;
++ \\ // x += 1; // undefined behavior in ReleaseFast/ReleaseSmall modes.
++ \\ {
++ \\ // However this block has safety enabled, so safety checks happen here,
++ \\ // even in ReleaseFast and ReleaseSmall modes.
++ \\ @setRuntimeSafety(true);
++ \\ var x: u8 = 255;
++ \\ x += 1;
++ \\
++ \\ {
++ \\ // The value can be overridden at any scope. So here integer overflow
++ \\ // would not be caught in any build mode.
++ \\ @setRuntimeSafety(false);
++ \\ // var x: u8 = 255;
++ \\ // x += 1; // undefined behavior in all build modes.
++ \\ }
++ \\ }
++ \\}
++ \\```
++ \\
++ \\Note: it is [planned](https://github.com/ziglang/zig/issues/978) to replace `@setRuntimeSafety` with `@optimizeFor`
++ ,
++ .arguments = &.{
++ "comptime safety_on: bool",
++ },
++ },
++ .{
++ .name = "@shlExact",
++ .signature = "@shlExact(value: T, shift_amt: Log2T) T",
++ .snippet = "@shlExact(${1:value: T}, ${2:shift_amt: Log2T})",
++ .documentation =
++ \\Performs the left shift operation (`<<`). For unsigned integers, the result is [undefined](https://ziglang.org/documentation/0.9.1/#undefined) if any 1 bits are shifted out. For signed integers, the result is [undefined](https://ziglang.org/documentation/0.9.1/#undefined) if any bits that disagree with the resultant sign bit are shifted out.
++ \\
++ \\The type of `shift_amt` is an unsigned integer with `log2(T.bit_count)` bits. This is because `shift_amt >= T.bit_count` is undefined behavior.
++ ,
++ .arguments = &.{
++ "value: T",
++ "shift_amt: Log2T",
++ },
++ },
++ .{
++ .name = "@shlWithOverflow",
++ .signature = "@shlWithOverflow(comptime T: type, a: T, shift_amt: Log2T, result: *T) bool",
++ .snippet = "@shlWithOverflow(${1:comptime T: type}, ${2:a: T}, ${3:shift_amt: Log2T}, ${4:result: *T})",
++ .documentation =
++ \\Performs `result.* = a << b`. If overflow or underflow occurs, stores the overflowed bits in `result` and returns `true`. If no overflow or underflow occurs, returns `false`.
++ \\
++ \\The type of `shift_amt` is an unsigned integer with `log2(T.bit_count)` bits. This is because `shift_amt >= T.bit_count` is undefined behavior.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "a: T",
++ "shift_amt: Log2T",
++ "result: *T",
++ },
++ },
++ .{
++ .name = "@shrExact",
++ .signature = "@shrExact(value: T, shift_amt: Log2T) T",
++ .snippet = "@shrExact(${1:value: T}, ${2:shift_amt: Log2T})",
++ .documentation =
++ \\Performs the right shift operation (`>>`). Caller guarantees that the shift will not shift any 1 bits out.
++ \\
++ \\The type of `shift_amt` is an unsigned integer with `log2(T.bit_count)` bits. This is because `shift_amt >= T.bit_count` is undefined behavior.
++ ,
++ .arguments = &.{
++ "value: T",
++ "shift_amt: Log2T",
++ },
++ },
++ .{
++ .name = "@shuffle",
++ .signature = "@shuffle(comptime E: type, a: std.meta.Vector(a_len, E), b: std.meta.Vector(b_len, E), comptime mask: std.meta.Vector(mask_len, i32)) std.meta.Vector(mask_len, E)",
++ .snippet = "@shuffle(${1:comptime E: type}, ${2:a: std.meta.Vector(a_len, E)}, ${3:b: std.meta.Vector(b_len, E)}, ${4:comptime mask: std.meta.Vector(mask_len, i32)})",
++ .documentation =
++ \\Constructs a new [vector](https://ziglang.org/documentation/0.9.1/#Vectors) by selecting elements from `a` and `b` based on `mask`.
++ \\
++ \\Each element in `mask` selects an element from either `a` or `b`. Positive numbers select from `a` starting at 0. Negative values select from `b`, starting at `-1` and going down. It is recommended to use the `~` operator from indexes from `b` so that both indexes can start from `0` (i.e. `~@as(i32, 0)` is `-1`).
++ \\
++ \\For each element of `mask`, if it or the selected value from `a` or `b` is `undefined`, then the resulting element is `undefined`.
++ \\
++ \\`a_len` and `b_len` may differ in length. Out-of-bounds element indexes in `mask` result in compile errors.
++ \\
++ \\If `a` or `b` is `undefined`, it is equivalent to a vector of all `undefined` with the same length as the other vector. If both vectors are `undefined`, `@shuffle` returns a vector with all elements `undefined`.
++ \\
++ \\`E` must be an [integer](https://ziglang.org/documentation/0.9.1/#Integers), [float](https://ziglang.org/documentation/0.9.1/#Floats), [pointer](https://ziglang.org/documentation/0.9.1/#Pointers), or `bool`. The mask may be any vector length, and its length determines the result length. {#code_begin|test|vector_shuffle#} const std = @import("std"); const Vector = std.meta.Vector; const expect = std.testing.expect; test "vector @shuffle" { const a: Vector(7, u8) = [_]u8{ 'o', 'l', 'h', 'e', 'r', 'z', 'w' }; const b: Vector(4, u8) = [_]u8{ 'w', 'd', '!', 'x' }; // To shuffle within a single vector, pass undefined as the second argument. // Notice that we can re-order, duplicate, or omit elements of the input vector const mask1: Vector(5, i32) = [_]i32{ 2, 3, 1, 1, 0 }; const res1: Vector(5, u8) = @shuffle(u8, a, undefined, mask1); try expect(std.mem.eql(u8, &@as([5]u8, res1), "hello")); // Combining two vectors const mask2: Vector(6, i32) = [_]i32{ -1, 0, 4, 1, -2, -3 }; const res2: Vector(6, u8) = @shuffle(u8, a, b, mask2); try expect(std.mem.eql(u8, &@as([6]u8, res2), "world!")); }`
++ ,
++ .arguments = &.{
++ "comptime E: type",
++ "a: std.meta.Vector(a_len, E)",
++ "b: std.meta.Vector(b_len, E)",
++ "comptime mask: std.meta.Vector(mask_len, i32)",
++ },
++ },
++ .{
++ .name = "@sizeOf",
++ .signature = "@sizeOf(comptime T: type) comptime_int",
++ .snippet = "@sizeOf(${1:comptime T: type})",
++ .documentation =
++ \\This function returns the number of bytes it takes to store `T` in memory. The result is a target-specific compile time constant.
++ \\
++ \\This size may contain padding bytes. If there were two consecutive T in memory, this would be the offset in bytes between element at index 0 and the element at index 1. For [integer](https://ziglang.org/documentation/0.9.1/#Integers), consider whether you want to use `@sizeOf(T)` or `@typeInfo(T).Int.bits`.
++ \\
++ \\This function measures the size at runtime. For types that are disallowed at runtime, such as `comptime_int` and `type`, the result is `0`.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ },
++ },
++ .{
++ .name = "@splat",
++ .signature = "@splat(comptime len: u32, scalar: anytype) std.meta.Vector(len, @TypeOf(scalar))",
++ .snippet = "@splat(${1:comptime len: u32}, ${2:scalar: anytype})",
++ .documentation =
++ \\Produces a vector of length `len` where each element is the value `scalar`: {#code_begin|test|vector_splat#} const std = @import("std"); const expect = std.testing.expect; test "vector @splat" { const scalar: u32 = 5; const result = @splat(4, scalar); comptime try expect(@TypeOf(result) == std.meta.Vector(4, u32)); try expect(std.mem.eql(u32, &@as([4]u32, result), &[_]u32{ 5, 5, 5, 5 })); }`
++ \\
++ \\`scalar` must be an [integer](https://ziglang.org/documentation/0.9.1/#Integers), [bool](https://ziglang.org/documentation/0.9.1/#Primitive-Types), [float](https://ziglang.org/documentation/0.9.1/#Floats), or [pointer](https://ziglang.org/documentation/0.9.1/#Pointers).
++ ,
++ .arguments = &.{
++ "comptime len: u32",
++ "scalar: anytype",
++ },
++ },
++ .{
++ .name = "@reduce",
++ .signature = "@reduce(comptime op: std.builtin.ReduceOp, value: anytype) std.meta.Child(value)",
++ .snippet = "@reduce(${1:comptime op: std.builtin.ReduceOp}, ${2:value: anytype})",
++ .documentation =
++ \\Transforms a [vector](https://ziglang.org/documentation/0.9.1/#Vectors) into a scalar value by performing a sequential horizontal reduction of its elements using the specified operator `op`.
++ \\
++ \\Not every operator is available for every vector element type:
++ \\ - `.And`, `.Or`, `.Xor` are available for `bool` vectors,
++ \\ - `.Min`, `.Max`, `.Add`, `.Mul` are available for [floating point](https://ziglang.org/documentation/0.9.1/#Floats) vectors,
++ \\ - Every operator is available for [integer](https://ziglang.org/documentation/0.9.1/#Integers) vectors.
++ \\
++ \\Note that `.Add` and `.Mul` reductions on integral types are wrapping; when applied on floating point types the operation associativity is preserved, unless the float mode is set to `Optimized`. {#code_begin|test|vector_reduce#} const std = @import("std"); const expect = std.testing.expect; test "vector @reduce" { const value: std.meta.Vector(4, i32) = [_]i32{ 1, -1, 1, -1 }; const result = value > @splat(4, @as(i32, 0)); // result is { true, false, true, false }; comptime try expect(@TypeOf(result) == std.meta.Vector(4, bool)); const is_all_true = @reduce(.And, result); comptime try expect(@TypeOf(is_all_true) == bool); try expect(is_all_true == false); }`
++ ,
++ .arguments = &.{
++ "comptime op: std.builtin.ReduceOp",
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@src",
++ .signature = "@src() std.builtin.SourceLocation",
++ .snippet = "@src()",
++ .documentation =
++ \\Returns a `SourceLocation` struct representing the function's name and location in the source code. This must be called in a function. {#code_begin|test|source_location#} const std = @import("std"); const expect = std.testing.expect; test "@src" { try doTheTest(); } fn doTheTest() !void { const src = @src(); try expect(src.line == 9); try expect(src.column == 17); try expect(std.mem.endsWith(u8, src.fn_name, "doTheTest")); try expect(std.mem.endsWith(u8, src.file, "source_location.zig")); }`
++ ,
++ .arguments = &.{},
++ },
++ .{
++ .name = "@sqrt",
++ .signature = "@sqrt(value: anytype) @TypeOf(value)",
++ .snippet = "@sqrt(${1:value: anytype})",
++ .documentation =
++ \\Performs the square root of a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.9.1/#Floats) and [Vectors](https://ziglang.org/documentation/0.9.1/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@sin",
++ .signature = "@sin(value: anytype) @TypeOf(value)",
++ .snippet = "@sin(${1:value: anytype})",
++ .documentation =
++ \\Sine trigonometric function on a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.9.1/#Floats) and [Vectors](https://ziglang.org/documentation/0.9.1/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@cos",
++ .signature = "@cos(value: anytype) @TypeOf(value)",
++ .snippet = "@cos(${1:value: anytype})",
++ .documentation =
++ \\Cosine trigonometric function on a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.9.1/#Floats) and [Vectors](https://ziglang.org/documentation/0.9.1/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@exp",
++ .signature = "@exp(value: anytype) @TypeOf(value)",
++ .snippet = "@exp(${1:value: anytype})",
++ .documentation =
++ \\Base-e exponential function on a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.9.1/#Floats) and [Vectors](https://ziglang.org/documentation/0.9.1/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@exp2",
++ .signature = "@exp2(value: anytype) @TypeOf(value)",
++ .snippet = "@exp2(${1:value: anytype})",
++ .documentation =
++ \\Base-2 exponential function on a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.9.1/#Floats) and [Vectors](https://ziglang.org/documentation/0.9.1/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@log",
++ .signature = "@log(value: anytype) @TypeOf(value)",
++ .snippet = "@log(${1:value: anytype})",
++ .documentation =
++ \\Returns the natural logarithm of a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.9.1/#Floats) and [Vectors](https://ziglang.org/documentation/0.9.1/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@log2",
++ .signature = "@log2(value: anytype) @TypeOf(value)",
++ .snippet = "@log2(${1:value: anytype})",
++ .documentation =
++ \\Returns the logarithm to the base 2 of a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.9.1/#Floats) and [Vectors](https://ziglang.org/documentation/0.9.1/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@log10",
++ .signature = "@log10(value: anytype) @TypeOf(value)",
++ .snippet = "@log10(${1:value: anytype})",
++ .documentation =
++ \\Returns the logarithm to the base 10 of a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.9.1/#Floats) and [Vectors](https://ziglang.org/documentation/0.9.1/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@fabs",
++ .signature = "@fabs(value: anytype) @TypeOf(value)",
++ .snippet = "@fabs(${1:value: anytype})",
++ .documentation =
++ \\Returns the absolute value of a floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.9.1/#Floats) and [Vectors](https://ziglang.org/documentation/0.9.1/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@floor",
++ .signature = "@floor(value: anytype) @TypeOf(value)",
++ .snippet = "@floor(${1:value: anytype})",
++ .documentation =
++ \\Returns the largest integral value not greater than the given floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.9.1/#Floats) and [Vectors](https://ziglang.org/documentation/0.9.1/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@ceil",
++ .signature = "@ceil(value: anytype) @TypeOf(value)",
++ .snippet = "@ceil(${1:value: anytype})",
++ .documentation =
++ \\Returns the smallest integral value not less than the given floating point number. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.9.1/#Floats) and [Vectors](https://ziglang.org/documentation/0.9.1/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@trunc",
++ .signature = "@trunc(value: anytype) @TypeOf(value)",
++ .snippet = "@trunc(${1:value: anytype})",
++ .documentation =
++ \\Rounds the given floating point number to an integer, towards zero. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.9.1/#Floats) and [Vectors](https://ziglang.org/documentation/0.9.1/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@round",
++ .signature = "@round(value: anytype) @TypeOf(value)",
++ .snippet = "@round(${1:value: anytype})",
++ .documentation =
++ \\Rounds the given floating point number to an integer, away from zero. Uses a dedicated hardware instruction when available.
++ \\
++ \\Supports [Floats](https://ziglang.org/documentation/0.9.1/#Floats) and [Vectors](https://ziglang.org/documentation/0.9.1/#Vectors) of floats, with the caveat that [some float operations are not yet implemented for all float types](https://github.com/ziglang/zig/issues/4026).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@subWithOverflow",
++ .signature = "@subWithOverflow(comptime T: type, a: T, b: T, result: *T) bool",
++ .snippet = "@subWithOverflow(${1:comptime T: type}, ${2:a: T}, ${3:b: T}, ${4:result: *T})",
++ .documentation =
++ \\Performs `result.* = a - b`. If overflow or underflow occurs, stores the overflowed bits in `result` and returns `true`. If no overflow or underflow occurs, returns `false`.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "a: T",
++ "b: T",
++ "result: *T",
++ },
++ },
++ .{
++ .name = "@tagName",
++ .signature = "@tagName(value: anytype) [:0]const u8",
++ .snippet = "@tagName(${1:value: anytype})",
++ .documentation =
++ \\Converts an enum value or union value to a string literal representing the name.
++ \\
++ \\If the enum is non-exhaustive and the tag value does not map to a name, it invokes safety-checked [Undefined Behavior](https://ziglang.org/documentation/0.9.1/#Undefined-Behavior).
++ ,
++ .arguments = &.{
++ "value: anytype",
++ },
++ },
++ .{
++ .name = "@This",
++ .signature = "@This() type",
++ .snippet = "@This()",
++ .documentation =
++ \\Returns the innermost struct, enum, or union that this function call is inside. This can be useful for an anonymous struct that needs to refer to itself: {#code_begin|test|this_innermost#} const std = @import("std"); const expect = std.testing.expect; test "@This()" { var items = [_]i32{ 1, 2, 3, 4 }; const list = List(i32){ .items = items[0..] }; try expect(list.length() == 4); } fn List(comptime T: type) type { return struct { const Self = @This(); items: []T, fn length(self: Self) usize { return self.items.len; } }; }`
++ \\
++ \\When `@This()` is used at file scope, it returns a reference to the struct that corresponds to the current file.
++ ,
++ .arguments = &.{},
++ },
++ .{
++ .name = "@truncate",
++ .signature = "@truncate(comptime T: type, integer: anytype) T",
++ .snippet = "@truncate(${1:comptime T: type}, ${2:integer: anytype})",
++ .documentation =
++ \\This function truncates bits from an integer type, resulting in a smaller or same-sized integer type.
++ \\
++ \\This function always truncates the significant bits of the integer, regardless of endianness on the target platform.
++ \\
++ \\Calling `@truncate` on a number out of range of the destination type is well defined and working code:
++ \\
++ \\```zig
++ \\const std = @import("std");
++ \\const expect = std.testing.expect;
++ \\
++ \\test "integer truncation" {
++ \\ var a: u16 = 0xabcd;
++ \\ var b: u8 = @truncate(u8, a);
++ \\ try expect(b == 0xcd);
++ \\}
++ \\```
++ \\
++ \\Use [@intCast](https://ziglang.org/documentation/0.9.1/#intCast) to convert numbers guaranteed to fit the destination type.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ "integer: anytype",
++ },
++ },
++ .{
++ .name = "@Type",
++ .signature = "@Type(comptime info: std.builtin.TypeInfo) type",
++ .snippet = "@Type(${1:comptime info: std.builtin.TypeInfo})",
++ .documentation =
++ \\This function is the inverse of [@typeInfo](https://ziglang.org/documentation/0.9.1/#typeInfo). It reifies type information into a `type`.
++ \\
++ \\It is available for the following types:
++ \\ - `type`
++ \\ - `noreturn`
++ \\ - `void`
++ \\ - `bool`
++ \\ - [Integers](https://ziglang.org/documentation/0.9.1/#Integers) - The maximum bit count for an integer type is `65535`.
++ \\ - [Floats](https://ziglang.org/documentation/0.9.1/#Floats)
++ \\ - [Pointers](https://ziglang.org/documentation/0.9.1/#Pointers)
++ \\ - `comptime_int`
++ \\ - `comptime_float`
++ \\ - `@TypeOf(undefined)`
++ \\ - `@TypeOf(null)`
++ \\ - [Arrays](https://ziglang.org/documentation/0.9.1/#Arrays)
++ \\ - [Optionals](https://ziglang.org/documentation/0.9.1/#Optionals)
++ \\ - [Error Set Type](https://ziglang.org/documentation/0.9.1/#Error-Set-Type)
++ \\ - [Error Union Type](https://ziglang.org/documentation/0.9.1/#Error-Union-Type)
++ \\ - [Vectors](https://ziglang.org/documentation/0.9.1/#Vectors)
++ \\ - [opaque](https://ziglang.org/documentation/0.9.1/#opaque)
++ \\ - [@Frame](https://ziglang.org/documentation/0.9.1/#Frame)
++ \\ - `anyframe`
++ \\ - [struct](https://ziglang.org/documentation/0.9.1/#struct)
++ \\ - [enum](https://ziglang.org/documentation/0.9.1/#enum)
++ \\ - [Enum Literals](https://ziglang.org/documentation/0.9.1/#Enum-Literals)
++ \\ - [union](https://ziglang.org/documentation/0.9.1/#union)
++ \\
++ \\For these types, `@Type` is not available:
++ \\ - [Functions](https://ziglang.org/documentation/0.9.1/#Functions)
++ \\ - BoundFn
++ ,
++ .arguments = &.{
++ "comptime info: std.builtin.TypeInfo",
++ },
++ },
++ .{
++ .name = "@typeInfo",
++ .signature = "@typeInfo(comptime T: type) std.builtin.TypeInfo",
++ .snippet = "@typeInfo(${1:comptime T: type})",
++ .documentation =
++ \\Provides type reflection.
++ \\
++ \\Type information of [structs](https://ziglang.org/documentation/0.9.1/#struct), [unions](https://ziglang.org/documentation/0.9.1/#union), [enums](https://ziglang.org/documentation/0.9.1/#enum), and [error sets](https://ziglang.org/documentation/0.9.1/#Error-Set-Type) has fields which are are guaranteed to be in the same order as appearance in the source file.
++ \\
++ \\Type information of [structs](https://ziglang.org/documentation/0.9.1/#struct), [unions](https://ziglang.org/documentation/0.9.1/#union), [enums](https://ziglang.org/documentation/0.9.1/#enum), and [opaques](https://ziglang.org/documentation/0.9.1/#opaque) has declarations, which are also guaranteed to be in the same order as appearance in the source file.
++ ,
++ .arguments = &.{
++ "comptime T: type",
++ },
++ },
++ .{
++ .name = "@typeName",
++ .signature = "@typeName(T: type) *const [N:0]u8",
++ .snippet = "@typeName(${1:T: type})",
++ .documentation =
++ \\This function returns the string representation of a type, as an array. It is equivalent to a string literal of the type name.
++ ,
++ .arguments = &.{
++ "T: type",
++ },
++ },
++ .{
++ .name = "@TypeOf",
++ .signature = "@TypeOf(...) type",
++ .snippet = "@TypeOf(${1:...})",
++ .documentation =
++ \\`@TypeOf` is a special builtin function that takes any (nonzero) number of expressions as parameters and returns the type of the result, using [Peer Type Resolution](https://ziglang.org/documentation/0.9.1/#Peer-Type-Resolution).
++ \\
++ \\The expressions are evaluated, however they are guaranteed to have no *runtime* side-effects: {#code_begin|test|no_runtime_side_effects#} const std = @import("std"); const expect = std.testing.expect; test "no runtime side effects" { var data: i32 = 0; const T = @TypeOf(foo(i32, &data)); comptime try expect(T == i32); try expect(data == 0); } fn foo(comptime T: type, ptr: *T) T { ptr.* += 1; return ptr.*; }`
++ ,
++ .arguments = &.{
++ "...",
++ },
++ },
++ .{
++ .name = "@unionInit",
++ .signature = "@unionInit(comptime Union: type, comptime active_field_name: []const u8, init_expr) Union",
++ .snippet = "@unionInit(${1:comptime Union: type}, ${2:comptime active_field_name: []const u8}, ${3:init_expr})",
++ .documentation =
++ \\This is the same thing as [union](https://ziglang.org/documentation/0.9.1/#union) initialization syntax, except that the field name is a [comptime](https://ziglang.org/documentation/0.9.1/#comptime)-known value rather than an identifier token.
++ \\
++ \\`@unionInit` forwards its [result location](https://ziglang.org/documentation/0.9.1/#Result-Location-Semantics) to `init_expr`.
++ ,
++ .arguments = &.{
++ "comptime Union: type",
++ "comptime active_field_name: []const u8",
++ "init_expr",
++ },
++ },
++};
+diff --git a/src/data/data.zig b/src/data/data.zig
+index f6e3b049..21257bfe 100644
+--- a/src/data/data.zig
++++ b/src/data/data.zig
+@@ -7,4 +7,6 @@ pub usingnamespace switch (build_options.data_version) {
+ .@"0.8.0" => @import("0.8.0.zig"),
+ .@"0.8.1" => @import("0.8.1.zig"),
+ .@"0.9.0" => @import("0.9.0.zig"),
++ .@"0.9.1" => @import("0.9.1.zig"),
++ .@"0.10.0" => @import("0.10.0.zig"),
+ };
+diff --git a/src/data/master.zig b/src/data/master.zig
+index 917d3fe2..9eacf7b5 100644
+--- a/src/data/master.zig
++++ b/src/data/master.zig
+@@ -7,6 +7,18 @@ const Builtin = struct {
+ };
+
+ pub const builtins = [_]Builtin{
++ .{
++ .name = "@addrSpaceCast",
++ .signature = "@addrSpaceCast(comptime addrspace: std.builtin.AddressSpace, ptr: anytype) anytype",
++ .snippet = "@addrSpaceCast(${1:comptime addrspace: std.builtin.AddressSpace}, ${2:ptr: anytype})",
++ .documentation =
++ \\Converts a pointer from one address space to another. Depending on the current target and address spaces, this cast may be a no-op, a complex operation, or illegal. If the cast is legal, then the resulting pointer points to the same memory location as the pointer operand. It is always valid to cast a pointer between the same address spaces.
++ ,
++ .arguments = &.{
++ "comptime addrspace: std.builtin.AddressSpace",
++ "ptr: anytype",
++ },
++ },
+ .{
+ .name = "@addWithOverflow",
+ .signature = "@addWithOverflow(comptime T: type, a: T, b: T, result: *T) bool",
+@@ -26,7 +38,7 @@ pub const builtins = [_]Builtin{
+ .signature = "@alignCast(comptime alignment: u29, ptr: anytype) anytype",
+ .snippet = "@alignCast(${1:comptime alignment: u29}, ${2:ptr: anytype})",
+ .documentation =
+- \\`ptr` can be `*T`, `fn()`, `?*T`, `?fn()`, or `[]T`. It returns the same type as `ptr` except with the alignment adjusted to the new value.
++ \\`ptr` can be `*T`, `?*T`, or `[]T`. It returns the same type as `ptr` except with the alignment adjusted to the new value.
+ \\
+ \\A [pointer alignment safety check](https://ziglang.org/documentation/master/#Incorrect-Pointer-Alignment) is added to the generated code to make sure the pointer is aligned as promised.
+ ,
+@@ -222,7 +234,7 @@ pub const builtins = [_]Builtin{
+ .signature = "@mulAdd(comptime T: type, a: T, b: T, c: T) T",
+ .snippet = "@mulAdd(${1:comptime T: type}, ${2:a: T}, ${3:b: T}, ${4:c: T})",
+ .documentation =
+- \\Fused multiply add, similar to `(a * b) + c`, except only rounds once, and is thus more accurate.
++ \\Fused multiply-add, similar to `(a * b) + c`, except only rounds once, and is thus more accurate.
+ \\
+ \\Supports [Floats](https://ziglang.org/documentation/master/#Floats) and [Vectors](https://ziglang.org/documentation/master/#Vectors) of floats.
+ ,
+@@ -474,8 +486,6 @@ pub const builtins = [_]Builtin{
+ \\}
+ \\```
+ \\
+- \\will output:
+- \\
+ \\If all `@compileLog` calls are removed or not encountered by analysis, the program compiles successfully and the generated executable prints: {#code_begin|test|without_compileLog#} const print = @import("std").debug.print; const num1 = blk: { var val1: i32 = 99; val1 = val1 + 1; break :blk val1; }; test "main" { print("Runtime in main, num1 = {}.\n", .{num1}); }`
+ ,
+ .arguments = &.{
+@@ -791,7 +801,7 @@ pub const builtins = [_]Builtin{
+ .documentation =
+ \\This function returns the base pointer of the current stack frame.
+ \\
+- \\The implications of this are target specific and not consistent across all platforms. The frame address may not be available in release mode due to aggressive optimizations.
++ \\The implications of this are target-specific and not consistent across all platforms. The frame address may not be available in release mode due to aggressive optimizations.
+ \\
+ \\This function is only valid within function scope.
+ ,
+@@ -853,8 +863,8 @@ pub const builtins = [_]Builtin{
+ \\
+ \\The following packages are always available:
+ \\ - `@import("std")` - Zig Standard Library
+- \\ - `@import("builtin")` - Target-specific information The command `zig build-exe --show-builtin` outputs the source to stdout for reference.
+- \\ - `@import("root")` - Points to the root source file This is usually `src/main.zig` but it depends on what file is chosen to be built.
++ \\ - `@import("builtin")` - Target-specific information. The command `zig build-exe --show-builtin` outputs the source to stdout for reference.
++ \\ - `@import("root")` - Points to the root source file. This is usually `src/main.zig` but it depends on what file is chosen to be built.
+ ,
+ .arguments = &.{
+ "comptime path: []u8",
+@@ -1117,7 +1127,7 @@ pub const builtins = [_]Builtin{
+ .signature = "@prefetch(ptr: anytype, comptime options: std.builtin.PrefetchOptions)",
+ .snippet = "@prefetch(${1:ptr: anytype}, ${2:comptime options: std.builtin.PrefetchOptions})",
+ .documentation =
+- \\This builtin tells the compiler to emit a prefetch instruction if supported by the target CPU. If the target CPU does not support the requested prefetch instruction, this builtin is a noop. This function has no effect on the behavior of the program, only on the performance characteristics.
++ \\This builtin tells the compiler to emit a prefetch instruction if supported by the target CPU. If the target CPU does not support the requested prefetch instruction, this builtin is a no-op. This function has no effect on the behavior of the program, only on the performance characteristics.
+ \\
+ \\The `ptr` argument may be any pointer type and determines the memory address to prefetch. This function does not dereference the pointer, it is perfectly legal to pass a pointer to invalid memory to this function and no illegal behavior will result.
+ \\
+@@ -1147,11 +1157,7 @@ pub const builtins = [_]Builtin{
+ .signature = "@ptrToInt(value: anytype) usize",
+ .snippet = "@ptrToInt(${1:value: anytype})",
+ .documentation =
+- \\Converts `value` to a `usize` which is the address of the pointer. `value` can be one of these types:
+- \\ - `*T`
+- \\ - `?*T`
+- \\ - `fn()`
+- \\ - `?fn()`
++ \\Converts `value` to a `usize` which is the address of the pointer. `value` can be `*T` or `?*T`.
+ \\
+ \\To convert the other way, use [@intToPtr](https://ziglang.org/documentation/master/#intToPtr)
+ ,
+@@ -1182,7 +1188,7 @@ pub const builtins = [_]Builtin{
+ .documentation =
+ \\This function returns the address of the next machine code instruction that will be executed when the current function returns.
+ \\
+- \\The implications of this are target specific and not consistent across all platforms.
++ \\The implications of this are target-specific and not consistent across all platforms.
+ \\
+ \\This function is only valid within function scope. If the function gets inlined into a calling function, the returned address will apply to the calling function.
+ ,
+@@ -1270,7 +1276,7 @@ pub const builtins = [_]Builtin{
+ \\ - Assume the arguments and result are not +/-Inf. Optimizations are required to retain defined behavior over +/-Inf, but the value of the result is undefined.
+ \\ - Treat the sign of a zero argument or result as insignificant.
+ \\ - Use the reciprocal of an argument rather than perform division.
+- \\ - Perform floating-point contraction (e.g. fusing a multiply followed by an addition into a fused multiply-and-add).
++ \\ - Perform floating-point contraction (e.g. fusing a multiply followed by an addition into a fused multiply-add).
+ \\ - Perform algebraically equivalent transformations that may change results in floating point (e.g. reassociate). This is equivalent to `-ffast-math` in GCC.
+ \\
+ \\The floating point mode is inherited by child scopes, and can be overridden in any scope. You can set the floating point mode in a struct or module scope by using a comptime block.
+@@ -1367,7 +1373,7 @@ pub const builtins = [_]Builtin{
+ .documentation =
+ \\Constructs a new [vector](https://ziglang.org/documentation/master/#Vectors) by selecting elements from `a` and `b` based on `mask`.
+ \\
+- \\Each element in `mask` selects an element from either `a` or `b`. Positive numbers select from `a` starting at 0. Negative values select from `b`, starting at `-1` and going down. It is recommended to use the `~` operator from indexes from `b` so that both indexes can start from `0` (i.e. `~@as(i32, 0)` is `-1`).
++ \\Each element in `mask` selects an element from either `a` or `b`. Positive numbers select from `a` starting at 0. Negative values select from `b`, starting at `-1` and going down. It is recommended to use the `~` operator for indexes from `b` so that both indexes can start from `0` (i.e. `~@as(i32, 0)` is `-1`).
+ \\
+ \\For each element of `mask`, if it or the selected value from `a` or `b` is `undefined`, then the resulting element is `undefined`.
+ \\
+@@ -1737,7 +1743,7 @@ pub const builtins = [_]Builtin{
+ .documentation =
+ \\Provides type reflection.
+ \\
+- \\Type information of [structs](https://ziglang.org/documentation/master/#struct), [unions](https://ziglang.org/documentation/master/#union), [enums](https://ziglang.org/documentation/master/#enum), and [error sets](https://ziglang.org/documentation/master/#Error-Set-Type) has fields which are are guaranteed to be in the same order as appearance in the source file.
++ \\Type information of [structs](https://ziglang.org/documentation/master/#struct), [unions](https://ziglang.org/documentation/master/#union), [enums](https://ziglang.org/documentation/master/#enum), and [error sets](https://ziglang.org/documentation/master/#Error-Set-Type) has fields which are guaranteed to be in the same order as appearance in the source file.
+ \\
+ \\Type information of [structs](https://ziglang.org/documentation/master/#struct), [unions](https://ziglang.org/documentation/master/#union), [enums](https://ziglang.org/documentation/master/#enum), and [opaques](https://ziglang.org/documentation/master/#opaque) has declarations, which are also guaranteed to be in the same order as appearance in the source file.
+ ,
+diff --git a/src/shared.zig b/src/shared.zig
+index 25212203..fac7994a 100644
+--- a/src/shared.zig
++++ b/src/shared.zig
+@@ -7,4 +7,6 @@ pub const ZigVersion = enum {
+ @"0.8.0",
+ @"0.8.1",
+ @"0.9.0",
++ @"0.9.1",
++ @"0.10.0",
+ };
diff --git a/dev-zig/zls/zls-0.10.0.ebuild b/dev-zig/zls/zls-0.10.0.ebuild
new file mode 100644
index 0000000000..3333f5a037
--- /dev/null
+++ b/dev-zig/zls/zls-0.10.0.ebuild
@@ -0,0 +1,56 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+HOMEPAGE="https://github.com/zigtools/zls"
+DESCRIPTION="The officially unofficial Ziglang language server"
+
+KNOWN_FOLDERS_COMMIT="24845b0103e611c108d6bc334231c464e699742c"
+TRACY_COMMIT="f493d4aa8ba8141d9680473fad007d8a6348628e"
+SRC_URI="
+ https://github.com/ziglibs/known-folders/archive/${KNOWN_FOLDERS_COMMIT}.tar.gz -> known-folders-${KNOWN_FOLDERS_COMMIT}.tar.gz
+ https://github.com/wolfpld/tracy/archive/${TRACY_COMMIT}.tar.gz -> tracy-${TRACY_COMMIT}.tar.gz
+ https://github.com/zigtools/zls/archive/refs/tags/${PV}.tar.gz -> zls-${PV}.tar.gz
+"
+KEYWORDS="~amd64"
+
+LICENSE="MIT"
+SLOT="0"
+
+DEPEND="|| ( ~dev-lang/zig-0.10.1 ~dev-lang/zig-bin-0.10.1 )"
+RDEPEND="${DEPEND}"
+
+# see https://github.com/ziglang/zig/issues/3382
+# For now, Zig Build System doesn't support CFLAGS/LDFLAGS/etc.
+QA_FLAGS_IGNORED="usr/bin/zls"
+
+PATCHES=(
+ "${FILESDIR}/zls-0.10.0-add-builtin-data-for-new-zig-versions.patch"
+)
+
+src_prepare() {
+ rm -r src/known-folders || die
+ mv "../known-folders-${KNOWN_FOLDERS_COMMIT}" src/known-folders || die
+ rm -r src/tracy || die
+ mv "../tracy-${TRACY_COMMIT}" src/zinput || die
+
+ default
+}
+
+src_compile() {
+ zig build -Drelease-safe -Ddata_version=0.10.0 --verbose || die
+}
+
+src_test() {
+ zig build test -Drelease-safe -Ddata_version=0.10.0 --verbose || die
+}
+
+src_install() {
+ DESTDIR="${ED}" zig build install --prefix /usr -Drelease-safe -Ddata_version=0.10.0 --verbose || die
+ dodoc README.md
+}
+
+pkg_postinst() {
+ elog "You can find more information about options here https://github.com/zigtools/zls#configuration-options"
+}
diff --git a/games-action/ATLauncher/ATLauncher-3.4.27.0.ebuild b/games-action/ATLauncher/ATLauncher-3.4.27.0.ebuild
new file mode 100644
index 0000000000..030e21842f
--- /dev/null
+++ b/games-action/ATLauncher/ATLauncher-3.4.27.0.ebuild
@@ -0,0 +1,45 @@
+# Copyright 2019-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop java-pkg-2 xdg
+
+DESCRIPTION="Minecraft launcher which integrates multiple different ModPacks"
+HOMEPAGE="https://atlauncher.com
+ https://github.com/ATLauncher/ATLauncher"
+SRC_URI="https://github.com/ATLauncher/ATLauncher/releases/download/v${PV}/${P}.jar
+ https://raw.githubusercontent.com/ATLauncher/ATLauncher/master/src/main/resources/assets/image/icon.ico -> ${PN}.ico"
+
+KEYWORDS="~amd64"
+LICENSE="GPL-3"
+SLOT="0"
+
+BDEPEND="media-gfx/imagemagick[png]"
+
+RDEPEND="virtual/jre:1.8"
+
+S="${WORKDIR}"
+
+src_unpack() {
+ # do not unpack jar file
+ cp "${DISTDIR}/${PN}.ico" "${S}" || die
+}
+
+src_compile() {
+ convert ${PN}.ico ${PN}.png || die
+}
+
+src_install() {
+ java-pkg_newjar "${DISTDIR}/${P}.jar" ${PN}.jar
+
+ dobin "${FILESDIR}/${PN}"
+
+ newicon -s 256x256 ${PN}-0.png atlauncher.png
+ newicon -s 128x128 ${PN}-1.png atlauncher.png
+ newicon -s 64x64 ${PN}-2.png atlauncher.png
+ newicon -s 48x48 ${PN}-3.png atlauncher.png
+ newicon -s 32x32 ${PN}-4.png atlauncher.png
+ newicon -s 16x16 ${PN}-5.png atlauncher.png
+ make_desktop_entry ${PN} "ATLauncher" atlauncher Game
+}
diff --git a/games-action/ATLauncher/Manifest b/games-action/ATLauncher/Manifest
index dce8536df6..320d2e73d1 100644
--- a/games-action/ATLauncher/Manifest
+++ b/games-action/ATLauncher/Manifest
@@ -1,2 +1,3 @@
+DIST ATLauncher-3.4.27.0.jar 22508308 BLAKE2B 36d725b4e75407363245487470930b2bbfddfca9849905d4738b08764043e8a449cfc33cf2e41679e415cabe0b49f717bd5293aa03ddda6a1c5f7bbe890ef8af SHA512 1ea03c559d0983e644ab8433aacd849b29ccc73c2aa22e37ca97dc0723b5fec939712db6235a8bea1e833217d5e05b2abe10f3b699bd19ac5f8a5040ad8ebcac
DIST ATLauncher-3.4.3.1.jar 13796481 BLAKE2B 909e6a22f743bcd69109a8d14a197f7e81f3773a324df789cc1a23f5f6884f8a17a3321738542b67a3b783d6e98b353b76b12d9cd354de1b78c548b84e4262c7 SHA512 6c8c897c904129e17436604d6b05fe9fa16ba7c1269d22a76a89b5f9db6a319657bf28147d8b5159b8829b057b86ab9a8de5dcde33f622f9621351a1803b46e6
DIST ATLauncher.ico 370070 BLAKE2B 992e5df968054884c21f136b8f16f2b14e8d321b2196ebc07f7a59621223ca79b896f63b21dba864f61f238ca1864039a410d8089127714163092f65d0ca7f27 SHA512 353f6dd68475778cc8e97a773e800fe532df2f6d28d5babc751cfb5ed7ef24ef6246f76d26e3e25706e458741d604bb8fa8e79cb8904900284f0f7b0f9488bfb
diff --git a/games-action/technic-launcher/Manifest b/games-action/technic-launcher/Manifest
index 6f0b9e386d..d069980ad6 100644
--- a/games-action/technic-launcher/Manifest
+++ b/games-action/technic-launcher/Manifest
@@ -1,2 +1,3 @@
DIST technic-launcher-4.625.jar 5394348 BLAKE2B 46306f86a4b80aa70276ccc8fbd3f88c036bdd5e67a3b9a6b0444a9ec22d86113082d279ad9d78313e5753e9458ba7c52a7e507eb4b625c2b6d2662c5e5fdb10 SHA512 29cca87c55c3415fa3dde40030b09db75dc00387e87f2432a44d7acde1e1544ebf7f55a12d46d084c2f207be7882ee13bd6f50af3da0046b02d64077c35a24c4
+DIST technic-launcher-4.768.jar 6949323 BLAKE2B b5e2006b82f0efee9c872c513436c8ab68ad87473a001b1baf25393be5a1c26ffee1d0783dd87218c1e38978d6934c610019cc80e68401bc978a1834b19b8741 SHA512 d96cda057e746dced1bcc7635ace43a9eb65ed71a28e7af3f0b184162cb365aa101e4bb90880da679b52a9f5b828d27cf81b3cb729ccda4b02837bc638876753
DIST technic-launcher.ico 15086 BLAKE2B 4f5be0661bfbdca971cf022767618acef1e912b60c3f0574f383a8bd0281a6d66ca1b8b105412ec9579f3999514a471412fb16da66d937acfb4d3236b8f99663 SHA512 c109113a0e1be10bc013bfb79b742396a768fa683860a83d734e158b709e66b9e21067e1791ae5f7a854ccd21b1bf9adf6eeb27bc33d9da03f902dfe5d8be710
diff --git a/games-action/technic-launcher/technic-launcher-4.768.ebuild b/games-action/technic-launcher/technic-launcher-4.768.ebuild
new file mode 100644
index 0000000000..cacf1614ef
--- /dev/null
+++ b/games-action/technic-launcher/technic-launcher-4.768.ebuild
@@ -0,0 +1,44 @@
+# Copyright 2019-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop java-pkg-2 xdg
+
+DESCRIPTION="Minecraft launcher for community-made modpacks on the Technic Platform"
+HOMEPAGE="https://www.technicpack.net/"
+SRC_URI="
+ https://launcher.technicpack.net/launcher${PV:0:1}/${PV:2}/TechnicLauncher.jar -> ${P}.jar
+ https://www.technicpack.net/favicon.ico -> ${PN}.ico
+"
+
+KEYWORDS="~amd64 ~x86"
+LICENSE="technic"
+SLOT="0"
+
+RESTRICT="bindist mirror"
+
+BDEPEND="media-gfx/imagemagick[png]"
+
+RDEPEND="virtual/jre:1.8"
+
+S="${WORKDIR}"
+
+src_unpack() {
+ # do not unpack jar file
+ cp "${DISTDIR}/${PN}.ico" "${S}" || die
+}
+
+src_compile() {
+ convert ${PN}.ico ${PN}.png || die
+}
+
+src_install() {
+ java-pkg_newjar "${DISTDIR}/${P}.jar" ${PN}.jar
+ java-pkg_dolauncher ${PN} --jar ${PN}.jar --java_args "\${JAVA_OPTS}"
+
+ newicon -s 16x16 ${PN}-0.png technic.png
+ newicon -s 32x32 ${PN}-1.png technic.png
+ newicon -s 48x48 ${PN}-2.png technic.png
+ make_desktop_entry ${PN} "Technic Launcher" technic Game
+}
diff --git a/games-emulation/yuzu/Manifest b/games-emulation/yuzu/Manifest
index 12a1ec9b7b..bbe3bf3bd3 100644
--- a/games-emulation/yuzu/Manifest
+++ b/games-emulation/yuzu/Manifest
@@ -1,11 +1,6 @@
-DIST yuzu-0_p20220725-compatibility_list.json 1255189 BLAKE2B e2f39f6703bfd49e918d62bcc05d03ae19e3c9be45ade4b266bf9ba8956fd3e8ef246db4804e72d4eb4782f0008ac63d118217e3ef95bbe4c148008c4b764407 SHA512 ba3b149c91d11be2f1033214f03a09e5a3b5cfd559acba40a78f3b3932a93675ff6751eb2701326adc15b90cb2508c03698c3a531fe1cb4ed445a5b189424410
-DIST yuzu-0_p20220725.tar.gz 4929471 BLAKE2B 0d7f633936ef571da02562a853576ad1acd5dcae9035e2539ea94269d3c266cc9ba60ad8c8b9cd1f15413de3ab2bbb9b9cb8fa0fb6d6d20561a4f42d89c99662 SHA512 8f2ab5dd406cdb26821ad621cb816f22866a83d92969fea6b90c77c8cb9e1d39e4179c1e3c5aa4be56ed8f1707c801071dd90807f6011bc8a631f62b22930d2e
DIST yuzu-0_p20230202-compatibility_list.json 1701739 BLAKE2B 204502a6c8e2838b126c857d7b39cbcfe25a577515f2272d80185a9543e95c324e069d3f3de41564ca24aab5988d38725423691b3a3e6415ea87fd6772c30f1d SHA512 6f3809999cc5736c7cf3001b4485095dd00d2ad8d5d3459dea0aed006c3361731823a181adf94edd612ffdc8a6fb0c697f7f70cfb1402953c95a9fdd0faaae42
DIST yuzu-0_p20230202.tar.gz 5535753 BLAKE2B f9dbc43523a5745c3f73d18dc4f8b31811bb80fdc3ac362e584197e01db103324aa568143389cdba1d42d9639af88b49e24312f1ead085a6727afa6d470ca5b5 SHA512 faf597e0ed5837d3b358dfbb7d4cd8e535b4dc49be8781e556fc0b3677e48892c9c71c346bda49c5f6ac081502431480126c11b28a343bc5050341b8a384a7a2
-DIST yuzu-discord-0_p20220725.tar.gz 2108078 BLAKE2B e89ee4a196167cabaecfab82d191516eb0cf0fa89e35f95b6d118d5baad25f5d13d9002a8dcfe4aba099af7b9c1eb72835eb3baa9e4deaedd2754e99687b5967 SHA512 06205287addabfb343ccd9af997b693ed221fe564355d3629d4dee6c003e768b3f65f2b34eb04ef29807a15c5fa34b04c664212b7e0d15b09ad9a4e4be10a560
DIST yuzu-discord-0_p20230202.tar.gz 2106929 BLAKE2B 6e40c938cca5ef3feb8dc65265ef1a4cd3db58c0bbea2fb3d3a4e70748c451ead54932857d761b942a7018dcf461e43bc10ee5eab7907730319675b49564260a SHA512 323b6c8828a2e18f7986aa968ab2ce7ed876196c726d5114a07a536091090f4bd6d4080d87e7fdc4f96dff55871002d8a9a7daa50febd49b75d066e9e363c7ce
-DIST yuzu-dynarmic-0_p20220725.tar.gz 2668960 BLAKE2B 5089f2d536664f5b38ee54eb17c37721a8dc8ffb80712f69461a94ddfd3cb2cd1a26df84720d2574b0156571ec6a9daf3861092de0669e195d6e49283c24fc11 SHA512 1915b0c8d06cf25f074b457e6e6a6944a01f4e3273e8979e71649d7b273484cff344c87a9da7115862a7c8c1f75c8b2ff5110e3079935d1212173fdc00a71a77
DIST yuzu-dynarmic-0_p20230202.tar.gz 3582382 BLAKE2B 46df3546287e6b591e346009ab86c4db80ab19fd0493d057145c20a26c61c8ff85147acc4aac0de36386a18a003d291e4c8ab9a3b2664fe2f9537de74f8fa2ed SHA512 13b2da826bb1de5e610d92979af466bd404bee447f0200277e976797b31ed6844d20541c980ed3a7e5a9aef6fac2a5bc9cb94b37dcc46272c7b51bcb878c3fc6
DIST yuzu-sirit-0_p20230202.tar.gz 23853 BLAKE2B 4c4e69203a75cf849497e540bb0dcea694a72b4230f205b769447d3d11f7c0fb089ca262009396b9af55503d45b128edb1e99e438b89ab21ac842f789c5109a3 SHA512 43204596db5c6295cc8bdf9355fd71433fa5d1e28d9d8c01f12082d2cd8fb6f78e20d97b396e7bdf202afae2361386f1861a1012d2947569dcbb114996fc6b1d
-DIST yuzu-xbyak-0_p20220725.tar.gz 227168 BLAKE2B 6d03000be6a37704b86948ac58b9f2fd3809a892e59018be7e109eb6ce866727e83cb775307ae049b9aa5048028b3390e14b131f6cbda10e346be2acd866a20b SHA512 792146aefc2e3af9f412db383b4fcbd5e945f9814bde25cc18ea76a6f276c3bd6c38edb581074a2b48d11176a398cc6873556b5e2986449fe0417b7e46c09d95
DIST yuzu-xbyak-0_p20230202.tar.gz 249481 BLAKE2B 94eb81637f410ea88781cb3da94dfce4e4a6104458b0774d36c98f6cd2114f55772182f4535e502a5efa06290677fc67d0bac9db4effb7fa44a79561b16c1738 SHA512 87f6ba92a484738b3a75a4d2c5c7e3f4f9ca65cdc02f71b761dba72c8320a011dd38ea5350516d980b8370211977816de4c3357fc5ae8c9f0a86b4a595768c5e
diff --git a/games-emulation/yuzu/yuzu-0_p20220725.ebuild b/games-emulation/yuzu/yuzu-0_p20220725.ebuild
deleted file mode 100644
index c1d3fd0d9b..0000000000
--- a/games-emulation/yuzu/yuzu-0_p20220725.ebuild
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright 2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit cmake toolchain-funcs xdg
-
-DESCRIPTION="An emulator for Nintendo Switch"
-HOMEPAGE="https://yuzu-emu.org"
-SRC_URI="https://github.com/yuzu-emu/yuzu-mainline/archive/dfaab8f6571856ec3c75cfad303a50503d213665.tar.gz -> ${P}.tar.gz
- https://github.com/merryhime/dynarmic/archive/91d1f944e3870e0f3c505b48f5ec00ca9a82b95d.tar.gz -> ${PN}-dynarmic-${PV}.tar.gz
- https://github.com/herumi/xbyak/archive/c306b8e5786eeeb87b8925a8af5c3bf057ff5a90.tar.gz -> ${PN}-xbyak-${PV}.tar.gz
- compatibility-list? ( https://gist.githubusercontent.com/mazes-80/db6fc80114f67dde9d680de6c4d60428/raw/59274e6e641027cb6bf5e2077a899edabaf88904/yuzu-0_p20220725-compatibility_list.json )
- discord? ( https://github.com/discord/discord-rpc/archive/963aa9f3e5ce81a4682c6ca3d136cddda614db33.tar.gz -> ${PN}-discord-${PV}.tar.gz )"
-# Dynarmic is not intended to be generic, it is tweaked to fit emulated processor
-# xbyak >= 5.96 still not in portage. sent version bump on gentoo BT, can't be in guru as package already exists
-# discord-rpc: help appreciated to make ebuild, as I never use it I surely will stick to snapshot download
-# TODO host compatibility_list.json
-
-LICENSE="|| ( Apache-2.0 GPL-2+ ) 0BSD BSD GPL-2+ ISC MIT"
-SLOT="0"
-KEYWORDS="~amd64"
-IUSE="+compatibility-list +cubeb discord +qt5 sdl webengine +webservice"
-
-RDEPEND="
- =app-arch/zstd-1.5
- >=dev-libs/libfmt-8:=
- >=dev-libs/openssl-1.1:=
- >=media-video/ffmpeg-4.3:=
- app-arch/lz4:=
- dev-libs/boost:=[context]
- dev-libs/sirit
- media-libs/opus
- sys-libs/zlib
- virtual/libusb:1
- cubeb? ( media-libs/cubeb )
- qt5? (
- >=dev-qt/qtcore-5.15:5
- >=dev-qt/qtgui-5.15:5
- >=dev-qt/qtmultimedia-5.15:5
- >=dev-qt/qtwidgets-5.15:5
- )
- sdl? (
- >=media-libs/libsdl2-2.0.18
- >=dev-libs/inih-52
- )
-"
-DEPEND="${RDEPEND}
- dev-cpp/cpp-httplib
- >=dev-util/vulkan-headers-1.3.216
-"
-BDEPEND="
- >=dev-cpp/nlohmann_json-3.8.0
- dev-cpp/robin-map
- dev-util/glslang
- discord? ( >=dev-libs/rapidjson-1.1.0 )
-"
-S="${WORKDIR}"/yuzu-mainline-dfaab8f6571856ec3c75cfad303a50503d213665
-PATCHES=( "${FILESDIR}/${P}.patch" )
-
-REQUIRED_USE="|| ( qt5 sdl )"
-
-pkg_setup() {
- if tc-is-gcc; then
- [[ "$(gcc-major-version)" -lt 11 ]] && \
- die "You need gcc version 11 or clang to compile this package"
- fi
-}
-
-src_unpack() {
- default
- mv "${WORKDIR}"/xbyak* "${S}/externals/xbyak/xbyak" || die
- mv "${WORKDIR}"/dynarmic*/* "${S}/externals/dynarmic" || die
- if use discord; then
- mv "${WORKDIR}"/discord*/* "${S}/externals/discord-rpc" || die
- fi
-}
-
-src_prepare() {
- # Allow skip submodule downloading
- rm .gitmodules || die
-
- if ! use discord; then
- sed -i -e '/discord-rpc/d' externals/CMakeLists.txt || die
- else
- # Unbundle discord rapidjson
- sed -i '/NOT RAPIDJSONTEST/,/endif(NOT RAPIDJSONTEST)/d;/find_file(RAPIDJSON/d;s:\${RAPIDJSON}:"/usr/include/rapidjson":' \
- externals/discord-rpc/CMakeLists.txt || die
- fi
-
- cmake_src_prepare
-}
-
-src_configure() {
- local -a mycmakeargs=(
- # Libraries are private and rely on circular dependency resolution.
- -DBUILD_SHARED_LIBS=OFF # dynarmic
- -DDYNARMIC_NO_BUNDLED_ROBIN_MAP=ON
- -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=$(usex compatibility-list)
- -DENABLE_CUBEB=$(usex cubeb)
- -DENABLE_QT=$(usex qt5)
- -DENABLE_QT_TRANSLATION=$(usex qt5)
- -DENABLE_SDL2=$(usex sdl)
- -DENABLE_WEB_SERVICE=$(usex webservice)
- -DUSE_DISCORD_PRESENCE=$(usex discord)
- -DYUZU_TESTS=OFF
- -DYUZU_USE_BUNDLED_OPUS=OFF
- -DYUZU_USE_EXTERNAL_SDL2=OFF
- -DYUZU_USE_QT_WEB_ENGINE=$(usex webengine)
- )
-
- cmake_src_configure
-
- if use compatibility-list; then
- cp "${DISTDIR}"/${P}-compatibility_list.json "${BUILD_DIR}"/dist/compatibility_list/ || die
- fi
-}
diff --git a/games-emulation/yuzu/yuzu-0_p20230202.ebuild b/games-emulation/yuzu/yuzu-0_p20230202.ebuild
index ef683cc24b..0a33404db4 100644
--- a/games-emulation/yuzu/yuzu-0_p20230202.ebuild
+++ b/games-emulation/yuzu/yuzu-0_p20230202.ebuild
@@ -7,12 +7,20 @@ inherit cmake toolchain-funcs xdg
DESCRIPTION="An emulator for Nintendo Switch"
HOMEPAGE="https://yuzu-emu.org"
-SRC_URI="https://github.com/yuzu-emu/yuzu-mainline/archive/d5f6201521cdfd0be09a187d62f95d3a38f18c3e.tar.gz -> ${P}.tar.gz
- https://github.com/merryhime/dynarmic/archive/befe547d5631024a70d81d2ccee808bbfcb3854e.tar.gz -> ${PN}-dynarmic-${PV}.tar.gz
- https://github.com/herumi/xbyak/archive/a1ac3750f9a639b5a6c6d6c7da4259b8d6790989.tar.gz -> ${PN}-xbyak-${PV}.tar.gz
+SRC_URI="https://github.com/yuzu-emu/yuzu-mainline/archive/d5f6201521cdfd0be09a187d62f95d3a38f18c3e.tar.gz
+ -> ${P}.tar.gz
+ https://github.com/merryhime/dynarmic/archive/befe547d5631024a70d81d2ccee808bbfcb3854e.tar.gz
+ -> ${PN}-dynarmic-${PV}.tar.gz
+ https://github.com/herumi/xbyak/archive/a1ac3750f9a639b5a6c6d6c7da4259b8d6790989.tar.gz
+ -> ${PN}-xbyak-${PV}.tar.gz
https://github.com/yuzu-emu/sirit/archive/ab75463999f4f3291976b079d42d52ee91eebf3f.tar.gz -> ${PN}-sirit-${PV}.tar.gz
- compatibility-list? ( https://gist.githubusercontent.com/mazes-80/e3f1518e67c3292656a9055ba338994f/raw/b975f96366294d9cf65f844ed8df9189a488463d/yuzu-0_p20230202-compatibility_list.json )
- discord? ( https://github.com/yuzu-emu/discord-rpc/archive/20cc99aeffa08a4834f156b6ab49ed68618cf94a.tar.gz -> ${PN}-discord-${PV}.tar.gz )"
+ compatibility-list? (
+ https://gist.githubusercontent.com/mazes-80/e3f1518e67c3292656a9055ba338994f/raw/b975f96366294d9cf65f844ed8df9189a488463d/${P}-compatibility_list.json
+ )
+ discord? (
+ https://github.com/yuzu-emu/discord-rpc/archive/20cc99aeffa08a4834f156b6ab49ed68618cf94a.tar.gz
+ -> ${PN}-discord-${PV}.tar.gz
+ )"
# Dynarmic is not intended to be generic, it is tweaked to fit emulated processor
# TODO wait 'xbyak' waiting version bump. see #860816
@@ -91,7 +99,8 @@ src_prepare() {
sed -i -e '/^if.*discord-rpc/,/^endif()/d' externals/CMakeLists.txt || die
else
# Unbundle discord rapidjson
- sed -i '/NOT RAPIDJSONTEST/,/endif(NOT RAPIDJSONTEST)/d;/find_file(RAPIDJSON/d;s:\${RAPIDJSON}:"/usr/include/rapidjson":' \
+ sed -i -e '/NOT RAPIDJSONTEST/,/endif(NOT RAPIDJSONTEST)/d' \
+ -e '/find_file(RAPIDJSON/d' -e 's:\${RAPIDJSON}:"/usr/include/rapidjson":' \
externals/discord-rpc/CMakeLists.txt || die
fi
diff --git a/games-emulation/yuzu/yuzu-9999.ebuild b/games-emulation/yuzu/yuzu-9999.ebuild
index b44eff45de..6bc23133b6 100644
--- a/games-emulation/yuzu/yuzu-9999.ebuild
+++ b/games-emulation/yuzu/yuzu-9999.ebuild
@@ -28,8 +28,8 @@ RDEPEND="
>=net-libs/enet-1.3
app-arch/lz4:=
dev-libs/boost:=[context]
- media-libs/vulkan-loader
media-libs/opus
+ media-libs/vulkan-loader
sys-libs/zlib
virtual/libusb:1
cubeb? ( media-libs/cubeb )
@@ -92,10 +92,10 @@ src_prepare() {
# Unbundle inih
sed -i -e '/^if.*inih/,/^endif()/d' externals/CMakeLists.txt || die
- sed -i -e '1afind_package(PkgConfig REQUIRED)\npkg_check_modules(INIH REQUIRED INIReader)' src/yuzu_cmd/CMakeLists.txt || die
+ sed -i -e '1afind_package(PkgConfig REQUIRED)\npkg_check_modules(INIH REQUIRED INIReader)' \
+ src/yuzu_cmd/CMakeLists.txt || die
sed -i -e 's:inih/cpp/::' src/yuzu_cmd/config.cpp || die
-
# Unbundle mbedtls
sed -i -e '/mbedtls/d' externals/CMakeLists.txt || die
sed -i -e 's/mbedtls/& mbedcrypto mbedx509/' \
@@ -112,7 +112,8 @@ src_prepare() {
sed -i -e '/^if.*discord-rpc/,/^endif()/d' externals/CMakeLists.txt || die
else
# Unbundle discord rapidjson
- sed -i '/NOT RAPIDJSONTEST/,/endif(NOT RAPIDJSONTEST)/d;/find_file(RAPIDJSON/d;s:\${RAPIDJSON}:"/usr/include/rapidjson":' \
+ sed -i -e '/NOT RAPIDJSONTEST/,/endif(NOT RAPIDJSONTEST)/d' \
+ -e '/find_file(RAPIDJSON/d' -e 's:\${RAPIDJSON}:"/usr/include/rapidjson":' \
externals/discord-rpc/CMakeLists.txt || die
fi
@@ -121,7 +122,8 @@ src_prepare() {
sed -i '/^if.*cubeb/,/^endif()/d' externals/CMakeLists.txt || die
# Unbundle cpp-httplib
- sed -i -e '/^ # httplib/,/^ endif()/d' externals/CMakeLists.txt || die
+ sed -i -e '/httplib/s/ 0.11//' CMakeLists.txt || die
+ sed -i -e '/^# httplib/,/^endif()/d' externals/CMakeLists.txt || die
# Unbundle enet
sed -i -e '/^if.*enet/,/^endif()/d' externals/CMakeLists.txt || die
diff --git a/games-engines/fs2_open/Manifest b/games-engines/fs2_open/Manifest
index 612408bc35..7003d611c5 100644
--- a/games-engines/fs2_open/Manifest
+++ b/games-engines/fs2_open/Manifest
@@ -1,9 +1,6 @@
-DIST fs2_open-21.4.1-ext_libRocket.tar.gz 2417905 BLAKE2B 0e5ac40b0e811b9213fb84f6f2f0ef38ad7d562ae671e865d96e40615c2d67213905ce153a69192c0b53a3e4f0d1aef077c0769e46d308adf9210c0c9d1fe7c2 SHA512 700e242ecb5207faf729ca7d23ac4f28be819c0ef7a0ba51ca18de1592f1016040cd5e4c1c75a573f91cea69dd43549966ac089804a52c0f1b0cfbaabefc4346
-DIST fs2_open-21.4.1-ext_rpavlik-cmake-modules.tar.gz 267464 BLAKE2B d63fa3867aad5fad7bd5d20845dd8d6a6698d59dc30dc511704f3c74bbe958bb6d36160bae3ef5c01027719c50d18e4d24209ea5811c6a52c5af4d3de2a587e9 SHA512 0bb03e2a1c0cafa80849163455cdb5fc5c7200e51f18f0354c36f251b51156f86a04a9f87cd17e2942d14ae8767d8df756062fbcff9b37f04e8399b2e37d306f
-DIST fs2_open-21.4.1.tar.gz 10441595 BLAKE2B ae59cea98420cbdd6f18832fa0b8ba332993db03a53cbea43a96827dc4c7da375b14694ce60b1633d8275daa88ac32029be7b8211b7efd427baaffdd784720d9 SHA512 a4e6821ee2513cabf8b521f672c36c45aca8fc83fd6901ba19f2c0c0c27b3516c60dabfec1bfae43d82da94c628b9160c447ce853c9927dbb5901c7298986226
-DIST fs2_open-22.0.0-ext_libRocket.tar.gz 2417905 BLAKE2B 0e5ac40b0e811b9213fb84f6f2f0ef38ad7d562ae671e865d96e40615c2d67213905ce153a69192c0b53a3e4f0d1aef077c0769e46d308adf9210c0c9d1fe7c2 SHA512 700e242ecb5207faf729ca7d23ac4f28be819c0ef7a0ba51ca18de1592f1016040cd5e4c1c75a573f91cea69dd43549966ac089804a52c0f1b0cfbaabefc4346
-DIST fs2_open-22.0.0-ext_rpavlik-cmake-modules.tar.gz 267464 BLAKE2B d63fa3867aad5fad7bd5d20845dd8d6a6698d59dc30dc511704f3c74bbe958bb6d36160bae3ef5c01027719c50d18e4d24209ea5811c6a52c5af4d3de2a587e9 SHA512 0bb03e2a1c0cafa80849163455cdb5fc5c7200e51f18f0354c36f251b51156f86a04a9f87cd17e2942d14ae8767d8df756062fbcff9b37f04e8399b2e37d306f
-DIST fs2_open-22.0.0.tar.gz 10573800 BLAKE2B b75bd9e44679bf2ad441178b7f8175f4429e321d2feeddf2cf5b4391e51f82c15250c36b73f3750326b1cd3ce71ae319042f57432d48a41b5abab9e30a4a76ba SHA512 e57972348073571947ff88e5a392ae0b4eec9d81cbcfe3d0ff3c2b844dd676cb33f727ddb32a0544e9cd3f1ae9b614429ea137b8921ef625fad27a53f1875081
DIST fs2_open-22.2.0-ext_libRocket.tar.gz 2417905 BLAKE2B 0e5ac40b0e811b9213fb84f6f2f0ef38ad7d562ae671e865d96e40615c2d67213905ce153a69192c0b53a3e4f0d1aef077c0769e46d308adf9210c0c9d1fe7c2 SHA512 700e242ecb5207faf729ca7d23ac4f28be819c0ef7a0ba51ca18de1592f1016040cd5e4c1c75a573f91cea69dd43549966ac089804a52c0f1b0cfbaabefc4346
DIST fs2_open-22.2.0-ext_rpavlik-cmake-modules.tar.gz 267464 BLAKE2B d63fa3867aad5fad7bd5d20845dd8d6a6698d59dc30dc511704f3c74bbe958bb6d36160bae3ef5c01027719c50d18e4d24209ea5811c6a52c5af4d3de2a587e9 SHA512 0bb03e2a1c0cafa80849163455cdb5fc5c7200e51f18f0354c36f251b51156f86a04a9f87cd17e2942d14ae8767d8df756062fbcff9b37f04e8399b2e37d306f
DIST fs2_open-22.2.0.tar.gz 10690003 BLAKE2B 9d751407ee06877e27e18a9295370ed2c97a48ac65c65757ea57ee1f1d7ba36e07cddb9812a62a763eefb842d5df71151243a81e97aa664a8c3123b7b7913255 SHA512 e72ad40f8f52430549f76330f8b34255ae68fff53ced76f56b04ef19d7ce510026c3bb38fcebdb6f3bfaf7db59ca89df5686e8480e883e01b6408d21cb08cc77
+DIST fs2_open-23.0.0-ext_libRocket.tar.gz 2417905 BLAKE2B 0e5ac40b0e811b9213fb84f6f2f0ef38ad7d562ae671e865d96e40615c2d67213905ce153a69192c0b53a3e4f0d1aef077c0769e46d308adf9210c0c9d1fe7c2 SHA512 700e242ecb5207faf729ca7d23ac4f28be819c0ef7a0ba51ca18de1592f1016040cd5e4c1c75a573f91cea69dd43549966ac089804a52c0f1b0cfbaabefc4346
+DIST fs2_open-23.0.0-ext_rpavlik-cmake-modules.tar.gz 267464 BLAKE2B d63fa3867aad5fad7bd5d20845dd8d6a6698d59dc30dc511704f3c74bbe958bb6d36160bae3ef5c01027719c50d18e4d24209ea5811c6a52c5af4d3de2a587e9 SHA512 0bb03e2a1c0cafa80849163455cdb5fc5c7200e51f18f0354c36f251b51156f86a04a9f87cd17e2942d14ae8767d8df756062fbcff9b37f04e8399b2e37d306f
+DIST fs2_open-23.0.0.tar.gz 12210430 BLAKE2B 95e5a4f328711a3915b2624941eb90810a19c4d8fe16edc0af47eec3cb1393be8379cd53f27cf378693ba711bd37f0fec360fda931ba17b883195f356a0f8dfc SHA512 efd3648986bb36f0b217ea033ab56ba7c1a705a0d9f16f0351a019d06276f68810729eb9749d1facbf8bc312114eb4e380b68049f5d30b410de2b28c5c67975e
diff --git a/games-engines/fs2_open/files/fs2_open-21.4.1-disable-discord.patch b/games-engines/fs2_open/files/fs2_open-21.4.1-disable-discord.patch
deleted file mode 100644
index 95c186bf11..0000000000
--- a/games-engines/fs2_open/files/fs2_open-21.4.1-disable-discord.patch
+++ /dev/null
@@ -1,55 +0,0 @@
---- fs2_open/code/CMakeLists.txt 2022-03-27 21:03:27.290788070 +0200
-+++ fs2_open/code/CMakeLists.txt 2022-03-27 21:06:50.271782416 +0200
-@@ -41,8 +41,6 @@
-
- target_link_libraries(code PUBLIC md5)
-
--target_link_libraries(code PUBLIC discord-rpc)
--
- target_link_libraries(code PUBLIC libRocket)
-
- target_link_libraries(code PUBLIC pcp)
---- fs2_open/code/source_groups.cmake 2021-11-01 18:00:53.000000000 +0100
-+++ fs2_open/code/source_groups.cmake 2022-03-27 21:35:47.595734025 +0200
-@@ -705,11 +705,6 @@
- libs/antlr/ErrorListener.h
- )
-
--add_file_folder("Libs\\\\Discord"
-- libs/discord/discord.cpp
-- libs/discord/discord.h
--)
--
- if (FSO_BUILD_WITH_FFMPEG)
- add_file_folder("Libs\\\\FFmpeg"
- libs/ffmpeg/FFmpeg.cpp
---- fs2_open/lib/CMakeLists.txt 2022-03-27 21:03:27.287788070 +0200
-+++ fs2_open/lib/CMakeLists.txt 2022-03-27 21:07:12.849781787 +0200
-@@ -33,8 +33,6 @@
- include(FFmpeg.cmake)
- endif()
-
--add_subdirectory(discord)
--
- include(libRocket.cmake)
-
- add_subdirectory(libpcp)
---- fs2_open/freespace2/freespace.cpp 2021-11-01 18:00:53.000000000 +0100
-+++ fs2_open/freespace2/freespace.cpp 2022-03-27 21:07:50.111780749 +0200
-@@ -83,7 +83,6 @@
- #include "jumpnode/jumpnode.h"
- #include "lab/labv2.h"
- #include "lab/wmcgui.h" //So that GUI_System can be initialized
--#include "libs/discord/discord.h"
- #include "libs/ffmpeg/FFmpeg.h"
- #include "lighting/lighting.h"
- #include "localization/localize.h"
-@@ -1940,8 +1939,6 @@
- libs::ffmpeg::initialize();
- #endif
-
-- libs::discord::init();
--
- nprintf(("General", "Ships.tbl is : %s\n", Game_ships_tbl_valid ? "VALID" : "INVALID!!!!"));
- nprintf(("General", "Weapons.tbl is : %s\n", Game_weapons_tbl_valid ? "VALID" : "INVALID!!!!"));
-
diff --git a/games-engines/fs2_open/files/fs2_open-21.4.1-dont-build-lz4.patch b/games-engines/fs2_open/files/fs2_open-21.4.1-dont-build-lz4.patch
deleted file mode 100644
index 45ad913077..0000000000
--- a/games-engines/fs2_open/files/fs2_open-21.4.1-dont-build-lz4.patch
+++ /dev/null
@@ -1,9 +0,0 @@
---- fs2_open/lib/CMakeLists.txt 2021-11-01 18:00:53.000000000 +0100
-+++ fs2_open/lib/CMakeLists.txt 2022-03-26 11:34:48.746075280 +0100
-@@ -50,5 +50,3 @@
- add_subdirectory(mdns)
-
- add_subdirectory(variant)
--
--ADD_SUBDIRECTORY(lz4)
-\ No newline at end of file
diff --git a/games-engines/fs2_open/files/fs2_open-21.4.1-dont-override-ldflags.patch b/games-engines/fs2_open/files/fs2_open-21.4.1-dont-override-ldflags.patch
deleted file mode 100644
index 74554ec8e4..0000000000
--- a/games-engines/fs2_open/files/fs2_open-21.4.1-dont-override-ldflags.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- fs2_open/cmake/toolchain-gcc.cmake 2021-11-01 18:00:53.000000000 +0100
-+++ fs2_open/cmake/toolchain-gcc.cmake 2022-03-27 17:52:26.738107292 +0200
-@@ -27,6 +27,11 @@
- set(COMPILER_FLAGS "")
- set(LINKER_FLAGS "")
-
-+# Don't ignore user-set LDFLAGS
-+if(DEFINED ENV{LDFLAGS})
-+ set(LINKER_FLAGS $ENV{LDFLAGS})
-+endif()
-+
- if (GCC_USE_GOLD)
- OPTION(GCC_INCREMENTAL_LINKING "Use incremental linking" OFF)
- set(LINKER_FLAGS "${LINKER_FLAGS} -fuse-ld=gold")
diff --git a/games-engines/fs2_open/files/fs2_open-21.4.1-version-fix.patch b/games-engines/fs2_open/files/fs2_open-21.4.1-version-fix.patch
deleted file mode 100644
index a9c2c845f8..0000000000
--- a/games-engines/fs2_open/files/fs2_open-21.4.1-version-fix.patch
+++ /dev/null
@@ -1,9 +0,0 @@
---- fs2_open/version_override.cmake
-+++ fs2_open/version_override.cmake
-@@ -1,5 +1,5 @@
- set(FSO_VERSION_MAJOR 21)
- set(FSO_VERSION_MINOR 4)
--set(FSO_VERSION_BUILD 0)
-+set(FSO_VERSION_BUILD 1)
- set(FSO_VERSION_REVISION 0)
- set(FSO_VERSION_REVISION_STR )
diff --git a/games-engines/fs2_open/files/fs2_open-22.0.0-disable-discord.patch b/games-engines/fs2_open/files/fs2_open-22.0.0-disable-discord.patch
deleted file mode 100644
index 1b145d7da1..0000000000
--- a/games-engines/fs2_open/files/fs2_open-22.0.0-disable-discord.patch
+++ /dev/null
@@ -1,55 +0,0 @@
---- fs2_open/code/CMakeLists.txt 2022-03-27 21:03:27.290788070 +0200
-+++ fs2_open/code/CMakeLists.txt 2022-03-27 21:06:50.271782416 +0200
-@@ -41,8 +41,6 @@
-
- target_link_libraries(code PUBLIC md5)
-
--target_link_libraries(code PUBLIC discord-rpc)
--
- target_link_libraries(code PUBLIC libRocket)
-
- target_link_libraries(code PUBLIC pcp)
---- fs2_open/code/source_groups.cmake 2021-11-01 18:00:53.000000000 +0100
-+++ fs2_open/code/source_groups.cmake 2022-03-27 21:35:47.595734025 +0200
-@@ -705,11 +705,6 @@
- libs/antlr/ErrorListener.h
- )
-
--add_file_folder("Libs\\\\Discord"
-- libs/discord/discord.cpp
-- libs/discord/discord.h
--)
--
- if (FSO_BUILD_WITH_FFMPEG)
- add_file_folder("Libs\\\\FFmpeg"
- libs/ffmpeg/FFmpeg.cpp
---- fs2_open/lib/CMakeLists.txt 2022-03-27 21:03:27.287788070 +0200
-+++ fs2_open/lib/CMakeLists.txt 2022-03-27 21:07:12.849781787 +0200
-@@ -33,8 +33,6 @@
- include(FFmpeg.cmake)
- endif()
-
--add_subdirectory(discord)
--
- include(libRocket.cmake)
-
- add_subdirectory(libpcp)
---- fs2_open/freespace2/freespace.cpp 2021-11-01 18:00:53.000000000 +0100
-+++ fs2_open/freespace2/freespace.cpp 2022-03-27 21:07:50.111780749 +0200
-@@ -83,7 +83,6 @@
- #include "jumpnode/jumpnode.h"
- #include "lab/labv2.h"
- #include "lab/wmcgui.h" //So that GUI_System can be initialized
--#include "libs/discord/discord.h"
- #include "libs/ffmpeg/FFmpeg.h"
- #include "lighting/lighting.h"
- #include "localization/localize.h"
-@@ -1987,8 +1987,6 @@
- #ifdef WITH_FFMPEG
- libs::ffmpeg::initialize();
- #endif
--
-- libs::discord::init();
- }
-
- nprintf(("General", "Ships.tbl is : %s\n", Game_ships_tbl_valid ? "VALID" : "INVALID!!!!"));
diff --git a/games-engines/fs2_open/files/fs2_open-22.0.0-dont-build-lz4.patch b/games-engines/fs2_open/files/fs2_open-22.0.0-dont-build-lz4.patch
deleted file mode 100644
index 60dc982a17..0000000000
--- a/games-engines/fs2_open/files/fs2_open-22.0.0-dont-build-lz4.patch
+++ /dev/null
@@ -1,9 +0,0 @@
---- fs2_open/lib/CMakeLists.txt 2022-04-01 23:30:46.000000000 +0200
-+++ fs2_open/lib/CMakeLists.txt 2022-04-02 08:20:16.336924470 +0200
-@@ -52,5 +52,3 @@
- add_subdirectory(variant)
-
- add_subdirectory(any)
--
--ADD_SUBDIRECTORY(lz4)
-\ No newline at end of file
diff --git a/games-engines/fs2_open/files/fs2_open-22.0.0-make-arch-independent.patch b/games-engines/fs2_open/files/fs2_open-22.0.0-make-arch-independent.patch
deleted file mode 100644
index c2f5d7f36c..0000000000
--- a/games-engines/fs2_open/files/fs2_open-22.0.0-make-arch-independent.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- fs2_open/cmake/version.cmake 2021-05-22 20:20:18.448441242 +0200
-+++ fs2_open/cmake/version.cmake 2021-05-22 20:21:05.493447003 +0200
-@@ -35,11 +35,6 @@
- SET(FSO_BINARY_SUFFIX "${FSO_VERSION_MAJOR}_${FSO_VERSION_MINOR}_${FSO_VERSION_BUILD}_${FSO_VERSION_REVISION_STR}")
- ENDIF()
-
--IF(IS_64BIT)
-- # This is a 64-bit builds
-- SET(FSO_BINARY_SUFFIX "${FSO_BINARY_SUFFIX}_x64")
--ENDIF()
--
- IF (NOT "${FSO_INSTRUCTION_SET}" STREQUAL "")
- SET(FSO_BINARY_SUFFIX "${FSO_BINARY_SUFFIX}_${FSO_INSTRUCTION_SET}")
- ENDIF()
diff --git a/games-engines/fs2_open/files/fs2_open-23.0.0-disable-discord.patch b/games-engines/fs2_open/files/fs2_open-23.0.0-disable-discord.patch
new file mode 100644
index 0000000000..6dc01d4a49
--- /dev/null
+++ b/games-engines/fs2_open/files/fs2_open-23.0.0-disable-discord.patch
@@ -0,0 +1,107 @@
+--- fs2_open/freespace2/freespace.cpp 2023-02-11 13:13:50.000000000 +0100
++++ fs2_open/freespace2/freespace.cpp 2023-02-11 13:32:41.501644997 +0100
+@@ -84,7 +84,6 @@
+ #include "io/timer.h"
+ #include "jumpnode/jumpnode.h"
+ #include "lab/labv2.h"
+-#include "libs/discord/discord.h"
+ #include "libs/ffmpeg/FFmpeg.h"
+ #include "lighting/lighting.h"
+ #include "lighting/lighting_profiles.h"
+@@ -1987,9 +1986,6 @@
+ #ifdef WITH_FFMPEG
+ libs::ffmpeg::initialize();
+ #endif
+- if (Discord_presence) {
+- libs::discord::init();
+- }
+ }
+
+ mod_table_post_process();
+--- fs2_open/code/source_groups.cmake 2023-02-11 13:13:50.000000000 +0100
++++ fs2_open/code/source_groups.cmake 2023-02-11 13:53:03.901702823 +0100
+@@ -706,11 +706,6 @@
+ libs/antlr/ErrorListener.h
+ )
+
+-add_file_folder("Libs\\\\Discord"
+- libs/discord/discord.cpp
+- libs/discord/discord.h
+-)
+-
+ if (FSO_BUILD_WITH_FFMPEG)
+ add_file_folder("Libs\\\\FFmpeg"
+ libs/ffmpeg/FFmpeg.cpp
+--- fs2_open/code/mod_table/mod_table.h 2023-02-11 13:13:50.000000000 +0100
++++ fs2_open/code/mod_table/mod_table.h 2023-02-11 13:57:44.162716081 +0100
+@@ -124,7 +124,6 @@
+ } Shadow_disable_overrides;
+ extern float Thruster_easing;
+ extern bool Always_use_distant_firepoints;
+-extern bool Discord_presence;
+ extern bool Hotkey_always_hide_hidden_ships;
+ extern bool Use_weapon_class_sounds_for_hits_to_player;
+ extern bool SCPUI_loads_hi_res_animations;
+--- fs2_open/code/mod_table/mod_table.cpp 2023-02-11 13:13:50.000000000 +0100
++++ fs2_open/code/mod_table/mod_table.cpp 2023-02-11 13:57:15.745714737 +0100
+@@ -12,7 +12,6 @@
+ #include "globalincs/version.h"
+ #include "graphics/shadows.h"
+ #include "localization/localize.h"
+-#include "libs/discord/discord.h"
+ #include "mission/missioncampaign.h"
+ #include "mission/missionload.h"
+ #include "mission/missionmessage.h"
+@@ -128,34 +127,10 @@
+ shadow_disable_overrides Shadow_disable_overrides {false, false, false, false};
+ float Thruster_easing;
+ bool Always_use_distant_firepoints;
+-bool Discord_presence;
+ bool Hotkey_always_hide_hidden_ships;
+ bool Use_weapon_class_sounds_for_hits_to_player;
+ bool SCPUI_loads_hi_res_animations;
+
+-static auto DiscordOption = options::OptionBuilder("Other.Discord", "Discord Presence", "Toggle Discord Rich Presence")
+- .category("Other")
+- .default_val(Discord_presence)
+- .level(options::ExpertLevel::Advanced)
+- .importance(55)
+- .change_listener([](bool val, bool) {
+- if(Discord_presence){
+- if (!val) {
+- Discord_presence = false;
+- libs::discord::shutdown();
+- return true;
+- }
+- } else {
+- if (val) {
+- Discord_presence = true;
+- libs::discord::init();
+- return true;
+- }
+- }
+- return false;
+- })
+- .finish();
+-
+ void mod_table_set_version_flags();
+
+ SCP_vector> req_render_ext_pairs = {
+@@ -1128,9 +1103,6 @@
+ if (optional_string("$Use distant firepoint for all turrets:")){
+ stuff_boolean(&Always_use_distant_firepoints);
+ }
+- if (optional_string("$Enable Discord rich presence:")) {
+- stuff_boolean(&Discord_presence);
+- }
+
+ if (optional_string("$Always hide hidden ships in hotkey list:")) {
+ stuff_boolean(&Hotkey_always_hide_hidden_ships);
+@@ -1285,7 +1257,6 @@
+ Lead_indicator_behavior = leadIndicatorBehavior::DEFAULT;
+ Thruster_easing = 0;
+ Always_use_distant_firepoints = false;
+- Discord_presence = true;
+ Hotkey_always_hide_hidden_ships = false;
+ Use_weapon_class_sounds_for_hits_to_player = false;
+ SCPUI_loads_hi_res_animations = true;
diff --git a/games-engines/fs2_open/files/fs2_open-23.0.0-dont-build-lz4.patch b/games-engines/fs2_open/files/fs2_open-23.0.0-dont-build-lz4.patch
new file mode 100644
index 0000000000..49350a0dc5
--- /dev/null
+++ b/games-engines/fs2_open/files/fs2_open-23.0.0-dont-build-lz4.patch
@@ -0,0 +1,9 @@
+--- fs2_open/lib/CMakeLists.txt 2023-02-11 13:13:50.000000000 +0100
++++ fs2_open/lib/CMakeLists.txt 2023-02-11 13:45:46.251682120 +0100
+@@ -55,6 +55,4 @@
+
+ add_subdirectory(optional)
+
+-ADD_SUBDIRECTORY(lz4)
+-
+ ADD_SUBDIRECTORY(imgui)
diff --git a/games-engines/fs2_open/files/fs2_open-21.4.1-make-arch-independent.patch b/games-engines/fs2_open/files/fs2_open-23.0.0-make-arch-independent.patch
similarity index 100%
rename from games-engines/fs2_open/files/fs2_open-21.4.1-make-arch-independent.patch
rename to games-engines/fs2_open/files/fs2_open-23.0.0-make-arch-independent.patch
diff --git a/games-engines/fs2_open/fs2_open-21.4.1-r2.ebuild b/games-engines/fs2_open/fs2_open-21.4.1-r2.ebuild
deleted file mode 100644
index beadddcbb0..0000000000
--- a/games-engines/fs2_open/fs2_open-21.4.1-r2.ebuild
+++ /dev/null
@@ -1,90 +0,0 @@
-# Copyright 2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit cmake
-
-DESCRIPTION="FreeSpace2 Source Code Project game engine"
-HOMEPAGE="https://github.com/scp-fs2open/fs2open.github.com/"
-
-# Replace "." with "_" in version
-_PV=${PV//./_}
-
-# Current hashes of external repositories:
-HASH_LIBROCKET="ecd648a43aff8a9f3daf064d75ca5725237d5b38"
-HASH_CMAKE_MODULES="7cef9577d6fc35057ea57f46b4986a8a28aeff50"
-
-SRC_URI="
- https://github.com/scp-fs2open/fs2open.github.com/archive/refs/tags/release_${_PV}.tar.gz -> ${P}.tar.gz
- https://github.com/asarium/libRocket/archive/${HASH_LIBROCKET}.tar.gz -> ${P}-ext_libRocket.tar.gz
- https://github.com/asarium/cmake-modules/archive/${HASH_CMAKE_MODULES}.tar.gz -> ${P}-ext_rpavlik-cmake-modules.tar.gz
-"
-
-LICENSE="Unlicense MIT Boost-1.0"
-SLOT="0"
-KEYWORDS="~amd64"
-IUSE="debug discord"
-
-DEPEND="
- app-arch/lz4
-
-
+
contact@hacktivis.me
diff --git a/games-fps/quakespasm/quakespasm-0.94.1.ebuild b/games-fps/quakespasm/quakespasm-0.94.1.ebuild
index 940da287e6..be3dcedbad 100644
--- a/games-fps/quakespasm/quakespasm-0.94.1.ebuild
+++ b/games-fps/quakespasm/quakespasm-0.94.1.ebuild
@@ -12,7 +12,7 @@ else
fi
DESCRIPTION="Modern, cross-platform Quake 1 engine based on FitzQuake"
-HOMEPAGE="http://quakespasm.sourceforge.net"
+HOMEPAGE="https://quakespasm.sourceforge.net"
LICENSE="GPL-2"
SLOT="0"
IUSE="sdl2"
diff --git a/games-fps/quakespasm/quakespasm-9999.ebuild b/games-fps/quakespasm/quakespasm-9999.ebuild
index 940da287e6..be3dcedbad 100644
--- a/games-fps/quakespasm/quakespasm-9999.ebuild
+++ b/games-fps/quakespasm/quakespasm-9999.ebuild
@@ -12,7 +12,7 @@ else
fi
DESCRIPTION="Modern, cross-platform Quake 1 engine based on FitzQuake"
-HOMEPAGE="http://quakespasm.sourceforge.net"
+HOMEPAGE="https://quakespasm.sourceforge.net"
LICENSE="GPL-2"
SLOT="0"
IUSE="sdl2"
diff --git a/games-rpg/snoot-game/snoot-game-1.8-r1.ebuild b/games-rpg/snoot-game/snoot-game-1.8-r1.ebuild
new file mode 100644
index 0000000000..f8b896dd44
--- /dev/null
+++ b/games-rpg/snoot-game/snoot-game-1.8-r1.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{9,10,11} )
+inherit python-single-r1 desktop wrapper
+
+DESCRIPTION="Visual novel parody of Goodbye Volcano High"
+MY_PV="Patch8_NewYears"
+HOMEPAGE="https://snootgame.xyz/"
+SRC_URI="https://snootgame.xyz/downloads/game/SnootGame-${MY_PV}-linux.tar.bz2"
+
+LICENSE="AGPL-3 CC-BY-SA-4.0"
+SLOT="0"
+KEYWORDS="~amd64"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="${PYTHON_DEPS} virtual/opengl"
+BDEPEND="${RDEPEND}"
+
+S="${WORKDIR}/SnootGame-${MY_PV}-linux/"
+
+QA_PREBUILT="*"
+RESTRICT+=" strip"
+
+src_install() {
+ local dir=/opt/${PN}
+ insinto "${dir}"
+
+ doins -r "${S}/."
+ dodoc README.md
+
+ fperms +x ${dir}/lib/py3-linux-x86_64/SnootGame
+ fperms +x ${dir}/SnootGame.sh
+
+ make_wrapper ${PN} "./SnootGame.sh" "${dir}" "${dir}"
+ make_desktop_entry ${PN} "Snoot Game"
+
+}
diff --git a/media-sound/jacktrip/Manifest b/media-sound/jacktrip/Manifest
index 299ebf3a48..9d6efdc289 100644
--- a/media-sound/jacktrip/Manifest
+++ b/media-sound/jacktrip/Manifest
@@ -1,2 +1,2 @@
-DIST jacktrip-1.6.8.tar.gz 5789095 BLAKE2B ebe1b0c6ade7b40ff6e06bd9f628ba6423542dd496aeb447e5eed5865901b27c3f4ab5dbbc55bfdf22daa0ca03d8a2b734dcd8f80f3c9d64a0c8efda95941fbb SHA512 dc0bf64461eddfbedaa773c177a4c1387e205b5f3efeaf1e999b5ead21abe53122eebdeb75e853cdaeeb03c73eeb968ac7d5d6962b4af27b5009b724775a823c
DIST jacktrip-1.7.0.tar.gz 5795989 BLAKE2B 7ae402a98feadb450e7ac36951f4f967bd34b7dd3ce99e23bfe657e74d7a21ac248519ff66fbd1a2e5c719f302b63ec1585dcdc757b86d6608bcc845898d17af SHA512 c7020afc3a495f0fd9aa4014c8a0b4a6f3bad162ad74184a1448fc65591f0f8ae0cc8ddc5be544445d2b02c37036e254b8741d1b37ff3d1b0f97f02f3b9ae214
+DIST jacktrip-1.7.1.tar.gz 5801602 BLAKE2B 05c6e917c73abce0528ed8fb01180bbdb92c2eb3dd14fd77a51dc24b1d15551052a47eeffd509bb92daf102fa2e342bd40e9e7c614aff62479c373ef2a0c8a45 SHA512 cd26c4ef5735567baf159a3389d6eb94b9a1ad4fa44354ffa8efa462a1aa84da112b960fef756b5c7d8a37e31598df16b13935167aeccb85c261fc6782101658
diff --git a/media-sound/jacktrip/jacktrip-1.6.8.ebuild b/media-sound/jacktrip/jacktrip-1.7.1.ebuild
similarity index 96%
rename from media-sound/jacktrip/jacktrip-1.6.8.ebuild
rename to media-sound/jacktrip/jacktrip-1.7.1.ebuild
index 9437113c7f..f753e329bc 100644
--- a/media-sound/jacktrip/jacktrip-1.6.8.ebuild
+++ b/media-sound/jacktrip/jacktrip-1.7.1.ebuild
@@ -12,7 +12,7 @@ SRC_URI="https://github.com/jacktrip/jacktrip/archive/refs/tags/v${PV}.tar.gz ->
LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64"
-IUSE="+gui jack +rtaudio virtualstudio"
+IUSE="gui jack +rtaudio virtualstudio"
REQUIRED_USE="
virtualstudio? ( gui )
|| ( jack rtaudio )
diff --git a/net-im/discord-canary-bin/Manifest b/net-im/discord-canary-bin/Manifest
index e123ad880d..ffe15f4a9d 100644
--- a/net-im/discord-canary-bin/Manifest
+++ b/net-im/discord-canary-bin/Manifest
@@ -1 +1 @@
-DIST discord-canary-0.0.146.deb 81829098 BLAKE2B 16b5795b5404175d4ef2d8ec5e781d74ffd02a6bb82022c00bc53ff7d23999b94a47aec13cc36c9dd0c6cc1aeaf7b283fcd2dcccd16e22e8c2bb81476dced0d6 SHA512 185697275003932df32c1149c537fc3ea542b5a332a1221a8c0af7336367e6f8b14dc7f7d9ab4b06c96005b416bffdd3fb7b1dbe79ce45558efb16167bdcc268
+DIST discord-canary-0.0.148.deb 92547910 BLAKE2B e217d7bc3fd2f255fb79367cecebfb3f8663aec92602d1d5b300352c42a7b37c788c841a161d6eb69dfb9669e5f724b7fa352bd78116ec2bd1421f5736f23f0e SHA512 48f8eb43e0e73b2a27caa37925e3d4a64d5d695a5d96b9028be44a8353edf56e3584668a55c3e8378a0d7c62edd97587a80a78ff3669281bd86098d41b3d60cf
diff --git a/net-im/discord-canary-bin/discord-canary-bin-0.0.146.ebuild b/net-im/discord-canary-bin/discord-canary-bin-0.0.148.ebuild
similarity index 100%
rename from net-im/discord-canary-bin/discord-canary-bin-0.0.146.ebuild
rename to net-im/discord-canary-bin/discord-canary-bin-0.0.148.ebuild
diff --git a/net-im/session-desktop-bin/Manifest b/net-im/session-desktop-bin/Manifest
index eae1b87f8a..86da34b100 100644
--- a/net-im/session-desktop-bin/Manifest
+++ b/net-im/session-desktop-bin/Manifest
@@ -1 +1 @@
-DIST session-desktop-linux-amd64-1.10.4.deb 67382554 BLAKE2B 940431da24da31cf4d001b8d44dd47eeabeb37a3edd84a7da1a041d2930bef2716a7ac30125ef1e7c48355c4672966d9a0c324f282331b2e640a1280fb086cf4 SHA512 3ec3de891451e2cd1114d4c0f465ffb660ebf0dd915ccf1c358127dfcd04767bd2568c081c1790ea4cf99bd654d03c321d67cb2d57937b16d93f7aa3b8021bc6
+DIST session-desktop-linux-amd64-1.10.7.deb 67822974 BLAKE2B 4fb8290f068a360717d945fde10e0de12585d1df0c14df9edcfc3112da4b693a4d8a4aad1f859ba4ef50190b94ebe87c639a164d6f33a93de345f107edcc4d6d SHA512 7acb2ecc42161a0bb6325a068f6ba8f8464fb9c1f2fa449318e4e69a9538882a6a7a432769949629dc57d305c266d3570a3ee78be77986a8475d8fb8f1f3ef8a
diff --git a/net-im/session-desktop-bin/session-desktop-bin-1.10.4-r1.ebuild b/net-im/session-desktop-bin/session-desktop-bin-1.10.7.ebuild
similarity index 100%
rename from net-im/session-desktop-bin/session-desktop-bin-1.10.4-r1.ebuild
rename to net-im/session-desktop-bin/session-desktop-bin-1.10.7.ebuild
diff --git a/net-libs/ulfius/Manifest b/net-libs/ulfius/Manifest
index 61632cf257..5614e9f984 100644
--- a/net-libs/ulfius/Manifest
+++ b/net-libs/ulfius/Manifest
@@ -1 +1 @@
-DIST ulfius-2.7.12.tar.gz 427636 BLAKE2B 1d9ad9f56275bd602ca73ee5c671ac48e0f5fa2baf188ee3309acc4f24b98488db07a6b8157852395f00813e1985d9bcb0c3d286c6eeee21ecbce5ff41f98396 SHA512 693786ca6d459f22878a751b3d7acbc512dd72f58732df71b449013f3cc73837a24465c8ad8970a5bbd3e7fdc182de2a739ca5408a2d462c02d1eb06a4fa1e01
+DIST ulfius-2.7.13.tar.gz 427607 BLAKE2B 1ccc3c37af135bfab2c7c81231ec8e788cd9df46f9025ae6745e58baff29e0820b7b62f929338f890f1e165bc84b292e3a8e0c6b07e5f83fb9972dcd6414221f SHA512 cb92631f2d20088f21c8accee8841774793d79ae7851e4a0d160db084131e68cb9b78d44bc6519b624f35f007209da61e8173912248cefbec9141cd09690cc3d
diff --git a/net-libs/ulfius/ulfius-2.7.12.ebuild b/net-libs/ulfius/ulfius-2.7.13.ebuild
similarity index 100%
rename from net-libs/ulfius/ulfius-2.7.12.ebuild
rename to net-libs/ulfius/ulfius-2.7.13.ebuild
diff --git a/net-misc/maestral/Manifest b/net-misc/maestral/Manifest
index ee00161660..2d03afd827 100644
--- a/net-misc/maestral/Manifest
+++ b/net-misc/maestral/Manifest
@@ -1,3 +1,3 @@
DIST maestral-1.5.3.gh.tar.gz 8280040 BLAKE2B dcda43880cea3fb00098b6bf87e43318a523a7c9d83886efff58be715cde17f67504b31735a006b951963e5cf0ef70b4b6431cb84200722cae186053a01edd63 SHA512 aa21277623f4e6f3283cd989be910eeb1caa3a842abca595b27a551c1c9bd1e7ef083e495ee0f096190accd91835939cb2f4a26624feae0046d8770d53aaac2f
DIST maestral-1.6.5.gh.tar.gz 7983512 BLAKE2B b77cc7eb1a6089cc78e47680d99a53bc4c4752feed3970a57e67eefcf1ab2491c0b3aaebd2fb7caf6fc5420eef2e7fe8776e87047f82db7d1466a4c3d17beaf8 SHA512 ee182505b305dbd6730078ce71725eb75515fb5682889c5226c26a69d32f85ad28e335bcd65b57fd1624da8ecd8914df337a93f6b296d86dcc6e94d4f2747995
-DIST maestral-1.7.0_rc1.gh.tar.gz 7986751 BLAKE2B 35808775d3f77a8a6681ed55f781745824f8572047c2c0c2171a019ba1700d48846efb38e59baf5c5ba3b4ba6f138e14acf1324e1e465a1ab1176f42d7ebcfb5 SHA512 13c1daee0803f37263b0e59a7c039218e755611baa7bc072bf15ed6d17015c211026fc8340f5b67181b7bc20228c9c12f49a547be50fd33aba4ebeacd864c38c
+DIST maestral-1.7.0_rc2.gh.tar.gz 7986667 BLAKE2B d081bb1178b07483442cfec91c677c9348a91fd09383294c57982961252384acaeaaf2a31af8358afc74614fe8f4c1cecb167fc78fc7d46bbfe598c6ca680ad3 SHA512 79f972bdebe9b59612b6d9d16ef7bda99b7a46fc7c920253228aaaecd9a578424a63947fb30c24d23199a873084b885dd5c8246adbc9cbc901ab58618bf38cf7
diff --git a/net-misc/maestral/maestral-1.7.0_rc1.ebuild b/net-misc/maestral/maestral-1.7.0_rc2.ebuild
similarity index 91%
rename from net-misc/maestral/maestral-1.7.0_rc1.ebuild
rename to net-misc/maestral/maestral-1.7.0_rc2.ebuild
index ef1159aae2..33e31a844f 100644
--- a/net-misc/maestral/maestral-1.7.0_rc1.ebuild
+++ b/net-misc/maestral/maestral-1.7.0_rc2.ebuild
@@ -24,6 +24,7 @@ RDEPEND="
>=dev-python/desktop-notifier-3.3.0[${PYTHON_USEDEP}]
=dev-python/dropbox-11*[${PYTHON_USEDEP}]
>=dev-python/fasteners-0.15[${PYTHON_USEDEP}]
+ dev-python/importlib_metadata[${PYTHON_USEDEP}]
>=dev-python/keyring-22.0.0[${PYTHON_USEDEP}]
>=dev-python/keyrings-alt-3.1.0[${PYTHON_USEDEP}]
dev-python/packaging[${PYTHON_USEDEP}]
@@ -31,8 +32,8 @@ RDEPEND="
>=dev-python/Pyro5-5.10[${PYTHON_USEDEP}]
>=dev-python/requests-2.16.2[${PYTHON_USEDEP}]
dev-python/rich[${PYTHON_USEDEP}]
- >=dev-python/survey-3.4.3[${PYTHON_USEDEP}]
- =dev-python/watchdog-2.0.1[${PYTHON_USEDEP}]
"
BDEPEND="
diff --git a/net-misc/moonlight/Manifest b/net-misc/moonlight/Manifest
index df82010352..acf0147bd9 100644
--- a/net-misc/moonlight/Manifest
+++ b/net-misc/moonlight/Manifest
@@ -1 +1 @@
-DIST MoonlightSrc-3.1.4.tar.gz 55034473 BLAKE2B 1e420ea2f711f010f37e98ae2807ef7b449547d162065ea00809a07174d9e70ce78c7a2dc627ea8f2c275048277f8d45e7430c52df8b8b757c13646e831bbb2e SHA512 893b73f00fb8552f6a7c7bc8dbacac10e7280f2bb31a4813321e3c62a8071b8c6e87688ff9d60bfb27556dea6873c0a87a822e25b6cc0529f016bce7f3480ebc
+DIST MoonlightSrc-4.3.1.tar.gz 71454450 BLAKE2B cd6d8d95c3d53dbf73850cd30f86bdb9837806a642472454d70f6abee20ae91bc79c0671c4da0a74fb5f43086841a8318718c4f2f4e4768b395fb4b38d1dde9e SHA512 f5f7b23929aadb87716470522a315cba40d8155be6b76297eab4107e0fef71b48f9f4c9a4cc2b58bd48579db052a8ca8ecda9b49c78c3d229863a30886cf1847
diff --git a/net-misc/moonlight/files/4.3.1-respect-cflags.patch b/net-misc/moonlight/files/4.3.1-respect-cflags.patch
new file mode 100644
index 0000000000..caf053e666
--- /dev/null
+++ b/net-misc/moonlight/files/4.3.1-respect-cflags.patch
@@ -0,0 +1,53 @@
+diff --git a/globaldefs.pri b/globaldefs.pri
+index a767cbf9..e40abe6b 100644
+--- a/globaldefs.pri
++++ b/globaldefs.pri
+@@ -2,7 +2,7 @@
+ CONFIG += debug_and_release
+
+ # Ensure symbols are always generated
+-CONFIG += force_debug_info
++# CONFIG += force_debug_info
+
+ # Disable asserts on release builds
+ CONFIG(release, debug|release) {
+Submodule h264bitstream/h264bitstream contains modified content
+diff --git a/h264bitstream/h264bitstream/m4/ax_check_debug.m4 b/h264bitstream/h264bitstream/m4/ax_check_debug.m4
+index 1f5252e..df1f444 100644
+--- a/h264bitstream/h264bitstream/m4/ax_check_debug.m4
++++ b/h264bitstream/h264bitstream/m4/ax_check_debug.m4
+@@ -26,7 +26,7 @@ AC_DEFUN([AX_CHECK_DEBUG],
+ else
+ AC_DEFINE([NDEBUG],[],[Release Mode])
+ #-O3 anyone? Kills using -g in release mode so we'll stick with O2 for now.
+- AM_CFLAGS="$AM_CFLAGS -O2 -g -Wall"
++ AM_CFLAGS="$AM_CFLAGS -Wall"
+ fi
+ AC_SUBST([AM_CFLAGS])
+ ])
+Submodule moonlight-common-c/moonlight-common-c contains modified content
+Submodule enet contains modified content
+diff --git a/moonlight-common-c/moonlight-common-c/enet/enet_dll.cbp b/moonlight-common-c/moonlight-common-c/enet/enet_dll.cbp
+index 961274c..e9e4ea9 100644
+--- a/moonlight-common-c/moonlight-common-c/enet/enet_dll.cbp
++++ b/moonlight-common-c/moonlight-common-c/enet/enet_dll.cbp
+@@ -13,9 +13,6 @@
+
+
+
+-
+-
+-
+
+
+
+@@ -24,9 +21,6 @@
+
+
+
+-
+-
+-
+
+
+
diff --git a/net-misc/moonlight/metadata.xml b/net-misc/moonlight/metadata.xml
index fa851f800a..71155ad33f 100644
--- a/net-misc/moonlight/metadata.xml
+++ b/net-misc/moonlight/metadata.xml
@@ -5,6 +5,9 @@
andrewathalye@outlook.comAndrew Athalye
+
+ moonlight-stream/moonlight-qt
+