duangsuse::Echo
噢对了,之前做一个这个 https://duangsuse.github.io/mkey/making_reco/#sorts3 #algorithm #visualize
https://tttttt.me/hyi0618/5036?comment=6393
#algorithm #visualize
>poetry pip 用 #Rust rewrite #statement
这种类似 docker/chroot 的东西其实C API调用都很少,最复杂的部分反而可能是 CLI getopt 和配置文件模板,根本不需要rust..
rust 的意义就是让我们觉得很Niubility,很neo,但写出来的东西,其实不比拿zsh或py胶水几个包快。 printf "\e[33m黄字" 这样的功能强吗? ruby也能做啊,写那么麻烦没意义,其实就是上情绪价值。
像 Vue 最近那个 oxc ESTree 用Rust才有点意义,因为它背后有一个更简洁通用的数据模型,类似与 tree-sitter vs ANTLR/PEGgyjs.org ,这才是革命性的
#algorithm #visualize
>poetry pip 用 #Rust rewrite #statement
这种类似 docker/chroot 的东西其实C API调用都很少,最复杂的部分反而可能是 CLI getopt 和配置文件模板,根本不需要rust..
rust 的意义就是让我们觉得很Niubility,很neo,但写出来的东西,其实不比拿zsh或py胶水几个包快。 printf "\e[33m黄字" 这样的功能强吗? ruby也能做啊,写那么麻烦没意义,其实就是上情绪价值。
像 Vue 最近那个 oxc ESTree 用Rust才有点意义,因为它背后有一个更简洁通用的数据模型,类似与 tree-sitter vs ANTLR/PEGgyjs.org ,这才是革命性的
Telegram
duangsuse in Channel comments
找了俩更好玩的
https://gallery.selfboot.cn/en/algorithms/dijkstra
https://clementmihailescu.github.io/Pathfinding-Visualizer/#
其实Web上算法+UIUX双修的大佬很多, 一定要找visualized
https://gallery.selfboot.cn/en/algorithms/dijkstra
https://clementmihailescu.github.io/Pathfinding-Visualizer/#
其实Web上算法+UIUX双修的大佬很多, 一定要找visualized
https://tttttt.me/solidot/25742 #linux #py #news 幽默狗官 🤡
>
Linux“现在就像是大型科技公司”——我 Kent Overstreet 不同意。Linux 25 年前的诞生并没有得到大厂的帮助。 科技公司来来去去,Linux 会比它们活得更久。它们只是过客。
面向社区、面向用户,培育工程文化。 靠威胁某人的职业生涯来让他们遵守规定?
用于开发人员之间交互的 CoC(Code contract) 是一 回事,但是在提供一个通用平台(即 Python 软件包存储库、LKML 讨论串)时,审查制度就变得更加值得怀疑,而绕过流程来删除它显然是越权行为!
没有任何透明度或公开声明 - 只是 Linus 的私人通知,根据 CoC,我的PR不会进入 6.13
几乎普遍情况下,只要出现权力真空,首个候补都是混帐——过于暴力,因为这就是他们掌权的方式。CoC 委员会如雨后春笋般涌现,以令人感到小题大做的方式掌握着「生杀大权」。
一种轻蔑的文化,想用宗教化的尊重屏蔽、带歪技术讨论的文化,比单纯的口水战更有害。
>Steve Jobs : 我喜歡和聰明人一起共事,因為完全不用考慮他們的自尊心。 你的時間有限,因此不要浪費在為別人而活上。要求知若渴,虛心若愚。
技术内容,还涉及 #rust kmalloc。 mm 维护者对错误处理迷恋的「技术政确」阻止了巧妙的"alloc_hooks(realloc)"内存分配分析,年前也妨碍他贡献单模块动态开关 printk() 调试调用: 👎
>内核现在有一项称为内存分配分析的功能:如果启用它,cat /proc/allocinfo 中将显示一个新文件,该文件按调用点列出分配的内存总量。这是我多年前自己构思出来的,而且它的开销很低:比 memcg 便宜,便宜到足以让分发内核默认启用。这很棒:我真的很喜欢那些成本低廉、可以一直打开的调试功能,这样用户就可以四处探索并发现一些东西(引起开发人员的兴趣!)
文尾他提到 #py https://www.patreon.com/posts/116412665#:~:text=happened%20in%20the%20Python%20community
>
https://discuss.python.org/t/for-your-consideration-proposed-bylaws-changes-to-improve-our-membership-experience/55696/18
Tim Peters 是 Timsort [1] 的发明者,Timsort 是 Python、Java、JavaScript(V8)和 Swift 中使用的内置排序算法。
提到诽谤是在讨论删除名为“slut”的 PyPI 包时。Tim 没有直接使用这个词,而是说: 因为它的文档反复使用了 Dan Akroyd 用来形容 Jane Curtin 的词(SNL)
他的回应似乎很正常,根本不应该被禁言。这几乎是卡通式的权力滥用。
应该有一个 SNL 西部小品,其中强盗和牛仔像 FOSS 软件开发人员一样行动和互动,围绕一个主题“同意我的社会框架并按我说的做,否则我就杀了你!”
>
Linux“现在就像是大型科技公司”——我 Kent Overstreet 不同意。Linux 25 年前的诞生并没有得到大厂的帮助。 科技公司来来去去,Linux 会比它们活得更久。它们只是过客。
面向社区、面向用户,培育工程文化。 靠威胁某人的职业生涯来让他们遵守规定?
用于开发人员之间交互的 CoC(Code contract) 是一 回事,但是在提供一个通用平台(即 Python 软件包存储库、LKML 讨论串)时,审查制度就变得更加值得怀疑,而绕过流程来删除它显然是越权行为!
没有任何透明度或公开声明 - 只是 Linus 的私人通知,根据 CoC,我的PR不会进入 6.13
几乎普遍情况下,只要出现权力真空,首个候补都是混帐——过于暴力,因为这就是他们掌权的方式。CoC 委员会如雨后春笋般涌现,以令人感到小题大做的方式掌握着「生杀大权」。
一种轻蔑的文化,想用宗教化的尊重屏蔽、带歪技术讨论的文化,比单纯的口水战更有害。
>Steve Jobs : 我喜歡和聰明人一起共事,因為完全不用考慮他們的自尊心。 你的時間有限,因此不要浪費在為別人而活上。要求知若渴,虛心若愚。
技术内容,还涉及 #rust kmalloc。 mm 维护者对错误处理迷恋的「技术政确」阻止了巧妙的"alloc_hooks(realloc)"内存分配分析,年前也妨碍他贡献单模块动态开关 printk() 调试调用: 👎
>内核现在有一项称为内存分配分析的功能:如果启用它,cat /proc/allocinfo 中将显示一个新文件,该文件按调用点列出分配的内存总量。这是我多年前自己构思出来的,而且它的开销很低:比 memcg 便宜,便宜到足以让分发内核默认启用。这很棒:我真的很喜欢那些成本低廉、可以一直打开的调试功能,这样用户就可以四处探索并发现一些东西(引起开发人员的兴趣!)
文尾他提到 #py https://www.patreon.com/posts/116412665#:~:text=happened%20in%20the%20Python%20community
>
https://discuss.python.org/t/for-your-consideration-proposed-bylaws-changes-to-improve-our-membership-experience/55696/18
Tim Peters 是 Timsort [1] 的发明者,Timsort 是 Python、Java、JavaScript(V8)和 Swift 中使用的内置排序算法。
提到诽谤是在讨论删除名为“slut”的 PyPI 包时。Tim 没有直接使用这个词,而是说: 因为它的文档反复使用了 Dan Akroyd 用来形容 Jane Curtin 的词(SNL)
他的回应似乎很正常,根本不应该被禁言。这几乎是卡通式的权力滥用。
应该有一个 SNL 西部小品,其中强盗和牛仔像 FOSS 软件开发人员一样行动和互动,围绕一个主题“同意我的社会框架并按我说的做,否则我就杀了你!”
Telegram
Solidot
Linux 6.13 将拒绝所有来自 bcachefs 作者的合并请求
2024-11-25 11:57 by 奇迹之夏
根据行为准则委员会的建议,Linux 基金会技术顾问委员会决定在 Linux 6.13 开发周期内拒绝所有来自 bcachefs 文件系统作者 Kent Overstreet 的合并请求。因为逞口舌之快,bcachefs 在内核的未来面临着不确定性。起因是今年九月初,Overstreet 在内核开发者邮件列表上人身攻击了 SUSE 的开发者 Michal Hocko,他建议对方检…
2024-11-25 11:57 by 奇迹之夏
根据行为准则委员会的建议,Linux 基金会技术顾问委员会决定在 Linux 6.13 开发周期内拒绝所有来自 bcachefs 文件系统作者 Kent Overstreet 的合并请求。因为逞口舌之快,bcachefs 在内核的未来面临着不确定性。起因是今年九月初,Overstreet 在内核开发者邮件列表上人身攻击了 SUSE 的开发者 Michal Hocko,他建议对方检…
#rust #performance #dalao
https://curiouscoding.nl/posts/1brc/
作者对大量 'city;0.00\n' 模式数据的minmax/avg优化perf了手动解析,依次使用 atoi、 match .\d{3} 、SIMD memchr 寻找';',
直到靠 s.get_unchecked(s.len().. *(0 if len<k else 1) 来减少jmp 实现了100x的加速
还使用了 record.min = max(-value, record.min) 等位运算和超线程技术,逐条汇编跑分
最终做到了1.06s解析13G数据
https://curiouscoding.nl/posts/1brc/
作者对大量 'city;0.00\n' 模式数据的minmax/avg优化perf了手动解析,依次使用 atoi、 match .\d{3} 、SIMD memchr 寻找';',
直到靠 s.get_unchecked(s.len().. *(0 if len<k else 1) 来减少jmp 实现了100x的加速
还使用了 record.min = max(-value, record.min) 等位运算和超线程技术,逐条汇编跑分
最终做到了1.06s解析13G数据
CuriousCoding
One Billion Row Challenge
Table of Contents External links The problem Initial solution: 105s First flamegraph Bytes instead of strings: 72s Manual parsing: 61s Inline hash keys: 50s Faster hash function: 41s A new flame graph Perf it is Something simple: allocating the right size:…
Forwarded from codedump的电报频道 (老C)
#Rust
国内知名Rust社区贡献者Folyd,之前曾经给Rust贡献了一个优化后的二分查找实现:《优化 Rust 标准库的 binary_search》。
但是这个实现,会导致在有多个重复元素的情况下,返回是不确定的,最终导致了币圈某产品的翻车,这里可以看到作者的后续推文。
国内知名Rust社区贡献者Folyd,之前曾经给Rust贡献了一个优化后的二分查找实现:《优化 Rust 标准库的 binary_search》。
但是这个实现,会导致在有多个重复元素的情况下,返回是不确定的,最终导致了币圈某产品的翻车,这里可以看到作者的后续推文。
GitHub
Folyd - Overview
Rust, Music enthusiast. Founder of @geddle. . Folyd has 63 repositories available. Follow their code on GitHub.
👎6
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://tttttt.me/solidot/27034?comment=146342 #rust #recommend
https://tttttt.me/dsuse/19854
C的选择本就是错误,C++更是拿锤子拔钉子
系统开发,不需要系统性反思吗? #wasm 或许有一点🤔
但是,我需要的是文内举例的,无论形式如何,实质都保持一致的编程哲学
而不是狂拽酷炫的hack。
https://tttttt.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://tttttt.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 队列、提交命令、处理完成事件,实
#rust
xz 供应链攻击,暴露了一个GNU-C风格的项目有多浮夸🤣 👎
https://felipec.wordpress.com/2024/04/04/xz-backdoor-and-autotools-insanity/
运行autogen.sh脚本(生成configure)
运行configure脚本(生成Makefile文件)
make
make install
xz 供应链攻击,暴露了一个GNU-C风格的项目有多浮夸🤣 👎
https://felipec.wordpress.com/2024/04/04/xz-backdoor-and-autotools-insanity/
运行autogen.sh脚本(生成configure)
运行configure脚本(生成Makefile文件)
make
make install
Felipe Contreras
xz backdoor and autotools insanity
I argue autotools’ convoluted nature is what enabled the xz backdoor in the first place. The truth is nobody needs to use autotools, and I show why.
duangsuse::Echo
#tool 🌠🔍⏫
#cg 现在可以使用 WebGPU 做 OpenProcessing.org , 虽然它主要用于免IO(2x加速)的 DNN infer ,但还能使用 WGSL
https://google.github.io/tour-of-wgsl/types/vectors/constructors/
优势: SFC单文件,不需要 polyfill header 和typehint,优雅吧? #rust
https://compute.toys/
https://pongasoft.github.io/webgpu-shader-toy/
https://google.github.io/tour-of-wgsl/types/vectors/constructors/
优势: SFC单文件,不需要 polyfill header 和typehint,优雅吧? #rust
@fragment
fn fragmentMain(@builtin(position) pos: vec4f) -> @location(0) vec4f {
return vec4f(pos.xy / inputs.size.xy, 0.5, 1);
}
https://compute.toys/
https://pongasoft.github.io/webgpu-shader-toy/
#rust #os yinwang 说的道理 😅 😅
https://www.yinwang.org/blog-cn/2013/04/14/os-design
https://www.yinwang.org/blog-cn/2013/04/14/os-design
dnaugsuz:
诶,要是在libc或操作系统的程度把 unsafe ban 掉就好了
内存r/w都有struct可言
我能想到一个例子
比如对授信代码, union+tag, ptr+length 可以间接计算出来
其他的只允许用fatPtr双指针验证后调用
总之就是不允许用值类型+Maybe 以外的东西
不允许硬编码堆/栈地址,不允许自己捏造虚表来调用,不允许越界读写, 不允许通过addr缓存deepEq ID,并且造成一些无聊的误解
本来就不该信任的代码注入,就不该有虚拟机,而是靠沙箱, 就像 eBPF 用setInterval取代while(1)那样
哦,所以这又是一个C经验问题……
我看到过bpf插件在heap上搞 struct 不={} 的
应该是 .bss 的问题吧,不是new的
calloc 才是C喜欢的🥰
所有人都只用 malloc ,默认必须有构造器赋值码😂
C自己的对象结构(.so segments) 也是个神人
在我看来,这和JVM的OOP对象没区别, 只是更加难以创建
ld-linux 不该叫 dlopen(),该叫 new("xx.so") , PATH 或许也该叫classpath😂 ,只是它的API只支持换汇符流,没有json……
这玩意和线程vs携程一样, 基本上就是 Ring0/ userspace 的区别
结果却是,整个编程界重复造轮子 。
如果从C的程度就把这些 hack 视为 unsafe 的
根本就不会有把所有对象按 r/w/x 分割出堆/栈/静态/类型区 的做法
有 .so ELF 的时候他们就知道需要 constructor ,但是最后C还是只有全局按sizeof分配
而不是细粒度管理
就像 React vs Svelte 一样,没有人会蠢到用60fps检测一下“山寨DOM”更新了多少,然后去patch, 而是你点了1次,它就知道有2个text要刷新, 本该如此
一开始,该就分治好
Rust虽然语法挺原神的,API设计也没革命性, 在我看来它至少懂怎么规划变量树
而且UIUX做的不错
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from codedump的电报频道 (老C)
#Rust
之前一直以为,在Rust代码中只有返回Result类型的函数可以用?提前返回,没想到可不止这个类型,参见:https://doc.rust-lang.org/std/ops/trait.Try.html
之前一直以为,在Rust代码中只有返回Result类型的函数可以用?提前返回,没想到可不止这个类型,参见:https://doc.rust-lang.org/std/ops/trait.Try.html