分类: 开发

Sparrow:轻量级Apache Arrow C++实现

2025-02-01
Sparrow:轻量级Apache Arrow C++实现

Sparrow是一个新的C++库,旨在简化Apache Arrow列式格式的集成。它针对ArcticDB等项目的需求而生,提供了一个轻量级、现代化的C++ API,专注于Arrow数据的读写操作。Sparrow利用C++标准库的迭代器、范围和概念,提供简洁易用的接口,方便与现有C++项目集成。它支持多种数据类型,包括空值处理,并提供构建器简化复杂数据结构的创建。

开发

嵌入式系统中的看门狗定时器:从克莱门汀号到厨房排气扇

2025-01-31

本文探讨了嵌入式系统中看门狗定时器的重要性。通过克莱门汀号探测器因看门狗定时器未正确使用而导致任务失败的案例,以及一个厨房排气扇因软件故障需要手动重启的例子,作者强调了可靠看门狗定时器在防止软件故障中的关键作用。文章详细分析了各种看门狗定时器的优缺点,包括内部和外部看门狗定时器,并提出了设计高可靠性看门狗定时器的策略,例如使用窗口看门狗定时器、独立于CPU的外部看门狗以及在多任务系统中监控所有任务状态等。作者建议,即使在看似简单的系统中,也应采取措施防止软件故障,例如定期重置数据结构,以提高系统的可靠性。

PDF运行Linux:在浏览器中运行RISC-V模拟器

2025-01-31
PDF运行Linux:在浏览器中运行RISC-V模拟器

程序员@ading2210基于TinyEMU,在PDF文件中嵌入了一个RISC-V模拟器,成功运行了Linux系统。该项目利用PDF的Javascript引擎和asm.js编译的TinyEMU,通过ASCII字符模拟屏幕输出,按键实现输入。虽然启动时间较长(30-60秒),但其在浏览器内运行Linux的创意令人惊叹。项目代码开源,支持32位和64位系统。

开发

Lua 与 libuv 的异步编程实验:一个 C 模块集成项目

2025-01-31
Lua 与 libuv 的异步编程实验:一个 C 模块集成项目

这个项目探索了如何在 Lua 脚本中集成用 C 编写的模块,并利用 libuv 库实现异步操作。项目包含 Lua 解释器、libuv 库以及自定义的 C 模块,演示了如何编译 C 模块并将其加载到 Lua 中,最终实现了一个简单的 HTTP 服务器。项目结构清晰,提供了详细的安装和编译步骤,并包含示例代码,方便开发者学习和实践 Lua 与 C 的集成以及异步编程技术。

开发 libuv

拒绝采样算法的意外胜利:一次深入的性能测试之旅

2025-01-31

本文作者在优化光线追踪器PSRT的过程中,对生成单位圆/球体内随机向量的算法进行了深入的性能测试。起初,作者认为解析解算法比拒绝采样算法更高效,但经过Python和C++的基准测试,以及在不同编译器和硬件平台上的测试,结果却出乎意料:在开启编译器优化后,拒绝采样算法在许多情况下表现出更高的性能。作者总结道,在优化代码时,务必进行实际的性能测试,不要依赖理论上的推断,因为编译器的优化策略以及硬件平台的差异都会影响最终的性能表现。

开发

arXivLabs:与社区合作者的实验性项目

2025-01-31
arXivLabs:与社区合作者的实验性项目

arXivLabs是一个允许合作者直接在arXiv网站上开发和分享新功能的框架。参与arXivLabs的个人和组织都认同并接受了arXiv关于开放性、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,并且只与坚持这些价值观的合作伙伴合作。如有想法能为arXiv社区增值,请进一步了解arXivLabs。

开发 社区合作

arXivLabs:与社区协作者共建arXiv新功能

2025-01-31
arXivLabs:与社区协作者共建arXiv新功能

arXivLabs是一个实验性项目,允许合作者直接在arXiv网站上开发和分享新功能。参与其中的个人和组织都认同arXiv的开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,只与遵守这些价值观的合作伙伴合作。如果你有想法能为arXiv社区增值,那就了解更多关于arXivLabs的信息吧!

开发 开放平台

Ruby 的单例类:一个鲜为人知的核心特性

2025-01-31

本文深入探讨了 Ruby 中单例类的概念,它虽然没有官方名称多年,却是 Ruby 面向对象语义的关键。文章解释了单例类并非真正的单例或类,而是解决如何在纯面向对象语言中将方法附加到特定类的问题的巧妙方案。文章对比了 Python 和 Smalltalk 的解决方案,并详细解释了 Ruby 使用单例类实现类方法的机制,包括三种定义单例类方法的语法,以及 Ruby 选择这种方案的原因,最终揭示了单例类在 Ruby 面向对象系统中的一致性和重要性。

开发 单例类

Perf 性能分析工具的栈展开难题

2025-01-31
Perf 性能分析工具的栈展开难题

Perf 是一款强大的性能分析工具,它通过 PMU 计数器溢出中断来捕获线程状态,进行性能分析。但栈展开却是一个棘手的问题。现代编译器默认不生成帧指针,导致栈回溯变得困难。虽然可以使用 -fno-omit-frame-pointer 重新编译,但代价高昂且可能导致系统库不兼容。DWARF 提供了另一种方案,但其复杂性和性能开销巨大,Linus Torvalds 都明确反对将其用于内核栈展开。因此,Perf 采取折中方案:只复制栈顶部分到用户空间进行展开,虽然限制了栈大小 (65,528 字节),但能有效平衡性能和实用性。

开发 栈展开

Go 脚本库:script — 简化系统管理任务

2025-01-31
Go 脚本库:script — 简化系统管理任务

Go 语言的 `script` 库为系统管理员提供了类似 shell 脚本的强大功能,例如读取文件、执行子进程、计数行数、匹配字符串等。它以管道方式处理数据流,并提供简洁的 API,让 Go 编程如同 shell 脚本一样高效便捷。`script` 支持多种操作,包括文件读写、HTTP 请求、外部命令执行以及自定义过滤器,极大简化了系统管理任务。例如,它可以轻松实现类似 `grep` 的功能,并支持并发执行,提高效率。

开发

uscope: 一款原生代码图形化调试器

2025-01-31
uscope: 一款原生代码图形化调试器

uscope 是一款针对 Linux 系统的原生代码图形化调试器和自省工具链,目前尚处于早期开发阶段,作者计划逐步完善其功能,包括支持多种编程语言(C、Zig、C++、Go、Rust、Odin、Jai 等)、多线程程序调试、代码导航、远程调试等。该项目旨在构建一个灵活、可扩展的调试系统,并提供友好的用户界面。作者也计划将其构建为库,以便其他开发者能够基于其构建更有趣的工具。

开发 原生代码

VoidDB性能吊打LMDB、BoltDB、LevelDB和BadgerDB

2025-01-31
VoidDB性能吊打LMDB、BoltDB、LevelDB和BadgerDB

近日,VoidDB数据库在基准测试中展现出惊人的性能优势。测试结果显示,VoidDB在Put、Get和GetNext操作上均显著优于LMDB、BoltDB、LevelDB和BadgerDB等主流嵌入式数据库。尤其在Put操作上,VoidDB的性能是BoltDB的近4倍,是LevelDB的近3倍。这表明VoidDB在高性能场景下具有极强的竞争力,为开发者提供了一种高效可靠的数据库选择。

开发 VoidDB

MillenniumDB:一款新型图数据库管理系统

2025-01-31
MillenniumDB:一款新型图数据库管理系统

MillenniumDB是由千年数据基础研究学院(IMFD)开发的一款面向图的数据库管理系统。它支持多种图模型,并提供RDF/SPARQL和自定义属性图查询语言的支持。目前该项目仍在积极开发中,尚未达到生产就绪状态,但已具备相当的功能,并计划在不久的将来添加对GQL的支持。开发者提供了详细的安装、配置和使用方法说明,以及使用Docker部署的方案。

开发 SPARQL

Linux 6.14内核迎来KVM虚拟化更新

2025-01-31

即将发布的Linux 6.14内核包含大量KVM虚拟化改进。更新包括:移除AMD CPU上冗余的TLB刷新;改进KVM x86 CPUID功能基础架构以追踪所有vCPU能力;继续支持Intel TDX虚拟机;改进VM-Exits处理以提升VMX和SVM使用的一致性;RISC-V KVM支持现在启用Zabha、Svvptc和Ziccrse扩展支持。这些改进将提升虚拟机的性能和稳定性。

开发

用球面嵌入构建3D网格:一种新颖的表面重建方法

2025-01-31

本文探讨了一种新颖的3D模型表面重建方法——球面嵌入。该方法通过将点云投影到球面上,再利用凸包构建网格,解决传统方法在处理复杂形状和缺失数据时可能出现的孔洞问题。虽然该方法在处理Stanford Bunny模型时展现了一定的优势,尤其是在保证网格完整性方面,但在效率和精度上仍有待提高,与Poisson surface reconstruction等传统方法相比,需要更多迭代和参数微调才能获得理想结果。文章详细介绍了算法实现过程,并通过代码示例展示了不同参数下算法的性能。

FOSDEM 2025:开源移动的盛会

2025-01-31
FOSDEM 2025:开源移动的盛会

2025年2月1日至2日,比利时布鲁塞尔将举办FOSDEM开源开发者大会。今年的焦点之一是“开源移动”,专门设立了半天时间(2月1日下午14:55至19:00)的议程,涵盖一系列关于FOSS移动设备的精彩演讲。除了演讲外,还有多个项目展台,开发者可以交流学习,并有机会获得贴纸。此外,还计划在2月2日下午2点举行小型线下聚会。

开发

GitHub代码建议应用限制:你可能遇到的问题

2025-01-31
GitHub代码建议应用限制:你可能遇到的问题

这篇GitHub文档片段列举了应用代码建议时可能遇到的各种限制,例如代码无修改、拉取请求关闭、查看部分更改、单行应用建议、应用于已删除行、无效建议以及其他一些暂时性限制。这些限制旨在维护代码库的完整性和一致性,并确保建议的有效应用。

Lua 序列化库 ldump:轻松处理复杂数据结构

2025-01-31
Lua 序列化库 ldump:轻松处理复杂数据结构

ldump 是一个强大的 Lua 序列化库,能够处理各种复杂数据结构,包括循环引用、函数(甚至带有 upvalue)、元表、协程和用户数据。它将数据序列化为可执行的 Lua 代码,通过 `load(data)() `进行反序列化。ldump 优先考虑功能性和灵活性,而非速度和大小,非常适合需要保存复杂游戏状态等场景。虽然输出代码较大,但可以使用现代压缩算法进行压缩。它支持 Lua 5.1 到 5.4 以及 LuaJIT,并经过了各种边缘情况测试。

开发 ldump

React UI 测试的非确定性难题

2025-01-31

React UI 测试的挑战在于其异步更新机制。与直接操作 DOM 不同,React 的渲染器异步更新 UI,测试难以精确把握 UI 状态的更新时机。测试工具如 `act` 和 `waitFor` 只能缓解问题,但本质上是“最终会发生某些事”的权宜之计。微小的 UI 变化(如动画延迟、状态更新顺序)都可能导致测试失败,需要大量修改现有测试。这使得 React UI 测试维护成本高昂,成为许多开发团队的痛点。

Ghostty 1.1.0 发布:修复关键错误和提升用户体验

2025-01-31
Ghostty 1.1.0 发布:修复关键错误和提升用户体验

Ghostty 1.1.0 版本历经一个月的开发,整合了来自 84 位贡献者的 564 次提交。此版本专注于修复 1.0 版本中反馈的关键错误和提升用户体验。主要改进包括:修复文件描述符泄漏问题;Linux 系统下支持服务器端装饰 (SSD),使 Ghostty 在不同桌面环境下更原生;改进输入法 (IME) 的可靠性和一致性;添加新的 keybind 前缀 performable;macOS 系统下改进 Alpha 混合,提升色彩精准度;快速终端改进,支持原生全屏窗口等。未来版本将移除 gtk-adwaita 选项,强制依赖 libadwaita,以提升稳定性和可维护性。

开发

Go语言的设计哲学:权衡与取舍

2025-01-31

本文探讨了Go语言的设计理念及其优缺点。Go语言诞生于Google,旨在简化大型并发服务器代码的编写和维护。作者通过分析Go语言的特性,例如简化的文件系统API、缺乏运算符重载、显式的错误处理以及与其他语言的互操作性,来解释其设计决策背后的权衡。虽然Go语言在某些方面受到批评,例如缺乏泛型(现已添加)和对Windows的支持不足,但作者认为这些都是为了实现其主要设计目标而做出的有意识的取舍,最终使Go成为一款高效且易于使用的工程语言。

开发

Hydro:Rust 的高性能分布式编程框架

2025-01-31
Hydro:Rust 的高性能分布式编程框架

Hydro 是一个用 Rust 编写的用于构建高性能分布式系统的框架,它通过数据流语言和高性能单线程 DFIR 运行时,提供了一种“构建正确”的分布式服务方法。与 Actor 或 RPC 等传统架构不同,Hydro 使用编排式 API,使跨多个位置的计算描述更加简洁。它还集成了 Hydro Deploy,方便本地或云端部署。Hydro 采用两阶段编译,先在开发者本地生成部署计划,再编译为 DFIR 生成各个机器的二进制文件,最后根据计划和云资源规格部署到云端。它已被用于构建各种高性能分布式系统,包括两阶段提交和 Paxos 等经典协议的实现。

开发

sixos:基于Nixpkgs和s6的轻量级操作系统

2025-01-31
sixos:基于Nixpkgs和s6的轻量级操作系统

Adam Joseph发布了sixos,一个基于Nixpkgs和s6的全新操作系统,旨在替代systemd。sixos抛弃了systemd的单体架构,采用更简洁的infuse组合器管理服务,并与Nixpkgs的包管理方式保持一致。它还支持ownerboot,实现从引导程序到系统内核的完整版本控制和安全管理,彻底消除了固件和软件之间的界限。目前,sixos已在作者的各种设备上成功运行,包括工作站、服务器、路由器等。

开发 Nixpkgs s6

一个极简的Ruby窗口管理器:rubywm

2025-01-31
一个极简的Ruby窗口管理器:rubywm

作者基于对现有窗口管理器的不足,用不到1000行纯Ruby代码(包括X11驱动)编写了一个极简的窗口管理器rubywm。它支持平铺和浮动窗口布局,但缺乏窗口装饰和拖拽功能。所有键盘操作都依赖于外部工具(如sxhkd),通信通过X11 ClientMessage事件完成。目前仅支持单显示器,且处于实验阶段,存在崩溃风险。作者主要目的是满足自身需求,而非追求广泛用户群体。

开发

在本地部署 671B 参数的 DeepSeek R1 模型

2025-01-31

本文介绍了使用 Ollama 在本地部署 671B 参数的 DeepSeek R1 大型语言模型的经验。作者尝试了两种量化版本:1.73 位和 4 位,分别需要至少 200GB 和 500GB 的内存。在拥有四块 RTX 4090 和 384GB DDR5 内存的工作站上,测试结果显示 1.73 位版本生成速度略快,但 4 位版本更稳定,且更不容易生成不当内容。作者建议将模型用于较轻量级的任务,避免长文本生成导致速度显著下降。部署过程需要下载模型文件、安装 Ollama、创建模型文件并运行模型,过程中可能需要调整 GPU 和上下文窗口大小参数以避免内存溢出。

开发

arXivLabs:与社区协作者合作的实验项目

2025-01-31
arXivLabs:与社区协作者合作的实验项目

arXivLabs是一个允许协作者直接在arXiv网站上开发和分享新功能的框架。参与arXivLabs的个人和组织都认同并接受了arXiv关于开放性、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,并且只与遵守这些价值观的合作伙伴合作。如果你有想法可以为arXiv社区增值,请进一步了解arXivLabs。

开发 社区协作

Reaktiv:Python 的响应式编程库

2025-01-31
Reaktiv:Python 的响应式编程库

Reaktiv 是一个为 Python 打造的响应式编程库,其设计灵感源于 Angular 的响应式模型,并提供一流的异步支持。它允许开发者轻松创建和管理依赖于数据的信号,当数据变化时,自动更新依赖项。通过简单的 API,Reaktiv 支持同步和异步上下文,并具有自动依赖追踪、零外部依赖、高效内存管理等特性,极大地简化了异步编程的复杂性。

Jane Street历时十年,最终用Dune取代Jenga构建系统

2025-01-30
Jane Street历时十年,最终用Dune取代Jenga构建系统

Jane Street公司最初开发了OCaml构建系统Jenga,但因其局限性而未被广泛采用,甚至一度撤销了开源。随后,他们开发了更简易的Jbuilder,意外地因其速度优势而流行起来,并最终演变为Dune。经过多年努力,Jane Street团队成功将内部7000万行代码的构建系统从Jenga迁移到Dune,提升了构建速度,并为Dune的未来发展奠定了坚实基础。

开发

Distr:简化企业软件分发的开源平台

2025-01-30
Distr:简化企业软件分发的开源平台

Distr是一个简化企业软件分发到客户控制或共享责任环境的平台。它提供直观的Web UI,方便查看所有部署和连接的代理;白标客户门户允许客户控制其部署;强大的SDK支持API访问;并且完全开源且可自托管。Distr Hub以Docker镜像分发,提供Docker Compose示例部署。文档详细介绍了自托管和从源码构建的过程,并提供了JavaScript SDK以方便应用集成。

开发 软件分发
1 2 172 173 174 176 178 179 180 213 214