New Go Garbage Collectora year agohttps://bsky.app/profile/michael.express/post/3lo7irdr6ic24Go程序新实验性垃圾回收器发布公告。该项目托管在GitHub上的Go语言代码库中。Michael Knyszek在其个人网站上发布了这一公告。该问题包含一个评论链接以供获取更多详情。文章强调由于网页应用的交互特性,需要JavaScript支持。
Vrs: Personal Software Runtime inspired by Emacs, Plan 9, Erlang, Hypermediaa year agohttps://github.com/leoshimo/vrsvrs是一个受Emacs、Erlang、Unix、Plan 9和超媒体系统启发的个人软件运行时,旨在提供整体性编程体验。vrs的核心原则包括愉悦感、一致性、简洁性、实用性和交互性。vrs包含lyric(嵌入式Lisp方言)、vrsd(运行时守护进程)、libvrs(共享库)、vrsctl(命令行客户端)和vrsjmp(GUI启动栏)等组件。Lyric语言特性涵盖函数定义、列表操作、模式匹配、进程间消息传递和服务注册功能。vrs中的进程采用轻量级隔离设计,通过消息传递进行通信,并内置发布-订阅机制。vrsctl提供交互式REPL和服务绑定等命令行操作接口。专为Lyric语言开发的Emacs主模式lyric-mode支持语法高亮和交互式开发环境。
Squiggle: A simple programming language for intuitive probabilistic estimationa year agohttps://www.squiggle-language.com/Squiggle 是一种为直观概率估算设计的简易编程语言它让概率分布的处理变得极其简单Squiggle 具有可移植性,可在任何支持 Rescript 和 JavaScript 的环境中使用它运行高效,在可能时避免蒙特卡洛模拟,但在必要时仍会使用该方法
On eval in dynamic languages generally and in Racket specifically (2011)a year agohttps://blog.racket-lang.org/2011/10/on-eval-in-dynamic-languages-generally.html`eval`函数是Racket等动态语言的核心,但经验丰富的程序员常因其潜在问题而避免使用`eval`就像用对方可能不懂的语言下达指令,容易导致不可靠的结果`eval`的合理使用场景包括动态生成并传递指令,例如向施工队动态发送作业指导在Racket中,`eval`与模块命名空间交互,DrRacket会为交互窗口设置命名空间Racket为`eval`设置的默认空命名空间可提醒程序员注意语言上下文安全考量要求限制`eval`的权限并避免引用混淆Mike Samuel强调应使语言具备可分析性,并限制嵌入式脚本语言的权限Hendrik Boom指出原文存在打字错误,关于`eval`的某个句子缺少'that'
Smallest Possible Filesa year agohttps://github.com/mathiasbynens/small收集各种语言中语法有效的最简文件始于一篇关于最小HTML/XHTML文件的博客文章欢迎提交PR;作者放弃版权列举压缩格式的最小文件示例(如.bz2、.gz、.rar、.tar、.zip)包含可执行格式(如.com、.exe、.elf、.class、.wasm)涵盖图像格式(如.bmp、.gif、.jpg、.png、.webp)罗列编程/脚本语言示例(如C、Java、Python、Ruby、JavaScript)包含标记/数据格式(如JSON、Markdown、SVG、YAML、HTML、XML)
Automated Verification of Monotonic Data Structure Traversals in Ca year agohttps://arxiv.org/abs/2505.18818现实世界的C代码中常见定制化数据结构操作。单调数据结构遍历(MDSTs)会单调地迭代结构,例如strlen或二叉搜索树插入操作。Shrinker是用于C语言MDST的新型自动化验证工具,采用替罪羊规模下降分析法。替罪羊规模下降技术利用原始输入与'缩减'输入之间的相似执行轨迹。新基准测试集包含100多个实例,证明了主流C代码库中MDST的正确性、等价性和内存安全性。在验证单调字符串和列表遍历方面,Shrinker性能优于最先进的工具。
Learning C3a year agohttps://alloc.dev/2025/05/29/learning_c3作者描述了学习C3编程语言的经历,其动机源于对新范式的好奇心和探索欲。C3被定位为C语言的进化版本,提供模块化、运算符重载、泛型、编译期执行等特性,旨在提升人机交互效率和优化能力。文章采用实时学习记录的方式,既体现了即时反馈的优势,也坦承学习过程中可能存在的认知偏差。讨论的核心语言特性包括:Hello World示例、foreach循环、while循环、带switch语句的枚举类型、defer关键字、结构体类型及错误处理机制。作者深入探究了C3的宏系统、类型属性、base64/hex字面量及原始类型,并与C语言及Zig、Rust等语言进行横向对比。通过构建C3计算器的实践案例,完整演示了词法分析、语法解析和运算执行过程,生动展现了该语言的语法特性。结论部分既肯定了C3作为更安全、更具表达力的C语言替代方案的潜力,也坦诚表达了对Zig等其他语言的个人偏好。作者赞赏C3可读性强的源代码和宏系统,但也对包含性切片语法和错误系统等设计决策提出了批评。
For your eyes only – Bitfield Consultinga year agohttps://bitfieldconsulting.com/posts/for-your-eyes-only错误信息应当具有说明性,不能仅显示'错误'或'失败'这样的简单提示程序员常忽视错误处理,这会导致无帮助的静默失败本文演示了如何改进Rust语言行数统计程序的错误处理机制在Rust中使用`?`运算符能有效传播错误显示用户友好的错误信息对良好用户体验至关重要标准错误输出(stderr)是显示错误信息的首选,可避免与正常输出混杂设置非零退出状态码有助于脚本检测和处理程序故障优雅处理无效输入(如非UTF-8编码)是构建健壮软件的关键Rust严格的类型系统和错误处理机制有助于创建持久稳定的程序
See You at the Last RailsConfa year agohttps://rubyonrails.org/2025/5/29/final-railsconf最后一届RailsConf大会将于7月8-10日在费城举行,庆祝Rails框架20年发展历程本届大会主题定为'Rails的过去、现在与未来'重点内容包含从Bundler工具出现前到Hotwire时代的Rails技术演进演讲嘉宾阵容包括DHH(框架创始人)、Rails核心团队成员及后台任务专题讨论目前大会门票仍在发售中
Making C and Python Talk to Each Othera year agohttps://leetarxiv.substack.com/p/making-c-and-python-talk-to-eachLeetArxiv是一个用于实现研究论文的平台,主要使用C和Python语言。该指南从基础开始,如定位Python.h文件,详细解释了如何从C语言中调用Python。步骤包括在C中包含Python头文件、使用Python路径编译C文件以及操作PyObject对象。提供了初始化Python环境、加载模块及从C调用Python函数的详细指导。示例涵盖了带参数和不带参数的函数调用,包括PyObject处理和内存管理。文章最后总结了整个流程,并附上了示例文件链接供参考。
Revisiting Loop Recognition in C++ in Rusta year agohttps://blomqu.ist/posts/2025/loop-recognition/2011年至2024年编程语言(C++、Java、Go、Scala)对比分析,着重展现Rust作为新兴热门语言的崛起与受推崇程度。Rust核心特性:高性能、类型安全、并发支持、无垃圾回收的内存安全机制,以及通过借用检查器实现的编译时检查。基于Rust的循环识别算法实现,对比安全Rust与非安全Rust方案,重点探讨符合Rust语言习惯的实践方法。C++与Rust(安全/非安全模式)的性能对比分析,涵盖代码量、编译时长、二进制文件大小、内存占用及执行耗时等维度。研究结论:Rust的Release版本在执行时间和内存使用上优于C++,其中非安全Rust性能最佳,而Debug版本执行速度较慢。
Show HN: Code_puppy – a CLI vibe coder that I vibe coded using a vide codera year agohttps://github.com/mpfaffenberger/code_puppyCode Puppy 是一款AI驱动的代码生成助手,旨在理解编程任务、生成高质量代码并解释其实现逻辑。功能包括多语言支持、交互式命令行界面,以及对生成代码的详细解析说明。支持通过pip简易安装,兼容GPT-4.1和Google Gemini等多种模型。可针对企业环境进行定制配置,包括自定义模型端点。既支持直接执行特定任务,也可运行交互模式。运行要求Python 3.9+版本及OpenAI、Gemini或Anthropic等模型的API密钥。项目采用MIT开源许可证。Puppy规则功能允许用户定义并强制执行编码规范与设计准则。
Fractran Interpretera year agohttps://tjwei.github.io/Fractran/FRACTRAN 是约翰·康威发明的一种图灵完全的深奥编程语言。一个 FRACTRAN 程序由一组有序的正分数列表和一个初始正整数输入 n 组成。程序运行时不断更新 n:找到第一个使 n*f 为整数的分数 f,将 n 替换为 n*f。重复这一过程直到没有任何分数与 n 相乘能得到整数时,程序停止运行。
Pure vs. Impure Iterators in Goa year agohttps://jub0bs.com/posts/2025-05-29-pure-vs-impure-iterators-in-go/Go语言在1.18版本引入泛型后标准化了迭代器实现,提升了灵活性和性能表现Go中的迭代器可分为'纯'迭代器(无状态、无副作用)和'不纯'迭代器(有状态、有副作用)官方文档将'单次使用迭代器'归类为不纯迭代器的子类,但这一分类被认为存在歧义且不够精确纯迭代器更易于逻辑推导且能减少堆内存分配,从性能角度更具优势但为了保持与相关迭代器(如bytes包中的实现)的一致性,某些场景仍需使用不纯迭代器Go社区仍在建立迭代器相关规范,关于术语定义和最佳实践的讨论持续进行中
C++ to Rust Phrasebooka year agohttps://cel.cs.brown.edu/crp/本书通过将常见的C++模式转化为地道的Rust代码,帮助C++程序员学习Rust。提供具体代码示例并讨论工程权衡。采用随机访问设计模式,方便读者按需查询特定C++到Rust的转换方法。由布朗大学认知工程实验室的C++和Rust专家编写。为初学者、嵌入式系统程序员及想深入理解Rust机制的读者推荐延伸学习资源。每页底部设有反馈表单链接,并包含研究用测验以收集改进意见。
Simpler Backoffa year agohttps://commaok.xyz/post/simple-backoff/指数退避加抖动机制常用于服务调用。传统方法动态计算延迟时间,可能存在潜在缺陷。简化版采用预定义延迟表,显著提升代码可读性与可维护性。查表法减少了变量和作用域,更易于推演行为逻辑。使用延迟表修改退避策略和重试次数更安全便捷。
Implementing a Fortha year agohttps://ratfactor.com/forth/implementing作者分享了实现Forth语言的经验,强调这一过程为学习串联式编程和计算机底层运作提供了宝贵机会。提出了三种实现Forth的途径:移植现有Forth(如JONESFORTH)、创建超微型Forth核心(例如PlanckForth/SmithForth/sectorforth/milliForth/StoneKnifeForth/'三指令'Forth)、围绕微型目标程序设计Forth(如Meow5和Snobol4th)。重点分析了移植现有Forth实现的教育价值,并以作者将JONESFORTH移植到NASM汇编器的亲身经历为例说明。探讨了极简Forth核心的概念,通过多个超紧凑Forth实现案例,论证了最少需要多少基础词汇就能自举完整语言。介绍了围绕特定目标程序定制Forth的创新思路,例如支持运行'99瓶啤酒'程序的SNOBOL4风格Forth实现Meow5。推荐了Forth实现者的学习资源:JonesForth源代码、Brad Rodriguez的《Moving Forth》系列教程,以及R.G. Loeliger的《Threaded Interpretive Languages》专著。
Show HN: A new programming language inspired by Go, no LLVMa year agohttps://github.com/nature-lang/natureNature是一种通用开源编程语言和编译器,专为安全、可靠、跨平台的软件开发而设计。特性包括简洁语法、不依赖LLVM或虚拟机、静态链接、完备的类型系统、高性能GC与内存分配器。支持高性能协程、内置libuv实现IO事件循环、模块化设计、包管理机制和常用数据结构。错误处理采用try+catch模式,match实现模式匹配,channel处理并发,select进行并发流程控制。遵循系统ABI规范,内置libc支持,可直接调用C标准库函数。当前版本支持linux/amd64、linux/arm64、darwin/amd64和darwin/arm64平台编译。后续计划包括优化使用体验、完善标准库、收集用户反馈和修复已知问题。Nature定位为Go语言的改进版,在保持相似运行时特性的同时解决了其局限性。适用于游戏开发、科学计算、人工智能、物联网、命令行工具和Web开发等领域。安装流程包含下载nature安装器、配置环境变量并通过nature -v命令验证。快速入门、语法文档和标准库说明可在官网查阅。项目源码采用Apache License 2.0协议,标准库使用MIT许可证授权。
Why Use Structured Errors in Rust Applications?a year agohttps://home.expurple.me/posts/why-use-structured-errors-in-rust-applications/Rust应用中的结构化错误能提升代码可维护性和可理解性库应暴露详细的错误类型以优化错误处理和文档说明应用常使用`anyhow`库简化错误传播流程自定义错误类型能增强代码审查和接口描述性错误类型可减少重复并提升错误信息的一致性自定义错误可通过附加数据和功能进行扩展结构化错误需要权衡代码量和维护成本性能考量需根据错误处理需求具体分析尽管存在权衡,结构化错误仍被认为利大于弊
Unexpected Gotchas in Making a Game Deterministica year agohttps://www.jfgeyelin.com/2025/05/unexpected-gotchas-in-making-game.html确定性编程需要谨慎设置随机数生成器的种子、处理多线程以及浮点运算。较不常见的陷阱包括编译器差异、编译器选项、标准库实现以及架构不同带来的问题。随机数生成问题源于`std::mt19937`中`uint_fast32_t`的使用,该类型会因架构(32位与64位)而异。标准库分布(如`std::uniform_int_distribution`)在不同实现中可能存在差异,导致非确定性行为。排序和参数求值顺序可能在不同平台(如Linux与Windows)上产生不同结果。内存使用限制是非确定性的,因为指针大小、对齐要求和STL实现存在差异。要实现确定性的内存限制管理,需要比单纯控制分配大小更高层次的抽象机制。文末提供了关于确定性浮点计算和游戏确定性的外部参考资料链接。