## Plush:为基于 Actor 的语言带来垃圾回收 Plush 是一种动态类型的编程语言,灵感来自 Lox 和 JavaScript,专为声音和图形实验而设计。其关键特性是基于 Actor 的并行性,通过消除手动锁和内存安全问题来简化多线程。虚拟机被设计成没有全局锁,允许 Actor 独立运行,仅在消息传递期间同步。 一个主要挑战是在这种 Actor 模型中处理垃圾回收,尤其是在 Actor 之间发送可能包含循环引用对象图时。所采用的解决方案是对消息数据进行*静默复制*——当一个 Actor 发送消息时,虚拟机将引用的对象复制到接收者的内存空间中。 为了优化分配速度,每个 Actor 都有两个分配器:一个用于内部使用的私有分配器,另一个用于传入消息的邮箱分配器。这避免了在分配期间的锁竞争。在经过长时间的拖延后,一个复制垃圾回收器终于在合作者的帮助下实现,目前已完成 90%。 有了垃圾回收器,Plush 现在可以处理更复杂的程序,并通过实时 3D Boing Ball 演示得到了证明。目前的工作重点是优化收集性能,并欢迎贡献,尤其是在性能分析和演示程序开发方面。
## Lightpanda 与 Zig 的选择
Lightpanda,一款用于自动化的网页浏览器,的开发者选择了编程语言 Zig,而非 C++、Rust 甚至 Go,主要原因是它的**简洁性**。他们认为 C++ 对于小型团队来说过于复杂,而 Rust 的安全特性带来了一些不必要的阻力,尤其是在与现有的 C++ 库(如 Chrome 的 JavaScript 引擎 V8)集成时。Go 缺乏必要的底层控制,无法实现最佳性能。
Zig 提供了一个理想的平衡点:**高性能、现代工具和更简单的学习曲线**。 显式内存分配器(允许为每个网页进行高效的区域分配)、编译时元编程(减少样板代码)以及与 C 的无缝互操作等关键特性被证明非常有价值。
尽管 Zig 仍处于 1.0 版本之前并不断发展,但该团队对其潜力充满信心,并提到了不断壮大的社区和令人印象深刻的编译时间。他们强调 Zig 清晰、显式的设计——避免隐藏的控制流和分配——是一个主要优势。最终,Zig 使小型团队能够构建一个复杂的浏览器,并拥有易于管理的源代码库和清晰的思维模型。
这个维基共享资源页面记录了公有领域和自由版权电影的拍摄地点。其中很大一部分详细介绍了获奖电影,列出了这些电影获得的各种奖项。
这些奖项范围广泛,包括多项奥斯卡奖(最佳男主角、最佳女主角、最佳影片、最佳导演和各种技术类奖项)、国际荣誉如安纳西水晶奖和银熊奖,以及印度(电影奖、国家电影奖)和其他国家(斯大林奖、百花奖)的国家奖项。
该页面还包含一些电影的发行日期和时长,时间跨度从20世纪20年代末到1960年代,展现了可供开放授权使用的著名电影的历史。本质上,它是一个将可自由访问的电影与其认可和历史背景联系起来的资源。