openssl@3 to openssl@4 migration tracking
Staging branch process
This migration is now being run through the openssl-4-migration-staging branch. New migration PRs should target that branch and use branches in Homebrew/homebrew-core rather than forks.
Work root-first, then trace down the dependent tree. This avoids the mixed openssl@3 / openssl@4 linkage seen when leaf formulae are migrated directly against main. Use brew deps --tree --include-build <formula> / brew deps --graph --dot --include-build <formula> to order follow-up work.
For staging PRs:
- use the labels
openssl-4-migration, staging-branch-pr, and CI-skip-recursive-dependents
- skip routine local brew ops; staging CI is the validation path for this migration
- keep independent formulae split for quick review/merge
- group formulae only when they are small to build and tightly coupled
Current root pipeline PR map
Depth 0 roots / prerequisites
Depth 1 dependents
Depth 2 dependents
Depth 3 dependents
614 formulae depend on openssl@3 (including => :build / => :test deps).
Grouped by dependent count, then by build system. Migrate leaves first. If they break, blast radius is limited.
See OpenSSL 4.0 release notes for breaking changes. Common failure modes:
- C/C++:
ASN1_STRING is now opaque; X509 getters now return const pointers.
- Rust:
openssl-sys v0.10.78 (released 2026-04-19) is the first release supporting OpenSSL 4.
- Some formulae declare
depends_on "openssl@3" but do not actually link it. Verify if we can drop the dependency rather than migrate.
Leaves (0 dependents) (444)
Rust (98)
Go (5)
C/C++ (CMake) (104)
C/C++ (autotools) (147)
Other (90)
1 dependent (58)
Go (1)
C/C++ (CMake) (23)
C/C++ (autotools) (23)
Other (11)
2–5 dependents (67)
Rust (1)
C/C++ (CMake) (18)
C/C++ (autotools) (34)
Other (14)
6+ dependents (45)
Rust (4)
C/C++ (CMake) (9)
C/C++ (autotools) (28)
Other (4)
openssl@3toopenssl@4migration trackingStaging branch process
This migration is now being run through the
openssl-4-migration-stagingbranch. New migration PRs should target that branch and use branches inHomebrew/homebrew-corerather than forks.Work root-first, then trace down the dependent tree. This avoids the mixed
openssl@3/openssl@4linkage seen when leaf formulae are migrated directly againstmain. Usebrew deps --tree --include-build <formula>/brew deps --graph --dot --include-build <formula>to order follow-up work.For staging PRs:
openssl-4-migration,staging-branch-pr, andCI-skip-recursive-dependentsCurrent root pipeline PR map
Depth 0 roots / prerequisites
cmakecmake: migrate to openssl@4 #280820apr-utilapr-util: migrate to openssl@4 #280827asioasio: migrate to openssl@4 #280828dotnetdotnet: migrate to openssl@4 #280829erlangerlang: migrate to openssl@4 #280830freetdsfreetds: migrate to openssl@4 #280831grpcgrpc: migrate to openssl@4 #280832hiredishiredis: migrate to openssl@4 #280833krb5krb5: migrate to openssl@4 #280834libeventlibevent: migrate to openssl@4 #280835libfido2libfido2: migrate to openssl@4 #280836librdkafkalibrdkafka: migrate to openssl@4 #280837libsshlibssh: migrate to openssl@4 #280838libssh2libssh2: use openssl@4 #278658 (existing open PR)mariadb-connector-cmariadb-connector-c: migrate to openssl@4 #280839openldapopenldap: migrate to openssl@4 #280840opusfileopusfile: migrate to openssl@4 #280841python@3.11python@3.11: migrate to openssl@4 #280843python@3.12python@3.12: migrate to openssl@4 #280844python@3.13python@3.13: migrate to openssl@4 #280845python@3.14python@3.14: migrate to openssl@4 #280846srtsrt: migrate to openssl@4 #280847tcl-tktcl-tk: migrate to openssl@4 #280848tcl-tk@8tcl-tk@8: migrate to openssl@4 #280849wgetwget: migrate to openssl@4 #280850Depth 1 dependents
apache-arrowapache-arrow: migrate to openssl@4 #280851bindbind: migrate to openssl@4 #280852curlcurl: migrate to openssl@4 #280853ffmpegffmpeg: migrate to openssl@4 #280854follyfolly: migrate to openssl@4 #280855httpdhttpd: migrate to openssl@4 #280856libpqlibpq: migrate to openssl@4 #280857nodenode: migrate to openssl@4 #280858postgresql@17postgresql@17: migrate to openssl@4 #280859postgresql@18postgresql@18: migrate to openssl@4 #280860pulseaudiopulseaudio: migrate to openssl@4 #280861qtbaseqtbase: migrate to openssl@4 #280862rustrust: migrate to openssl@4 #280863systemdsystemd: migrate to openssl@4 #280864unboundunbound: migrate to openssl@4 #280865Depth 2 dependents
cargo-ccargo-c: migrate to openssl@4 #280867cryptographycryptography: migrate to openssl@4 #280868gdalgdal: migrate to openssl@4 #280870phpphp: migrate to openssl@4 #280871rubyruby: migrate to openssl@4 #280872Depth 3 dependents
gstreamergstreamer: migrate to openssl@4 #280873614 formulae depend on
openssl@3(including=> :build/=> :testdeps).Grouped by dependent count, then by build system. Migrate leaves first. If they break, blast radius is limited.
See OpenSSL 4.0 release notes for breaking changes. Common failure modes:
ASN1_STRINGis now opaque; X509 getters now returnconstpointers.openssl-sys v0.10.78(released 2026-04-19) is the first release supporting OpenSSL 4.depends_on "openssl@3"but do not actually link it. Verify if we can drop the dependency rather than migrate.Leaves (0 dependents) (444)
Rust (98)
ansible@10ansible@9aoeaoe: use openssl@4 #281020azure-clibbotanchoranchor: removeopenssl@3dependency #278367btclic2patoolc2patool: migrate toopenssl@4#282112cargo-crevcargo-geigercargo-instrumentscargo-instruments: migrate toopenssl@4#282402cargo-udepsclamavcodannacode-clicode-cli: migrate toopenssl@4#282525code2promptcodeberg-clicodex-acpcodex-acp: migrate toopenssl@4#282533condurecookclicookcli: remove openssl dependency #280274crunchy-clidatadog-static-analyzerdurausesopenssl-sys 0.9.72eurekafeludaferoxbusterfindomainforgejo-clifwgerustgit-seriesgit-trimgit-workspacegit-xetgitloguegitnrgittypegituigurkicann-rdapicann-rdap: migrate toopenssl@4#282665icp-cliicp-cli: migrate toopenssl@4#282802intelli-shellironclawkeeper-commanderlakekeeperleetcode-clilegbalocalstacklycheemagikamavsdkmelinetdatanushellpaypdflypdnsrecpgrxpkgxpkgx: migrate toopenssl@4#282586projectableprowlerproxelarproxelar: migrate toopenssl@4#282582prrpushpinrattler-buildriverrojoroverruby@3.2ruby@3.3saplingscryer-prologsem-clisentry-clisequoia-chameleon-gnupgsequoia-sqsh4d0wupsheldonsigstoresilesniffnetsolanasprocketstellar-clitabiewtabiew: migrate toopenssl@4#282271tectonicteleporttermscptermusictext-embeddings-inferencetoml-bombadiltrunkwallywatchmanwatchman: migrate to openssl@4 #279297weaveyekyozefuzellijGo (5)
aws-sam-cligocryptfsgocryptfs: use openssl@4 #278464mender-artifactmender-artifact: use openssl@4 #278466mender-climender-cli: use openssl@4 #278465ttC/C++ (CMake) (104)
adios2amqp-cppamqp-cpp: migrate toopenssl@4#284020apibapib: deprecate by repo archived #280196awscurlazure-storage-cppbareos-clientbaresipbaresip libre: migrate toopenssl@4#280198bibtexconvbrpccafcaf: migrate toopenssl@4#280200cassandra-cpp-driverclickhouse-cppclickhouse-cpp: migrate toopenssl@4#280208clickhouse-odbcclipboardclipboard: migrate toopenssl@4#280215cnatscnats: use openssl@4 #281409colmapcppcmscsounddotnet@6dwarfsdxpyecflow-uiemqxencfsencfs: migrate toopenssl@4#280220etet: migrate toopenssl@4#280221ettercapfastnetmonfluent-bitfluent-bit: migrate toopenssl@4#280227freerdph2ohalidehttpinghttping: use openssl@4 #279099juliakcovlastpass-clilibcouchbaselibdpplibdpp: migrate toopenssl@4#280229libjwtliboqslibpulsarlibtinslibtins: migrate toopenssl@4#280230luvitmanticoresearchmapnikmariadbmariadb-connector-odbcmariadb@10.11mariadb@10.5mariadb@10.6mariadb@11.4mariadb@11.8moneromonetdb: migrate toopenssl@4#280652monetdbmongo-c-driver@1mosquittomusikcubemydumpermysql-client@8.0mysql-client@8.4mysql-connector-c++nemunmailntopngnzbgetopenikedopentelemetry-cpportportp: migrate toopenssl@4#280231osslsigncodepercona-server@8.0percona-xtrabackuppercona-xtrabackup@8.0pgbackrestpistachepodofoproxygenqcaqxmppreccretdecrizinrootrtagsrtl_433sagittarius-schemesagittarius-scheme: migrate toopenssl@4#280653sippsipp: use openssl@4 #279100snapcastsnapcast: use openssl@4 #279107snortssldumpstubbyswi-prologsynergy-coretarantooltdlibtdlib: migrate toopenssl@4#280655thors-anviltrafficserverunshieldunshield: migrate toopenssl@4#282543uuuwdcwdc: use openssl@4 #279102weaviate-cliwowneroxmrigyubico-piv-toolzeekzncC/C++ (autotools) (147)
activemq-cppalpineaqbankingaria2axelaxel: migrate toopenssl@4#284019bacula-fdbigloobitchxbitchx: migrate to OpenSSL 4 #282103btfsbtpdbtpd: migrate toopenssl@4#282107burpburp: migrate toopenssl@4#282400cadaverfmt 5.0.0 #28140cfenginecitusconservercoturncouchdbdillodillo: use openssl@4 #281414dnsdistdnsdist: use openssl@4 #281417dnsperfdovecotduo_unixdynomitedynomite: migrate toopenssl@4#282128ejabberdekg2epic5erlang@25erlang@27erlang@27: use openssl@4 #281658fetchmailffmpeg@2.8fossilfossil: use openssl@4 #281418freeradius-serverfreeswitchgambit-schemegcligcli: use openssl@4 #281420gerbil-schemeglooxgnupg-pkcs11-scdgotgsoapgtmessheimdalhttrackhttrack: use openssl@4 #279547hydraicecastike-scaniperf3iperf3: use openssl@4 #279551ipmitoolircd-hybridirciiisyncjohn-jumbolassoldapvilftplibcoaplibdaplibexosiplibfreefarelibmowglilibp11libpq@16libpq@17libu2f-serverlighttpdlinkslinks: use openssl@4 #279545lynxlynx: use openssl@4 #279546memtier_benchmarkmftermmidnight-commanderminimal-racketmonitmonitoring-pluginsmuttnagiosnagios: use openssl@4 #279105ncrackneomuttnghttp2ngircdnmhnopollnrpensdntpnutobjfwomniorbopenfortivpnopenfortivpn: use openssl@4 #279549openscopenvpnophcrackophcrack: migrate toopenssl@4#282611pam-u2fpassengerpdnspgbouncerphp@8.1php@8.2php@8.3pjprojectpkcs11-toolspostgresql@12postgresql@13postgresql@14postgresql@15postgresql@16pure-ftpdpwsafepwsafe: use openssl@4 #279003python-freethreadingredwax-toolrethinkdbrpki-clientruby@3.0ruby@3.1s3-backersblim-sfccscamperscamper: migrate toopenssl@4#282348scryptscrypt: migrate toopenssl@4#282346shairport-syncshellinaboxshellinabox: migrate toopenssl@4#282345shibboleth-spsiegesiege: migrate toopenssl@4#282344silksipsaksipsak: use openssl@4 #279580slowhttptestslowhttptest: migrate toopenssl@4#282341slrnslrn: migrate toopenssl@4#282340sngrepsngrep: migrate to OpenSSL 4, update license exception #282050snobol4snobol4: migrate toopenssl@4#282336snownewsspice-serversqlciphersqlcipher: use openssl@4 #279567squidsstp-clientstrongswanstunnelsylpheedsyslog-ngtcpdumptcpdump: migrate toopenssl@4#282259tcpflowtcpflow: use openssl@4 #279556tinctinc: migrate toopenssl@4#282251tomcat-nativeurweburweb: migrate toopenssl@4#282248varnishvirtuosox3270xaricxaric: migrate to OpenSSL 4 #282090yafczabbixzabbix: migrate toopenssl@4#282237Other (90)
aircrack-ngaircrack-ng: update 1.7_2 bottle. #284021amberargyll-cmsarturoborgbackupbozohttpdbozohttpd: use openssl@4 #279137chawancrystal-icrctpvctpv: migrate toopenssl@4#284746cvsynccvsync: migrate toopenssl@4#284745dmg2imgdmg2img: migrate toopenssl@4#284744dnsvizdrogoneasy-rsaeasy-rsa: use openssl@4 #279129edbrowseeflelectriceralchemyeximfastdfastd: migrate toopenssl@4#284742fb-clientfelinksflashromforbiddengetxbookgit-cryptgit-crypt: migrate toopenssl@4#284627gitversiongkrellmhaproxyhaproxy@2.8hashcashhashcash: use openssl@4 #279516hcxtoolshkhttp_loadi2pdimap-uwimapfilterios-webkit-debug-proxyirssijosejose: migrate toopenssl@4#284619keakeydbkorekore: migrate toopenssl@4#284622lanraragildidldid-procursusllgomailcatchermakepkgmegatoolsmin-langmonkeyspherenoirnvcheckeropenrtsppdfalyzerpgloaderpicorubyproxytunnelproxytunnel: migrate toopenssl@4#282581pulledporkpypy3.10pypy3.9rails-mcp-serverrakudo-starreadpereadpe: migrate toopenssl@4#282351redictredict: migrate toopenssl@4#282355redis@6.2redis@8.2bulk_extractor: migrate toopenssl@4#282399rpmspectools-nails2geometrysgrspipedspiped: migrate to OpenSSL 4 #282098sslscansslsplitswtpmteslamatetestssltestssl: use openssl@4 #278463tsducku-boot-toolsuftpuftp: use openssl@4 #279548uwsgivineyardvroomwebfswebfs: use openssl@4 #279093wrkwrk: use openssl@4 #278998x11vnclibvncserver x11vnc: migrate to OpenSSL 4 #282036xidelxidel: use openssl@4 #279557zchunkzsign1 dependent (58)
Go (1)
gensio(1 dependents)C/C++ (CMake) (23)
apt(1 dependents)azure-storage-common-cpp(1 dependents)dcmtk(1 dependents)gdcm(1 dependents)getdns(1 dependents)libff(1 dependents) libff: migrate to openssl@4 and fix test #278901libgit2@1.7(1 dependents)libmsquic(1 dependents)libpaho-mqtt(1 dependents)libre(1 dependents) libre: migrate toopenssl@4#282537libvncserver(1 dependents) libvncserver x11vnc: migrate to OpenSSL 4 #282036micromamba(1 dependents)mysql(1 dependents)mysql@8.0(1 dependents)mysql@8.4(1 dependents)nuraft(1 dependents)pdal(1 dependents)percona-server(1 dependents)poco(1 dependents)qpid-proton(1 dependents)signalwire-client-c(1 dependents)tiledb(1 dependents)xrootd(1 dependents)C/C++ (autotools) (23)
cups(1 dependents)erlang@24(1 dependents)gwenhywfar(1 dependents)httperf(1 dependents) httperf: use openssl@4 #279517jimtcl(1 dependents)liboauth(1 dependents) liboauth: use openssl@4 #279578libslax(1 dependents)libstrophe(1 dependents)libtorrent-rakshasa(1 dependents)md5sha1sum(1 dependents) md5sha1sum: use openssl@4 #279011memcached(1 dependents) memcached: use openssl@4 #281660nagios-plugins(1 dependents)nginx(1 dependents)node@18(1 dependents)node@20(1 dependents)oath-toolkit(1 dependents)opensaml(1 dependents)python@3.9(1 dependents)sleuthkit(1 dependents)sofia-sip(1 dependents)softhsm(1 dependents)thrift(1 dependents)yara(1 dependents)Other (11)
apache-serf(1 dependents)etcd-cpp-apiv3(1 dependents)karchive(1 dependents)kmod(1 dependents)libtpms(1 dependents)llama.cpp(1 dependents)mktorrent(1 dependents) mktorrent: use openssl@4 #279081pixiewps(1 dependents)redis(1 dependents)spice-gtk(1 dependents)zookeeper(1 dependents)2–5 dependents (67)
Rust (1)
ruby@3.4(2 dependents)C/C++ (CMake) (18)
awscli(3 dependents)azure-core-cpp(2 dependents)ccache(2 dependents) ccache: use openssl@4 #281406cpp-httplib(2 dependents) cpp-httplib: migrate to openssl@4 #278380cpprestsdk(3 dependents)davix(2 dependents)dotnet@8(2 dependents)dotnet@9(5 dependents)libks(2 dependents)libtorrent-rasterbar(2 dependents)libwebsockets(3 dependents)mongo-c-driver(4 dependents) mongo-c-driver: migrate toopenssl@4#281776mysql-client(3 dependents)qpdf(5 dependents) qpdf: use openssl@4 #281769rabbitmq-c(2 dependents)s2n(2 dependents) s2n: migrate toopenssl@4#280912ttyd(2 dependents)wabt(3 dependents)C/C++ (autotools) (34)
afflib(2 dependents) afflib: use openssl@4 #281209cyrus-sasl(2 dependents) cyrus-sasl: migrate toopenssl@4#280924erlang@26(2 dependents) erlang@26: use openssl@4 #281659gpac(2 dependents)ldns(4 dependents)libewf(2 dependents)libfixbuf(2 dependents)libimobiledevice(3 dependents)libngtcp2(4 dependents)libretls(3 dependents)libshout(4 dependents) libshout: migrate toopenssl@4#281400libtrace(2 dependents)libxmlsec1(3 dependents)neon(5 dependents)net-snmp(5 dependents) net-snmp: migrate toopenssl@4#281292nmap(3 dependents)node@22(5 dependents)node@24(3 dependents)openssh(2 dependents)php@8.4(2 dependents)pkcs11-helper(4 dependents)python@3.10(2 dependents) python@3.10: migrate toopenssl@4#281775riemann-client(2 dependents)rsync(4 dependents)samba(2 dependents)socat(5 dependents)srtp(2 dependents) srtp: migrate toopenssl@4#281396tarsnap(2 dependents)texlive(4 dependents)tor(3 dependents)w3m(5 dependents)xml-security-c(3 dependents)xml-tooling-c(2 dependents)xmlrpc-c(2 dependents)Other (14)
berkeley-db(3 dependents)crystal(5 dependents)fbthrift(3 dependents)fizz(5 dependents)mupdf(3 dependents)mvfst(5 dependents)node-build(2 dependents)pipewire(2 dependents)pyenv(4 dependents)pypy(2 dependents)rtmpdump(5 dependents) rtmpdump: migrate toopenssl@4#281398ruby-build(2 dependents)valkey(3 dependents)wangle(3 dependents)6+ dependents (45)
Rust (4)
cargo-c(10 dependents) cargo-c: migrate to openssl@4 #280867cryptography(110 dependents) cryptography: migrate to openssl@4 #280868gstreamer(12 dependents) gstreamer: migrate to openssl@4 #280873ruby(37 dependents) ruby: migrate to openssl@4 #280872C/C++ (CMake) (9)
apache-arrow(7 dependents) apache-arrow: migrate to openssl@4 #280851aws-c-cal(7 dependents) aws-c-cal: migrate toopenssl@4#280911dotnet(11 dependents) dotnet: migrate to openssl@4 #280829folly(9 dependents) folly: migrate to openssl@4 #280855gdal(9 dependents) gdal: migrate to openssl@4 #280870grpc(8 dependents) grpc: migrate to openssl@4 #280832libfido2(9 dependents) libfido2: migrate to openssl@4 #280836libgit2(36 dependents) libgit2: migrate toopenssl@4#280914libssh(14 dependents) libssh: migrate to openssl@4 #280838mariadb-connector-c(15 dependents) mariadb-connector-c: migrate to openssl@4 #280839srt(7 dependents) srt: migrate to openssl@4 #280847C/C++ (autotools) (28)
apr-util(15 dependents) apr-util: migrate to openssl@4 #280827asio(11 dependents) asio: migrate to openssl@4 #280828bind(11 dependents) bind: migrate to openssl@4 #280852curl(25 dependents) curl: migrate to openssl@4 #280853erlang(18 dependents) curl: migrate to openssl@4 #280853ffmpeg(75 dependents) ffmpeg: migrate to openssl@4 #280854freetds(7 dependents) freetds: migrate to openssl@4 #280831httpd(9 dependents) httpd: migrate to openssl@4 #280856krb5(22 dependents) krb5: migrate to openssl@4 #280834libevent(56 dependents) libevent: migrate to openssl@4 #280835libpq(51 dependents) libpq: migrate to openssl@4 #280857librdkafka(6 dependents) librdkafka: migrate to openssl@4 #280837libssh2(24 dependents) libssh2: use openssl@4 #278658node(337 dependents) node: migrate to openssl@4 #280858openldap(11 dependents) openldap: migrate to openssl@4 #280840opusfile(10 dependents) opusfile: migrate to openssl@4 #280841php(22 dependents) php: migrate to openssl@4 #280871postgresql@17(12 dependents) postgresql@17: migrate to openssl@4 #280859postgresql@18(22 dependents) postgresql@18: migrate to openssl@4 #280860python@3.11(6 dependents) python@3.11: migrate to openssl@4 #280843python@3.12(22 dependents) python@3.12: migrate to openssl@4 #280844python@3.13(38 dependents) python@3.13: migrate to openssl@4 #280845python@3.14(806 dependents) python@3.14: migrate to openssl@4 #280846rust(941 dependents) rust: migrate to openssl@4 #280863tcl-tk(19 dependents) tcl-tk: migrate to openssl@4 #280848tcl-tk@8(13 dependents) tcl-tk@8: migrate to openssl@4 #280849unbound(7 dependents) unbound: migrate to openssl@4 #280865wget(12 dependents) wget: migrate to openssl@4 #280850Other (4)
hiredis(7 dependents) hiredis: migrate to openssl@4 #280833pulseaudio(31 dependents) pulseaudio: migrate to openssl@4 #280861qtbase(108 dependents) qtbase: migrate to openssl@4 #280862systemd(69 dependents) systemd: migrate to openssl@4 #280864openssl@3#134251