git: 28833a6d5cbd - main - math/fend: New port: Arbitrary-precision unit-aware calculator

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Sun, 10 Dec 2023 06:13:07 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=28833a6d5cbd4d5005fced8abe9c966da1fa735f

commit 28833a6d5cbd4d5005fced8abe9c966da1fa735f
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2023-12-10 06:12:18 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2023-12-10 06:13:03 +0000

    math/fend: New port: Arbitrary-precision unit-aware calculator
---
 math/Makefile       |   1 +
 math/fend/Makefile  | 152 ++++++++++++++++++++++++++++++++
 math/fend/distinfo  | 245 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 math/fend/pkg-descr |  13 +++
 4 files changed, 411 insertions(+)

diff --git a/math/Makefile b/math/Makefile
index e845f27fb1fd..5f35673953b6 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -322,6 +322,7 @@
     SUBDIR += fastops
     SUBDIR += fcl
     SUBDIR += fcl05
+    SUBDIR += fend
     SUBDIR += fenics-basix
     SUBDIR += fflas-ffpack
     SUBDIR += fftw
diff --git a/math/fend/Makefile b/math/fend/Makefile
new file mode 100644
index 000000000000..a1ca06c1bc32
--- /dev/null
+++ b/math/fend/Makefile
@@ -0,0 +1,152 @@
+PORTNAME=	fend
+DISTVERSIONPREFIX=	v
+DISTVERSION=	1.3.3-2
+DISTVERSIONSUFFIX=	-g2d731f1
+CATEGORIES=	math
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Arbitrary-precision unit-aware calculator
+WWW=		https://printfn.github.io/fend
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE.md
+
+USES=		cargo
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	printfn
+
+CARGO_CRATES=	base64-0.21.5 \
+		bitflags-1.3.2 \
+		bitflags-2.4.1 \
+		bumpalo-3.14.0 \
+		cc-1.0.83 \
+		cfg-if-1.0.0 \
+		clipboard-win-5.0.0 \
+		console-0.15.7 \
+		core-foundation-0.9.4 \
+		core-foundation-sys-0.8.6 \
+		ctrlc-3.4.1 \
+		encode_unicode-0.3.6 \
+		endian-type-0.1.2 \
+		equivalent-1.0.1 \
+		errno-0.3.8 \
+		error-code-3.0.0 \
+		fastrand-2.0.1 \
+		fd-lock-4.0.1 \
+		foreign-types-0.3.2 \
+		foreign-types-shared-0.1.1 \
+		form_urlencoded-1.2.1 \
+		getrandom-0.2.11 \
+		hashbrown-0.14.3 \
+		home-0.5.5 \
+		idna-0.5.0 \
+		indexmap-2.1.0 \
+		instant-0.1.12 \
+		js-sys-0.3.66 \
+		lazy_static-1.4.0 \
+		libc-0.2.150 \
+		linux-raw-sys-0.4.12 \
+		log-0.4.20 \
+		memchr-2.6.4 \
+		native-tls-0.2.11 \
+		nibble_vec-0.1.0 \
+		nix-0.27.1 \
+		once_cell-1.19.0 \
+		openssl-0.10.61 \
+		openssl-macros-0.1.1 \
+		openssl-probe-0.1.5 \
+		openssl-sys-0.9.97 \
+		percent-encoding-2.3.1 \
+		pkg-config-0.3.27 \
+		ppv-lite86-0.2.17 \
+		proc-macro2-1.0.70 \
+		quote-1.0.33 \
+		radix_trie-0.2.1 \
+		rand-0.8.5 \
+		rand_chacha-0.3.1 \
+		rand_core-0.6.4 \
+		redox_syscall-0.4.1 \
+		ring-0.17.7 \
+		rustix-0.38.27 \
+		rustls-0.21.9 \
+		rustls-webpki-0.101.7 \
+		rustyline-13.0.0 \
+		schannel-0.1.22 \
+		sct-0.7.1 \
+		security-framework-2.9.2 \
+		security-framework-sys-2.9.1 \
+		serde-1.0.193 \
+		serde_derive-1.0.193 \
+		serde_spanned-0.6.4 \
+		smallvec-1.11.2 \
+		spin-0.9.8 \
+		syn-2.0.39 \
+		tempfile-3.8.1 \
+		tinyvec-1.6.0 \
+		tinyvec_macros-0.1.1 \
+		toml-0.8.8 \
+		toml_datetime-0.6.5 \
+		toml_edit-0.21.0 \
+		unicode-bidi-0.3.14 \
+		unicode-ident-1.0.12 \
+		unicode-normalization-0.1.22 \
+		unicode-segmentation-1.10.1 \
+		unicode-width-0.1.11 \
+		untrusted-0.9.0 \
+		ureq-2.9.1 \
+		url-2.5.0 \
+		utf8parse-0.2.1 \
+		vcpkg-0.2.15 \
+		wasi-0.11.0+wasi-snapshot-preview1 \
+		wasm-bindgen-0.2.89 \
+		wasm-bindgen-backend-0.2.89 \
+		wasm-bindgen-macro-0.2.89 \
+		wasm-bindgen-macro-support-0.2.89 \
+		wasm-bindgen-shared-0.2.89 \
+		web-sys-0.3.66 \
+		webpki-roots-0.25.3 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		windows-sys-0.45.0 \
+		windows-sys-0.48.0 \
+		windows-sys-0.52.0 \
+		windows-targets-0.42.2 \
+		windows-targets-0.48.5 \
+		windows-targets-0.52.0 \
+		windows_aarch64_gnullvm-0.42.2 \
+		windows_aarch64_gnullvm-0.48.5 \
+		windows_aarch64_gnullvm-0.52.0 \
+		windows_aarch64_msvc-0.42.2 \
+		windows_aarch64_msvc-0.48.5 \
+		windows_aarch64_msvc-0.52.0 \
+		windows_i686_gnu-0.42.2 \
+		windows_i686_gnu-0.48.5 \
+		windows_i686_gnu-0.52.0 \
+		windows_i686_msvc-0.42.2 \
+		windows_i686_msvc-0.48.5 \
+		windows_i686_msvc-0.52.0 \
+		windows_x86_64_gnu-0.42.2 \
+		windows_x86_64_gnu-0.48.5 \
+		windows_x86_64_gnu-0.52.0 \
+		windows_x86_64_gnullvm-0.42.2 \
+		windows_x86_64_gnullvm-0.48.5 \
+		windows_x86_64_gnullvm-0.52.0 \
+		windows_x86_64_msvc-0.42.2 \
+		windows_x86_64_msvc-0.48.5 \
+		windows_x86_64_msvc-0.52.0 \
+		winnow-0.5.26
+
+OPENSSLINC=	/usr/include
+OPENSSLLIB=	/usr/lib
+
+PLIST_FILES=	bin/${PORTNAME}
+
+do-install:
+	# workaround for error: found a virtual manifest at `xx` instead of a package manifest
+	${INSTALL_PROGRAM} \
+		${WRKDIR}/target/*/release/${PORTNAME} \
+		${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/math/fend/distinfo b/math/fend/distinfo
new file mode 100644
index 000000000000..dfb998fa24ff
--- /dev/null
+++ b/math/fend/distinfo
@@ -0,0 +1,245 @@
+TIMESTAMP = 1702178416
+SHA256 (rust/crates/base64-0.21.5.crate) = 35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9
+SIZE (rust/crates/base64-0.21.5.crate) = 77134
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bitflags-2.4.1.crate) = 327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07
+SIZE (rust/crates/bitflags-2.4.1.crate) = 37043
+SHA256 (rust/crates/bumpalo-3.14.0.crate) = 7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec
+SIZE (rust/crates/bumpalo-3.14.0.crate) = 82400
+SHA256 (rust/crates/cc-1.0.83.crate) = f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0
+SIZE (rust/crates/cc-1.0.83.crate) = 68343
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/clipboard-win-5.0.0.crate) = c57002a5d9be777c1ef967e33674dac9ebd310d8893e4e3437b14d5f0f6372cc
+SIZE (rust/crates/clipboard-win-5.0.0.crate) = 15248
+SHA256 (rust/crates/console-0.15.7.crate) = c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8
+SIZE (rust/crates/console-0.15.7.crate) = 35409
+SHA256 (rust/crates/core-foundation-0.9.4.crate) = 91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f
+SIZE (rust/crates/core-foundation-0.9.4.crate) = 27743
+SHA256 (rust/crates/core-foundation-sys-0.8.6.crate) = 06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f
+SIZE (rust/crates/core-foundation-sys-0.8.6.crate) = 37629
+SHA256 (rust/crates/ctrlc-3.4.1.crate) = 82e95fbd621905b854affdc67943b043a0fbb6ed7385fd5a25650d19a8a6cfdf
+SIZE (rust/crates/ctrlc-3.4.1.crate) = 14191
+SHA256 (rust/crates/encode_unicode-0.3.6.crate) = a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f
+SIZE (rust/crates/encode_unicode-0.3.6.crate) = 45741
+SHA256 (rust/crates/endian-type-0.1.2.crate) = c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d
+SIZE (rust/crates/endian-type-0.1.2.crate) = 2340
+SHA256 (rust/crates/equivalent-1.0.1.crate) = 5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5
+SIZE (rust/crates/equivalent-1.0.1.crate) = 6615
+SHA256 (rust/crates/errno-0.3.8.crate) = a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245
+SIZE (rust/crates/errno-0.3.8.crate) = 10645
+SHA256 (rust/crates/error-code-3.0.0.crate) = 281e452d3bad4005426416cdba5ccfd4f5c1280e10099e21db27f7c1c28347fc
+SIZE (rust/crates/error-code-3.0.0.crate) = 6176
+SHA256 (rust/crates/fastrand-2.0.1.crate) = 25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5
+SIZE (rust/crates/fastrand-2.0.1.crate) = 14664
+SHA256 (rust/crates/fd-lock-4.0.1.crate) = b93f7a0db71c99f68398f80653ed05afb0b00e062e1a20c7ff849c4edfabbbcc
+SIZE (rust/crates/fd-lock-4.0.1.crate) = 13579
+SHA256 (rust/crates/foreign-types-0.3.2.crate) = f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1
+SIZE (rust/crates/foreign-types-0.3.2.crate) = 7504
+SHA256 (rust/crates/foreign-types-shared-0.1.1.crate) = 00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b
+SIZE (rust/crates/foreign-types-shared-0.1.1.crate) = 5672
+SHA256 (rust/crates/form_urlencoded-1.2.1.crate) = e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456
+SIZE (rust/crates/form_urlencoded-1.2.1.crate) = 8969
+SHA256 (rust/crates/getrandom-0.2.11.crate) = fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f
+SIZE (rust/crates/getrandom-0.2.11.crate) = 35391
+SHA256 (rust/crates/hashbrown-0.14.3.crate) = 290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604
+SIZE (rust/crates/hashbrown-0.14.3.crate) = 141425
+SHA256 (rust/crates/home-0.5.5.crate) = 5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb
+SIZE (rust/crates/home-0.5.5.crate) = 8557
+SHA256 (rust/crates/idna-0.5.0.crate) = 634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6
+SIZE (rust/crates/idna-0.5.0.crate) = 271940
+SHA256 (rust/crates/indexmap-2.1.0.crate) = d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f
+SIZE (rust/crates/indexmap-2.1.0.crate) = 68224
+SHA256 (rust/crates/instant-0.1.12.crate) = 7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c
+SIZE (rust/crates/instant-0.1.12.crate) = 6128
+SHA256 (rust/crates/js-sys-0.3.66.crate) = cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca
+SIZE (rust/crates/js-sys-0.3.66.crate) = 80765
+SHA256 (rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
+SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443
+SHA256 (rust/crates/libc-0.2.150.crate) = 89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c
+SIZE (rust/crates/libc-0.2.150.crate) = 719359
+SHA256 (rust/crates/linux-raw-sys-0.4.12.crate) = c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456
+SIZE (rust/crates/linux-raw-sys-0.4.12.crate) = 1465800
+SHA256 (rust/crates/log-0.4.20.crate) = b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f
+SIZE (rust/crates/log-0.4.20.crate) = 38307
+SHA256 (rust/crates/memchr-2.6.4.crate) = f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167
+SIZE (rust/crates/memchr-2.6.4.crate) = 94439
+SHA256 (rust/crates/native-tls-0.2.11.crate) = 07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e
+SIZE (rust/crates/native-tls-0.2.11.crate) = 29008
+SHA256 (rust/crates/nibble_vec-0.1.0.crate) = 77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43
+SIZE (rust/crates/nibble_vec-0.1.0.crate) = 11796
+SHA256 (rust/crates/nix-0.27.1.crate) = 2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053
+SIZE (rust/crates/nix-0.27.1.crate) = 286494
+SHA256 (rust/crates/once_cell-1.19.0.crate) = 3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92
+SIZE (rust/crates/once_cell-1.19.0.crate) = 33046
+SHA256 (rust/crates/openssl-0.10.61.crate) = 6b8419dc8cc6d866deb801274bba2e6f8f6108c1bb7fcc10ee5ab864931dbb45
+SIZE (rust/crates/openssl-0.10.61.crate) = 268171
+SHA256 (rust/crates/openssl-macros-0.1.1.crate) = a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c
+SIZE (rust/crates/openssl-macros-0.1.1.crate) = 5601
+SHA256 (rust/crates/openssl-probe-0.1.5.crate) = ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf
+SIZE (rust/crates/openssl-probe-0.1.5.crate) = 7227
+SHA256 (rust/crates/openssl-sys-0.9.97.crate) = c3eaad34cdd97d81de97964fc7f29e2d104f483840d906ef56daa1912338460b
+SIZE (rust/crates/openssl-sys-0.9.97.crate) = 67910
+SHA256 (rust/crates/percent-encoding-2.3.1.crate) = e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e
+SIZE (rust/crates/percent-encoding-2.3.1.crate) = 10235
+SHA256 (rust/crates/pkg-config-0.3.27.crate) = 26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964
+SIZE (rust/crates/pkg-config-0.3.27.crate) = 18838
+SHA256 (rust/crates/ppv-lite86-0.2.17.crate) = 5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de
+SIZE (rust/crates/ppv-lite86-0.2.17.crate) = 22242
+SHA256 (rust/crates/proc-macro2-1.0.70.crate) = 39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b
+SIZE (rust/crates/proc-macro2-1.0.70.crate) = 44343
+SHA256 (rust/crates/quote-1.0.33.crate) = 5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae
+SIZE (rust/crates/quote-1.0.33.crate) = 28090
+SHA256 (rust/crates/radix_trie-0.2.1.crate) = c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd
+SIZE (rust/crates/radix_trie-0.2.1.crate) = 251366
+SHA256 (rust/crates/rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404
+SIZE (rust/crates/rand-0.8.5.crate) = 87113
+SHA256 (rust/crates/rand_chacha-0.3.1.crate) = e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88
+SIZE (rust/crates/rand_chacha-0.3.1.crate) = 15251
+SHA256 (rust/crates/rand_core-0.6.4.crate) = ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c
+SIZE (rust/crates/rand_core-0.6.4.crate) = 22666
+SHA256 (rust/crates/redox_syscall-0.4.1.crate) = 4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa
+SIZE (rust/crates/redox_syscall-0.4.1.crate) = 24858
+SHA256 (rust/crates/ring-0.17.7.crate) = 688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74
+SIZE (rust/crates/ring-0.17.7.crate) = 4146482
+SHA256 (rust/crates/rustix-0.38.27.crate) = bfeae074e687625746172d639330f1de242a178bf3189b51e35a7a21573513ac
+SIZE (rust/crates/rustix-0.38.27.crate) = 365308
+SHA256 (rust/crates/rustls-0.21.9.crate) = 629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9
+SIZE (rust/crates/rustls-0.21.9.crate) = 283537
+SHA256 (rust/crates/rustls-webpki-0.101.7.crate) = 8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765
+SIZE (rust/crates/rustls-webpki-0.101.7.crate) = 168808
+SHA256 (rust/crates/rustyline-13.0.0.crate) = 02a2d683a4ac90aeef5b1013933f6d977bd37d51ff3f4dad829d4931a7e6be86
+SIZE (rust/crates/rustyline-13.0.0.crate) = 116254
+SHA256 (rust/crates/schannel-0.1.22.crate) = 0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88
+SIZE (rust/crates/schannel-0.1.22.crate) = 41642
+SHA256 (rust/crates/sct-0.7.1.crate) = da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414
+SIZE (rust/crates/sct-0.7.1.crate) = 27501
+SHA256 (rust/crates/security-framework-2.9.2.crate) = 05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de
+SIZE (rust/crates/security-framework-2.9.2.crate) = 79295
+SHA256 (rust/crates/security-framework-sys-2.9.1.crate) = e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a
+SIZE (rust/crates/security-framework-sys-2.9.1.crate) = 18284
+SHA256 (rust/crates/serde-1.0.193.crate) = 25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89
+SIZE (rust/crates/serde-1.0.193.crate) = 76863
+SHA256 (rust/crates/serde_derive-1.0.193.crate) = 43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3
+SIZE (rust/crates/serde_derive-1.0.193.crate) = 55692
+SHA256 (rust/crates/serde_spanned-0.6.4.crate) = 12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80
+SIZE (rust/crates/serde_spanned-0.6.4.crate) = 7756
+SHA256 (rust/crates/smallvec-1.11.2.crate) = 4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970
+SIZE (rust/crates/smallvec-1.11.2.crate) = 34801
+SHA256 (rust/crates/spin-0.9.8.crate) = 6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67
+SIZE (rust/crates/spin-0.9.8.crate) = 38958
+SHA256 (rust/crates/syn-2.0.39.crate) = 23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a
+SIZE (rust/crates/syn-2.0.39.crate) = 244129
+SHA256 (rust/crates/tempfile-3.8.1.crate) = 7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5
+SIZE (rust/crates/tempfile-3.8.1.crate) = 32164
+SHA256 (rust/crates/tinyvec-1.6.0.crate) = 87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50
+SIZE (rust/crates/tinyvec-1.6.0.crate) = 45991
+SHA256 (rust/crates/tinyvec_macros-0.1.1.crate) = 1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20
+SIZE (rust/crates/tinyvec_macros-0.1.1.crate) = 5865
+SHA256 (rust/crates/toml-0.8.8.crate) = a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35
+SIZE (rust/crates/toml-0.8.8.crate) = 50451
+SHA256 (rust/crates/toml_datetime-0.6.5.crate) = 3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1
+SIZE (rust/crates/toml_datetime-0.6.5.crate) = 10910
+SHA256 (rust/crates/toml_edit-0.21.0.crate) = d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03
+SIZE (rust/crates/toml_edit-0.21.0.crate) = 101265
+SHA256 (rust/crates/unicode-bidi-0.3.14.crate) = 6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416
+SIZE (rust/crates/unicode-bidi-0.3.14.crate) = 56429
+SHA256 (rust/crates/unicode-ident-1.0.12.crate) = 3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b
+SIZE (rust/crates/unicode-ident-1.0.12.crate) = 42168
+SHA256 (rust/crates/unicode-normalization-0.1.22.crate) = 5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921
+SIZE (rust/crates/unicode-normalization-0.1.22.crate) = 122604
+SHA256 (rust/crates/unicode-segmentation-1.10.1.crate) = 1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36
+SIZE (rust/crates/unicode-segmentation-1.10.1.crate) = 98416
+SHA256 (rust/crates/unicode-width-0.1.11.crate) = e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85
+SIZE (rust/crates/unicode-width-0.1.11.crate) = 19187
+SHA256 (rust/crates/untrusted-0.9.0.crate) = 8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1
+SIZE (rust/crates/untrusted-0.9.0.crate) = 14447
+SHA256 (rust/crates/ureq-2.9.1.crate) = f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97
+SIZE (rust/crates/ureq-2.9.1.crate) = 114348
+SHA256 (rust/crates/url-2.5.0.crate) = 31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633
+SIZE (rust/crates/url-2.5.0.crate) = 78605
+SHA256 (rust/crates/utf8parse-0.2.1.crate) = 711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a
+SIZE (rust/crates/utf8parse-0.2.1.crate) = 13435
+SHA256 (rust/crates/vcpkg-0.2.15.crate) = accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426
+SIZE (rust/crates/vcpkg-0.2.15.crate) = 228735
+SHA256 (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423
+SIZE (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 28131
+SHA256 (rust/crates/wasm-bindgen-0.2.89.crate) = 0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e
+SIZE (rust/crates/wasm-bindgen-0.2.89.crate) = 181935
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.89.crate) = 1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826
+SIZE (rust/crates/wasm-bindgen-backend-0.2.89.crate) = 28205
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.89.crate) = 0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2
+SIZE (rust/crates/wasm-bindgen-macro-0.2.89.crate) = 13906
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.89.crate) = f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.89.crate) = 20008
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.89.crate) = 7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f
+SIZE (rust/crates/wasm-bindgen-shared-0.2.89.crate) = 7265
+SHA256 (rust/crates/web-sys-0.3.66.crate) = 50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f
+SIZE (rust/crates/web-sys-0.3.66.crate) = 733024
+SHA256 (rust/crates/webpki-roots-0.25.3.crate) = 1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10
+SIZE (rust/crates/webpki-roots-0.25.3.crate) = 251565
+SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
+SIZE (rust/crates/winapi-0.3.9.crate) = 1200382
+SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
+SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815
+SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
+SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
+SHA256 (rust/crates/windows-sys-0.45.0.crate) = 75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0
+SIZE (rust/crates/windows-sys-0.45.0.crate) = 2568659
+SHA256 (rust/crates/windows-sys-0.48.0.crate) = 677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9
+SIZE (rust/crates/windows-sys-0.48.0.crate) = 2628884
+SHA256 (rust/crates/windows-sys-0.52.0.crate) = 282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d
+SIZE (rust/crates/windows-sys-0.52.0.crate) = 2576877
+SHA256 (rust/crates/windows-targets-0.42.2.crate) = 8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071
+SIZE (rust/crates/windows-targets-0.42.2.crate) = 5492
+SHA256 (rust/crates/windows-targets-0.48.5.crate) = 9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c
+SIZE (rust/crates/windows-targets-0.48.5.crate) = 6904
+SHA256 (rust/crates/windows-targets-0.52.0.crate) = 8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd
+SIZE (rust/crates/windows-targets-0.52.0.crate) = 6229
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.42.2.crate) = 597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8
+SIZE (rust/crates/windows_aarch64_gnullvm-0.42.2.crate) = 364071
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8
+SIZE (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 418492
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.52.0.crate) = cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea
+SIZE (rust/crates/windows_aarch64_gnullvm-0.52.0.crate) = 430182
+SHA256 (rust/crates/windows_aarch64_msvc-0.42.2.crate) = e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43
+SIZE (rust/crates/windows_aarch64_msvc-0.42.2.crate) = 666981
+SHA256 (rust/crates/windows_aarch64_msvc-0.48.5.crate) = dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc
+SIZE (rust/crates/windows_aarch64_msvc-0.48.5.crate) = 798483
+SHA256 (rust/crates/windows_aarch64_msvc-0.52.0.crate) = bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef
+SIZE (rust/crates/windows_aarch64_msvc-0.52.0.crate) = 821663
+SHA256 (rust/crates/windows_i686_gnu-0.42.2.crate) = c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f
+SIZE (rust/crates/windows_i686_gnu-0.42.2.crate) = 736236
+SHA256 (rust/crates/windows_i686_gnu-0.48.5.crate) = a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e
+SIZE (rust/crates/windows_i686_gnu-0.48.5.crate) = 844891
+SHA256 (rust/crates/windows_i686_gnu-0.52.0.crate) = a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313
+SIZE (rust/crates/windows_i686_gnu-0.52.0.crate) = 870285
+SHA256 (rust/crates/windows_i686_msvc-0.42.2.crate) = 44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060
+SIZE (rust/crates/windows_i686_msvc-0.42.2.crate) = 724951
+SHA256 (rust/crates/windows_i686_msvc-0.48.5.crate) = 8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406
+SIZE (rust/crates/windows_i686_msvc-0.48.5.crate) = 864300
+SHA256 (rust/crates/windows_i686_msvc-0.52.0.crate) = ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a
+SIZE (rust/crates/windows_i686_msvc-0.52.0.crate) = 888693
+SHA256 (rust/crates/windows_x86_64_gnu-0.42.2.crate) = 8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36
+SIZE (rust/crates/windows_x86_64_gnu-0.42.2.crate) = 699373
+SHA256 (rust/crates/windows_x86_64_gnu-0.48.5.crate) = 53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e
+SIZE (rust/crates/windows_x86_64_gnu-0.48.5.crate) = 801619
+SHA256 (rust/crates/windows_x86_64_gnu-0.52.0.crate) = 3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd
+SIZE (rust/crates/windows_x86_64_gnu-0.52.0.crate) = 826213
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.42.2.crate) = 26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3
+SIZE (rust/crates/windows_x86_64_gnullvm-0.42.2.crate) = 364068
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.48.5.crate) = 0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc
+SIZE (rust/crates/windows_x86_64_gnullvm-0.48.5.crate) = 418486
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.52.0.crate) = 1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e
+SIZE (rust/crates/windows_x86_64_gnullvm-0.52.0.crate) = 430165
+SHA256 (rust/crates/windows_x86_64_msvc-0.42.2.crate) = 9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0
+SIZE (rust/crates/windows_x86_64_msvc-0.42.2.crate) = 666936
+SHA256 (rust/crates/windows_x86_64_msvc-0.48.5.crate) = ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538
+SIZE (rust/crates/windows_x86_64_msvc-0.48.5.crate) = 798412
+SHA256 (rust/crates/windows_x86_64_msvc-0.52.0.crate) = dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04
+SIZE (rust/crates/windows_x86_64_msvc-0.52.0.crate) = 821600
+SHA256 (rust/crates/winnow-0.5.26.crate) = b67b5f0a4e7a27a64c651977932b9dc5667ca7fc31ac44b03ed37a0cf42fdfff
+SIZE (rust/crates/winnow-0.5.26.crate) = 150529
+SHA256 (printfn-fend-v1.3.3-2-g2d731f1_GH0.tar.gz) = b3730926a7986e5048f98ff8bc7fcd3626153b0c5552fb148439f5c2ad918031
+SIZE (printfn-fend-v1.3.3-2-g2d731f1_GH0.tar.gz) = 409887
diff --git a/math/fend/pkg-descr b/math/fend/pkg-descr
new file mode 100644
index 000000000000..8aff7453cc0c
--- /dev/null
+++ b/math/fend/pkg-descr
@@ -0,0 +1,13 @@
+fend is an arbitrary-precision unit-aware calculator.
+
+Unique features:
+* Arbitrary-precision arithmetic using rational numbers
+* Full support for complex numbers
+* D&D-style dice rolls
+* Variables
+* Binary, octal, hexadecimal and all other bases between 2 and 36
+* Keep track of units, with support for SI, US and UK customary and many
+  historical units
+* Emacs-style CLI shortcuts
+* Trigonometric functions
+* Lambda calculus