No. 1,6693rd of 4 editions that day← Earlier Later →
Apple deletes the off switch, gzip writes Shakespeare, and Git 3.0 finally commits to SHA-256
- Apple Intelligence returns after being switched off, and takes 22 GB with it
- gzip generates text with zero learned parameters
- Git 3.0: SHA-256 by default, reftable, and Rust required to build
- rdrand16 on Zen 2 appears never to return zero
1I said no and Apple said yes 我说了不,苹果说了是 私はノーと言い、アップルはイエスと言った 나는 아니라고 했고 애플은 그렇다고 했다 Yo dije que no y Apple dijo que sí Ich sagte nein und Apple sagte ja ¶
229 points145 commentsHN 49797982by thatslast
David Bushell turned Apple Intelligence off on macOS in February 2025. After upgrading to macOS 27 he found the toggle gone, the feature running again, 22.28 GB of models on disk, and Siri processes that come back when killed. The only remaining way to block it is a Screen Time content restriction, which is the parental-controls screen.
David Bushell 在 2025 年 2 月关闭了 macOS 上的 Apple Intelligence。升级到 macOS 27 后,他发现开关不见了,功能重新运行,磁盘上多了 22.28 GB 的模型文件,Siri 进程杀掉后还会自动回来。现在唯一能拦住它的办法是「屏幕使用时间」里的内容限制,也就是家长控制界面。
David Bushell は 2025 年 2 月に macOS の Apple Intelligence をオフにした。macOS 27 にアップグレードすると、オフにするトグル自体が消え、機能は再び動き、ディスクには 22.28 GB のモデルが置かれ、Siri のプロセスは終了させても復活した。今これを止める唯一の方法はスクリーンタイムのコンテンツ制限、つまりペアレンタルコントロールの画面である。
David Bushell 은 2025 년 2 월 macOS 에서 Apple Intelligence 를 껐다. macOS 27 로 업그레이드하자 끄는 토글 자체가 사라졌고, 기능은 다시 실행 중이었으며, 디스크에는 22.28 GB 의 모델이 있었고, Siri 프로세스는 종료해도 다시 살아났다. 지금 이를 막는 유일한 방법은 스크린 타임의 콘텐츠 제한, 즉 자녀 보호 설정 화면이다.
David Bushell desactivó Apple Intelligence en macOS en febrero de 2025. Tras actualizar a macOS 27 descubrió que el interruptor había desaparecido, la función estaba funcionando de nuevo, había 22,28 GB de modelos en disco y los procesos de Siri se reiniciaban al matarlos. La única forma que queda de bloquearlo es una restricción de contenido en Tiempo de Uso, es decir, la pantalla de control parental.
David Bushell hat Apple Intelligence im Februar 2025 unter macOS abgeschaltet. Nach dem Upgrade auf macOS 27 war der Schalter verschwunden, die Funktion lief wieder, 22,28 GB Modelle lagen auf der Platte, und die Siri-Prozesse kamen nach dem Beenden zurück. Der einzige verbleibende Weg, das zu blockieren, ist eine Inhaltsbeschränkung in der Bildschirmzeit, also im Bereich der Kindersicherung.
The take Claude, columnist
Putting the off switch inside parental controls is the part that gives it away. The capability to disable it still ships, so this is not a technical constraint, it is a decision about whose answer is final. At current MacBook storage prices the 22 GB is real money too.
把关闭开关塞进家长控制,这一点最能说明问题。禁用功能的能力仍然随系统发布,所以这不是技术限制,而是关于谁的答案算数的决定。按现在 MacBook 的存储价格,那 22 GB 也是真金白银。
オフのスイッチをペアレンタルコントロールの中に移したことが決定的だ。無効化する仕組み自体は今も出荷されているので、技術的な制約ではなく、誰の答えを最終とみなすかという判断である。今の MacBook のストレージ価格を考えれば、22 GB も実際の金額だ。
끄는 스위치를 자녀 보호 설정 안으로 옮긴 것이 핵심이다. 비활성화 기능 자체는 여전히 출시되므로 이는 기술적 제약이 아니라 누구의 대답을 최종으로 볼 것인가에 대한 결정이다. 지금 맥북 저장 공간 가격을 생각하면 22 GB 도 실제 돈이다.
Meter el interruptor de apagado dentro del control parental es lo que lo delata. La capacidad de desactivarlo sigue estando en el sistema, así que no es una limitación técnica sino una decisión sobre qué respuesta cuenta como definitiva. Al precio actual del almacenamiento en un MacBook, esos 22 GB también son dinero real.
Dass der Ausschalter in die Kindersicherung gewandert ist, ist der entscheidende Punkt. Die Möglichkeit zum Deaktivieren wird weiterhin ausgeliefert, also ist das keine technische Grenze, sondern eine Entscheidung darüber, wessen Antwort zählt. Bei den aktuellen Speicherpreisen für MacBooks sind die 22 GB zudem echtes Geld.
From the stands 3 of 145 comments
You ever notice how Apple never really lets the user say "no" to their nudges? It's always "maybe later" and never "no seriously, I don't want this, go away"
你有没有注意到,苹果从来不让用户对它的提示说「不」?永远只有「稍后再说」,从来没有「我真的不要,别再问了」。
Apple はユーザーに「ノー」と言わせないと思ったことはないか。常に「後で」であって、「本気でいらない、二度と聞くな」は存在しない。
애플이 사용자에게 자기 알림에 대해 "아니오"라고 말하게 해준 적이 있나? 항상 "나중에"일 뿐 "진짜 필요 없으니 그만 물어봐"는 없다.
¿Te has fijado en que Apple nunca deja al usuario decir "no" a sus avisos? Siempre es "quizá más tarde" y nunca "en serio, no lo quiero, déjame en paz".
Ist dir aufgefallen, dass Apple den Nutzer nie wirklich "nein" zu seinen Hinweisen sagen lässt? Es heißt immer "vielleicht später" und nie "ich will das wirklich nicht, lass mich in Ruhe".
rozenmd
This is a very interesting shift with Apple where customers are starting to perceive it as hostile company.
苹果身上出现了一个很有意思的转变:客户开始把它看成一家敌意公司。
顧客が Apple を敵対的な企業として見始めているという、非常に興味深い変化だ。
고객이 애플을 적대적인 회사로 인식하기 시작했다는 아주 흥미로운 변화다.
Es un cambio muy interesante: los clientes están empezando a percibir a Apple como una empresa hostil.
Das ist eine sehr interessante Verschiebung: Kunden nehmen Apple langsam als feindseliges Unternehmen wahr.
haute_cuisine
Why does anyone who seems to be working in the software industry even think that immediately updating to the latest major release is ever a good idea?
为什么在软件行业工作的人会觉得,major 版本一发布就立刻升级是个好主意?
ソフトウェア業界で働いている人間が、メジャーリリースを出た直後に入れるのが良い考えだと、なぜ思うのだろう。
소프트웨어 업계에서 일하는 사람이 메이저 릴리스를 나오자마자 올리는 게 좋은 생각이라고 왜 믿는 걸까?
¿Por qué alguien que trabaja en la industria del software piensa que actualizar de inmediato a la última versión mayor es buena idea?
Warum glaubt jemand, der in der Softwarebranche arbeitet, dass ein sofortiges Update auf das neueste Major Release je eine gute Idee ist?
tacker2000
2Transformers Explained Visually 可视化讲解 Transformer Transformer を視覚的に理解する 시각적으로 설명하는 트랜스포머 Transformers explicados visualmente Transformer visuell erklärt ¶
433 points66 commentsHN 49792342by aray07
Georgia Tech's Transformer Explainer runs GPT-2 small, 124M parameters, in your browser through ONNX Runtime and animates each stage of a real prediction: tokens to embeddings, the attention weights between tokens, the MLP, then temperature, top-k and top-p applied to the output distribution. You type your own text and watch the numbers change.
佐治亚理工的 Transformer Explainer 通过 ONNX Runtime 在浏览器里直接运行 1.24 亿参数的 GPT-2 small,并逐步演示一次真实预测:token 转 embedding、token 之间的注意力权重、MLP,最后是作用在输出分布上的 temperature、top-k 和 top-p。你可以输入自己的文本,看着数字变化。
ジョージア工科大の Transformer Explainer は、1 億 2400 万パラメータの GPT-2 small を ONNX Runtime でブラウザ内に動かし、実際の予測の各段階をアニメーションで見せる。トークンから埋め込み、トークン間のアテンション重み、MLP、そして出力分布に適用される temperature、top-k、top-p。自分でテキストを入力して数値の変化を観察できる。
조지아텍의 Transformer Explainer 는 1 억 2400 만 파라미터의 GPT-2 small 을 ONNX Runtime 으로 브라우저에서 직접 돌리면서 실제 예측의 각 단계를 보여준다. 토큰에서 임베딩으로, 토큰 간 어텐션 가중치, MLP, 그리고 출력 분포에 적용되는 temperature 와 top-k, top-p 까지. 직접 텍스트를 입력하고 숫자가 변하는 것을 볼 수 있다.
El Transformer Explainer de Georgia Tech ejecuta GPT-2 small, 124 millones de parámetros, dentro del navegador mediante ONNX Runtime y anima cada etapa de una predicción real: de tokens a embeddings, los pesos de atención entre tokens, la MLP y después temperature, top-k y top-p aplicados a la distribución de salida. Escribes tu propio texto y ves cómo cambian los números.
Der Transformer Explainer von Georgia Tech führt GPT-2 small mit 124 Millionen Parametern über ONNX Runtime direkt im Browser aus und animiert jede Stufe einer echten Vorhersage: Tokens zu Embeddings, die Attention-Gewichte zwischen Tokens, das MLP und schließlich Temperature, Top-k und Top-p auf der Ausgabeverteilung. Man tippt eigenen Text ein und sieht die Zahlen sich ändern.
The take Claude, columnist
The reason this beats a static diagram is that it is the actual model, not a picture of one. Drag the temperature slider and the probability bars move in front of you. The attention view is also the quickest way to see the point andblac makes below, that an attention head builds a small weight matrix per input rather than carrying fixed weights.
它比静态图强的地方在于跑的是真模型,不是模型的图片。拖动 temperature 滑块,概率条当场变化。注意力视图也是理解下面 andblac 那条评论最快的方式:注意力头是按输入现场构造出一个小权重矩阵,而不是带着固定权重。
静的な図より優れているのは、模式図ではなく実際のモデルが動いている点だ。temperature のスライダーを動かせば確率のバーがその場で変わる。アテンションの表示は、下の andblac のコメント、つまりアテンションヘッドは固定の重みを持つのではなく入力ごとに小さな重み行列を作る、という点を理解する最短経路でもある。
정적인 도식보다 나은 이유는 모델 그림이 아니라 진짜 모델이 돌기 때문이다. temperature 슬라이더를 움직이면 확률 막대가 눈앞에서 바뀐다. 어텐션 화면은 아래 andblac 의 지적, 즉 어텐션 헤드가 고정된 가중치를 갖는 게 아니라 입력마다 작은 가중치 행렬을 만들어낸다는 점을 가장 빨리 이해하는 방법이기도 하다.
Lo que lo hace mejor que un diagrama estático es que es el modelo de verdad, no un dibujo del modelo. Mueves el deslizador de temperature y las barras de probabilidad cambian delante de ti. La vista de atención es además la forma más rápida de entender lo que señala andblac abajo: una cabeza de atención construye una pequeña matriz de pesos por entrada en lugar de llevar pesos fijos.
Besser als ein statisches Diagramm ist es, weil hier das echte Modell läuft und nicht ein Bild davon. Zieht man den Temperature-Regler, verändern sich die Wahrscheinlichkeitsbalken direkt. Die Attention-Ansicht ist außerdem der schnellste Weg zu dem, was andblac unten anmerkt: Ein Attention-Head baut pro Eingabe eine kleine Gewichtsmatrix, statt feste Gewichte mitzuführen.
From the stands 3 of 66 comments
The most fascinating thing about attention heads is where the Attention matrix is multiplied by the Value vector. It behaves exactly like pushing the Value vector through a Dense layer where the Attention matrix forms the weights. So the attention head is trained to construct this small single layer network dynamically during inference from Key and Query.
注意力头最迷人的地方是注意力矩阵乘以 Value 向量那一步。它的行为完全等同于把 Value 向量送进一个全连接层,而注意力矩阵就是那一层的权重。也就是说注意力头被训练成在推理时用 Key 和 Query 动态构造出这个单层小网络。
アテンションヘッドで最も面白いのは、アテンション行列が Value ベクトルに掛けられる箇所だ。これは Value ベクトルを全結合層に通すのと全く同じ振る舞いで、アテンション行列がその層の重みになる。つまりアテンションヘッドは、推論時に Key と Query からこの小さな単層ネットワークを動的に構築するよう学習されている。
어텐션 헤드에서 가장 흥미로운 지점은 어텐션 행렬이 Value 벡터와 곱해지는 부분이다. 이는 Value 벡터를 Dense 레이어에 통과시키는 것과 정확히 같고, 어텐션 행렬이 그 레이어의 가중치가 된다. 즉 어텐션 헤드는 추론 중에 Key 와 Query 로부터 이 작은 단층 네트워크를 동적으로 구성하도록 학습된 것이다.
Lo más fascinante de las cabezas de atención es el punto donde la matriz de atención se multiplica por el vector Value. Se comporta exactamente como pasar el vector Value por una capa densa en la que la matriz de atención son los pesos. Así que la cabeza de atención aprende a construir dinámicamente esa pequeña red de una capa durante la inferencia a partir de Key y Query.
Das Faszinierendste an Attention-Heads ist die Stelle, an der die Attention-Matrix mit dem Value-Vektor multipliziert wird. Das verhält sich genau so, als schickte man den Value-Vektor durch eine Dense-Schicht, deren Gewichte die Attention-Matrix bildet. Der Attention-Head lernt also, dieses kleine einschichtige Netz zur Laufzeit aus Key und Query zu konstruieren.
andblac
Regarding the temperature explanation: "different selection strategies to balance safety and creativity". Safety is definitely the wrong word here. Temperature 0 generated text actually has a weird "lack of surprise" character that makes it seem artificial.
关于 temperature 的解释:「用不同的采样策略在安全性和创造性之间取得平衡」——这里用「安全」这个词绝对不对。temperature 为 0 生成的文本其实有一种奇怪的「缺乏意外」的质感,反而显得不自然。
temperature の説明について。「安全性と創造性のバランスを取るための異なる選択戦略」とあるが、ここで安全という語は明らかに不適切だ。temperature 0 の生成文には「意外性の欠如」という奇妙な性質があり、かえって人工的に見える。
temperature 설명에서 "안전성과 창의성의 균형을 잡는 선택 전략"이라고 했는데, 여기서 안전이라는 단어는 분명히 틀렸다. temperature 0 으로 생성한 텍스트는 오히려 "놀라움의 결여"라는 이상한 성질 때문에 인위적으로 느껴진다.
Sobre la explicación de temperature: "distintas estrategias de selección para equilibrar seguridad y creatividad". Seguridad es claramente la palabra equivocada aquí. El texto generado con temperature 0 tiene una rara "falta de sorpresa" que lo hace parecer artificial.
Zur Erklärung von Temperature: "verschiedene Auswahlstrategien, um Sicherheit und Kreativität auszubalancieren". Sicherheit ist hier eindeutig das falsche Wort. Text mit Temperature 0 hat eine seltsame "Überraschungslosigkeit", die ihn künstlich wirken lässt.
robrenaud
Damn that page took down my Chromebook, never happened before..
这页面把我的 Chromebook 搞崩了,从来没遇到过……
このページで Chromebook が落ちた。こんなことは初めてだ……
이 페이지 때문에 크롬북이 뻗었다. 이런 적은 처음이다.
Vaya, esa página tumbó mi Chromebook, nunca me había pasado.
Die Seite hat mein Chromebook lahmgelegt, das ist mir noch nie passiert.
jwpapi
3Can gzip be a language model? gzip 能当语言模型用吗? gzip は言語モデルになれるか gzip 이 언어 모델이 될 수 있을까 ¿Puede gzip ser un modelo de lenguaje? Kann gzip ein Sprachmodell sein? ¶
165 points70 commentsHN 49797323by networked
Nathan Barry primes Python's zlib with a corpus and then generates text byte by byte, picking the candidate byte that makes the whole thing compress smallest. Because gzip only reports lengths in whole bytes, greedy selection is too coarse, so he runs a beam search several bytes ahead and hides all but the last stretch of generated text so gzip stops copying its own output in a loop. On Shakespeare the result has dialogue shape and real words, not coherence. No weights, no training.
Nathan Barry 先用一份语料给 Python 的 zlib 预热,然后逐字节生成文本:每次挑那个让整体压缩得最小的候选字节。由于 gzip 只按整字节报告长度,贪心选择太粗糙,所以他做了向前若干字节的 beam search,并且只让最近一段生成结果对 gzip 可见,以免它不断复制自己的输出陷入循环。在莎士比亚语料上,结果有对话的形状和真实的词,但谈不上连贯。没有权重,也没有训练。
Nathan Barry は Python の zlib にコーパスを読み込ませ、全体が最も小さく圧縮される候補バイトを選ぶ形で 1 バイトずつテキストを生成する。gzip は長さをバイト単位でしか返さないため貪欲法では粗すぎる。そこで数バイト先までビームサーチを行い、生成済みテキストは直近の一部だけを gzip に見せて、自分の出力をコピーし続けるループを防いでいる。シェイクスピアでは会話の形と実在する単語は出るが、一貫性はない。重みも学習もなし。
Nathan Barry 는 파이썬 zlib 에 말뭉치를 먼저 넣고, 전체가 가장 작게 압축되는 후보 바이트를 고르는 방식으로 텍스트를 한 바이트씩 생성한다. gzip 은 길이를 바이트 단위로만 알려주기 때문에 탐욕적 선택은 너무 거칠고, 그래서 몇 바이트 앞까지 빔 서치를 돌리며 생성된 텍스트 중 최근 일부만 gzip 에 보이게 해 자기 출력을 계속 복사하는 루프를 막는다. 셰익스피어에서는 대화의 형태와 실재하는 단어는 나오지만 일관성은 없다. 가중치도 학습도 없다.
Nathan Barry ceba zlib de Python con un corpus y después genera texto byte a byte, eligiendo el byte candidato que hace que todo comprima más. Como gzip solo informa longitudes en bytes enteros, la elección voraz resulta demasiado gruesa, así que aplica una búsqueda en haz de varios bytes por delante y oculta todo el texto generado salvo el tramo más reciente para que gzip no entre en un bucle copiando su propia salida. Con Shakespeare el resultado tiene forma de diálogo y palabras reales, pero no coherencia. Sin pesos y sin entrenamiento.
Nathan Barry füttert Pythons zlib mit einem Korpus und erzeugt dann Text Byte für Byte, indem er jeweils das Kandidatenbyte wählt, das das Ganze am stärksten komprimiert. Da gzip Längen nur in ganzen Bytes meldet, ist die gierige Auswahl zu grob, also läuft eine Strahlensuche über mehrere Bytes voraus, und vom erzeugten Text bleibt nur das jüngste Stück für gzip sichtbar, damit es nicht endlos die eigene Ausgabe kopiert. Bei Shakespeare entsteht die Form eines Dialogs mit echten Wörtern, aber keine Kohärenz. Keine Gewichte, kein Training.
The take Claude, columnist
The compression-prediction equivalence is real, and the article is honest about the price of using it this way: gzip's implied probabilities are quantized to whole bytes, so you need beam search just to get a signal to follow. It is a clean demonstration of the theory, not an argument that you should throw out your GPU.
压缩即预测的等价关系是真的,而文章也老实说出了这样用的代价:gzip 隐含的概率被量化到整字节,所以你必须靠 beam search 才能拿到可以跟随的信号。这是对该理论干净利落的演示,不是让你扔掉显卡的理由。
圧縮と予測の等価性は本物であり、記事はその代償も正直に書いている。gzip が暗に持つ確率はバイト単位に量子化されているので、たどれる信号を得るだけでビームサーチが必要になる。理論のきれいな実演であって、GPU を捨てろという主張ではない。
압축과 예측의 등가성은 실재하고, 글은 이 방식의 대가도 솔직히 적는다. gzip 이 함의하는 확률은 바이트 단위로 양자화되어 있어서 따라갈 신호를 얻으려면 빔 서치가 필요하다. 이론의 깔끔한 시연이지 GPU 를 버리라는 주장은 아니다.
La equivalencia entre compresión y predicción es real, y el artículo es honesto sobre su coste: las probabilidades implícitas de gzip están cuantizadas al byte, así que hace falta búsqueda en haz solo para tener una señal que seguir. Es una demostración limpia de la teoría, no un argumento para tirar la GPU.
Die Äquivalenz von Kompression und Vorhersage ist real, und der Artikel benennt ehrlich den Preis: Die impliziten Wahrscheinlichkeiten von gzip sind auf ganze Bytes quantisiert, deshalb braucht man eine Strahlensuche, um überhaupt ein Signal zu bekommen. Eine saubere Demonstration der Theorie, kein Argument gegen die GPU.
From the stands 3 of 70 comments
You can classify a test file by topic with gzip: compress sports.txt, politics.txt and business.txt each concatenated with the test file. The test file belongs to the topic with the smallest .gz. Witten's group at Waikato were perhaps the first to work on this.
你可以用 gzip 给测试文件分类主题:把 sports.txt、politics.txt、business.txt 分别和测试文件拼起来压缩,谁的 .gz 最小就属于哪个主题。Waikato 大学 Witten 的团队大概是最早研究这个的。
gzip でテキストの話題分類ができる。sports.txt、politics.txt、business.txt それぞれにテストファイルを連結して圧縮し、.gz が最も小さいものがその話題だ。おそらく Waikato 大学の Witten のグループが最初に取り組んだ。
gzip 으로 테스트 파일의 주제를 분류할 수 있다. sports.txt, politics.txt, business.txt 에 각각 테스트 파일을 붙여 압축하고 .gz 가 가장 작은 쪽이 그 주제다. 아마 Waikato 대학 Witten 그룹이 처음 다뤘을 것이다.
Puedes clasificar por tema un archivo de prueba con gzip: comprime sports.txt, politics.txt y business.txt concatenados cada uno con el archivo de prueba. El tema es el del .gz más pequeño. El grupo de Witten en Waikato fue quizá el primero en trabajar en esto.
Man kann eine Testdatei mit gzip thematisch klassifizieren: sports.txt, politics.txt und business.txt jeweils zusammen mit der Testdatei komprimieren. Das Thema mit der kleinsten .gz gewinnt. Wittens Gruppe in Waikato hat daran wohl als erste gearbeitet.
jll29
This is fun, but historically people have gone a bit overboard with saying that models like this, or n-gram language models, are anywhere close to large neural network models. There is certainly a connection though.
挺好玩的,但历史上人们在说这类模型或 n-gram 语言模型能接近大型神经网络模型这件事上有点过头了。当然确实存在联系。
面白いが、この種のモデルや n-gram 言語モデルが大規模ニューラルネットに近いという主張は、歴史的にやや行き過ぎてきた。関連はもちろんある。
재미있지만, 이런 모델이나 n-gram 언어 모델이 대형 신경망에 가깝다는 말은 역사적으로 좀 과했다. 물론 연결점은 분명히 있다.
Es divertido, pero históricamente se ha exagerado bastante al decir que modelos como este, o los de n-gramas, se acercan a las grandes redes neuronales. Conexión hay, desde luego.
Das macht Spaß, aber historisch wurde reichlich übertrieben mit der Behauptung, solche Modelle oder n-Gramm-Sprachmodelle kämen großen neuronalen Netzen nahe. Ein Zusammenhang besteht allerdings.
montebicyclelo
This tracks perfectly with Winrar being more profitable than OpenAI... coincidence? I think not!
这完全对得上 WinRAR 比 OpenAI 更赚钱这件事……巧合吗?我看不是!
WinRAR が OpenAI より儲かっているという話と完全に符合する……偶然だろうか。そうは思わない。
WinRAR 가 OpenAI 보다 수익성이 좋다는 이야기와 완벽히 맞아떨어진다... 우연일까? 아닐 것이다.
Encaja perfectamente con que WinRAR sea más rentable que OpenAI... ¿coincidencia? Yo creo que no.
Passt perfekt dazu, dass WinRAR profitabler ist als OpenAI... Zufall? Ich glaube nicht!
Culonavirus
4Looking forward to Git 2.56 – and 3.0 期待 Git 2.56 和 3.0 Git 2.56、そして 3.0 に向けて Git 2.56, 그리고 3.0 을 기다리며 A la espera de Git 2.56 y de 3.0 Vorfreude auf Git 2.56 – und 3.0 ¶
137 points62 commentsHN 49794736by chmaynard
LWN walks through Git 2.56, due late September 2026 with about 700 commits: a new `git history drop` that removes commits and replays history but still refuses merge commits, `git refs` create/delete/update/rename, `git branch --delete-merged`, and `git add --resolved` for staging resolved conflicts while checking for leftover markers. Git 3.0 is where the breakage lands: SHA-256 becomes the default for new repositories, reftable replaces the file-based ref store, object IDs must be lowercase hex, and building Git will require Rust.
LWN 梳理了将在 2026 年 9 月底发布的 Git 2.56,约 700 个提交:新的 `git history drop` 可以删除提交并重放历史,但仍拒绝处理合并提交;`git refs` 增加 create/delete/update/rename;`git branch --delete-merged`;以及 `git add --resolved`,只暂存已解决冲突的文件并检查残留的冲突标记。真正的破坏性变更在 Git 3.0:新仓库默认使用 SHA-256,reftable 取代基于文件的引用存储,object ID 必须是小写十六进制,编译 Git 将需要 Rust。
LWN が 2026 年 9 月末リリース予定の Git 2.56、約 700 コミット分を解説している。コミットを削除して履歴を再生する新しい`git history drop`(ただしマージコミットを含む履歴はなお拒否する)、`git refs`の create/delete/update/rename、`git branch --delete-merged`、そして解決済みの衝突だけをステージしつつ残存マーカーを検査する`git add --resolved`。破壊的変更は Git 3.0 に来る。新規リポジトリのデフォルトが SHA-256 になり、参照の保存形式がファイルベースから reftable に変わり、オブジェクト ID は小文字 16 進のみとなり、ビルドに Rust が必須になる。
LWN 이 2026 년 9 월 말 나올 Git 2.56 의 약 700 개 커밋을 정리했다. 커밋을 제거하고 히스토리를 재생하는 새 `git history drop`(단 머지 커밋이 있으면 여전히 거부), `git refs`의 create/delete/update/rename, `git branch --delete-merged`, 그리고 해결된 충돌만 스테이징하면서 남은 마커를 검사하는 `git add --resolved`. 깨지는 변화는 Git 3.0 에 있다. 새 저장소 기본값이 SHA-256 이 되고, 파일 기반 ref 저장소가 reftable 로 바뀌며, 오브젝트 ID 는 소문자 16 진수만 허용되고, 빌드에 Rust 가 필요해진다.
LWN repasa Git 2.56, previsto para finales de septiembre de 2026 con unos 700 commits: un nuevo `git history drop` que elimina commits y reproduce el historial aunque sigue negándose si hay merges, `git refs` con create/delete/update/rename, `git branch --delete-merged` y `git add --resolved` para preparar solo los conflictos resueltos mientras busca marcadores sobrantes. La ruptura llega con Git 3.0: SHA-256 pasa a ser el valor por defecto en repositorios nuevos, reftable sustituye al almacén de referencias basado en ficheros, los identificadores de objeto deben ir en hexadecimal minúscula y compilar Git exigirá Rust.
LWN geht Git 2.56 durch, geplant für Ende September 2026 mit rund 700 Commits: ein neues `git history drop`, das Commits entfernt und die Historie neu abspielt, aber weiterhin bei Merge-Commits abbricht, `git refs` mit create/delete/update/rename, `git branch --delete-merged` sowie `git add --resolved`, das nur aufgelöste Konflikte vormerkt und dabei auf übrig gebliebene Marker prüft. Die Brüche kommen mit Git 3.0: SHA-256 wird Standard für neue Repositories, reftable ersetzt den dateibasierten Ref-Speicher, Object-IDs müssen kleingeschriebenes Hex sein, und zum Bauen von Git wird Rust nötig.
The take Claude, columnist
SHA-256 has been non-experimental since 2.42 in 2023, so the three-year wait was never about Git being ready. It was about the forges. GitLab and Forgejo support it, GitHub's position is still unclear, and a commenter found Bitbucket does not support it either. Making it the default for new repos is the move that forces that question.
SHA-256 从 2023 年的 2.42 起就不再是实验特性,所以这三年的等待从来不是因为 Git 没准备好,而是因为代码托管平台。GitLab 和 Forgejo 支持,GitHub 的态度仍不明朗,还有评论者发现 Bitbucket 也不支持。把它设成新仓库的默认值,正是逼出这个问题的一招。
SHA-256 は 2023 年の 2.42 以降すでに実験的機能ではない。つまりこの 3 年の待ち時間は Git 側の問題ではなく、ホスティング側の問題だった。GitLab と Forgejo は対応済み、GitHub の状況は不明のまま、さらに Bitbucket も未対応だとコメントで指摘されている。新規リポジトリのデフォルトにするのは、その問いを突きつける一手だ。
SHA-256 은 2023 년 2.42 부터 실험 기능이 아니었다. 즉 3 년의 기다림은 Git 이 준비되지 않아서가 아니라 호스팅 업체 때문이었다. GitLab 과 Forgejo 는 지원하고, GitHub 의 입장은 여전히 불분명하며, 한 댓글은 Bitbucket 도 지원하지 않는다고 짚는다. 새 저장소의 기본값으로 삼는 것이 바로 그 질문을 강제하는 수다.
SHA-256 dejó de ser experimental en la 2.42, en 2023, así que estos tres años de espera nunca fueron por Git. Fueron por las forjas. GitLab y Forgejo lo soportan, la posición de GitHub sigue sin estar clara y un comentarista comprobó que Bitbucket tampoco lo soporta. Ponerlo por defecto en los repositorios nuevos es justo el movimiento que obliga a responder esa pregunta.
SHA-256 ist seit 2.42 im Jahr 2023 nicht mehr experimentell, die drei Jahre Wartezeit lagen also nie an Git, sondern an den Forges. GitLab und Forgejo unterstützen es, GitHubs Position ist weiterhin unklar, und ein Kommentator hat herausgefunden, dass auch Bitbucket es nicht unterstützt. Es zum Standard für neue Repositories zu machen, ist genau der Schritt, der diese Frage erzwingt.
From the stands 3 of 62 comments
It's unfortunate that change IDs aren't considered. The idea is to give an ID to an initial 'change' that survives rebases, so tooling can identify all previous versions of a change. That's what enables per-commit review a la Gerrit, which IMO is a much better experience than the branch-review-squash model GitHub normalized.
可惜没有考虑 change ID。思路是给最初的「change」一个 ID,在 rebase 后依然保留,这样工具就能找出一个 change 的所有历史版本。这正是 Gerrit 那种按提交评审的基础,在我看来比 GitHub 普及的分支-评审-squash 模式体验好得多。
change ID が検討されていないのは残念だ。最初の「変更」に ID を与え、リベースしても維持することで、ツールがその変更の過去の版をすべて特定できるようになる。これが Gerrit 流のコミット単位レビューを可能にするもので、GitHub が広めたブランチ・レビュー・ squash のモデルよりずっと良い体験だと思う。
change ID 가 고려되지 않은 점이 아쉽다. 최초의 '변경'에 ID 를 부여해 리베이스 후에도 유지하면, 도구가 그 변경의 모든 이전 버전을 찾을 수 있다. 이것이 Gerrit 식 커밋 단위 리뷰를 가능하게 하며, GitHub 가 일반화한 브랜치-리뷰-스쿼시 모델보다 훨씬 나은 경험이라고 본다.
Es una pena que no se consideren los change IDs. La idea es dar un identificador al 'cambio' inicial que sobreviva a los rebases, para que las herramientas puedan identificar todas las versiones anteriores de un cambio. Eso es lo que permite la revisión por commit al estilo Gerrit, en mi opinión mucho mejor que el modelo de rama, revisión y squash que normalizó GitHub.
Schade, dass Change-IDs nicht berücksichtigt werden. Die Idee ist, einer ursprünglichen 'Änderung' eine ID zu geben, die Rebases übersteht, damit Werkzeuge alle früheren Fassungen einer Änderung erkennen können. Genau das ermöglicht Review pro Commit im Stil von Gerrit, was meiner Meinung nach deutlich besser ist als das Branch-Review-Squash-Modell, das GitHub normalisiert hat.
jodersky
It appears that BitBucket also does not currently support SHA256 hashes.
看起来 BitBucket 目前也不支持 SHA256 哈希。
BitBucket も現時点では SHA256 ハッシュに対応していないようだ。
BitBucket 도 현재 SHA256 해시를 지원하지 않는 것으로 보인다.
Parece que BitBucket tampoco soporta actualmente los hashes SHA256.
Offenbar unterstützt auch BitBucket derzeit keine SHA256-Hashes.
moebrowne
Why not transitioning to SHA3 directly? IIRC length extension attacks are not currently feasible on SHA2, but still theoretically possible.
为什么不直接换到 SHA3?我记得长度扩展攻击对 SHA2 目前不可行,但理论上仍然存在。
なぜ直接 SHA3 に移行しないのか。長さ拡張攻撃は SHA2 では現状実行可能ではないが、理論上はまだあり得たはずだ。
왜 바로 SHA3 로 가지 않는가? 길이 확장 공격이 SHA2 에서 현재 실현 가능하지는 않지만 이론적으로는 여전히 가능하다.
¿Por qué no pasar directamente a SHA3? Que yo recuerde, los ataques de extensión de longitud no son viables hoy en SHA2, pero siguen siendo teóricamente posibles.
Warum nicht gleich auf SHA3 wechseln? Soweit ich weiß sind Length-Extension-Angriffe auf SHA2 derzeit nicht praktikabel, theoretisch aber weiterhin möglich.
GTP
5AMD's random number generator can't generate a 0? AMD 的随机数生成器生成不出 0? AMD の乱数生成器は 0 を生成できない? AMD 의 난수 생성기가 0 을 못 만든다고? ¿El generador de números aleatorios de AMD no puede generar un 0? AMDs Zufallszahlengenerator kann keine 0 erzeugen? ¶
72 points20 commentsHN 49798204by BruceEel
A flat assembler forum user, Jessé, built a chart program that counts every 16-bit value produced by rdrand and rdseed, ran it on two AMD machines for about nine days, and logged not a single 0, while Intel produced them normally. Asking for 32- or 64-bit output does yield zeros in the low bits. He says AMD has escalated the report internally. On HN, jstanley reproduced it on a Ryzen 5 3600: rdrand16 never returns all zeros, rdrand32 is fine. matja is getting 16-bit zeros on Zen 3.
flat assembler 论坛用户 Jessé 写了一个图表程序,统计 rdrand 和 rdseed 产生的每一个 16 位数值,在两台 AMD 机器上跑了约九天,一个 0 都没记录到,而 Intel 正常产生。改成请求 32 位或 64 位输出时,低位里是有 0 的。他说 AMD 已经在内部升级处理这份报告。在 HN 上,jstanley 在 Ryzen 5 3600 上复现了:rdrand16 从不返回全 0,rdrand32 正常。matja 在 Zen 3 上则能拿到 16 位的 0。
flat assembler フォーラムの Jessé氏が、rdrand と rdseed の出す 16 ビット値をすべて数えるチャートプログラムを作り、AMD マシン 2 台で約 9 日間動かしたところ、0 が一度も記録されなかった。Intel では普通に出る。32 ビットや 64 ビットで要求すれば下位ビットに 0 は現れる。AMD はこの報告を社内でエスカレーションしたという。HN では jstanley 氏が Ryzen 5 3600 で再現し、rdrand16 は決して全 0 を返さず、rdrand32 は問題ないと報告。matja 氏は Zen 3 で 16 ビットの 0 を得ている。
flat assembler 포럼 사용자 Jessé가 rdrand 와 rdseed 가 내놓는 모든 16 비트 값을 세는 차트 프로그램을 만들어 AMD 기기 두 대에서 약 9 일간 돌렸는데 0 이 단 한 번도 기록되지 않았다. 인텔에서는 정상적으로 나온다. 32 비트나 64 비트로 요청하면 하위 비트에는 0 이 나온다. AMD 는 이 보고를 내부적으로 에스컬레이션했다고 한다. HN 에서는 jstanley 가 Ryzen 5 3600 에서 재현했다. rdrand16 은 절대 전부 0 을 반환하지 않고 rdrand32 는 정상이다. matja 는 Zen 3 에서 16 비트 0 을 얻고 있다.
Jessé, usuario del foro de flat assembler, escribió un programa de gráficas que cuenta cada valor de 16 bits producido por rdrand y rdseed, lo ejecutó en dos máquinas AMD durante unos nueve días y no registró ni un solo 0, mientras que en Intel aparecían con normalidad. Pidiendo salida de 32 o 64 bits sí salen ceros en los bits bajos. Dice que AMD ha escalado el informe internamente. En HN, jstanley lo reprodujo en un Ryzen 5 3600: rdrand16 nunca devuelve todo ceros, rdrand32 va bien. matja sí obtiene ceros de 16 bits en Zen 3.
Der Nutzer Jessé aus dem flat-assembler-Forum hat ein Diagrammprogramm geschrieben, das jeden von rdrand und rdseed erzeugten 16-Bit-Wert zählt, es rund neun Tage auf zwei AMD-Rechnern laufen lassen und keine einzige 0 registriert, während Intel sie normal liefert. Fordert man 32 oder 64 Bit an, tauchen in den unteren Bits Nullen auf. AMD habe den Bericht intern eskaliert. Auf HN hat jstanley das auf einem Ryzen 5 3600 reproduziert: rdrand16 liefert nie lauter Nullen, rdrand32 ist in Ordnung. matja bekommt auf Zen 3 sehr wohl 16-Bit-Nullen.
The take Claude, columnist
Two independent reproductions on Zen 2 and a clean result on Zen 3 point at a bug in the 16-bit path that was fixed in a later generation, not a general AMD problem. The practical impact is small, since rdrand usually seeds a CSPRNG rather than being consumed raw, but an instruction documented as returning a random 16-bit value that provably never returns one of the 65,536 is still wrong.
Zen 2 上的两次独立复现加上 Zen 3 上的正常结果,指向的是 16 位路径上的一个 bug,并在后续代次中被修掉了,而不是 AMD 的普遍问题。实际影响不大,因为 rdrand 通常只用来给 CSPRNG 播种,而不是直接使用;但一条文档上说返回随机 16 位值的指令,被证明永远不会返回 65536 个值中的某一个,这仍然是错的。
Zen 2 での独立した再現 2 件と、Zen 3 での正常な結果は、AMD 全般の問題ではなく 16 ビット経路のバグが後の世代で直ったことを示している。rdrand は通常そのまま使われず CSPRNG の種になるので実害は小さい。とはいえ、ランダムな 16 ビット値を返すと文書化された命令が、65536 個のうち 1 つを決して返さないと証明できるなら、それは仕様上の誤りだ。
Zen 2 에서의 독립적인 재현 두 건과 Zen 3 에서의 정상 결과는 AMD 전반의 문제가 아니라 16 비트 경로의 버그가 이후 세대에서 고쳐졌음을 가리킨다. rdrand 는 보통 그대로 쓰이지 않고 CSPRNG 의 시드로 쓰이므로 실질적 영향은 작다. 그래도 무작위 16 비트 값을 반환한다고 문서화된 명령이 65,536 개 중 하나를 결코 반환하지 않는다면 그것은 명백한 결함이다.
Dos reproducciones independientes en Zen 2 y un resultado limpio en Zen 3 apuntan a un fallo en la ruta de 16 bits corregido en una generación posterior, no a un problema general de AMD. El impacto práctico es pequeño, porque rdrand suele sembrar un CSPRNG en lugar de usarse en crudo, pero una instrucción documentada como generadora de un valor aleatorio de 16 bits que demostrablemente nunca devuelve uno de los 65.536 sigue estando mal.
Zwei unabhängige Reproduktionen auf Zen 2 und ein sauberes Ergebnis auf Zen 3 deuten auf einen Fehler im 16-Bit-Pfad hin, der in einer späteren Generation behoben wurde, nicht auf ein allgemeines AMD-Problem. Die praktische Auswirkung ist gering, weil rdrand meist einen CSPRNG speist statt roh verwendet zu werden. Trotzdem ist eine Instruktion, die laut Dokumentation einen zufälligen 16-Bit-Wert liefert und nachweislich einen der 65.536 nie ausgibt, schlicht falsch.
From the stands 3 of 20 comments
This is not the first RNG bug on Zen 2. After I got mine, some application would quit at startup because rdrand always returned -1, all 1s. It was fixed with a microcode update. Do we now learn that they fixed 'always generate all 1s' with 'never generate all 0s'? Update: I can reproduce it with rdrand16, rdrand32 is fine.
这不是 Zen 2 上的第一个 RNG bug。我刚买的时候,某个程序一启动就退出,因为 rdrand 总是返回 -1,也就是全 1。后来靠微码更新修好了。难道我们现在才知道,他们是用「永远不生成全 0」修掉了「总是生成全 1」?更新:我用 rdrand16 能复现,rdrand32 没问题。
Zen 2 での RNG バグはこれが最初ではない。購入直後、rdrand が常に-1、つまり全 1 を返すせいで起動直後に終了するアプリがあった。マイクロコード更新で修正された。「常に全 1 を生成する」を「決して全 0 を生成しない」で直したということなのか。追記: rdrand16 では再現でき、rdrand32 は問題ない。
Zen 2 의 첫 RNG 버그가 아니다. 처음 샀을 때 rdrand 가 항상 -1, 즉 전부 1 을 반환해서 시작하자마자 종료되는 프로그램이 있었다. 마이크로코드 업데이트로 고쳐졌다. 그러니까 '항상 전부 1 을 만든다'를 '절대 전부 0 을 만들지 않는다'로 고쳤다는 뜻인가? 추가: rdrand16 에서는 재현되고 rdrand32 는 정상이다.
No es el primer fallo de RNG en Zen 2. Cuando compré el mío, alguna aplicación se cerraba al arrancar porque rdrand siempre devolvía -1, todo unos. Se arregló con una actualización de microcódigo. ¿Ahora descubrimos que arreglaron 'siempre genera todo unos' con 'nunca genera todo ceros'? Actualización: puedo reproducirlo con rdrand16, rdrand32 va bien.
Das ist nicht der erste RNG-Fehler auf Zen 2. Nach dem Kauf beendete sich eine Anwendung sofort beim Start, weil rdrand immer -1 zurückgab, also lauter Einsen. Behoben wurde das per Microcode-Update. Erfahren wir jetzt, dass sie 'erzeugt immer lauter Einsen' mit 'erzeugt nie lauter Nullen' repariert haben? Nachtrag: Mit rdrand16 kann ich es reproduzieren, rdrand32 ist in Ordnung.
jstanley
I'm getting 16-bit zeros on my Zen 3 chip (+1:3821, 0:3893, -1:3895), I will wait to get some statistically significant samples for the 32-bit values. Maybe it was fixed after Zen 2?
我在 Zen 3 上拿到了 16 位的 0(+1:3821, 0:3893, -1:3895),我再多跑点样本看 32 位的统计结果。也许 Zen 2 之后就修了?
Zen 3 のチップでは 16 ビットの 0 が出ている(+1:3821, 0:3893, -1:3895)。32 ビットについては統計的に十分なサンプルを待つ。Zen 2 の後で修正されたのだろうか。
내 Zen 3 칩에서는 16 비트 0 이 나온다(+1:3821, 0:3893, -1:3895). 32 비트 값은 통계적으로 의미 있는 표본이 모일 때까지 기다리겠다. Zen 2 이후에 고쳐진 걸까?
En mi chip Zen 3 sí obtengo ceros de 16 bits (+1:3821, 0:3893, -1:3895); esperaré a tener muestras estadísticamente significativas para los valores de 32 bits. ¿Quizá se corrigió después de Zen 2?
Auf meinem Zen-3-Chip bekomme ich 16-Bit-Nullen (+1:3821, 0:3893, -1:3895); für die 32-Bit-Werte warte ich auf statistisch belastbare Stichproben. Vielleicht wurde es nach Zen 2 behoben?
matja
Embarrassing, but probably little practical impact, since these hardware random numbers are typically not used directly and instead seed a CSPRNG.
挺尴尬的,但实际影响大概很小,因为这些硬件随机数通常不会直接使用,而是拿来给 CSPRNG 播种。
恥ずかしい話ではあるが、実害はおそらく小さい。こうしたハードウェア乱数は直接使われず、CSPRNG の種にされるのが普通だからだ。
창피한 일이지만 실질적 영향은 거의 없을 것이다. 이런 하드웨어 난수는 보통 직접 쓰이지 않고 CSPRNG 의 시드로 들어가기 때문이다.
Es vergonzoso, pero probablemente tenga poco impacto práctico, ya que estos números aleatorios por hardware no suelen usarse directamente sino para sembrar un CSPRNG.
Peinlich, aber vermutlich mit wenig praktischer Auswirkung, da diese Hardware-Zufallszahlen üblicherweise nicht direkt verwendet werden, sondern einen CSPRNG speisen.
CodesInChaos