欢迎阅读 OSCHINA 编辑部出品的开源日报,每天更新一期。
# 2024.11.4
今日要闻
Java 反编译器 Fernflower 作者 Stiver 逝世
JetBrains 于日前发文纪念 Java 反编译器 Fernflower 的原作者 Stiver —— 因胶质母细胞瘤于 10 月 20 日逝世。
Stiver 是一名俄罗斯裔德国程序员,主要开发医疗设备软件。曾在 2006 年发布了一篇文章,介绍了如何在 Java 1.5 刚发布时使用 Unsafe 调整 Java 类层次结构。并在 2008 年左右开始对 Java 反编译着迷。彼时的 Java 反编译环境非常糟糕,第一代反编译器(如 JAD 或 JODE)已走向衰落。且随着 Java 作为一种语言发展,现有的反编译器基本无人维护。

OpenAI 泄露完整版 O1,具备图像推理能力
有海外网友在社交平台爆料,OpenAI已经在 ChatGPT 官网上部署了完整版 o1,让免费用户也可以直接使用。 目前OpenAI 已经修复了这个漏洞,将完整版 O1 继续隐藏起来。但据爆料用户表示,完整版 O1 具备附件上传功能,并拥有之前 Altman 提过的图像推理能力。 从这次泄露的效果来看,完整版O1模型已具备使用能力,或将会在不久之后正式推出。
被问爆 N 遍的微信 deepin 4.0 公测版,他来了!
微信 4.0 公测版本已上架 deepin 应用商店!本次微信 Linux 4.0 公测版全面重构,不仅在架构上实现了突破,更在功能上完成对 Windows 与 Mac 版本的全面对齐。这意味着,无论用户使用哪个平台,都能获得丰富且一致的应用体验。

仓颉编程语言官网正式上线,首个公测版本开放下载
仓颉编程语言官网已于 2024 年 10 月 30 日 10:08 正式公开上线,首个公测版本开放下载。
- 中文官网地址:https://cangjie-lang.cn/
- 英文官网地址:https://cangjie-lang.cn/en
- HarmonyOS Developer 仓颉主页地址(2024 年 6 月 21 日已公开):https://developer.huawei.com/consumer/cn/cangjie/
根据介绍,本次仓颉编程语言官网上线了首页、在线体验、文档、学习、下载、动态以及三方库共六个模块。
首页主要从仓颉语言的特征、仓颉语言的应用场景、仓颉语言的成功案例、如何参与仓颉语言社区、仓颉语言的最新动态以及合作伙伴为角度,让开发者迅速了解仓颉编程语言的发展概貌,并快速融入社区。

今日观察
社交观察
为 llamafile 构建一个新的语法高亮器
- 微博 蚁工厂
从小黄鸭到 AI 助手:程序员的新时代调试秘诀
很多程序员的桌上可能都曾经摆着一只小黄鸭,看起来不过就是那种普普通通的橡皮玩具。在代码的迷宫中走得太深时,你向它解释每一行代码的来龙去脉。神奇的是,往往在表达的过程中,问题的答案就浮出水面了。这就是著名的"小黄鸭调试法"。
现在到了 AI 时代,AI 就是程序员们升级版的“小黄鸭”,不仅能耐心的听你解释代码,它还会思考,会提问,会给出建议。就像金庸小说里面的扫地老僧,当你正在苦恼一个棘手的并发问题时,它会适时地问:"你考虑过死锁的情况吗?"当你在纠结代码结构时,它会建议:"这里如果用观察者模式,是不是会更优雅一些?"
- 微博 宝玉xp
Asahi Linux 是一个为苹果 M 系列芯片开发的 Linux 发行版
图为开发者Alyssa Rosenzweig在在X.Org开发者大会上介绍苹果M1/M2 GPU驱动程序的最新进展,现在已经能跑一些3A游戏了,比如《巫师 3》等。
- 微博 蚁工厂
AI search不是赚钱的生意
媒体观察
“鸿蒙之父”王成录回应为何离开华为:不让鸿蒙生态受到约束
王成录表示自己离开还是为了维护鸿蒙生态:“我在华为再留下来,咱们整个大鸿蒙生态的建设会受到很多约束。因为只有华为的设备,咱们行业里面有个经验,就是一个操作系统,要在某一个领域生态做成功,他系统的设备的数量必须占到总设备数量20%。你没有设备量,我就开发应用,没人开发应用,消费者体验不到就不买你的设备,你就会负向循环了。”
- 凤凰网
国产数据库:从“可用”走向“好用”
目前,国产数据库产品推陈出新,性能不断增强,但国外企业起步较早,占据了较大市场份额,国产数据库要从多方面持续发力。“国产数据库要做到性能更好、价格更低,用户才真正有动力去应用。”
- 科技日报
1.4 万亿美元的 Meta,被迫卷入 AI 竞争的无限游戏
而 Meta 股价在过去几个月里起起伏伏,也在一定程度上反映出投资者对大厂持续投入 AI 的纠结。一方面,AI 的快速发展让投资者愈发相信这项技术将带来移动互联网后最重要的变革,并创造庞大的商业价值;另一方面,对硅谷巨头每个季度数十亿、数百亿美元投入 AI,但短期内回报寥寥的现实也感到担忧。
- 极客公园
人形机器人千亿级市场“觉醒”,五洲新春等75只概念股谁主沉浮?
新项目的主要产品为丝杠类产品,应用于汽车、机器人等领域,考虑到新能源汽车前景广阔,市场需求潜力巨大,同时,人形机器人产业处于0-1爆发阶段,产业空间同样巨大。公司此时积极布局产能,有望形成卡位优势,率先切入蓝海市场,打开成长空间。
- 览富财经
商汤执行董事徐冰最新访谈:商汤最近在做什么?数万亿的AI投资能回本吗?
徐冰认为,全人类对AI和算力的需求正在飞速跃升,包括 个性化AI助手、自动驾驶及机器人在内的三大领域,有望产生超级应用, 为行业带来巨大的机遇。AI算力需求的增长已是定势,关键在于降低成本。基于「算力基建–大模型–应用」三位一体的战略,商汤正在建设中国最大的AI云服务之一。
- 量子位
中国云市场格局生变:运营商强势崛起,千亿俱乐部迎来新成员
在中国云计算市场上,运营商云是一个独特的存在。从全球范围来看,运营商的云业务存在感都很低。但是,中国的运营商云似乎很强势,尤其是近两年来,发展迅猛,冲击了整个市场格局。
- 数据猿
今日推荐
开源项目
Leantime/leantime

https://github.com/Leantime/leantime
Leantime 是一款面向非项目经理的开源项目管理系统。战略、计划和执行结合在一起,让团队中的每个人都能轻松使用。在构建过程中,还考虑到了多动症、阅读障碍和自闭症等问题。
每日一博
闯荡医工,智驭未来 —— 基于 Gitee AI 的智能医工软件
在开源中国的江湖中,曾有这样一位行者,他既是医院医工科的工程师,也是一个全栈开发人员,同时也是活跃在开源中国社区的 “帮派掌门人”。在这个由代码编织的世界里,他不仅见证了开源中国从青涩走向成熟,更是在 GiteeAI 的助力下,走出了一条不一样的江湖路。

开源之声
用户观点
Linus::我略微出手修改几行内核代码就提升了2.6%性能
- 观点 1:这个优化的意思就是x64平台不再调用barrier_nospec了。以前这个函数是为了避免分支预测 偷跑泄露内核空间数据的,这个优化提前把无效的地址(可能是合法的内核地址)给转换成无效用户空间的地址了,这样分支预测提前偷跑的路径也不可能读取到内核空间上去,没有内核数据泄露的风险了,所以那个比较慢的barrier-nospec函数就没必要了。
- 观点 2:我来班门弄斧解释下,这里原来性能瓶颈是barrier_nospec是个加强版内存屏障,会进一步禁止推测预执行,所以有很大的performance penalty。新的办法纯粹是对指针操作,不会引发对错误用户空间数据的预取,因为非法地址(大于最大用户空间地址)会先mask成全1,该地址当然是个非法的用户空间地址,后续raw_copy_from_user的时候触发MMU异常并由该函数捕获从而安全退出。另外测试用例是will it scale,也就是在超多核场景下的测试,众所周知这个时候的内存屏障有很大的沟通成本,考虑numa的话更明显。而对于普通用户来说,这个修改的提升几乎是透明的。
- 观点 3:骚操作,如果指针找不到就全部掩码写 1,这可能会有 安全风险,如果用户空间的地址实际上是无效的或者不应该被访问的,强制它们为有效可能会导致未定义行为,包括访问非法内存区域,这可能会导致系统崩溃或者安全漏洞。还有可能导致数据损坏,如果指针指向的内存区域已经被释放或者不属于当前进程,那么复制操作可能会覆盖重要的数据,导致数据损坏。说不定还可能导致系统稳定性问题,由于内核空间可能会错误地访问用户空间的非法地址,这可能会导致内核崩溃或者系统变得不稳定。虽然他说提升了 2.6%,可是性能问题可能依然存在,虽然barrier_nospec()可能会降低性能,但是通过pointer masking强制用户指针全为1可能会引入更多的性能问题,因为内核需要处理更多的非法内存访问和潜在的异常。还有就是会让调试更特喵的困难,当出现由于非法内存访问导致的问题时,调试将变得更加困难,因为错误可能不会立即显现,而是在系统运行一段时间后由于累积的副作用而表现出来。所以,别神话了这孙子,也许埋了更大的雷....
- 观点 4:既然认为埋坑了,何不发个邮件,和Linus一辩?
- 观点 5:从patch的代码看barrier_nospec函数还在啊。只是单挑出来内存指针无效的情况,强制用户指针为全F。增益应该也来自于避免这部分的额外处理。 而用户指针全F默认就是无效指针,不会造成额外性能开销。另外这个修改根本没动调试代码,只能说对调试没有帮助。
- 观点 6:很久前我也写内核,对现在这个事,不了解细节。但是呢,你不发邮件,是你的错;你发了,如果你是对的,就是他的问题;你发了,如果你是错的,被祖师爷怼也要立正,不丢人。方法论的事情,不妨再想想
- 观点 7:大神喜欢写 goto
- 观点 8:goto在内核里随处可见,自从做了内核开发,也习惯用goto,以至于被同事诟病
- 观点 9:祖师爷还得亲自写代码。如果不是某个issue提出了关联问题,那就是是每一笔提交和原始代码都认真看了,才能发现可以优化的点。
- 观点 10:真佩服linus的代码检查的功力,及仔细程度。千万行代码级的产品,对细节了如指掌。
- 观点 11:感觉下划线比驼峰命名更清晰明了
- 观点 12:驼峰其实很垃圾,还得切换大小写。堆在一起长了看着也眼花
- 观点 13:祖师爷得考虑接班人问题了
- 观点 14:太难了,一个复杂系统只有从头做起来的人才能知道里面的边边角角,接班人再聪明还是会经常把握不住设计的理念
- 观点 15:原来大佬的代码也是if else
- 观点 16:大佬主要是敢用 go to . 现在除了内核里还比较常见,就连嵌入式都尽量避免goto了
- 观点 17:自己埋下的bug自己最明白
- 观点 18:虽然但是,if else 不加括号看着真难受,特别是有些加了,有些不加
- 观点 19:kernel的规范就是这样,if下面一行代码的,不加花括号
- 观点 20:代码强者!恐怖如斯!
- 观点 21:有机器语言/汇编语言经验才知道写如何正确goto
- 观点 22:不用那么玄学,linux kernel coding style有指导,goto有严格指定的适用场景
- 观点 23:期待 Rust 重写 linux 内核
- 观点 24:ai:别说你,我也看不懂
- 观点 25:我一开始也看不懂,但是刚才用chatgpt把相关函数丢进去问了下,AI真的能解释清楚
“四两拨千斤”——1.2MB数据如何吃掉10GB内存
- 观点 1:别吹了,你要是有能力用rust写一个新性能接近NGNIX的网关,你也不会用nginx来打补丁了
- 观点 2:加入rust合订本
- 观点 3:这和gta那个经典案例有点像啊,看起来什么分析工具都得用上,反汇编一大堆,实际上就是流程考虑不细致导致的
- 观点 4:分析这种问题,还是要有点灵光乍现的,要不是意识到这是个zip bome,可能还得多花时间,哈哈哈哈
- 观点 5:哈哈,和我惩罚恶意访问者一个思路,如果恶意刷我网站的流量,我给它发送高度压缩的文件包过去,解压出来占100M,如果还发接下来发送1G,10G的数据包返回。
- 观点 6:oom会有日志,为什么会那么久才发现是内存问题
---END---
暂无更多评论