<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Dlite的技术笔记]]></title><description><![CDATA[随手记录的开发相关笔记，希望对他人也有帮助]]></description><link>https://blog.csdn.net/DLite</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; DLite]]></copyright><item><title><![CDATA[泛型实现启示（四）：编译期条目生成]]></title><link>https://blog.csdn.net/DLite/article/details/170780587</link><guid>https://blog.csdn.net/DLite/article/details/170780587</guid><author>DLite</author><pubDate>Sat, 14 Nov 2026 22:47:30 +0800</pubDate><description><![CDATA[同一个 Box<T>，两处构造，编译器给的处理并不一样：类型实参全部已知的，当场拼出完整条目，构造指令直接带它的下标；实参里含类型参数的，只留一张缺位清单，等运行时照清单填回。这条线往哪画，六家语言各不相同：C++ 用到才生成，.NET 推到首次构造，Java 擦除后什么都不生成。本文接着核对类型实参怎么从目标位置读出来、编译器什么时候当场生成条目、哪些构造编译期先拒，再落到 NLang 0.13.x 的发射去重、链接合并与加载驻留。附录 12 条术语。]]></description><category></category></item><item><title><![CDATA[泛型实现启示（三）：运行时安全网]]></title><link>https://blog.csdn.net/DLite/article/details/170770343</link><guid>https://blog.csdn.net/DLite/article/details/170770343</guid><author>DLite</author><pubDate>Sat, 14 Nov 2026 10:47:37 +0800</pubDate><description><![CDATA[一次转型失败，什么时候被发现？Java 拖到取元素那一刻，C# 当场拦下——差的不是类型系统有多强，是判定点手上有没有类型实参。共享代码之后运行时还剩多少类型信息，决定检查能做到哪一层。本文按三个判定点逐个核对：对象转型、异常分派、运行时失败分层；Java 擦除、C# 具现、NLang 字典三条路线逐列对照，并落到 NLang 0.13.x 的描述符驻留、旁表、帧描述符与拼接记录。陌生名词见附录 20 条术语。]]></description><category></category></item><item><title><![CDATA[泛型实现启示（二）：实例化共享]]></title><link>https://blog.csdn.net/DLite/article/details/170657445</link><guid>https://blog.csdn.net/DLite/article/details/170657445</guid><author>DLite</author><pubDate>Thu, 12 Nov 2026 22:06:07 +0800</pubDate><description><![CDATA[类型实参没有消失，只是换了个地方存。代码共享之后，Go 1.18 把字典当额外参数传，NLang 把它登记成进程级驻留的描述符。本文拆共享的那一半：规范拼写与驻留怎么判定实例化身份，描述符何时写进对象、又怎么被 typeName 读出来，并对照 Swift 元数据唯一性与 Go 的字典分工，落到 NLang 0.13.x 类记录、描述符表、旁表与拼接记录的具体实现。]]></description><category></category></item><item><title><![CDATA[泛型实现启示（一）：模型的选择]]></title><link>https://blog.csdn.net/DLite/article/details/170242246</link><guid>https://blog.csdn.net/DLite/article/details/170242246</guid><author>DLite</author><pubDate>Sat, 07 Nov 2026 13:40:00 +0800</pubDate><description><![CDATA[六个主流语言，四组答案：C++ 和 Rust 为每个实例化各编一份机器代码，Java 只编一份并把类型参数擦掉，C# 代码共享与运行时类型两样都做，Go 与 Swift 保留共享代码再用隐藏参数传类型信息。所有泛型实现的差别归结为三个问题：代码体有几份、T 的值怎么存、运行时认不认识 T。本文逐一对照单态化、擦除、具现、字典四条路线，从值表示、分发模型和运行时类型信息提炼选型判据，最后落到 NLang 自己的三段字典选型与语言层规则。]]></description><category></category></item><item><title><![CDATA[并发语言实现（八）：并发与嵌入语言]]></title><link>https://blog.csdn.net/DLite/article/details/170183969</link><guid>https://blog.csdn.net/DLite/article/details/170183969</guid><author>DLite</author><pubDate>Fri, 06 Nov 2026 08:51:39 +0800</pubDate><description><![CDATA[嵌入式脚本系统中，跨语言调用易引发脚本阻塞宿主的疑难故障：现象为窗口卡死、无日志、开发机无法复现。根本原因在于脚本调用宿主函数（如host.confirm）时，占用同一线程，形成调用栈层层阻塞，且回调均按阻塞处理，导致整个进程停滞。虽嵌入省去跨进程通信开销，却带来共用地址空间风险——脚本野指针或死循环可直接破坏宿主。解决方案包括：单线程运行保障串行安全，通过Interpreter实例隔离；注册函数实现双向交互；输出输入由宿主接管；支持多载体并发以解阻塞困局。关键在于明确“谁拥有进程，谁负责边界约定”。]]></description><category></category></item><item><title><![CDATA[并发语言实现（七）：并发与本地调用]]></title><link>https://blog.csdn.net/DLite/article/details/170124784</link><guid>https://blog.csdn.net/DLite/article/details/170124784</guid><author>DLite</author><pubDate>Thu, 05 Nov 2026 09:27:39 +0800</pubDate><description><![CDATA[当本地代码（如C++函数）执行阻塞操作时，即使仅几百字节，也可能导致垃圾回收停顿延长、调度停滞和锁竞争，因运行时无法感知其内部行为。问题根源在于：原生调用脱离运行时控制，造成虚拟线程“钉住”——无法被暂停、迁移或安全回收。Go通过释放P保持调度，Erlang用dirty scheduler隔离慢函数，Java限制JNI使用专用线程池，CPython则显式释放GIL。共性是：将阻塞风险显式化，并在调用边界上由运行时或开发者承担代价。NLang进一步提出通过regBlocking等协议明确声明阻塞属性，实现安全]]></description><category></category></item><item><title><![CDATA[NLang 0.11.0 发布：从假并行到真并行]]></title><link>https://blog.csdn.net/DLite/article/details/170044879</link><guid>https://blog.csdn.net/DLite/article/details/170044879</guid><author>DLite</author><pubDate>Wed, 04 Nov 2026 14:44:37 +0800</pubDate><description><![CDATA[NLang 0.11.0 发布：把 0.10.0 的虚假并行换成真的。一把全局解释器锁拆成五把域锁，纯计算随载体数扩展，通道乒乓压测吞吐提升 22%~79%；Semaphore、ReentrantMutex、AtomicInt 补齐并发原语，Promise 与 Future.selectAny 补全 Future，调试器可同时观察所有上下文；语言面新增初始化语法与跨模块访问，并把一批静默丢数据的行为收紧为编译错误。]]></description><category></category></item><item><title><![CDATA[并发语言实现（六）：GC与多核]]></title><link>https://blog.csdn.net/DLite/article/details/169937936</link><guid>https://blog.csdn.net/DLite/article/details/169937936</guid><author>DLite</author><pubDate>Tue, 03 Nov 2026 12:46:01 +0800</pubDate><description><![CDATA[M:N虚拟线程运行时里，挂起的帧栈必须纳入GC根集，多核并行又引出锁拆分与安全点会合难题。本文讲解NLang编译期位图精确扫描、停止世界会合回收协议，以及从GIL到五把域锁的三级收缩迭代、完全去GIL后字段级数据竞争的语义取舍，与阻塞原生调用、重入求值两大边界。]]></description><category></category></item><item><title><![CDATA[并发语言实现（五）：定时器与调度器]]></title><link>https://blog.csdn.net/DLite/article/details/169837599</link><guid>https://blog.csdn.net/DLite/article/details/169837599</guid><author>DLite</author><pubDate>Mon, 02 Nov 2026 13:29:57 +0800</pubDate><description><![CDATA[虚拟线程体系下thread.sleep是停泊而非OS休眠，定时器与调度器因此成为运行时核心组件。本文对比最小堆与时间轮两类定时器数据结构，剖析全局单队列、本地队列+工作窃取、事件循环三种调度架构，并讲解NLang调度器的唤醒亲和、确定性交错、死锁检测与调度配额设计。]]></description><category></category></item><item><title><![CDATA[并发语言实现（四）：Future/Promise与多路等待]]></title><link>https://blog.csdn.net/DLite/article/details/169735225</link><guid>https://blog.csdn.net/DLite/article/details/169735225</guid><author>DLite</author><pubDate>Sun, 01 Nov 2026 11:15:48 +0800</pubDate><description><![CDATA[JS的Promise、Java的CompletableFuture、C#的Task、Rust的Future，名字各异，底层都是「一个状态字段加一串等待者」。本文拆解轮询、回调、挂起三种消费方式与 race/all 多路等待，对比各家实现的完成权与竞速语义，并复盘 NLang 的特殊设计：Future 不独立保存状态，状态托管在虚拟线程上下文。]]></description><category></category></item><item><title><![CDATA[并发语言实现（三）：通道]]></title><link>https://blog.csdn.net/DLite/article/details/169618102</link><guid>https://blog.csdn.net/DLite/article/details/169618102</guid><author>DLite</author><pubDate>Sat, 31 Oct 2026 12:11:51 +0800</pubDate><description><![CDATA[通道是消息传递并发的核心原语。Go channel 有一处容易被忽略的快路径：发送时恰有接收方在等，值直接从发送者栈拷进接收者栈，绕过缓冲区也绕过堆分配。本文拆解「一把锁、一块缓冲、两条等待队列」的通用结构，对比 Rust、Erlang、C# 的做法，并复盘 NLang Channel<T> 的句柄交接与 close 广播实现。]]></description><category></category></item><item><title><![CDATA[并发语言实现（二）：锁与原子操作]]></title><link>https://blog.csdn.net/DLite/article/details/169552814</link><guid>https://blog.csdn.net/DLite/article/details/169552814</guid><author>DLite</author><pubDate>Sat, 31 Oct 2026 12:11:43 +0800</pubDate><description><![CDATA[「加锁很慢」是刻板印象：无竞争快路径只执行一条 CAS 原子指令，约几十个CPU周期，全程不进内核；只有标志已被占用才走排队、睡内核、等唤醒的慢路径，两条路差着两个数量级。本文拆解锁的快慢路径与防饿死设计，讲清睡内核线程与睡虚拟线程这条关键分叉，并复盘 NLang 从「连原子指令都不需要」到五把域锁的实现。]]></description><category></category></item><item><title><![CDATA[并发语言实现（一）：并发模型的选择]]></title><link>https://blog.csdn.net/DLite/article/details/169451720</link><guid>https://blog.csdn.net/DLite/article/details/169451720</guid><author>DLite</author><pubDate>Thu, 29 Oct 2026 12:48:36 +0800</pubDate><description><![CDATA[写解释器、做虚拟机的人迟早都会撞上同一个问题：函数挂起等待时，现场存放在哪里。本文把1:1、N:1、M:N线程模型的配比摆清楚，梳理Go、Java虚拟线程、C#、Rust、Python、Node在机器层面如何处理挂起现场，并交代NLang的选型取舍——放弃await，把调用栈搬到堆上，将递归解释器重构为帧栈机。]]></description><category></category></item><item><title><![CDATA[NLang 0.10.0发布：并发基础设施]]></title><link>https://blog.csdn.net/DLite/article/details/169267566</link><guid>https://blog.csdn.net/DLite/article/details/169267566</guid><author>DLite</author><pubDate>Tue, 27 Oct 2026 20:39:40 +0800</pubDate><description><![CDATA[NLang 0.10.0 把递归解释器重写为堆上帧栈机，补上虚拟线程、Mutex、Channel<T> 一整套并发原语：调用栈可在任意执行点冻结恢复，FIFO 配额调度保证并发交错确定可复现。本文拆解挂起机制、锁与信道的实现内幕，并回顾 0.9.x 把契约挪到编译期的系列改动。]]></description><category></category></item><item><title><![CDATA[Windows 非系统盘安装Pi Harness]]></title><link>https://blog.csdn.net/DLite/article/details/168976659</link><guid>https://blog.csdn.net/DLite/article/details/168976659</guid><author>DLite</author><pubDate>Sat, 24 Oct 2026 19:52:19 +0800</pubDate><description><![CDATA[本文介绍如何用一个脚本将 Pi AI Coding Agent 从 C 盘迁移至 D 盘，实现程序与数据分离部署。提供一键 PowerShell 脚本，自动配置路径、环境变量、PATH，并可选安装 fd 与 ripgrep。运行后需重启终端验证，确保路径生效，避免系统盘占用。适用于已安装 Node.js 的 Windows 系统。]]></description><category></category></item><item><title><![CDATA[AI会话代理要取代所有软件？]]></title><link>https://blog.csdn.net/DLite/article/details/168962474</link><guid>https://blog.csdn.net/DLite/article/details/168962474</guid><author>DLite</author><pubDate>Sat, 24 Oct 2026 10:55:37 +0800</pubDate><description><![CDATA[全能会话代理虽能执行复杂任务，但无法取代六类软件：专业创作设计（如Blender、Photoshop）、高风险合规系统（如财务ERP）、高密度信息浏览工具（如浏览器）、轻量化系统工具（如文件管理器）、垂直工业计算软件（如仿真工具）及沉浸式交互应用（如游戏）。这些软件的核心价值在于专业内核、实时交互与安全可控，会话代理仅作辅助调度。未来开发者应聚焦智能体对接、混合交互开发、领域深耕与AI治理等能力，实现从“编码者”向“系统把控者”的升级，而非被替代。]]></description><category></category></item><item><title><![CDATA[Claude Code更新失败解决方案]]></title><link>https://blog.csdn.net/DLite/article/details/168936699</link><guid>https://blog.csdn.net/DLite/article/details/168936699</guid><author>DLite</author><pubDate>Sat, 24 Oct 2026 07:30:00 +0800</pubDate><description><![CDATA[`Claude update` 原生更新命令失败问题的排查与解决。]]></description><category></category></item><item><title><![CDATA[NLang 0.9.0发布：成为可嵌入语言]]></title><link>https://blog.csdn.net/DLite/article/details/167811737</link><guid>https://blog.csdn.net/DLite/article/details/167811737</guid><author>DLite</author><pubDate>Tue, 13 Oct 2026 19:05:40 +0800</pubDate><description><![CDATA[0.9.0删除new关键字：构造调用Point(2, 3)、直接初始化声明、锚定花括号Point{...}、定长数组int[3]与int a[10];、裸字面量按目标类型推断；同时禁止变量复用可见类型名。汇总0.8.1～0.8.5主要变化：InvalidCastException可捕获、nide运行错误导航、下标复合赋值、length()方法化、func<>关键字、nlang::Interpreter C++嵌入API、终端浅色主题。]]></description><category></category></item><item><title><![CDATA[NLang0.8.0发布：语言完善与包扩展机制]]></title><link>https://blog.csdn.net/DLite/article/details/167270908</link><guid>https://blog.csdn.net/DLite/article/details/167270908</guid><author>DLite</author><pubDate>Thu, 08 Oct 2026 12:48:31 +0800</pubDate><description><![CDATA[NLang从v0.5.0至v0.8.0完成关键迭代，聚焦类型安全、性能优化与工程化升级。核心进展包括：字符串重构为GC托管不可变对象，数组升为一等类型实体，补齐12种标量类型并强化编译期校验；全链路支持UTF-8，彻底解决乱码问题；推出全新包管理体系，实现标准化打包与运行时动态链接；交互式能力增强，支持完整IO操作与原生终端调试。整体构建了更稳定、高效、易用的静态类型脚本生态。]]></description><category></category></item><item><title><![CDATA[LangGraph设计缺陷：并行汇聚节点执行次数问题]]></title><link>https://blog.csdn.net/DLite/article/details/166355907</link><guid>https://blog.csdn.net/DLite/article/details/166355907</guid><author>DLite</author><pubDate>Tue, 22 Sep 2026 12:23:44 +0800</pubDate><description><![CDATA[LangGraph 中多个前驱指向同一汇聚节点时，执行次数既不等于入边数，也不总是所有前驱完成后执行一次。本文以完整可复现示例拆解 Pregel 超步调度机制，剖析这一偶发复杂性的架构根源，并给出与汇聚语义的正确写法。]]></description><category></category></item></channel></rss>