Mathics:模块化数学计算环境的多种部署方式
Mathics是一个模块化设计的数学计算环境,提供多种部署方案。用户可以通过Docker镜像快速部署完整环境,也可以使用Mathics-omnibus Python包进行本地安装。Mathics的核心是Mathics3内核,此外还包括mathicsscript命令行客户端(支持语法高亮、Unicode符号等)和基于Django的Web服务器(支持MathML输出和Three.js图形)。这三种组件各有依赖,但其模块化设计保证了灵活性和可扩展性。
Mathics是一个模块化设计的数学计算环境,提供多种部署方案。用户可以通过Docker镜像快速部署完整环境,也可以使用Mathics-omnibus Python包进行本地安装。Mathics的核心是Mathics3内核,此外还包括mathicsscript命令行客户端(支持语法高亮、Unicode符号等)和基于Django的Web服务器(支持MathML输出和Three.js图形)。这三种组件各有依赖,但其模块化设计保证了灵活性和可扩展性。
lzbench是一个开源的压缩算法基准测试工具,它通过测试压缩比、压缩速度、解压速度和往返速度来评估不同压缩算法的性能。该工具支持多种压缩算法,用户可以自行添加新的算法,并可以下载原始数据进行更深入的分析。lzbench使用方便,结果直观,是开发者和研究人员评估压缩算法性能的理想工具。文章详细解答了关于lzbench的常见问题,包括如何添加新的压缩算法、计算方法、内存使用、多线程支持、图表缩放等,并提供了自定义配置和数据下载功能。
Haiku操作系统一月开发报告涵盖了众多改进,包括对Tracker文件管理器的大规模重构,增加了上下文菜单、剪切复制粘贴功能以及实时菜单更新;在应用方面,新增了图标编辑器、触控板设置以及文本样式编辑器的新功能;驱动程序方面,增加了对Alder Lake芯片组、AMD温度监控以及Wacom CTH-470的支持;内核层面,则对内存管理、页面映射和权限检查进行了大量优化,提升了系统稳定性和安全性。此外,还修复了多个bug,并对构建系统和文档进行了改进。
十年后,《编程要素》的印刷版停印,版权回归作者手中。现在,这本书以免费PDF和无排版平装书两种形式发行。此前,该书曾由多个出版社出版,发行过多种语言版本,包括英文、日文、俄文和中文等,但其中一些版本已经绝版。
Asahi Linux项目负责人Hector Martin因开发者倦怠、苛刻的用户以及Linus Torvalds处理Rust代码集成的方式而辞职。Martin在博文中批评Torvalds缺乏支持,并指责Linux社区内部的虚伪和恶意攻击。他认为Torvalds对Rust集成缺乏领导力,导致长期维护者滥用职权阻碍项目进展。这凸显了开源社区中开发者倦怠和社区冲突日益严重的问题,以及对开源项目持续维护的资金支持需求。
今年2月14日是Delphi编程语言发布30周年纪念日。作者Marco Cantù回顾了30年前在旧金山Moscone中心参加Delphi发布会的经历,并分享了他多年来撰写的关于Delphi的博客文章和YouTube视频链接,这些内容涵盖了Delphi发布的10周年纪念以及其他相关信息。 这篇文章是对Delphi三十年发展历程的感性回顾,展现了其在编程领域的影响力。
本文探讨了排版引擎Typst和TeX在布局模型上的差异。TeX基于盒子和胶水模型,灵活但缺乏对精确位置的感知;Typst采用区域模型,允许元素对其位置做出反应,但牺牲了部分灵活性。作者分析了两种模型的优缺点,并指出Typst通过引入重新布局机制,有望兼顾灵活性与优化,解决目前在处理复杂布局(如环绕式图片、可分页表格)上的不足。
本文探讨了系统中常见的震荡现象,以恒温器和兔鹰种群为例,解释了延迟反馈导致的周期性波动。作者将此模型应用于软件开发中的文档问题,指出过多的文档会随着时间的推移而过时,导致其价值降低。作者认为,在敏捷开发环境下,良好的代码、测试和团队沟通可以替代冗余文档,而生成式AI的出现更能解决信息获取问题,从而减少对过时文档的依赖。
将大量数据导入ClickHouse时,如何避免因过多小批量插入而导致性能下降?本文介绍了ClickHouse的MergeTree引擎的工作机制,以及如何通过批量插入、控制插入速率、以及使用Jitsu Bulker、clickhouse-bulk、PeerDB、DLT和Dispatch等工具来优化数据导入过程,从而提高效率并避免'过多parts'错误。关键在于将数据打包成更大的块,并控制插入频率,让后台合并进程有足够的时间处理。
本文探讨了Rust并发编程中的ABA问题,并提出了一种使用带版本号的标记指针来解决该问题的方案。ABA问题源于CAS操作中共享变量的意外变化,可能导致数据损坏。该方案通过为每个指针添加版本号,在更新时递增版本号,即使内存地址被重用,也能通过版本号检测到指针是否被修改,从而避免ABA问题。文章还提供了一个无锁栈的实现示例,并附带了测试和基准测试结果,证明了该方案的有效性和性能。
本文探讨了AI模型的知识截止日期和系统提示偏见如何影响开发者选择技术。由于AI模型的训练数据存在时间滞后,新技术往往得不到及时的支持,导致开发者更倾向于使用AI模型能更好地支持的技术,即使这些技术并非最佳选择。此外,一些AI模型对特定技术(如React和Tailwind)存在偏见,甚至会无视用户的指令,自动将代码转换为其偏好的技术。这导致技术选择受AI模型影响,阻碍新技术的采用和发展。作者建议AI公司应提高透明度,公开模型的偏见信息,避免对软件开发方向产生不良影响。
CodeWeaver是一个命令行工具,能将你的代码库转换成易于浏览的Markdown文档。它递归扫描目录,生成项目文件层次结构的结构化表示,并将每个文件的内容嵌入到代码块中。这简化了代码库共享、文档编写以及与AI/ML代码分析工具的集成。它支持路径过滤、可选路径日志记录,并提供简单的命令行界面。安装方式:使用Go语言运行`go install github.com/tesserato/CodeWeaver@latest`或下载预编译的可执行文件。
Ricochet 是一款实验性的点对点即时通讯软件,它基于Tor网络隐藏服务构建,无需服务器或运营商,保护你的身份、联系人列表和通讯内容。你的登录名就是你的隐藏服务地址,联系人通过Tor直接连接到你,极难被追踪。Ricochet 支持Windows、OS X和Linux,开源且易于使用,但作者提醒用户需谨慎评估风险。
S2,一个用于流数据的无服务器API,通过利用Polar Signals Cloud实现持续性能分析,显著提升了性能并降低了成本。S2面临CPU使用效率低下的挑战,这限制了其服务用户数量并增加了运营成本。Polar Signals Cloud提供的持续性能分析功能,特别是其pprof.me和反向调用堆栈功能,帮助S2团队识别并解决了多个性能瓶颈。例如,通过一行代码更改,利用Graviton上的硬件加速,将计算SHA256校验和的CPU使用率从68.37%降低到31.82%,从而将吞吐量提高了一倍。此外,还优化了AWS S3 Rust SDK的CRC32C校验和计算和内存分配,进一步提升了效率。Polar Signals Cloud的灵活定价也使其成为S2的理想选择。
arXivLabs是一个框架,允许协作者直接在arXiv网站上开发和分享新功能。参与arXivLabs的个人和组织都认同并接受了arXiv的开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,只与坚持这些价值观的合作伙伴合作。如果您有想法能够为arXiv社区增值,请了解更多关于arXivLabs的信息。
Qodo公司构建了一个基于检索增强生成(RAG)的AI代码助手,并开发了一个强大的评估框架来确保其准确性和全面性。评估面临的挑战包括验证基于大型私有数据集的RAG输出的正确性。该框架评估最终检索到的文档和最终生成的输出,关注“答案正确性”和“检索准确性”两个方面。为了应对自然语言输出的挑战,他们采用了“LLM作为评判者”的方法,并构建了一个包含真实问题、答案和上下文的ground truth数据集。为了提高效率,他们利用LLM辅助构建数据集,并使用LLM和RAGAS来评估答案的正确性。最终,他们构建了自己的LLM评判者,并将其与RAGAS结合使用,以提高评估的可靠性,并将其集成到工作流程中,实现了回归测试,显著降低了验证代码更改是否导致质量问题的难度。
将Web服务器操作系统从CentOS升级到Ubuntu后,出现监听溢出错误。调查发现,新启动的Ubuntu主机在几分钟内系统CPU使用率飙升,导致Web请求处理缓慢,进而引发监听溢出。罪魁祸首是Linux内核中的inode cgroup切换功能,在大量文件写入后,内核花费大量时间将inode从一个cgroup移动到另一个cgroup。通过禁用systemd中的io或memory控制器解决了此问题。CentOS不受影响,因为它使用的是cgroups v1,而非Ubuntu使用的cgroups v2。
Zed编辑器发布了其激动人心的新功能:编辑预测。该功能由一个名为Zeta的全新开源模型提供支持,它能够预测你的下一个编辑操作,只需按下Tab键即可应用。Zeta模型基于Qwen2.5-Coder-7B,并使用了监督微调和直接偏好优化技术进行训练,以确保其准确性和效率。为了解决延迟问题,Zed团队采用了推测解码等技术,并与Baseten合作优化模型部署。目前,Zeta正处于公开测试阶段,用户可以使用GitHub账户免费试用。该功能的开源性质也使得社区可以共同参与改进Zeta模型。
Google Chrome 内置的 Google 翻译扩展程序会修改网页的 DOM 结构,导致许多现代 Web 应用,尤其是使用 React 的应用出现问题。文章深入探讨了 Google 翻译的工作机制,以及它如何通过替换 TextNode 为 FontElement 来破坏 React 的虚拟 DOM,从而导致应用崩溃或数据无法更新等问题。文章还分析了几个常见的错误,例如 `NotFoundError` 和 `insertBefore` 失败,并提出了几种解决方法,包括猴子补丁和用 `` 包裹 TextNode,但这些方法都存在局限性。最终,文章建议开发者权衡利弊,可能需要禁用 Google 翻译或自行实现本地化功能,以确保应用的稳定性和用户体验。
Meta工程师Jake Hillion和OpenJDK开发者Johannes Bechberger在FOSDEM上展示了他们使用BPF调度框架`sched_ext`构建的并发Fuzzing调度器。该调度器通过故意“糟糕”地调度进程,引入随机延迟和线程运行顺序,从而暴露出难以重现的并发Bug。虽然目前该调度器性能开销较大,主要用于开发阶段调试,但它为发现实际应用中的逻辑错误提供了一种有效方法,未来有望改进以用于生产环境。
Go 1.24 通过 `go:wasmexport` 指令和 WASI Reactor 的构建能力,显著增强了 WebAssembly (Wasm) 支持。开发者现在可以将 Go 函数导出到 Wasm,实现与宿主应用的无缝集成。新增的 WASI Reactor 模式允许持续运行的 Wasm 模块,并多次响应事件或请求,无需重新初始化。虽然存在 Wasm 单线程和类型限制等问题,但 Go 1.24 的改进依然为 Go 在 Wasm 生态系统中的应用拓展了广阔空间。
在Windows 11沙箱环境中安装测试Neovim时,发现其捆绑的tee.exe二进制文件被识别为恶意软件。该文件进行可疑的DNS查找和网络连接,其中一个IP地址已被VirusTotal标记为恶意。作者建议对该二进制文件进行根本原因分析,并建议Neovim的依赖项从源码构建,以避免此类安全风险。
安全研究人员发现了Windows软件保护平台(SPP)的重大漏洞,并开发出名为TSforge的利用程序。该漏洞可以绕过Windows 7及之后所有版本的操作系统和Office软件的激活机制。研究人员通过分析SPP的内部工作机制,特别是确认ID(CID)验证过程和所谓的“受信任存储”数据,最终找到了解密和修改激活数据的密钥。这个发现不仅揭示了SPP的安全性漏洞,也为我们了解Windows激活机制提供了宝贵的资料。
Asahi Linux创始人Hector Martin离职后,项目组宣布了新的治理结构和资金模式,以确保项目的长期可持续发展。七位开发者将共同负责项目决策,并通过Open Source Collective接受捐款,取代之前的Patreon模式。未来,项目将优先处理内核上游合并和持续集成测试,以提高稳定性和可维护性。尽管暂时不会支持M3和M4芯片,但M1和M2设备将迎来DP alt模式、Vulkan驱动程序中的稀疏图像支持以及内置麦克风等新功能。
Doctor Droid 正在开发一款智能助手,帮助工程团队加速生产事故调查。该开源平台已在全球范围内得到应用,旨在减少停机时间,提高开发人员效率。其愿景是让团队中的任何成员都能独立调试一般的生产问题,无需依赖资深工程师。Doctor Droid 已获得 Accel 的投资,并参与了 Y Combinator 2023 年冬季批次。
资深Linux内核维护者Theodore Ts'o在邮件中阐述了内核维护工作的挑战。他指出,维护者并非拥有绝对权力,而是努力维持代码质量的“一线”。贡献者往往在代码被接受后消失,给维护者留下清理烂摊子的责任。Ts'o呼吁开发团队积极参与社区,共同维护代码质量,而非只关注自身短期目标。他以Rust for Linux为例,肯定了其积极融入社区的努力,但也指出需要更多时间建立信任,解决代码维护负担等问题。
本文探讨了软件开发中广泛使用的特性标记(Feature Flags)的潜在问题。作者指出,特性标记虽然方便,但容易导致难以维护的代码,尤其是在处理特性交互、标记移除和测试方面。文章回顾了可配置系统和软件产品线领域的已有研究,并总结了一些经验教训,例如:明确配置决策者,选择合适的绑定时间,采用规范的实现和文档,以及利用组合测试等技术来提高软件质量。
Fedora Flatpaks 上非官方的 OBS Studio Flatpak 包裹存在问题,导致用户误以为这是官方包并向官方投诉。 这并非个例,许多用户对 Fedora Flatpaks 的强制推送以及缺乏明确的取消选项表示不满。 作者请求移除该包或明确标示其第三方性质,并质疑为何要替换原先正常工作的 Flatpak 包裹,造成不必要的麻烦。
本文探讨了企业大规模参与开源软件的现状及其影响。起初,开源运动旨在吸引商业利益,但企业更多的是利用开源软件降低成本,而非回馈社区。Heartbleed漏洞事件凸显了开源项目资源匮乏的问题。虽然企业开始投资开源,但方式并非直接资助维护者,而是通过雇佣员工参与开源项目。这导致了权力失衡,企业员工拥有更多时间和影响力,从而影响项目优先级,甚至导致项目被重授权。文章建议更新开源治理模式,为维护者提供更多资金来源,抵制重授权风险,并建立开放治理的共同定义,以增强开源生态系统的韧性,避免被企业过度控制。
arXivLabs是一个开放平台,允许开发者与arXiv社区合作,直接在arXiv网站上开发和分享新功能。参与者必须遵守arXiv的开放、社区、卓越和用户数据隐私的价值观。如果你有提升arXiv社区价值的想法,欢迎了解arXivLabs。