Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Mar 2026 10:18:02 +0000
From:      Nicola Vitale <nivit@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 5f73ae9ee994 - main - graphics/mmdr: Add new port
Message-ID:  <69c6595a.33619.8d4ae63@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by nivit:

URL: https://cgit.FreeBSD.org/ports/commit/?id=5f73ae9ee99452af86f1376d86078e52b2746de5

commit 5f73ae9ee99452af86f1376d86078e52b2746de5
Author:     Nicola Vitale <nivit@FreeBSD.org>
AuthorDate: 2026-03-27 10:17:04 +0000
Commit:     Nicola Vitale <nivit@FreeBSD.org>
CommitDate: 2026-03-27 10:17:04 +0000

    graphics/mmdr: Add new port
    
    Mmdr is a fast native Rust Mermaid diagram renderer. No browser required. Mmdr
    renders diagrams 100–1400x faster than mermaid-cli by eliminating browser
    overhead. With the built-in font cache (warm after first run), tiny diagrams
    reach 500–900x (and --fastText exceeds 1600x).
    
    https://github.com/1jehuang/mermaid-rs-renderer
---
 graphics/Makefile             |   1 +
 graphics/mmdr/Makefile        |  24 ++++
 graphics/mmdr/Makefile.crates | 142 +++++++++++++++++++++
 graphics/mmdr/distinfo        | 287 ++++++++++++++++++++++++++++++++++++++++++
 graphics/mmdr/pkg-descr       |   4 +
 5 files changed, 458 insertions(+)

diff --git a/graphics/Makefile b/graphics/Makefile
index d36f5aaf0752..71d2f0ed9173 100644
--- a/graphics/Makefile
+++ b/graphics/Makefile
@@ -610,6 +610,7 @@
     SUBDIR += milton
     SUBDIR += minder
     SUBDIR += mirtk
+    SUBDIR += mmdr
     SUBDIR += movit
     SUBDIR += mozjpeg
     SUBDIR += mscgen
diff --git a/graphics/mmdr/Makefile b/graphics/mmdr/Makefile
new file mode 100644
index 000000000000..df160c7a9ed6
--- /dev/null
+++ b/graphics/mmdr/Makefile
@@ -0,0 +1,24 @@
+PORTNAME=	mmdr
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.2.1
+CATEGORIES=	graphics
+
+MAINTAINER=	nivit@FreeBSD.org
+COMMENT=	Fast native Rust Mermaid diagram renderer
+WWW=		https://github.com/1jehuang/mermaid-rs-renderer
+
+LICENSE=	APACHE20 BSD0CLAUSE BSD2CLAUSE BSD3CLAUSE MIT UNICODE UNLICENSE \
+		ZLIB
+LICENSE_COMB=	multi
+LICENSE_NAME_UNICODE=	UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+LICENSE_TEXT_UNICODE=	See https://www.unicode.org/copyright.html
+LICENSE_PERMS_UNICODE=	dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
+
+USES=		cargo
+USE_GITHUB=	yes
+GH_ACCOUNT=	1jehuang
+GH_PROJECT=	mermaid-rs-renderer
+
+PLIST_FILES=	bin/mmdr
+
+.include <bsd.port.mk>
diff --git a/graphics/mmdr/Makefile.crates b/graphics/mmdr/Makefile.crates
new file mode 100644
index 000000000000..fbeedcc4a57b
--- /dev/null
+++ b/graphics/mmdr/Makefile.crates
@@ -0,0 +1,142 @@
+CARGO_CRATES=	adler2-2.0.1 \
+		aho-corasick-1.1.4 \
+		alloca-0.4.0 \
+		anes-0.1.6 \
+		anstream-0.6.21 \
+		anstyle-1.0.13 \
+		anstyle-parse-0.2.7 \
+		anstyle-query-1.1.5 \
+		anstyle-wincon-3.0.11 \
+		anyhow-1.0.101 \
+		arrayref-0.3.9 \
+		arrayvec-0.7.6 \
+		autocfg-1.5.0 \
+		base64-0.22.1 \
+		bitflags-1.3.2 \
+		bitflags-2.10.0 \
+		bumpalo-3.19.1 \
+		bytemuck-1.24.0 \
+		byteorder-lite-0.1.0 \
+		cast-0.3.0 \
+		cc-1.2.54 \
+		cfg-if-1.0.4 \
+		ciborium-0.2.2 \
+		ciborium-io-0.2.2 \
+		ciborium-ll-0.2.2 \
+		clap-4.5.57 \
+		clap_builder-4.5.57 \
+		clap_derive-4.5.55 \
+		clap_lex-0.7.7 \
+		color_quant-1.1.0 \
+		colorchoice-1.0.4 \
+		core_maths-0.1.1 \
+		crc32fast-1.5.0 \
+		criterion-0.8.1 \
+		criterion-plot-0.8.1 \
+		crossbeam-deque-0.8.6 \
+		crossbeam-epoch-0.9.18 \
+		crossbeam-utils-0.8.21 \
+		crunchy-0.2.4 \
+		data-url-0.3.2 \
+		either-1.15.0 \
+		euclid-0.22.13 \
+		fdeflate-0.3.7 \
+		find-msvc-tools-0.1.8 \
+		flate2-1.1.8 \
+		float-cmp-0.9.0 \
+		fontconfig-parser-0.5.8 \
+		fontdb-0.23.0 \
+		gif-0.14.1 \
+		half-2.7.1 \
+		heck-0.5.0 \
+		image-webp-0.2.4 \
+		imagesize-0.14.0 \
+		is_terminal_polyfill-1.70.2 \
+		itertools-0.13.0 \
+		itoa-1.0.17 \
+		js-sys-0.3.85 \
+		json5-1.3.1 \
+		kurbo-0.13.0 \
+		libc-0.2.180 \
+		libm-0.2.15 \
+		log-0.4.29 \
+		memchr-2.7.6 \
+		memmap2-0.9.9 \
+		miniz_oxide-0.8.9 \
+		num-traits-0.2.19 \
+		once_cell-1.21.3 \
+		once_cell_polyfill-1.70.2 \
+		oorandom-11.1.5 \
+		page_size-0.6.0 \
+		pico-args-0.5.0 \
+		plotters-0.3.7 \
+		plotters-backend-0.3.7 \
+		plotters-svg-0.3.7 \
+		png-0.17.16 \
+		proc-macro2-1.0.106 \
+		quick-error-2.0.1 \
+		quote-1.0.43 \
+		rayon-1.11.0 \
+		rayon-core-1.13.0 \
+		regex-1.12.2 \
+		regex-automata-0.4.13 \
+		regex-syntax-0.8.8 \
+		resvg-0.46.0 \
+		rgb-0.8.52 \
+		roxmltree-0.20.0 \
+		roxmltree-0.21.1 \
+		rustversion-1.0.22 \
+		rustybuzz-0.20.1 \
+		same-file-1.0.6 \
+		serde-1.0.228 \
+		serde_core-1.0.228 \
+		serde_derive-1.0.228 \
+		serde_json-1.0.149 \
+		shlex-1.3.0 \
+		simd-adler32-0.3.8 \
+		simplecss-0.2.2 \
+		siphasher-1.0.1 \
+		slotmap-1.1.1 \
+		smallvec-1.15.1 \
+		strict-num-0.1.1 \
+		strsim-0.11.1 \
+		svgtypes-0.16.1 \
+		syn-2.0.114 \
+		thiserror-2.0.18 \
+		thiserror-impl-2.0.18 \
+		tiny-skia-0.11.4 \
+		tiny-skia-path-0.11.4 \
+		tinytemplate-1.2.1 \
+		tinyvec-1.10.0 \
+		tinyvec_macros-0.1.1 \
+		ttf-parser-0.25.1 \
+		ucd-trie-0.1.7 \
+		unicode-bidi-0.3.18 \
+		unicode-bidi-mirroring-0.4.0 \
+		unicode-ccc-0.4.0 \
+		unicode-ident-1.0.22 \
+		unicode-properties-0.1.4 \
+		unicode-script-0.5.8 \
+		unicode-vo-0.1.0 \
+		usvg-0.46.0 \
+		utf8parse-0.2.2 \
+		version_check-0.9.5 \
+		walkdir-2.5.0 \
+		wasm-bindgen-0.2.108 \
+		wasm-bindgen-macro-0.2.108 \
+		wasm-bindgen-macro-support-0.2.108 \
+		wasm-bindgen-shared-0.2.108 \
+		web-sys-0.3.85 \
+		weezl-0.1.12 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-util-0.1.11 \
+		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		windows-link-0.2.1 \
+		windows-sys-0.61.2 \
+		xmlwriter-0.1.0 \
+		zerocopy-0.8.33 \
+		zerocopy-derive-0.8.33 \
+		zmij-1.0.16 \
+		zune-core-0.5.1 \
+		zune-jpeg-0.5.11
diff --git a/graphics/mmdr/distinfo b/graphics/mmdr/distinfo
new file mode 100644
index 000000000000..d92224d1f7f7
--- /dev/null
+++ b/graphics/mmdr/distinfo
@@ -0,0 +1,287 @@
+TIMESTAMP = 1774605391
+SHA256 (rust/crates/adler2-2.0.1.crate) = 320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa
+SIZE (rust/crates/adler2-2.0.1.crate) = 13366
+SHA256 (rust/crates/aho-corasick-1.1.4.crate) = ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301
+SIZE (rust/crates/aho-corasick-1.1.4.crate) = 184015
+SHA256 (rust/crates/alloca-0.4.0.crate) = e5a7d05ea6aea7e9e64d25b9156ba2fee3fdd659e34e41063cd2fc7cd020d7f4
+SIZE (rust/crates/alloca-0.4.0.crate) = 4257
+SHA256 (rust/crates/anes-0.1.6.crate) = 4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299
+SIZE (rust/crates/anes-0.1.6.crate) = 23857
+SHA256 (rust/crates/anstream-0.6.21.crate) = 43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a
+SIZE (rust/crates/anstream-0.6.21.crate) = 29516
+SHA256 (rust/crates/anstyle-1.0.13.crate) = 5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78
+SIZE (rust/crates/anstyle-1.0.13.crate) = 17651
+SHA256 (rust/crates/anstyle-parse-0.2.7.crate) = 4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2
+SIZE (rust/crates/anstyle-parse-0.2.7.crate) = 21707
+SHA256 (rust/crates/anstyle-query-1.1.5.crate) = 40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc
+SIZE (rust/crates/anstyle-query-1.1.5.crate) = 10264
+SHA256 (rust/crates/anstyle-wincon-3.0.11.crate) = 291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d
+SIZE (rust/crates/anstyle-wincon-3.0.11.crate) = 12638
+SHA256 (rust/crates/anyhow-1.0.101.crate) = 5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea
+SIZE (rust/crates/anyhow-1.0.101.crate) = 52315
+SHA256 (rust/crates/arrayref-0.3.9.crate) = 76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb
+SIZE (rust/crates/arrayref-0.3.9.crate) = 9186
+SHA256 (rust/crates/arrayvec-0.7.6.crate) = 7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50
+SIZE (rust/crates/arrayvec-0.7.6.crate) = 31237
+SHA256 (rust/crates/autocfg-1.5.0.crate) = c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8
+SIZE (rust/crates/autocfg-1.5.0.crate) = 18729
+SHA256 (rust/crates/base64-0.22.1.crate) = 72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6
+SIZE (rust/crates/base64-0.22.1.crate) = 81597
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bitflags-2.10.0.crate) = 812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3
+SIZE (rust/crates/bitflags-2.10.0.crate) = 48427
+SHA256 (rust/crates/bumpalo-3.19.1.crate) = 5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510
+SIZE (rust/crates/bumpalo-3.19.1.crate) = 96477
+SHA256 (rust/crates/bytemuck-1.24.0.crate) = 1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4
+SIZE (rust/crates/bytemuck-1.24.0.crate) = 53243
+SHA256 (rust/crates/byteorder-lite-0.1.0.crate) = 8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495
+SIZE (rust/crates/byteorder-lite-0.1.0.crate) = 15909
+SHA256 (rust/crates/cast-0.3.0.crate) = 37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5
+SIZE (rust/crates/cast-0.3.0.crate) = 11452
+SHA256 (rust/crates/cc-1.2.54.crate) = 6354c81bbfd62d9cfa9cb3c773c2b7b2a3a482d569de977fd0e961f6e7c00583
+SIZE (rust/crates/cc-1.2.54.crate) = 93609
+SHA256 (rust/crates/cfg-if-1.0.4.crate) = 9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801
+SIZE (rust/crates/cfg-if-1.0.4.crate) = 9360
+SHA256 (rust/crates/ciborium-0.2.2.crate) = 42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e
+SIZE (rust/crates/ciborium-0.2.2.crate) = 35611
+SHA256 (rust/crates/ciborium-io-0.2.2.crate) = 05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757
+SIZE (rust/crates/ciborium-io-0.2.2.crate) = 6697
+SHA256 (rust/crates/ciborium-ll-0.2.2.crate) = 57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9
+SIZE (rust/crates/ciborium-ll-0.2.2.crate) = 14695
+SHA256 (rust/crates/clap-4.5.57.crate) = 6899ea499e3fb9305a65d5ebf6e3d2248c5fab291f300ad0a704fbe142eae31a
+SIZE (rust/crates/clap-4.5.57.crate) = 61999
+SHA256 (rust/crates/clap_builder-4.5.57.crate) = 7b12c8b680195a62a8364d16b8447b01b6c2c8f9aaf68bee653be34d4245e238
+SIZE (rust/crates/clap_builder-4.5.57.crate) = 170948
+SHA256 (rust/crates/clap_derive-4.5.55.crate) = a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5
+SIZE (rust/crates/clap_derive-4.5.55.crate) = 33502
+SHA256 (rust/crates/clap_lex-0.7.7.crate) = c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32
+SIZE (rust/crates/clap_lex-0.7.7.crate) = 13474
+SHA256 (rust/crates/color_quant-1.1.0.crate) = 3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b
+SIZE (rust/crates/color_quant-1.1.0.crate) = 6649
+SHA256 (rust/crates/colorchoice-1.0.4.crate) = b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75
+SIZE (rust/crates/colorchoice-1.0.4.crate) = 8196
+SHA256 (rust/crates/core_maths-0.1.1.crate) = 77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30
+SIZE (rust/crates/core_maths-0.1.1.crate) = 6528
+SHA256 (rust/crates/crc32fast-1.5.0.crate) = 9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511
+SIZE (rust/crates/crc32fast-1.5.0.crate) = 40723
+SHA256 (rust/crates/criterion-0.8.1.crate) = 4d883447757bb0ee46f233e9dc22eb84d93a9508c9b868687b274fc431d886bf
+SIZE (rust/crates/criterion-0.8.1.crate) = 122380
+SHA256 (rust/crates/criterion-plot-0.8.1.crate) = ed943f81ea2faa8dcecbbfa50164acf95d555afec96a27871663b300e387b2e4
+SIZE (rust/crates/criterion-plot-0.8.1.crate) = 24771
+SHA256 (rust/crates/crossbeam-deque-0.8.6.crate) = 9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51
+SIZE (rust/crates/crossbeam-deque-0.8.6.crate) = 22471
+SHA256 (rust/crates/crossbeam-epoch-0.9.18.crate) = 5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e
+SIZE (rust/crates/crossbeam-epoch-0.9.18.crate) = 46875
+SHA256 (rust/crates/crossbeam-utils-0.8.21.crate) = d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28
+SIZE (rust/crates/crossbeam-utils-0.8.21.crate) = 42691
+SHA256 (rust/crates/crunchy-0.2.4.crate) = 460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5
+SIZE (rust/crates/crunchy-0.2.4.crate) = 3887
+SHA256 (rust/crates/data-url-0.3.2.crate) = be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376
+SIZE (rust/crates/data-url-0.3.2.crate) = 23862
+SHA256 (rust/crates/either-1.15.0.crate) = 48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719
+SIZE (rust/crates/either-1.15.0.crate) = 20114
+SHA256 (rust/crates/euclid-0.22.13.crate) = df61bf483e837f88d5c2291dcf55c67be7e676b3a51acc48db3a7b163b91ed63
+SIZE (rust/crates/euclid-0.22.13.crate) = 86172
+SHA256 (rust/crates/fdeflate-0.3.7.crate) = 1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c
+SIZE (rust/crates/fdeflate-0.3.7.crate) = 27188
+SHA256 (rust/crates/find-msvc-tools-0.1.8.crate) = 8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db
+SIZE (rust/crates/find-msvc-tools-0.1.8.crate) = 31151
+SHA256 (rust/crates/flate2-1.1.8.crate) = b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369
+SIZE (rust/crates/flate2-1.1.8.crate) = 80972
+SHA256 (rust/crates/float-cmp-0.9.0.crate) = 98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4
+SIZE (rust/crates/float-cmp-0.9.0.crate) = 10102
+SHA256 (rust/crates/fontconfig-parser-0.5.8.crate) = bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646
+SIZE (rust/crates/fontconfig-parser-0.5.8.crate) = 40928
+SHA256 (rust/crates/fontdb-0.23.0.crate) = 457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905
+SIZE (rust/crates/fontdb-0.23.0.crate) = 108324
+SHA256 (rust/crates/gif-0.14.1.crate) = f5df2ba84018d80c213569363bdcd0c64e6933c67fe4c1d60ecf822971a3c35e
+SIZE (rust/crates/gif-0.14.1.crate) = 38581
+SHA256 (rust/crates/half-2.7.1.crate) = 6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b
+SIZE (rust/crates/half-2.7.1.crate) = 61040
+SHA256 (rust/crates/heck-0.5.0.crate) = 2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea
+SIZE (rust/crates/heck-0.5.0.crate) = 11517
+SHA256 (rust/crates/image-webp-0.2.4.crate) = 525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3
+SIZE (rust/crates/image-webp-0.2.4.crate) = 68478
+SHA256 (rust/crates/imagesize-0.14.0.crate) = 09e54e57b4c48b40f7aec75635392b12b3421fa26fe8b4332e63138ed278459c
+SIZE (rust/crates/imagesize-0.14.0.crate) = 22706
+SHA256 (rust/crates/is_terminal_polyfill-1.70.2.crate) = a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695
+SIZE (rust/crates/is_terminal_polyfill-1.70.2.crate) = 7548
+SHA256 (rust/crates/itertools-0.13.0.crate) = 413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186
+SIZE (rust/crates/itertools-0.13.0.crate) = 146261
+SHA256 (rust/crates/itoa-1.0.17.crate) = 92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2
+SIZE (rust/crates/itoa-1.0.17.crate) = 15905
+SHA256 (rust/crates/js-sys-0.3.85.crate) = 8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3
+SIZE (rust/crates/js-sys-0.3.85.crate) = 56436
+SHA256 (rust/crates/json5-1.3.1.crate) = 733a844dbd6fef128e98cb4487b887cb55454d92cd9994b1bafe004fabbe670c
+SIZE (rust/crates/json5-1.3.1.crate) = 77885
+SHA256 (rust/crates/kurbo-0.13.0.crate) = 7564e90fe3c0d5771e1f0bc95322b21baaeaa0d9213fa6a0b61c99f8b17b3bfb
+SIZE (rust/crates/kurbo-0.13.0.crate) = 155425
+SHA256 (rust/crates/libc-0.2.180.crate) = bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc
+SIZE (rust/crates/libc-0.2.180.crate) = 812207
+SHA256 (rust/crates/libm-0.2.15.crate) = f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de
+SIZE (rust/crates/libm-0.2.15.crate) = 156108
+SHA256 (rust/crates/log-0.4.29.crate) = 5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897
+SIZE (rust/crates/log-0.4.29.crate) = 51515
+SHA256 (rust/crates/memchr-2.7.6.crate) = f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273
+SIZE (rust/crates/memchr-2.7.6.crate) = 97616
+SHA256 (rust/crates/memmap2-0.9.9.crate) = 744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490
+SIZE (rust/crates/memmap2-0.9.9.crate) = 34576
+SHA256 (rust/crates/miniz_oxide-0.8.9.crate) = 1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316
+SIZE (rust/crates/miniz_oxide-0.8.9.crate) = 67132
+SHA256 (rust/crates/num-traits-0.2.19.crate) = 071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841
+SIZE (rust/crates/num-traits-0.2.19.crate) = 51631
+SHA256 (rust/crates/once_cell-1.21.3.crate) = 42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d
+SIZE (rust/crates/once_cell-1.21.3.crate) = 34534
+SHA256 (rust/crates/once_cell_polyfill-1.70.2.crate) = 384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe
+SIZE (rust/crates/once_cell_polyfill-1.70.2.crate) = 7448
+SHA256 (rust/crates/oorandom-11.1.5.crate) = d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e
+SIZE (rust/crates/oorandom-11.1.5.crate) = 23750
+SHA256 (rust/crates/page_size-0.6.0.crate) = 30d5b2194ed13191c1999ae0704b7839fb18384fa22e49b57eeaa97d79ce40da
+SIZE (rust/crates/page_size-0.6.0.crate) = 8479
+SHA256 (rust/crates/pico-args-0.5.0.crate) = 5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315
+SIZE (rust/crates/pico-args-0.5.0.crate) = 11545
+SHA256 (rust/crates/plotters-0.3.7.crate) = 5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747
+SIZE (rust/crates/plotters-0.3.7.crate) = 149031
+SHA256 (rust/crates/plotters-backend-0.3.7.crate) = df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a
+SIZE (rust/crates/plotters-backend-0.3.7.crate) = 13709
+SHA256 (rust/crates/plotters-svg-0.3.7.crate) = 51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670
+SIZE (rust/crates/plotters-svg-0.3.7.crate) = 6715
+SHA256 (rust/crates/png-0.17.16.crate) = 82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526
+SIZE (rust/crates/png-0.17.16.crate) = 117975
+SHA256 (rust/crates/proc-macro2-1.0.106.crate) = 8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934
+SIZE (rust/crates/proc-macro2-1.0.106.crate) = 59765
+SHA256 (rust/crates/quick-error-2.0.1.crate) = a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3
+SIZE (rust/crates/quick-error-2.0.1.crate) = 14265
+SHA256 (rust/crates/quote-1.0.43.crate) = dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a
+SIZE (rust/crates/quote-1.0.43.crate) = 31587
+SHA256 (rust/crates/rayon-1.11.0.crate) = 368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f
+SIZE (rust/crates/rayon-1.11.0.crate) = 182470
+SHA256 (rust/crates/rayon-core-1.13.0.crate) = 22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91
+SIZE (rust/crates/rayon-core-1.13.0.crate) = 73151
+SHA256 (rust/crates/regex-1.12.2.crate) = 843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4
+SIZE (rust/crates/regex-1.12.2.crate) = 163843
+SHA256 (rust/crates/regex-automata-0.4.13.crate) = 5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c
+SIZE (rust/crates/regex-automata-0.4.13.crate) = 625250
+SHA256 (rust/crates/regex-syntax-0.8.8.crate) = 7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58
+SIZE (rust/crates/regex-syntax-0.8.8.crate) = 359141
+SHA256 (rust/crates/resvg-0.46.0.crate) = b563218631706d614e23059436526d005b50ab5f2d506b55a17eb65c5eb83419
+SIZE (rust/crates/resvg-0.46.0.crate) = 78448
+SHA256 (rust/crates/rgb-0.8.52.crate) = 0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce
+SIZE (rust/crates/rgb-0.8.52.crate) = 22449
+SHA256 (rust/crates/roxmltree-0.20.0.crate) = 6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97
+SIZE (rust/crates/roxmltree-0.20.0.crate) = 54594
+SHA256 (rust/crates/roxmltree-0.21.1.crate) = f1964b10c76125c36f8afe190065a4bf9a87bf324842c05701330bba9f1cacbb
+SIZE (rust/crates/roxmltree-0.21.1.crate) = 56837
+SHA256 (rust/crates/rustversion-1.0.22.crate) = b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d
+SIZE (rust/crates/rustversion-1.0.22.crate) = 21096
+SHA256 (rust/crates/rustybuzz-0.20.1.crate) = fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702
+SIZE (rust/crates/rustybuzz-0.20.1.crate) = 272721
+SHA256 (rust/crates/same-file-1.0.6.crate) = 93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502
+SIZE (rust/crates/same-file-1.0.6.crate) = 10183
+SHA256 (rust/crates/serde-1.0.228.crate) = 9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e
+SIZE (rust/crates/serde-1.0.228.crate) = 83652
+SHA256 (rust/crates/serde_core-1.0.228.crate) = 41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad
+SIZE (rust/crates/serde_core-1.0.228.crate) = 63111
+SHA256 (rust/crates/serde_derive-1.0.228.crate) = d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79
+SIZE (rust/crates/serde_derive-1.0.228.crate) = 59605
+SHA256 (rust/crates/serde_json-1.0.149.crate) = 83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86
+SIZE (rust/crates/serde_json-1.0.149.crate) = 155994
+SHA256 (rust/crates/shlex-1.3.0.crate) = 0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64
+SIZE (rust/crates/shlex-1.3.0.crate) = 18713
+SHA256 (rust/crates/simd-adler32-0.3.8.crate) = e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2
+SIZE (rust/crates/simd-adler32-0.3.8.crate) = 17294
+SHA256 (rust/crates/simplecss-0.2.2.crate) = 7a9c6883ca9c3c7c90e888de77b7a5c849c779d25d74a1269b0218b14e8b136c
+SIZE (rust/crates/simplecss-0.2.2.crate) = 22136
+SHA256 (rust/crates/siphasher-1.0.1.crate) = 56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d
+SIZE (rust/crates/siphasher-1.0.1.crate) = 10351
+SHA256 (rust/crates/slotmap-1.1.1.crate) = bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038
+SIZE (rust/crates/slotmap-1.1.1.crate) = 61862
+SHA256 (rust/crates/smallvec-1.15.1.crate) = 67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03
+SIZE (rust/crates/smallvec-1.15.1.crate) = 38116
+SHA256 (rust/crates/strict-num-0.1.1.crate) = 6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731
+SIZE (rust/crates/strict-num-0.1.1.crate) = 5104
+SHA256 (rust/crates/strsim-0.11.1.crate) = 7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f
+SIZE (rust/crates/strsim-0.11.1.crate) = 14266
+SHA256 (rust/crates/svgtypes-0.16.1.crate) = 695b5790b3131dafa99b3bbfd25a216edb3d216dad9ca208d4657bfb8f2abc3d
+SIZE (rust/crates/svgtypes-0.16.1.crate) = 45181
+SHA256 (rust/crates/syn-2.0.114.crate) = d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a
+SIZE (rust/crates/syn-2.0.114.crate) = 304636
+SHA256 (rust/crates/thiserror-2.0.18.crate) = 4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4
+SIZE (rust/crates/thiserror-2.0.18.crate) = 28875
+SHA256 (rust/crates/thiserror-impl-2.0.18.crate) = ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5
+SIZE (rust/crates/thiserror-impl-2.0.18.crate) = 21413
+SHA256 (rust/crates/tiny-skia-0.11.4.crate) = 83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab
+SIZE (rust/crates/tiny-skia-0.11.4.crate) = 201082
+SHA256 (rust/crates/tiny-skia-path-0.11.4.crate) = 9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93
+SIZE (rust/crates/tiny-skia-path-0.11.4.crate) = 47764
+SHA256 (rust/crates/tinytemplate-1.2.1.crate) = be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc
+SIZE (rust/crates/tinytemplate-1.2.1.crate) = 26490
+SHA256 (rust/crates/tinyvec-1.10.0.crate) = bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa
+SIZE (rust/crates/tinyvec-1.10.0.crate) = 51996
+SHA256 (rust/crates/tinyvec_macros-0.1.1.crate) = 1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20
+SIZE (rust/crates/tinyvec_macros-0.1.1.crate) = 5865
+SHA256 (rust/crates/ttf-parser-0.25.1.crate) = d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31
+SIZE (rust/crates/ttf-parser-0.25.1.crate) = 201121
+SHA256 (rust/crates/ucd-trie-0.1.7.crate) = 2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971
+SIZE (rust/crates/ucd-trie-0.1.7.crate) = 46795
+SHA256 (rust/crates/unicode-bidi-0.3.18.crate) = 5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5
+SIZE (rust/crates/unicode-bidi-0.3.18.crate) = 58300
+SHA256 (rust/crates/unicode-bidi-mirroring-0.4.0.crate) = 5dfa6e8c60bb66d49db113e0125ee8711b7647b5579dc7f5f19c42357ed039fe
+SIZE (rust/crates/unicode-bidi-mirroring-0.4.0.crate) = 8169
+SHA256 (rust/crates/unicode-ccc-0.4.0.crate) = ce61d488bcdc9bc8b5d1772c404828b17fc481c0a582b5581e95fb233aef503e
+SIZE (rust/crates/unicode-ccc-0.4.0.crate) = 8942
+SHA256 (rust/crates/unicode-ident-1.0.22.crate) = 9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5
+SIZE (rust/crates/unicode-ident-1.0.22.crate) = 47919
+SHA256 (rust/crates/unicode-properties-0.1.4.crate) = 7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d
+SIZE (rust/crates/unicode-properties-0.1.4.crate) = 42752
+SHA256 (rust/crates/unicode-script-0.5.8.crate) = 383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee
+SIZE (rust/crates/unicode-script-0.5.8.crate) = 48253
+SHA256 (rust/crates/unicode-vo-0.1.0.crate) = b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94
+SIZE (rust/crates/unicode-vo-0.1.0.crate) = 8084
+SHA256 (rust/crates/usvg-0.46.0.crate) = e419dff010bb12512b0ae9e3d2f318dfbdf0167fde7eb05465134d4e8756076f
+SIZE (rust/crates/usvg-0.46.0.crate) = 138829
+SHA256 (rust/crates/utf8parse-0.2.2.crate) = 06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821
+SIZE (rust/crates/utf8parse-0.2.2.crate) = 13499
+SHA256 (rust/crates/version_check-0.9.5.crate) = 0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a
+SIZE (rust/crates/version_check-0.9.5.crate) = 15554
+SHA256 (rust/crates/walkdir-2.5.0.crate) = 29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b
+SIZE (rust/crates/walkdir-2.5.0.crate) = 23951
+SHA256 (rust/crates/wasm-bindgen-0.2.108.crate) = 64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566
+SIZE (rust/crates/wasm-bindgen-0.2.108.crate) = 49120
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.108.crate) = 008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608
+SIZE (rust/crates/wasm-bindgen-macro-0.2.108.crate) = 9283
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.108.crate) = 5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.108.crate) = 49855
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.108.crate) = 1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12
+SIZE (rust/crates/wasm-bindgen-shared-0.2.108.crate) = 10121
+SHA256 (rust/crates/web-sys-0.3.85.crate) = 312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598
+SIZE (rust/crates/web-sys-0.3.85.crate) = 645049
+SHA256 (rust/crates/weezl-0.1.12.crate) = a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88
+SIZE (rust/crates/weezl-0.1.12.crate) = 46045
+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-util-0.1.11.crate) = c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22
+SIZE (rust/crates/winapi-util-0.1.11.crate) = 13368
+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-link-0.2.1.crate) = f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5
+SIZE (rust/crates/windows-link-0.2.1.crate) = 6133
+SHA256 (rust/crates/windows-sys-0.61.2.crate) = ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc
+SIZE (rust/crates/windows-sys-0.61.2.crate) = 2517186
+SHA256 (rust/crates/xmlwriter-0.1.0.crate) = ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9
+SIZE (rust/crates/xmlwriter-0.1.0.crate) = 6261
+SHA256 (rust/crates/zerocopy-0.8.33.crate) = 668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd
+SIZE (rust/crates/zerocopy-0.8.33.crate) = 271917
+SHA256 (rust/crates/zerocopy-derive-0.8.33.crate) = 2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1
+SIZE (rust/crates/zerocopy-derive-0.8.33.crate) = 100877
+SHA256 (rust/crates/zmij-1.0.16.crate) = dfcd145825aace48cff44a8844de64bf75feec3080e0aa5cdbde72961ae51a65
+SIZE (rust/crates/zmij-1.0.16.crate) = 24649
+SHA256 (rust/crates/zune-core-0.5.1.crate) = cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9
+SIZE (rust/crates/zune-core-0.5.1.crate) = 27883
+SHA256 (rust/crates/zune-jpeg-0.5.11.crate) = 2959ca473aae96a14ecedf501d20b3608d2825ba280d5adb57d651721885b0c2
+SIZE (rust/crates/zune-jpeg-0.5.11.crate) = 85683
+SHA256 (1jehuang-mermaid-rs-renderer-v0.2.1_GH0.tar.gz) = 14a57bdb7ffc6be9eeb875db25b1f8071327d9e37e4c23832bf73e07c27dd718
+SIZE (1jehuang-mermaid-rs-renderer-v0.2.1_GH0.tar.gz) = 12984287
diff --git a/graphics/mmdr/pkg-descr b/graphics/mmdr/pkg-descr
new file mode 100644
index 000000000000..3e0e892d2b2b
--- /dev/null
+++ b/graphics/mmdr/pkg-descr
@@ -0,0 +1,4 @@
+Mmdr is a fast native Rust Mermaid diagram renderer. No browser required. Mmdr
+renders diagrams 100–1400x faster than mermaid-cli by eliminating browser
+overhead. With the built-in font cache (warm after first run), tiny diagrams
+reach 500–900x (and --fastText exceeds 1600x).


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69c6595a.33619.8d4ae63>