分类: 开发

Zig语言GPU编程:告别C++,拥抱现代化

2025-04-18

过去,GPU编程意味着要与C++编译器、臃肿的SDK和厂商专用的工具链纠缠不清。但现在情况变了!你可以使用Rust和Zig等现代语言编写GPU代码,层级更少。本文探讨了Zig的GPU后端现状及其在Vulkan、OpenCL和原生ISA上的表现。Zig支持SPIR-V、PTX和AMDGCN,允许直接生成可在运行时加载的原生二进制文件,无需接触CUDA、HIP或HLSL。虽然Vulkan和OpenCL是主要的SPIR-V环境,但它们在某些方面存在差异,导致Zig的SPIR-V后端在Vulkan和OpenCL目标上的行为测试通过率不同。未来,Zig计划提升SPIR-V后端成熟度,提供CUDA/HIP运行时绑定,并在标准库中添加更多GPU算法。

开发

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

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

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

开发

突破性约束系统:解决动态媒介难题

2025-04-18
突破性约束系统:解决动态媒介难题

在第二阶段的开发中,团队成功克服了约束系统中“漂浮感”、“爆炸”和性能差等难题。通过传播已知量、利用线性关系减少求解变量维度以及将约束聚类为独立求解的集群等技术,显著提升了约束系统的稳定性和性能。此外,团队尝试了多种求解器,并通过改变值表示方式(例如使用极坐标系),进一步优化了系统。这些改进使得构建物理上准确的机械结构,以及实现真正双向计算成为可能,为动态媒介的构建奠定了坚实基础。

Attune:安全高效的Linux软件包发布和托管工具

2025-04-18
Attune:安全高效的Linux软件包发布和托管工具

Attune是一个用于安全发布和托管Linux软件包的工具,支持自托管和云托管两种部署方式。其CLI工具本地进行仓库索引签名,保证密钥安全。增量重建索引机制使其速度极快。目前支持APT(Debian和Ubuntu)仓库,更多类型即将推出。只需5分钟,即可完成APT仓库的搭建,包含Docker和GnuPG的使用。

Objective-C:一段被遗忘的编程语言的传奇

2025-04-18
Objective-C:一段被遗忘的编程语言的传奇

莱布尼茨梦想的“普遍特征”在编程语言中延续,Objective-C便是其中一个例子。作者讲述了它如何成为他学习编程的入门语言,以及它在早期iOS开发中的重要作用。尽管Objective-C因其冗长的语法而饱受批评,但它却因历史的巧合而成为苹果生态系统的基石,作者用自身经历诠释了这段传奇,并表达了对这门语言复杂又充满魅力的感受。

开发

PyCA Cryptography 的全新 ASN.1 API:速度与安全兼顾

2025-04-18

PyCA Cryptography 团队正在开发一个全新的 ASN.1 API,该 API 使用纯 Rust 编写的解析器,显著提升了性能,并减少了与其他 ASN.1 解析器差异带来的安全风险。新 API 还采用了声明式 dataclasses 风格接口,提升了代码可读性和可维护性。此举旨在解决现有 Python ASN.1 库在性能和安全方面的不足,并更好地支持 Sigstore 等新兴生态系统。

告别缓慢的C/C++/汇编代码:高效编程的实用指南

2025-04-18
告别缓慢的C/C++/汇编代码:高效编程的实用指南

这个仓库提供了一系列C和C++高效编程的实用示例,涵盖从微内核到并行算法等多个主题。它不仅展示了如何利用C++20特性和编译器优化技巧提升性能(例如,将三角函数计算速度提升40倍),还深入探讨了避免性能瓶颈的最佳实践,例如如何高效处理JSON、使用STL关联容器以及选择合适的并行编程模型。该项目还包含汇编、CUDA和FPGA等硬件加速相关的代码示例,旨在帮助开发者编写更快速、更安全的代码。

开发

AI代码编辑器Cursor的AI客服编造政策导致用户取消订阅

2025-04-18
AI代码编辑器Cursor的AI客服编造政策导致用户取消订阅

一款名为Cursor的AI代码编辑器最近因为其AI客服编造公司政策而引发用户不满。一位开发者发现切换设备会立即注销其Cursor会话,联系客服后,名为“Sam”的AI客服回复称这是新的安全策略。然而,该策略并不存在,AI客服编造了虚假信息,导致用户抱怨和取消订阅。这凸显了在客户服务中使用AI系统缺乏人工监督的风险,可能造成用户不满、信任受损以及经济损失。

开发

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

2025-04-18
arXivLabs:与社区协作者的实验性项目

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

开发

Defold游戏引擎更新连连:新版本发布及云构建改进

2025-04-18
Defold游戏引擎更新连连:新版本发布及云构建改进

Defold游戏引擎在2024年下半年到2025年初发布了多个版本更新(1.9.6, 1.9.7, 1.9.8),并发布了2024年度游戏作品展示视频。此外,Defold团队还推出了编辑器脚本API的技术预览版,用于创建交互式UI元素,以及对云构建服务器进行了重大改进,简化了开发和维护流程。这些更新和改进都旨在提升Defold引擎的易用性和效率,为开发者提供更强大的游戏开发工具。

开发

Jai编程语言:为经验丰富的程序员打造的现代化利器

2025-04-18

作者是一位经验丰富的程序员,他尝试过许多编程语言,最终在Jai语言中找到了归宿。他详细阐述了Jai的优点,例如其简洁的语法、极快的编译速度、强大的元编程能力以及跨平台特性。他还谈到了在实际项目中使用Jai的经验,并解释了为什么Jai至今仍处于封闭测试阶段。总而言之,作者对Jai赞赏有加,认为它是一款能够提升程序员效率并编写出高质量、高效软件的现代化编程语言。

开发 Jai

放弃自托管Sentry:16GB内存需求和复杂安装让我望而却步

2025-04-18
放弃自托管Sentry:16GB内存需求和复杂安装让我望而却步

作者讲述了放弃自托管Sentry的经历。最初,由于工作需要,作者成功自托管了Sentry。但几年后,当再次尝试为同事搭建自托管Sentry时,他发现Sentry的文档充满了关于自托管风险的警告,并要求至少16GB内存和多核CPU,这不仅成本高昂,而且维护难度极大,安装过程涉及数百行脚本。网络上的用户反馈也证实了自托管Sentry的维护困难。最终,作者放弃了自托管Sentry,并决定开发一个更轻量级的替代方案。

开发 Sentry

6万行Lua代码的开发经验:一个游戏开发者的反思

2025-04-18
6万行Lua代码的开发经验:一个游戏开发者的反思

Luden.io的Oleg与Craftomation 101的首席程序员Ivan探讨了使用Lua开发6万行代码游戏的经验。Ivan谈到了Lua的优缺点,例如缺乏增量运算符和类,以及数组索引从1开始。尽管如此,他欣赏Lua的简单性和灵活性,以及其“表”的强大功能,但也指出由于其动态类型特性,在大型项目中可能会遇到运行时错误。他比较了Lua与Python和C++,并讨论了使用静态分析工具和潜在的Lua升级(如Luau)的可能性。最终,他认为Lua在Defold引擎中表现良好,但对于下一个项目,他可能会考虑更严格类型的语言,以在编译时发现错误。

开发 Defold

PostgreSQL共享缓冲区:内存越多越好吗?

2025-04-18
PostgreSQL共享缓冲区:内存越多越好吗?

拥有数百GB内存的机器已不再罕见。PostgreSQL的共享缓冲区能显著提升性能,但其工作机制并非直观。文章深入探讨了PostgreSQL的缓冲区替换策略,包括时钟扫描算法和环形缓冲区策略。虽然更大的共享缓冲区可能带来性能提升,但当内存超过一定阈值(例如64GB)时,性能反而可能下降,因为算法需要更长时间扫描缓冲区寻找可替换的块。文章建议根据数据大小和系统内存合理设置共享缓冲区大小,避免盲目追求过大而导致性能瓶颈。

开发

AI 将我们变成胶水:一个软件工程师的焦虑

2025-04-17

随着AI技术的飞速发展,特别是大型语言模型的应用,软件工程师的日常工作正在发生巨大变化。作者是一位软件工程师,他发现AI能够快速解决棘手的bug和进行代码重构,这虽然提高了效率,但却剥夺了他享受解决难题和深入理解系统架构的乐趣。作者认为,未来AI将胜任大部分“深度线性思维”的任务,而人类的角色将转变为连接AI和现实世界的“胶水”,负责处理AI无法胜任的繁琐任务,例如配置云服务或连接硬件电路。作者对未来充满焦虑,担心大部分工作将不复存在,即使出现新的工作机会,也可能只是重复且缺乏创造性的“胶水”工作。

开发 工作未来

Mux:为开发者打造的视频基础设施

2025-04-17
Mux:为开发者打造的视频基础设施

Mux 是一家致力于简化视频开发的公司,其使命是通过解决开发者在构建视频应用时遇到的难题(如视频编码、流媒体和监控)来实现视频技术的民主化。Mux 拥有来自 Google、YouTube 等科技巨头的优秀团队,并由 Coatue、Accel 等顶级投资者支持,服务于 Reddit、Vimeo 等众多知名客户。他们开发了 Mux Video 和 Mux Data 等产品,并主办 Demuxed 视频工程师大会,致力于打造更优质的视频体验。

使用GPG加密文件安全管理环境变量的Shell工具

2025-04-17
使用GPG加密文件安全管理环境变量的Shell工具

这是一个使用GPG加密文件安全管理环境变量的Shell工具。它解决了命令行工具需要使用包含敏感信息的未加密环境变量文件的问题。该工具允许用户从加密文件中读取密钥,并方便地进行不同账户的登录和注销。它支持嵌套登录,并通过更新`SECRET_LOGIN`环境变量以及shell提示符来指示当前登录账户。此外,它还提供了账户文件名的自动补全功能。

Val: 一种基于Chumsky和Ariadne的任意精度计算器语言

2025-04-17
Val: 一种基于Chumsky和Ariadne的任意精度计算器语言

Val 是一种基于 Chumsky 和 Ariadne 构建的简单任意精度计算器语言,可在 Linux、MacOS 和 BSD 等多种系统上运行。它提供命令行界面、REPL 环境,支持语法高亮、命令历史和 Emacs 风格编辑。Val 支持函数、循环、条件语句等多种编程结构,并包含丰富的内置函数和常量,涵盖算术、逻辑、比较、集合操作等。此外,Val 还支持多种数据类型,包括数值、布尔值、字符串和列表。

开发

用距离函数驯服 iCalendar 循环事件

2025-04-17
用距离函数驯服 iCalendar 循环事件

作者在实现一个处理 iCalendar 文件的库时,遇到了处理循环事件的难题。iCalendar 使用复杂的规则来定义循环事件,传统的实现方法通常针对不同的频率和参数编写大量特定逻辑。作者另辟蹊径,将循环规则视为 SQL 查询,并借鉴计算机图形学中签名的距离函数(SDF)的思想,用距离函数来表示事件的发生。这种方法将复杂的规则分解成简单的距离函数,通过迭代计算找到事件的发生时间,避免了大量的条件判断,使得代码更简洁、更易于维护。虽然初始实现效率不高,但作者通过优化,使其能够在毫秒级内处理复杂的循环规则。

(pwy.io)

TypeScript函数参数:对象参数优于单个参数

2025-04-17

在TypeScript中编写函数时,参数传递方式有两种:单个参数和对象参数。文章指出,对象参数通常更好。使用单个参数时,参数的意义难以理解,代码易出错且难以维护。而使用对象参数,例如`{firstName: "John", lastName: "Doe", age: 28, isActive: true}`,则清晰明了,易于阅读和维护,TypeScript的自动补全和类型安全功能也能更好地发挥作用。

开发 函数参数

SQLite虚拟表中的写入和事务支持

2025-04-17

本文深入探讨了SQLite虚拟表中写入和事务支持的实现细节。通过实现xUpdate、xBegin、xSync、xCommit和xRollback等钩子函数,虚拟表可以支持写入操作并确保事务完整性。文章解释了SQLite的回滚日志和超级日志机制如何在单数据库和多数据库场景下协调原子提交,以及虚拟表如何通过两阶段提交协议参与其中。作者强调,持久化操作必须在xSync中完成,xCommit和xRollback应仅执行幂等性的清理工作,避免可能导致失败的操作。

开发 虚拟表

AgentAPI:统一控制编码AI代理的HTTP API

2025-04-17
AgentAPI:统一控制编码AI代理的HTTP API

AgentAPI是一个强大的HTTP API,用于控制Claude Code、Goose、Aider和Codex等编码AI代理。它提供了一个统一的聊天界面,允许用户通过简单的API调用与这些代理交互,甚至可以构建一个代理控制另一个代理的MCP服务器。AgentAPI自动处理终端输出,去除冗余信息,并将其解析为独立的消息,简化了与编码AI的交互过程。虽然未来大型语言模型可能推出官方SDK,但AgentAPI致力于成为一个通用的适配器,以便开发者能够轻松切换不同的编码AI代理。

开发 HTTP API

Ubuntu 25.04 “Plucky Puffin”:焕新登场,性能与安全兼备

2025-04-17
Ubuntu 25.04 “Plucky Puffin”:焕新登场,性能与安全兼备

Canonical发布了Ubuntu 25.04 “Plucky Puffin”,带来了GNOME 48、改进的安装和启动体验,以及针对Spring框架的全新“devpack”。该版本提升了Intel GPU上的AI工作负载性能,并支持AMD SEV-SNP的机密计算。Linux 6.14内核改进了调度,并引入了新的NTSYNC驱动程序,提升了Wine和Proton上Windows游戏的性能。此外,Ubuntu 25.04还包含最新的工具链、改进的管理功能和网络控制,以及对Intel Core Ultra处理器和ARM64硬件的增强支持。

开发

沙箱中运行Python代码的MCP服务器

2025-04-17
沙箱中运行Python代码的MCP服务器

本文介绍了一个使用Pyodide在Deno中运行Python代码的Model Context Protocol (MCP) 服务器,该服务器为Python代码提供了一个安全的沙箱环境,与操作系统隔离。服务器支持多种运行模式,包括标准输入输出(stdio)、服务器端事件(SSE)以及预热模式,方便开发者测试和部署。文中还提供了一个使用PydanticAI和该MCP服务器的示例,演示了如何通过Agent与大型语言模型交互。

开发

Erlang/OTP SSH 服务器存在严重安全漏洞:可远程执行代码

2025-04-17

Erlang/OTP 的 SSH 服务器中发现了一个危急的安全漏洞 (CVE-2025-32433),允许未经身份验证的远程攻击者执行任意代码。该漏洞存在于 OTP-27.3.3、OTP-26.2.5.11 和 OTP-25.3.2.20 之前的版本中,攻击者可利用 SSH 协议消息处理中的缺陷,在无需凭据的情况下访问并控制受影响的系统。官方已发布补丁,建议用户尽快升级到 OTP-27.3.3、OTP-26.2.5.11 或 OTP-25.3.2.20 及以上版本。

开发 Erlang/OTP

DeepSeek开源分布式文件系统3FS深度解析

2025-04-17

DeepSeek开源了一款名为3FS(Fire-Flyer File System)的分布式文件系统。文章深入探讨了分布式文件系统的概念和3FS的工作原理。3FS由Meta(元数据管理)、Mgmtd(管理服务器)、Storage(存储节点)和Client(客户端)四种节点类型构成,采用CRAQ(Chain Replication with Apportioned Queries)协议实现强一致性。文章还分析了3FS的性能特点,并对未来性能测试和改进方向进行了展望。

开发 CRAQ

Go-MCP: 简洁易用的MCP服务器开发Go SDK

2025-04-17
Go-MCP: 简洁易用的MCP服务器开发Go SDK

Go-MCP是一个用于轻松构建MCP(模型上下文协议)服务器的Go SDK。它提供类型安全、直观的接口,使服务器开发变得轻而易举。通过代码生成确保工具和提示参数的静态类型检查,从而在编译时而不是运行时捕获错误。其简洁的API和开发者友好的设计使其易于上手。该项目提供了详细的示例和文档,并支持多种MCP功能,例如工具、提示、资源管理和日志记录。虽然目前不支持动态工具添加,但该项目正在积极开发中,未来将支持批量处理、流式HTTP传输和进度通知等功能。

开发

Rust编译时间优化:从25分钟到2分钟

2025-04-17
Rust编译时间优化:从25分钟到2分钟

Feldera团队在使用Rust编译大型SQL生成的代码时遇到了编译时间过长的问题,一个8562行SQL代码生成的10万行Rust代码需要25分钟才能编译完成。他们尝试了多种优化方法,例如类型擦除和代码去重,但收效甚微。最终,他们通过将生成的Rust代码拆分成1106个小的crate,并利用多核并行编译,将编译时间缩短到了2分钟以内,充分利用了多核处理器的性能。

开发 多核并行

在 Apple Silicon 上使用 UTM 构建 Linux 开发环境

2025-04-17
在 Apple Silicon 上使用 UTM 构建 Linux 开发环境

本文介绍了如何在 Apple Silicon 芯片的 Mac 上使用 UTM 虚拟机快速搭建 Linux 开发环境。通过 Homebrew 安装 UTM 和 cdrtools,并利用 cloud-init 脚本实现自动化配置,包括安装 Git、Docker 等常用开发工具以及 SSH 密钥。文章详细讲解了创建虚拟机、导入镜像、配置 cloud-init 脚本以及移除临时驱动器的步骤,最终构建一个可用的 Linux 开发环境。

开发 UTM

从零开始理解可微编程

2025-04-17

本文深入浅出地讲解了可微编程,从微积分中的导数定义出发,逐步解释了梯度、方向导数和雅可比矩阵的概念。文章详细阐述了数值微分、符号微分和自动微分(正向模式和反向模式)三种微分方法,并比较了它们的优缺点。最后,文章通过一个图像去模糊的案例,演示了如何利用反向模式自动微分结合梯度下降法解决实际优化问题。

开发
1 2 109 110 111 113 115 116 117 213 214