duangsuse::Echo
583 subscribers
4.12K photos
118 videos
579 files
6.13K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
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 ,这才是革命性的
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 软件开发人员一样行动和互动,围绕一个主题“同意我的社会框架并按我说的做,否则我就杀了你!”
#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数据
Forwarded from codedump的电报频道 (老C)
#Rust
国内知名Rust社区贡献者Folyd,之前曾经给Rust贡献了一个优化后的二分查找实现:《优化 Rust 标准库的 binary_search》。

但是这个实现,会导致在有多个重复元素的情况下,返回是不确定的,最终导致了币圈某产品的翻车,这里可以看到作者的后续推文
👎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} 字面
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设计上超过他们 😊
https://tttttt.me/hyi0618/7238?comment=12049 #ts #rust 类型检查

许多学问,只是跨端、跨期之时,对同一种语言结构或「语意」的扭曲。 我甚至觉得比Python晦涩的编程语言不应该存在,因为人人皆可编程,这才是编程语言和IT的本意。

Guido用 @pipe(x) def y: +1 和lambda:的若智语法compose块,但他的哲学刚好弥补了这一部分。

如果你是个高级的元编程研究者, 你的眼中不会有「高级特性」,因为那正是语言设计要消灭的问题。 许多“特性”,只是与App接触不良的“关联性”。
#rust
xz 供应链攻击,暴露了一个GNU-C风格的项目有多浮夸🤣 👎

https://felipec.wordpress.com/2024/04/04/xz-backdoor-and-autotools-insanity/

运行autogen.sh脚本(生成configure)
运行configure脚本(生成Makefile文件)
make
make install
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
@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

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