本项目完全使用 Rust 的类型系统实现了一个 Lisp 解释器。通过利用 trait,它能够在编译期完成表达式求值。 **核心特性与限制:** * **编译期执行:** 表达式在编译阶段求值,结果通过类型级断言进行验证。 * **作用域与控制:** 支持全局和词法环境(通过 `let`)、递归函数,以及用于高级流程控制的 `call/ec`(逃逸续延)。 * **手动配置:** 必须使用 `defkey!` 宏显式声明符号。 * **局限性:** * **数值限制:** 整数限制在 [0, 8192] 范围内。虽然可以通过 `build.rs` 进行扩展,但这样做需要增加 Rust 的栈大小。 * **缺失功能:** 不支持 `defmacro` 或运行时 `eval` 功能。 * **实验性质:** 该系统尚未经过广泛测试。 简而言之,本项目通过在构建过程中使用 Rust 的 trait 系统来执行复杂的 Lisp 程序(如所提供的阶乘和续延示例),展示了 Rust 类型系统的图灵完备性。
跳至主要内容
更多简报
第一民族倡导支持由原住民领导的人工智能基础设施
保守党内部人士开始游说艾伯塔省的可再生能源项目
滑雪学校希望在艾伯塔省采用永久夏令时之前进行全民公投
荷兰投资巨头希望投资加拿大房地产
数据库
西海岸问责制
采购
默认公开
政治捐赠者
探索所有
文章
政治
游说
经济
气候
权力与影响
探索所有
关于
关于 IJF
团队
合作者
职业机会
联系我们
资源
商店
为我们撰稿
向我们爆料
我们的资助者
我们的支出
其他资源
政策
退货与退款
编辑政策
隐私政策
人工智能政策
服务条款
Cookie 偏好
订阅即可获取 IJF 屡获殊荣的新闻报道,直接发送至您的收件箱。
© 2026 调查新闻基金会 (Investigative Journalism Foundation)。保留所有权利。
以下是《现代 64 位 CPU 高效 C++ 编程》第四章的总结,重点介绍了常见操作在 CPU 周期上的性能成本:
* **算术运算:** 基本整数运算成本较低(1–2 个周期),但除法依然“极其昂贵”(10–28 个周期)。乘法成本适中(3–5 个周期)。
* **C++ 抽象:** 异常在不被触发时效率很高,但一旦触发则会消耗数千个周期。与虚函数调用相比,RTTI 和 `dynamic_cast` 的开销显著更高。
* **函数调用:** 直接调用成本约为 15–30 个周期,而间接/虚函数调用成本为 20–60 个周期。内联至关重要,它不仅能消除调用开销,还能启用更广泛的编译器优化,从而节省数十个周期。
* **并发:** 原子/CAS 操作在本地成本约为 15 个周期,但在多插槽(multi-socket)系统中可能达到 300–600 个周期。线程上下文切换开销极其巨大(10,000–100,000+ 个周期),这主要归因于缓存失效等间接成本。
* **其他:** 由于指针间接寻址,访问 `thread_local` 变量会引入额外的开销。
作者强调,虽然这些数据为优化提供了一个实用的参考框架,但它们只是估算值,会因架构和上下文的不同而有所差异。
“Wigglegram”是一种通过循环播放从不同角度拍摄的画面而产生的类 3D 立体图像。作者是一位犹豫不决的摄影师,无意中收集了同一场景的多个版本,后来发现自己的相机胶卷里存满了制作这些动画的原始素材。
为了实现自动化处理,作者编写了一个脚本,利用感知哈希(一种类似于以图搜图的技术)来识别视觉上相似的照片。通过计算图像哈希值之间的“汉明距离”,该脚本成功检测出可以拼接成 wigglegram 的照片簇。
由此产生的作品集涵盖了从偶然拍下的“动态电影”到精心构思的艺术摄影,内容包罗万象,包括宠物、设计项目和雕塑等。作者已将该脚本分享到 GitHub,供他人整理自己的照片库,将多年的数字杂物转化为引人入胜的视觉档案。