https://zhuanlan.fxzhihu.com/p/12834699352 #os #cpp #rust #learn 协程 云风
>在知乎上看到两篇 吹嘘 云风的 coroutine 库的文章。
人啊就是这样的,出名了以后,就是垃圾也有人吹捧。
🤔 回头我可以科普下非阻塞(异步)、调度器、C++赝品Promise、 所有的协程都是使用的同一条栈(单一调度器) 有什么不对
https://www.zhihu.com/question/524369963/answer/21981903209
为调用 atexit(cb, cbarg0) 这人还写了个 GCC 实现 new lambda ,其实都很简单: up=1; f=(A)=>A+up 弄成 _f=(A,v)=>A+v.up ,再生成个 A=>_f(A, (captured_data*)x86_get_eip()[code_size])
被称为 trampoline 代码模板
整的我不会了,函数是穷人的对象,new个虚表或双指针挺直白的玩意这么麻烦,这是为啥呢?
因为 obj->call() == (obj.call) (obj,) ,是thiscall 1静1动,双指针则是 (*to_trait).call(obj,) 1静2动,而 CDEF f() 就是直接jmp过去,f肯定要在堆上,不能是static,但是又不能把f[code_size]到处复制粘贴,只好让 f.bind()=new 固定大小的可调用指针+data ,这还要求 “堆内存可执行”
结论:CDEF 的函数指针,危险危险危险。 UNIX 不以 addCb( any cb(any data), any data) 暴露回调API,坏; Python thread 暴露data参数,更坏! (py 都支持 fnptr.f_lasti 协程了还在用老思想编程啊)
CDEF 支持非阻塞编程的正确做法是: 在 dlopen() 外支持 dlnew(template_so, {statics...}) ,就像 ThreadLocal 那样。 硬是要把static重绑定为参数,才能安全兼容C++的 [](){return} 字面
>在知乎上看到两篇 吹嘘 云风的 coroutine 库的文章。
人啊就是这样的,出名了以后,就是垃圾也有人吹捧。
🤔 回头我可以科普下非阻塞(异步)、调度器、C++赝品Promise、 所有的协程都是使用的同一条栈(单一调度器) 有什么不对
https://www.zhihu.com/question/524369963/answer/21981903209
为调用 atexit(cb, cbarg0) 这人还写了个 GCC 实现 new lambda ,其实都很简单: up=1; f=(A)=>A+up 弄成 _f=(A,v)=>A+v.up ,再生成个 A=>_f(A, (captured_data*)x86_get_eip()[code_size])
被称为 trampoline 代码模板
整的我不会了,函数是穷人的对象,new个虚表或双指针挺直白的玩意这么麻烦,这是为啥呢?
因为 obj->call() == (obj.call) (obj,) ,是thiscall 1静1动,双指针则是 (*to_trait).call(obj,) 1静2动,而 CDEF f() 就是直接jmp过去,f肯定要在堆上,不能是static,但是又不能把f[code_size]到处复制粘贴,只好让 f.bind()=new 固定大小的可调用指针+data ,这还要求 “堆内存可执行”
结论:CDEF 的函数指针,危险危险危险。 UNIX 不以 addCb( any cb(any data), any data) 暴露回调API,坏; Python thread 暴露data参数,更坏! (py 都支持 fnptr.f_lasti 协程了还在用老思想编程啊)
CDEF 支持非阻塞编程的正确做法是: 在 dlopen() 外支持 dlnew(template_so, {statics...}) ,就像 ThreadLocal 那样。 硬是要把static重绑定为参数,才能安全兼容C++的 [](){return} 字面
FxZhihu / Fixup Zhihu
点评 云风 的 C库 coroutine | FxZhihu
序在知乎上看到两篇 吹嘘 云风的 coroutine 库的文章。 人啊就是这样的,出名了以后,就是垃圾也有人吹捧。 今天来点评下,云风的 coroutine 到底垃圾在哪里。又或者说,一个优秀的协程,应该优秀在哪里。 云风错在哪里首先一个优秀的协程库,要做到“自然”。 什么是“自然”呢?就是要做到尽量不改变原来写同步阻塞IO逻辑的时候的代码。 因此引出第一错: 1 协程库不应该侵入 API 设计要使用云风的协程,被调度的协程必须有如…
https://github.com/ibraheemdev/modern-unix #tool #rust
#bash #linux #design https://www.micahlerner.com/2021/07/14/unix-shell-programming-the-next-50-years.html
三篇关于强类型IO的博文
和我的想法撞车了, 但我有信心在API设计上超过他们 😊
#bash #linux #design https://www.micahlerner.com/2021/07/14/unix-shell-programming-the-next-50-years.html
三篇关于强类型IO的博文
和我的想法撞车了, 但我有信心在API设计上超过他们 😊
#rust #algorithm #ml
https://go.dev/blog/swisstable
https://tangdh.life/posts/interesting/double-free/
分布式文件系统Fire-Flyer File System (3FS) ,专为解决AI训练和推理工作负载挑战而设计。它利用现代SSD和RDMA网络
https://github.com/deepseek-ai/smallpond
https://go.dev/blog/swisstable
https://tangdh.life/posts/interesting/double-free/
分布式文件系统Fire-Flyer File System (3FS) ,专为解决AI训练和推理工作负载挑战而设计。它利用现代SSD和RDMA网络
https://github.com/deepseek-ai/smallpond
go.dev
Faster Go maps with Swiss Tables - The Go Programming Language
Go 1.24 improves map performance with a brand new map implementation
Forwarded from &'a ::rynco::UntitledChannel (Rynco Maekawa)
#PL #Rust #OS #Linux | Ubuntu 从 25.10 开始将会使用 uutils 替代 GNU coreutils。
https://www.osnews.com/story/141908/ubuntu-to-replace-classic-coreutils-and-more-with-new-rust-based-alternatives/
https://www.osnews.com/story/141908/ubuntu-to-replace-classic-coreutils-and-more-with-new-rust-based-alternatives/
#algorithm #rust #math
https://blog.mwish.me/2025/04/19/Notes-on-Integer-Float-Operations/
https://gregoryszorc.com/blog/2024/03/17/my-shifting-open-source-priorities/
https://blog.mwish.me/2025/04/19/Notes-on-Integer-Float-Operations/
https://gregoryszorc.com/blog/2024/03/17/my-shifting-open-source-priorities/
风空之岛
Notes on Integer/Float Operations
一些整数和浮点数的基础,最近碰到一些坑,顺手整理一下。有的章节写的不太细是因为手头上没碰到直接的坑,所以只收集材料,不过多展开。碰到再补上。 整数的表示https://blog.mwish.me/2020/09/19/Integer-Endian/ 本节图片来自:https://cs61c.org/sp25/lectures/lec02/ 对于无符号整数 (unsigned integer),所有
duangsuse::Echo
看最近几条逆天,我要聊哲学 #CS 操作系统不就是4片3口虚拟化么 时间内存存储程序,网口线口板口 #os #plt #embed #recommend win,*nix,mac, aosp ios ;哪个不是只有这么点API和差异化 🦄?为了音视频和回应事件弄那么多框架外链新语法,不如3行 #web js。 像 bellard.org 那样的通才终究少数,搞出\0结尾无长度字串,连{}[]{type:}都没建模的libc算什么API啊?在位运算位flag上都被人打败 也配教人数据结构算法? 。 为这…
https://t.me/solidot/27034?comment=146342 #rust #recommend
https://t.me/dsuse/19854
C的选择本就是错误,C++更是拿锤子拔钉子
系统开发,不需要系统性反思吗? #wasm 或许有一点🤔
但是,我需要的是文内举例的,无论形式如何,实质都保持一致的编程哲学
而不是狂拽酷炫的hack。
https://t.me/dsuse/19854
C的选择本就是错误,C++更是拿锤子拔钉子
系统开发,不需要系统性反思吗? #wasm 或许有一点🤔
但是,我需要的是文内举例的,无论形式如何,实质都保持一致的编程哲学
而不是狂拽酷炫的hack。
Telegram
duangsuse in Solidot Unofficial
内存安全 #rust 其实就是 bytes reference 的泄露和广义越界检查,也涉及结构体、null
因为C就不是memsafe的, C对象的后缀名是 .so ,C bytes(1024) 被系统开发者称为 segment ,C协程被认为是线程,引起了许多WebAPI+numpy异构计算没有的冲突问题
C,ld.so 和Linux就是个降级的bytecode与JVM, 不反思这个生态位,设计新概念来「升级」Refcount&for-iter 解决泄露越界问题也是弊大于利。
算了,反正不…
因为C就不是memsafe的, C对象的后缀名是 .so ,C bytes(1024) 被系统开发者称为 segment ,C协程被认为是线程,引起了许多WebAPI+numpy异构计算没有的冲突问题
C,ld.so 和Linux就是个降级的bytecode与JVM, 不反思这个生态位,设计新概念来「升级」Refcount&for-iter 解决泄露越界问题也是弊大于利。
算了,反正不…
https://t.me/hyi0618/7238?comment=12049 #ts #rust 类型检查
许多学问,只是跨端、跨期之时,对同一种语言结构或「语意」的扭曲。 我甚至觉得比Python晦涩的编程语言不应该存在,因为人人皆可编程,这才是编程语言和IT的本意。
Guido用 @pipe(x) def y: +1 和lambda:的若智语法compose块,但他的哲学刚好弥补了这一部分。
如果你是个高级的元编程研究者, 你的眼中不会有「高级特性」,因为那正是语言设计要消灭的问题。 许多“特性”,只是与App接触不良的“关联性”。
许多学问,只是跨端、跨期之时,对同一种语言结构或「语意」的扭曲。 我甚至觉得比Python晦涩的编程语言不应该存在,因为人人皆可编程,这才是编程语言和IT的本意。
Guido用 @pipe(x) def y: +1 和lambda:的若智语法compose块,但他的哲学刚好弥补了这一部分。
如果你是个高级的元编程研究者, 你的眼中不会有「高级特性」,因为那正是语言设计要消灭的问题。 许多“特性”,只是与App接触不良的“关联性”。
Telegram
duangsuse in Channel comments
Macro(码可揉) 和eval('1+1')一样, 是最基础的元编程形式
因此,它也是最被误解的。
现在编程语言里,宏函数的模型, 就像为 JS “反射”提供了 lang.reflect 那样,模糊了语意。甚至不如C的对"\n个lits"特殊处理后的code.replace()规则
你可能觉得,Java class {int x=233;} 的反射数据
足足有三列,比JS多,但 Python typehint 也没Java那么搞笑。编译时vs运行时共有两张dict罢了。
hApi.__annotations__['x']…
因此,它也是最被误解的。
现在编程语言里,宏函数的模型, 就像为 JS “反射”提供了 lang.reflect 那样,模糊了语意。甚至不如C的对"\n个lits"特殊处理后的code.replace()规则
你可能觉得,Java class {int x=233;} 的反射数据
足足有三列,比JS多,但 Python typehint 也没Java那么搞笑。编译时vs运行时共有两张dict罢了。
hApi.__annotations__['x']…
#rust #linux #io https://blog.mwish.me/2025/05/31/Architecture-and-Design-of-the-Linux-Storage-Stack-VFS/
风空之岛
Architecture and Design of the Linux Storage Stack: VFS
近年来,随着存储设备的发展,bypass kernel 逐渐成为 NVMe 版本的答案之一。其中很大一部分原因在于: 内核本身非常复杂,很多东西演化许久,已经成为「屎山」 Syscall, Data Copies, Interrupt handling 之类的处理本身有一定开销 内核 io 软件栈其实很长,有非常多的层次,可以绕过这些层次 用户可以管理 NVMe 队列、提交命令、处理完成事件,实