2024 03 22 HackerNews

2024-03-22 Hacker News Top Stories #

一句话摘要 #

  1. U.S. sues Apple, accusing it of maintaining an iPhone monopoly 美国司法部对苹果提起反垄断诉讼,指控其通过限制竞争应用程序来维持iPhone市场垄断。
  2. Vernor Vinge has died 著名科幻作家Vernor Vinge去世,享年79岁,他以探索科技未来和乐观主义作品而闻名。
  3. Shattered Pixel Dungeon is an open-source traditional roguelike dungeon crawler 开源游戏“Shattered Pixel Dungeon”是基于Pixel Dungeon的roguelike地牢探险游戏,支持Android、iOS和桌面平台。
  4. Difftastic, a structural diff tool that understands syntax “Difftastic”是一个结构化差异工具,通过理解代码语法而非逐行比较,生成更易于阅读的差异结果。
  5. The baffling intelligence of a single cell: The story of E. coli chemotaxis 文章讲述了大肠杆菌的趋化性,揭示了单细胞生物如何通过化学感应进行复杂决策,展现出惊人的智能。
  6. The Reddits Paul Graham回顾了Reddit的创立历程,以及Y Combinator如何影响和支持Reddit和其他创业公司的发展。
  7. Redis License Changed Redis项目改变了其许可协议,采用Redis源可用许可证v2(RSALv2)和服务器端公共许可证v1(SSPLv1)的双重许可模式。
  8. Redis adopts dual source-available licensing Redis采用双源可用许可证,旨在提供持续演进的数据模型和开发者工具集,同时保持源代码的宽松使用。
  9. Show HN: GritQL, a Rust CLI for rewriting source code GritQL是一个Rust编写的命令行工具,使用声明性查询语言进行代码搜索、检查和修改,支持多种编程语言。
  10. Show HN: Dropflow, a CSS layout engine for node or Dropflow是一个CSS布局引擎,支持多种CSS规则和属性,可用于Node.js和浏览器,适用于文本布局和生成PDF或图像。

U.S. sues Apple, accusing it of maintaining an iPhone monopoly #

https://www.nytimes.com/2024/03/21/technology/apple-doj-lawsuit-antitrust.html

美国司法部星期四对苹果提起反垄断诉讼,指控其在 iPhone 市场上存在垄断。

司法部与 16 个州和华盛顿特区联合起诉苹果,称该公司通过限制其他公司提供与其产品竞争的应用程序,如数字钱包,来保持消费者对 iPhone 的依赖性,降低他们转向竞争设备的可能性,违反了反垄断法。诉讼寻求结束这些做法,并甚至有权要求拆分这家硅谷巨头。苹果多年来通过紧密控制 iPhone 和其他设备上的用户体验,将数十亿部销售自 2007 年以来的智能手机变成其帝国的核心。

苹果被批评为创造了一个不公平的竞争环境,它允许自家产品和服务访问核心功能,却拒绝给予竞争对手同等待遇。此举包括限制金融公司访问手机的支付芯片,以及阻止蓝牙跟踪器利用其定位服务功能。用户更容易连接苹果产品(如智能手表和笔记本电脑)与 iPhone,而非其他制造商的产品。

这次诉讼是对苹果多年来备受监管审查的设备和服务套件的一次直接打击,这些设备和服务推动了苹果成为一家市值近 2.75 万亿美元的上市公司,多年来一直是全球最有价值的公司之一。


HN 评论 1597 comments | 作者:jcfrei | 8 hours ago #

https://news.ycombinator.com/item?id=39778999

这篇帖子中的评论观点归纳如下:

  1. Apple 在 App Store 上对“超级应用”和云游戏应用等实施限制,可能影响竞争和创新;
  2. 评论者提到 IBM 与 Memorex 案例,指出此类诉讼可能开启新市场机会;
  3. 有人讨论消息互通、智能手表、数字钱包等问题;
  4. 有关 MMS 技术限制和苹果的消息服务;
  5. 对 MMS 的技术限制和 RCS 标准的讨论。

Vernor Vinge has died #

https://file770.com/vernor-vinge-1944-2024/

Vernor Vinge 是许多有影响力的硬科幻作品的作者,于 3 月 20 日去世,享年 79 岁。他在 1964 年卖出了他的第一个科幻故事“《Apartness》”,该作品发表在 1965 年 6 月的《New Worlds》杂志上。1971 年,他获得了加州大学圣地亚哥分校的数学博士学位,并在接下来的一年开始在圣地亚哥州立大学教书。直到近 30 年后的 2000 年 8 月,他才从教学岗位上退休,全职从事科幻写作。

他的 1981 年中篇小说《True Names》常被认为是第一个完整展现“网络空间”概念的故事。他凭借小说《A Fire Upon the Deep》(1993 年,并列)、《A Deepness in the Sky》(2000 年)、《Rainbows End》(2007 年)以及中篇小说《Fast Times at Fairmont High》(2002 年)和《The Cookie Monster》(2004 年)赢得了雨果奖。《A Deepness in the Sky》还获得了约翰·W·坎贝尔纪念奖,并在翻译方面赢得了西班牙的 Ignotus 奖、德国的 Kurd Lasswitz Preis 奖和意大利的 Italia 奖。

Vinge 曾是 2002 年世界科幻大会 ConJosé 的荣誉嘉宾。他于 2014 年获得了普罗米修斯奖终身成就奖。他还在 2020 年获得了由海因莱因协会颁发的海因莱因奖。

他与 Joan D. Vinge 于 1972 年至 1979 年结婚。David Brin 在 Facebook 上发表了一篇深情的悼词,其中部分内容如下:

“我很遗憾地向大家报告,我的朋友和同事 Vernor Vinge 去世了。作为探索无限潜在命运的文学流派中的一位巨人,Vernor 通过他对语言、戏剧、人物和科学影响的多才多艺,为数百万人带来了关于可能的明天的故事,这些故事因此变得更加生动。有人指责他犯下了一个严重的罪行——那就是‘乐观主义’——Vernor 给了我们无与伦比的传奇故事,这些故事经常描绘了人类在克服问题上的成功……那些就在我们眼前的问题……同时提出了新的问题!可能就在我们短视的目光之前的新困境。他经常会问:‘如果我们成功了呢?你认为那会是结束吗?’……我们的政治立场跨度相当广泛!然而,我们 KBs(Killer B’s)(Vernor 是一个全职成员!奥克塔维亚·巴特勒曾经在我们入会时高兴地笑了)总是分享着对我们高尚艺术的深深热爱——那就是思维实验,对前方未知领域的推演。”


HN 评论 234 comments | 作者:sohkamyung | 16 hours ago #

https://news.ycombinator.com/item?id=39775304

评论中的观点归纳如下:

有人感谢分享 Vernor Vinge 的 A Fire Upon the Deep 的注释版本,并表示喜爱该书; 有人分享了 Vinge 的“奇点”概念,认为他对未来的预测准确; 有人讨论了 Vinge 小说中的科技概念,如“Bobble”技术; 有人对人工智能发展和语言模型的未来表达了不同看法; 有人分享了 Vinge 其他作品,如 Marooned in Realtime 和 A Deepness in the Sky 的评价; 有人讨论了机器学习项目中的技术发展问题,以及对未来技术进步的看法。


Shattered Pixel Dungeon is an open-source traditional roguelike dungeon crawler #

https://github.com/00-Evan/shattered-pixel-dungeon

这个 GitHub 地址是关于一个名为"Shattered Pixel Dungeon"的开源传统地牢探险游戏。游戏具有随机生成的关卡和敌人,以及数百种可收集和使用的物品。它基于 Pixel Dungeon 的源代码开发而成。“Shattered Pixel Dungeon"目前支持 Android、iOS 和桌面平台。如果你喜欢这款游戏,可以考虑在 Patreon 上支持开发者。该项目还有一个官方博客和一个翻译项目。需要注意的是,这个仓库不接受拉取请求,代码提供给其他人可能会对他们自己的项目有所帮助。欢迎提交各种问题报告。如果你想使用这个代码,可以在/docs 目录下找到相关指南,包括为 Android 编译、为桌面平台编译、为 iOS 编译以及制作自己版本的推荐更改。


HN 评论 210 comments | 作者:notamy | 22 hours ago #

https://news.ycombinator.com/item?id=39773641

评论中的观点归纳如下:

有玩家因为沉迷游戏而影响到生活和工作; 建议避免玩其他开源手机游戏,如 Mindustry; PC 游戏 Tales of Maj’Eyal 深度和无限重玩性,但也有玩家觉得难以感受到建造选择的影响; 有玩家喜欢游戏中角色逐渐变强的设定,希望更多游戏采用这种机制; 有玩家认为某些游戏在手机上的界面不友好; 有玩家提到 Mindustry 在触摸屏上测试不够完善; 有玩家分享了游戏推荐和游戏界面体验; 有玩家讨论游戏中的物品识别机制; 有玩家分享了自己修改游戏代码添加作弊码的经历; 有玩家推荐其他类似游戏; 有玩家讨论游戏的开源性质和游戏引擎; 有玩家分享了游戏控制器的使用体验; 有玩家分享了自己的游戏控制器 DIY 经历。


Difftastic, a structural diff tool that understands syntax #

https://difftastic.wilfred.me.uk/

“Difftastic” 是一个结构化差异工具,它能够理解语法。它是一个命令行界面的差异工具,根据文件的语法进行比较,而不是逐行比较。

Difftastic 生成准确的差异,更易于人类阅读。它通过 tree-sitter 解析您的代码。与基于行的文本差异不同,Difftastic 理解这里内部表达式没有发生变化。它可以忽略格式更改,展示实际发生变化的部分。

如果您添加了包装器,Difftastic 可以精确匹配定界符。即使您更改了内部内容,Difftastic 仍然可以向您展示额外的包装器。它显示文件的实际行号,包括变更前后的行号。

Difftastic 支持多种编程语言和文件格式,可以与 Git 配合使用。Difftastic 是 MIT 许可的开源软件,您可以下载、修改并与朋友分享。由 Wilfred Hughes 使用 Emacs 和咖啡制作。


HN 评论 98 comments | 作者:jiripospisil | 9 hours ago #

https://news.ycombinator.com/item?id=39778412

评论中的观点归纳如下:

Tree-sitter 工具的创新性和便利性受到广泛认可,使得支持多种语言的工具变得更加简单和高效。 一些人对于使用 Tree-sitter 编写语法规则的难度表示担忧,但也认为只需有人成功编写一次,其他人就可以共享使用。 有人认为当前过度使用人工智能技术解决问题,类似于过去过度使用区块链技术的情况,存在泡沫化现象。 有关 Tree-sitter 和 LSP 的讨论,指出 Tree-sitter 并非解决 M 个编辑器对 N 种语言的问题,而是简化了为编辑器/工具编写语言集成的难度。 有人提出了关于使用 Tree-sitter 进行语义差异比较的讨论,以及一些相关工具和项目的推荐和讨论。


The baffling intelligence of a single cell: The story of E. coli chemotaxis #

https://jsomers.net/e-coli-chemotaxis/

这篇文章讲述了大肠杆菌趋化性的故事,揭示了单细胞生物的令人惊讶的智能。文章以大肠杆菌如何寻找营养为例,介绍了化学趋向性的过程,即细菌通过“嗅觉”化学物质并决定如何游泳。文章指出,大肠杆菌虽然没有大脑,甚至比人类细胞简单得多,但已经具备了类似嗅觉、驱动力甚至记忆的能力,将大肠杆菌重新定义为一个精致而复杂的物理计算机。

文章强调了化学趋向性是系统生物学的胜利,我们在几乎每个层面都对其进行了全面细致的理解。它使我们熟悉了生物学中许多重要的主题,包括蛋白质结构如何决定功能;膜如何控制细胞内的信息流动;以及化学修饰如何存储和传递状态。文章还介绍了分子纳米技术中最复杂和美丽的部分之一,即鞭毛马达,以及如何让我们直观地理解无思维化学物质如何可能产生生命。

文章详细解释了大肠杆菌如何通过化学修饰实现适应性,使其能够对各种浓度的化学物质做出敏感反应。大肠杆菌通过甲基化受体来调节其对化学梯度的敏感性,这种机制使得细菌不仅能找到有利的环境,还能迅速地沿着化学梯度前进。文章还提到,甲基化使大肠杆菌具有“简单的化学记忆”,这表明个体细菌可以通过在内部化学修饰中编码信息来模拟其环境,并记住其中的重要特征。

此外,文章还介绍了大肠杆菌化学趋向性的复杂信号网络,包括蛋白质的磷酸化和去磷酸化过程,以及这些过程如何调节细胞对化学物质的反应速度。最后,文章详细解释了大肠杆菌的鞭毛马达如何实现方向的改变,展示了这一过程中的机械原理和分子机制。


HN 评论 143 comments | 作者:jsomers | 11 hours ago #

https://news.ycombinator.com/item?id=39777229

讨论了人类大脑半球之间的专业化,以及大脑中独立计算实体的交流方式。 有人分享了感染新冠病毒后大脑感知的变化,描述了大脑内部服务之间的竞争。 讨论了左脑和右脑之间的分工,以及分裂脑患者的情况。 提到了复杂自适应系统的嵌套性,以及人类家庭、社区、政府等形成的更大整体。 讨论了语言对思维的限制,以及个体与集体智慧之间的关系。 讨论了委员会思维受限于语言,以及个体思维的深度与广度之间的权衡。 讨论了委员会成员相似度与智慧之间的关系,以及智慧与正确答案之间的概率关系。 讨论了智力下降与共识机制之间的关系,以及委员会思维受限于语言的情况。 讨论了生物学教育的复杂性,以及现代微生物学对“中心法则”异常的重要性。 讨论了细胞内部活动的观察技术,以及单细胞展示的“学习”和“文化”能力。 讨论了微生物体内部复杂系统的进化,以及生物密度、突变、选择压力等因素对进化的影响。 讨论了进化、突变、选择压力等因素对生物进化的影响,以及生物进化的随机性和选择性。 讨论了进化算法产生的结果,以及进化系统总是以出人意料的方式达到目标的情况。


The Reddits #

https://www.ycombinator.com/blog/the-reddits

在这篇文章中,Paul Graham 回顾了与 Reddit 创始人 Steve 和 Alexis 的早期相遇,并分享了创立 Y Combinator 的初衷。他提到,在与 Steve 和 Alexis 的初次会面中,他们向他介绍了一个关于在手机上订购快餐的创业想法,尽管这个想法后来被拒绝了。然而,Paul 对他们的才华和活力印象深刻,因此决定创立 Y Combinator 来资助他们。虽然最初拒绝了他们的创业想法,但后来 Paul 鼓励他们转而致力于开发 Reddit 这一分享链接的平台。

文章还提到了 Reddit 的早期发展历程,包括创立初期的困难和挑战,以及创始团队的特点和个人魅力。Steve 和 Alexis 的个性与 Reddit 这一平台的特点有着惊人的契合,他们的好奇心、怀疑精神和对创意的追求为 Reddit 的成功打下了基础。文章还描述了 Reddit 在发展过程中的一些关键时刻,以及 Steve 在 2015 年回归后对公司的影响和发展。

总的来说,这篇文章通过回顾 Reddit 的创立历程,展示了创始人的个性特点如何与公司发展密切相关,以及在创业道路上面临的挑战和成就。Reddit 作为一个极具用途的平台,展现了创始团队的独特魅力和坚定信念,使其成为一个不可或缺的互联网资源。


HN 评论 509 comments | 作者:sandslash | 8 hours ago #

https://news.ycombinator.com/item?id=39778590

有人分享了他在 Reddit 上向 spez 发送消息询问是否会开源 Reddit 的原始 Lisp 版本,最终该版本确实被开源。 有人分享了自己在 Reddit 早期获得的 15 万个 Reddit 期权,但由于种种原因,他的使用体验下降,使用量大幅减少。 有人希望 Reddit 能有新的崛起,认为过去几年 Reddit 的更新都偏向反用户,希望看到类似 BlueSky 对 Twitter 的尝试。 有人表示因为 Reddit 杀掉了 Apollo 应用,他已经停止使用 Reddit,认为 Reddit 的应用很糟糕。 有人认为 Reddit 的社区活跃度下降,可能是因为 Reddit 近期的一系列举措导致用户不满,但也可能是为了更好地商业化。 有人分享了自己在 Reddit 上遇到的账号封禁问题,这种用户体验让他对 Reddit 失去了兴趣。 有人讨论了 Reddit 的左倾倾向,认为 Lemmy 是一个不错的替代平台,但也存在一些问题。 有人批评了 Reddit 的现代化体验,认为新 Reddit 的开发进度缓慢,功能不完备,体验糟糕。 有人表示现代 Reddit 的体验糟糕,社区质量下降,内容充斥着无聊的内容,感到失望。


Redis License Changed #

https://github.com/redis/redis/blob/unstable/LICENSE.txt

本文介绍了 Redis 项目的许可协议,从 2024 年 3 月 20 日开始采用双重许可模式。根据 Redis 软件授予者和贡献者许可协议(Redis Software Grant and Contributor License Agreement),Redis 项目的代码贡献在版本 7.4 及以后的发布版本中受到管理。从这一日期开始,贡献将受到用户选择的 Redis 源可用许可证 v2(RSALv2)或服务器端公共许可证 v1(SSPLv1)的约束。

RSALv2 协议授予用户一项非排他性、免版税、全球范围、不可转让、不可再许可的许可证,用于使用、复制、分发、提供可用性和准备衍生作品的软件,但受到一定的限制和条件约束。该协议禁止将软件或修改版本的功能提供给第三方作为服务,或以使软件功能对第三方可用的方式分发软件或修改版本。

SSPL 协议中明确了对程序进行修改的定义、源代码的要求、基本权限授予、保护用户合法权利免受反规避法律的约束等内容。该协议允许用户传播程序的原始代码,并对使用和修改程序的输出给予授权。此外,协议还规定了不得视覆盖工作为有效技术措施的规定,以及传播原始代码副本的相关规定。


HN 评论 1 comments | 作者:buro9 | 16 hours ago #

https://news.ycombinator.com/item?id=39775332

这些评论涉及到 Redis 采用双重源代码许可的决定。评论者认为,这一变化可能会导致 Redis Labs 像 Hashicorp 一样被收购,并对小型初创公司造成困扰,因为他们只是想使用 Redis 缓存而不带有法律障碍。他们指出,企业的主要目标是实现利润,而开源则强调用户对软件的所有权。有人认为将 Redis 项目移交给非营利性组织可能更有利于社区,并允许 Redis Labs 在其周围构建专有扩展和云业务。另一方面,也有人认为,企业需要有持续的收入来源,否则开发进度将会显著减缓。评论中提到了使用开源替代品、开源许可模式的可持续商业模式、开源软件用户反馈、试用版本取代完全开源等方面的观点。最终,这些评论指出了对于开源项目和商业化之间关系的复杂性和挑战性。


Redis adopts dual source-available licensing #

https://redis.com/blog/redis-adopts-dual-source-available-licensing/

这篇文章介绍了 Redis 采用双源可用许可证的决定。

未来的 Redis 版本将继续提供免费和宽松的源代码使用,采用双重 RSALv2 和 SSPLv1 许可证。这些版本将结合先前仅在 Redis Stack 中可用的高级数据类型和处理引擎。从 Redis 7.4 开始,Redis 将采用 Redis Source Available License (RSALv2)和 Server Side Public License (SSPLv1)的双重许可证。

这意味着 Redis 将不再在三条款的伯克利软件分发下发布。Redis 提供了性能和简单性的基础,支持现代互联网所需的应用程序和数据基础设施。通过实施双重许可证,Redis 可以持续演进最全面的数据模型、处理引擎和开发者功能集。新的源代码许可证使 Redis 能够可持续地提供源代码的宽松使用。这一变化将使 Redis 进入下一个发展阶段,成为一个统一的客户端、工具和核心 Redis 产品套件的实时数据平台。

未来的 Redis 源代码可用版本将统一核心 Redis 和 Redis Stack,包括搜索、JSON、向量、概率和时间序列数据模型,提供一个免费、易于使用的软件包。这将使任何人都能轻松在各种情境下使用 Redis,包括作为高性能的键/值和文档存储、强大的查询引擎,以及支持生成式人工智能应用的低延迟向量数据库。此外,云服务提供商托管 Redis 产品的使用将不再允许免费使用 Redis 源代码。

这一变化将为现有集成解决方案提供支持,并为即将推出的 Redis 创新提供完全访问权限。文章还回答了关于 Redis 许可证变更的常见问题,详细解释了变更的原因、对终端用户、第三方库、商业客户等的影响,以及对 Redis 开源产品的未来展望。


HN 评论 483 comments | 作者:pauldix | 1 day ago #

https://news.ycombinator.com/item?id=39772562

根据您提供的链接,这篇帖子中的评论观点可以总结如下:

  1. 对于 Redis Labs 采用双重源代码许可的做法,有人认为这可能会对 Redis Labs 造成伤害,尤其对于小型初创公司使用 Redis 缓存而言会带来法律问题,同时也提到了开源软件用户所有权的重要性。
  2. 有人认为公司所有的开源软件应该由非营利机构管理,以确保用户自由。
  3. 有人认为如果公司的核心产品是为了盈利,不应该开源,否则会面临竞争对手重新分发软件的风险。
  4. 有人认为这种许可证变更解决了云巨头滥用开源软件的问题,认为这是一种更好的 AGPL 许可证。
  5. 有人认为长期来看,开源软件将被视为行业的一个阶段,未来可能会回到试用和演示版本的模式。希望这些总结对您有帮助!

Show HN: GritQL, a Rust CLI for rewriting source code #

https://github.com/getgrit/gritql

这个 GitHub 地址是关于一个名为 GritQL 的查询语言,用于搜索、代码检查和修改。GritQL 是一个声明性查询语言,用于搜索和修改源代码。它具有以下特点:

可以简单地开始,无需学习 AST 细节:任何代码片段都是有效的 GritQL 查询。 使用 Rust 和查询优化,可以扩展到处理超过 1000 万行代码库。 使用 Grit 内置的模块系统,可以重用 200 多个标准模式或共享自己的模式。 一旦掌握了 GritQL,就可以用它重写任何目标语言,如 JavaScript/TypeScript、Python、JSON、Java、Terraform、Solidity、CSS、Markdown、YAML、Rust、Go 或 SQL。 GritQL 使得包含自动修复规则以加快修复速度变得更加容易。

你可以通过阅读文档、交互式教程或运行 grit –help 来开始使用。安装 Grit CLI 的方法是:

curl -fsSL https://docs.grit.io/install | bash

使用示例包括搜索所有的 console.log 调用,替换 console.log 为 winston.log 等。GritQL 还提供了许多示例和标准库,可以组合模式创建复杂查询,包括大型重构。

GritQL 的设计初衷是为了解决大规模重构和迁移的问题,使得探索性分析变得简单,逐步增加复杂性,并提供高性能的重写能力。GritQL 使用 tree-sitter 进行所有语言解析,并受益于 Rust 生态系统。该项目采用 MIT 许可证,欢迎贡献者参与。


HN 评论 51 comments | 作者:morgante | 1 day ago #

https://news.ycombinator.com/item?id=39770908

评论者认为 GritQL 是一个强大的中间工具,易于进行探索性分析和迁移,同时具有高性能。 有人提到 GritQL 与 ast-grep 有很多共同之处,但它们的表面 API 有所不同。 有人认为 GritQL 的商业模式是一个开放核心模式,希望其他人也能效仿。 评论中提到 GritQL 在复杂迁移中的应用,以及与其他工具的比较和优势。 有人关注 GritQL 是否能与人工智能集成,以简化实现一些规则。 评论者提到 GritQL 可能不适合用于不同语言之间的全面转译,但在处理细微差异时效果良好。 有人提到 GritQL 支持嵌入式语言,但目前不支持 HTML,但可以通过提出问题来探索这一可能性。 评论中还包括对 GritQL 的功能、用途和潜在应用的讨论。


Show HN: Dropflow, a CSS layout engine for node or #

https://github.com/chearon/dropflow

这个 GitHub 仓库(chearon/dropflow)是一个 CSS 布局引擎,旨在探索基础 CSS 标准的范围(即:内联元素、块级元素、浮动、定位以及最终的表格,但不包括弹性盒子或网格布局)。它具有高质量的文本布局实现,能够显示世界上许多语言。您可以在后端使用 Node 和 node-canvas 生成 PDF 或图像,也可以在浏览器中将丰富的、自动换行的文本渲染到画布上。

主要特性包括:

支持超过 30 个属性,包括复杂属性如浮动 双向和 RTL 文本支持 Hyperscript (h()) API,支持将样式作为对象传入,同时接受 HTML 和 CSS 任何 OpenType/TrueType 缓冲区都可以(也必须)被注册 字体回退在字素级别上 带颜色的变音符号 期望的断行(例如:将起始填充传递到下一行) 优化的字形 继承和级联样式永远不会被计算两次 处理尽可能多的 CSS 布局边缘情况 完全类型化 大量测试 快速

支持的 CSS 规则包括内联格式化、块级格式化、框和定位等。您可以使用该引擎创建 DOM,并指定样式,然后将其渲染到画布或生成 PDF 等。引擎还提供了 API 和工具,如注册字体、Hyperscript API、解析 HTML 等,以便更灵活地使用。

该引擎的性能是一个主要目标,其次是正确性。您可以通过运行性能示例来查看性能数据。引擎使用 HarfBuzz 编译为 WebAssembly 来执行字形布局,以确保更高的正确性。

总体而言,这个仓库提供了一个功能强大的 CSS 布局引擎,适用于各种文本布局需求,包括生成 PDF、图像或在浏览器中渲染文本到画布上。


HN 评论 85 comments | 作者:chearon | 8 hours ago #

https://news.ycombinator.com/item?id=39778570

有人认为使用浏览器在服务器上生成 PDF 文件会增加成本和复杂性; 有人提到了类似于 Typst 的现代 LaTeX 版本,可以快速生成漂亮的文档; 有人分享了使用 Weasyprint 的经验,以及早期在服务器上使用 Internet Explorer 生成 PDF 的情况; 有人讨论了在服务器上使用无头浏览器主要是为了隔离 PDF 的安全问题,而不是美学; 有人指出,使用现有的布局引擎更受欢迎,因为通过代码进行任意文档的布局是一个复杂的问题; 有人提到了 Prawn 库用于在后端生成 PDF 的经验; 有人分享了使用 html2pdf.js 的成功经历; 有人讨论了使用 CSS 和 SVG 作为图形和 UI 库的抽象的可能性; 有人询问是否可以与 Pixi.JS 一起使用; 有人对如何从头开始编写 CSS 布局引擎感兴趣; 有人提到了 Firefox 关于 CSS 引擎工作原理的有趣博客文章; 有人讨论了在 Canvas 上直接渲染 HTML 的可行性; 有人提到了 Glide Grid 和 DataGridXL 等快速渲染大量数据的案例; 有人讨论了使用 Canvas 渲染 HTML 的优势和速度问题。