<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>持续集成 &#8211; mylogs.cn</title>
	<atom:link href="https://mylogs.cn/tag/%e6%8c%81%e7%bb%ad%e9%9b%86%e6%88%90/feed/" rel="self" type="application/rss+xml" />
	<link>https://mylogs.cn</link>
	<description>发现、记录、分享</description>
	<lastBuildDate>Sun, 02 Aug 2026 20:28:59 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>macOS 程序跑在 Linux 上：CI 账单能省一大截</title>
		<link>https://mylogs.cn/macos-%e7%a8%8b%e5%ba%8f%e8%b7%91%e5%9c%a8-linux-%e4%b8%8a%ef%bc%9aci-%e8%b4%a6%e5%8d%95%e8%83%bd%e7%9c%81%e4%b8%80%e5%a4%a7%e6%88%aa/</link>
					<comments>https://mylogs.cn/macos-%e7%a8%8b%e5%ba%8f%e8%b7%91%e5%9c%a8-linux-%e4%b8%8a%ef%bc%9aci-%e8%b4%a6%e5%8d%95%e8%83%bd%e7%9c%81%e4%b8%80%e5%a4%a7%e6%88%aa/#respond</comments>
		
		<dc:creator><![CDATA[steve, zhang]]></dc:creator>
		<pubDate>Sun, 02 Aug 2026 20:28:45 +0000</pubDate>
				<category><![CDATA[科技]]></category>
		<category><![CDATA[Kakehashi]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[开源工具]]></category>
		<category><![CDATA[持续集成]]></category>
		<category><![CDATA[转译层]]></category>
		<guid isPermaLink="false">https://mylogs.cn/macos-%e7%a8%8b%e5%ba%8f%e8%b7%91%e5%9c%a8-linux-%e4%b8%8a%ef%bc%9aci-%e8%b4%a6%e5%8d%95%e8%83%bd%e7%9c%81%e4%b8%80%e5%a4%a7%e6%88%aa/</guid>

					<description><![CDATA[macOS 程序跑在 Linux 上：CI 账单能省一大截]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">在 Linux 上运行 Windows 程序，有 Wine 这条走了三十年的老路。反过来的方向——让 macOS 的程序跑在 Linux 上——一直冷清得多。开源项目 Kakehashi 正是在做这件事，它近日出现在 Hacker News 的 Show HN 板块，目标写得很直白：用户态的 macOS ARM64 到 Linux aarch64 转译层，命令行优先，不做即时编译。</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a6fe784bb53a&quot;}" data-wp-interactive="core/image" data-wp-key="6a6fe784bb53a" class="wp-block-image size-large aligncenter wp-lightbox-container"><img fetchpriority="high" decoding="async" width="1200" height="600" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://mylogs.cn/wp-content/uploads/2026/08/4f3029cf63505337957e9e05231e9f7e_header.webp" alt="macOS 程序跑在 Linux 上：CI 账单能省一大截" class="wp-image-3333" style="max-width:100%;height:auto;" srcset="https://mylogs.cn/wp-content/uploads/2026/08/4f3029cf63505337957e9e05231e9f7e_header.webp 1200w, https://mylogs.cn/wp-content/uploads/2026/08/4f3029cf63505337957e9e05231e9f7e_header-300x150.webp 300w, https://mylogs.cn/wp-content/uploads/2026/08/4f3029cf63505337957e9e05231e9f7e_header-1024x512.webp 1024w, https://mylogs.cn/wp-content/uploads/2026/08/4f3029cf63505337957e9e05231e9f7e_header-768x384.webp 768w" sizes="(max-width: 1200px) 100vw, 1200px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">图片来源：GitHub / wie-project</figcaption></figure>





<h2 class="wp-block-heading">它到底做了什么</h2>



<p class="wp-block-paragraph">Kakehashi 的工作分三步：加载 Darwin 平台的 Mach-O 可执行文件，映射一份独立实现的 libSystem，再把程序发出的 BSD 系统调用翻译成 Linux 能听懂的形式。</p>



<p class="wp-block-paragraph">关键在于它不是指令模拟器。客户程序的机器码直接跑在 CPU 上——同为 ARM64 架构，本就不需要翻译指令。真正的开销集中在系统调用的边界上：线程本地存储切换、备用栈、NEON 寄存器的保存与恢复，以及运行时内部的分发。程序调用系统接口越频繁，代价越大。</p>



<p class="wp-block-paragraph">项目目前已经跑通的包括：7-Zip 的命令行版本 7zz（含 `-mmt=4` 多线程压缩这类正确性关卡）、curl 的 HTTP 与 HTTPS 请求，以及若干 clang 编译探针，验证环境为 Docker/Colima 容器与 UTM 虚拟机中的 Linux aarch64。</p>



<p class="wp-block-paragraph">它还借用了 Wine 的一个概念：bottle。这是一个模拟 macOS 目录结构的根目录，默认放在 `~/.local/share/kakehashi/bottle/`，里面按照 `/usr/local/bin`、`/usr/lib` 等真实路径摆放客户程序，而 `/Volumes/linux/` 则桥接到宿主机的文件系统，方便两边交换文件。</p>



<h2 class="wp-block-heading">慢 5 倍，为什么还有人用</h2>



<p class="wp-block-paragraph">项目文档里的性能数据给得相当坦诚。在 UTM 上的 Ubuntu aarch64 环境中，压缩一个约 8000 个文件、总计约 240MiB 的目录树：原生 Linux 版 7zz 用时约 22.5 秒，Darwin 版 7zz 在 Kakehashi 下用时约 118 秒，差距约 5.2 倍。文档同时说明，在文件数少、压缩计算密集的样本上，差距往往缩小到 1.1 至 1.2 倍——多文件场景下的巨大差距主要来自路径遍历和逐次系统调用的边界开销，而不是压缩算法本身出了问题。</p>



<p class="wp-block-paragraph">慢 5 倍还值得用，理由落在持续集成的账单上。项目直接引用了 GitHub Actions 托管运行器的超额计费费率：Linux 双核 arm64 每分钟 0.005 美元，Linux 双核 x64 每分钟 0.006 美元，而 macOS 3 至 4 核机型每分钟 0.062 美元，更大规格的 macOS 机型在 0.077 至 0.102 美元之间。</p>



<p class="wp-block-paragraph">也就是说，macOS 的分钟单价大约是 Linux arm64 的 10 到 12 倍。即便同样的活在 Linux arm64 上慢 5 倍，账面成本仍可能更低：5 分钟乘 0.005 美元约合 0.025 美元，对比 macOS 1 分钟的 0.062 美元。公共仓库的免费额度和自建 Linux 运行器会进一步放大这个差距，而托管的 macOS 资源本身还更容易排队等待。</p>



<p class="wp-block-paragraph">项目也划清了边界：涉及图形界面、代码签名与公证、Xcode 界面测试，或者任何不属于&#8221;纯命令行 Darwin 程序&#8221;的工作负载，macOS 运行器依然不可替代。</p>



<h2 class="wp-block-heading">还很早期</h2>



<p class="wp-block-paragraph">Kakehashi 用 Rust 编写，通过 `cargo install kakehashi` 安装，实机运行需要 Linux aarch64 环境；而静态检查命令 `kh inspect` 和只加载不执行的 `kh run &#8211;dry-load` 在包括 macOS 在内的任意平台都能用。项目要求较新的 Rust 工具链，并同时兼容 4KiB 与 16KiB 两种内存页大小，后者对应 Asahi Linux 那类在苹果芯片上直接运行的系统。</p>



<p class="wp-block-paragraph">作者对完成度毫不含糊，专门列出一节&#8221;尚不构成产品承诺&#8221;：完整的 curl 功能集（POST 请求体、代理、端到端 HTTP/3、全部协议）、真正的苹果 Security 框架、git 与命令行开发工具、图形界面和代码签名，目前都还不支持。下一个计划中的能力是通过 `kh install xcode-tools` 支持 git。持续集成里跑的是单元测试、冒烟测试和多线程压缩的正确性关卡，而不是和原生性能比拼耗时。</p>



<p class="wp-block-paragraph">截至文章抓取时，该项目在 GitHub 上获得 82 颗星，仓库累计 68 次提交，仍处于典型的早期实验阶段。但它给出的思路值得关注：把苹果生态里的命令行构建环节挪到便宜得多的 Linux ARM 机器上，用可接受的速度损失换取真金白银的成本下降——对于持续集成资源紧张的团队，这笔账未必不划算。</p>



<p class="wp-block-paragraph">来源：GitHub 项目 wie-project/kakehashi 官方说明文档，经 Hacker News Show HN 板块转载讨论</p>

]]></content:encoded>
					
					<wfw:commentRss>https://mylogs.cn/macos-%e7%a8%8b%e5%ba%8f%e8%b7%91%e5%9c%a8-linux-%e4%b8%8a%ef%bc%9aci-%e8%b4%a6%e5%8d%95%e8%83%bd%e7%9c%81%e4%b8%80%e5%a4%a7%e6%88%aa/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
