工程趣聞 2026 年 5 月 25 日

2026-05-25 — 86-DOS 1.00 MIT 開源、Jujutsu 反向提交工作流、Jira 圖靈完備性證明

primary=https://opensource.microsoft.com/blog/2026/04/28/continuing-the-story-of-early-dos-development/ primary=https://github.com/DOS-History/Paterson-Listings primary=https://ikesau.co/blog/defeating-git-rigour-fatigue-with-jujutsu/ primary=https://seriot.ch/computation/jira.html

86-DOS 1.00 原始碼以 MIT 授權開源:IBM PC 作業系統的誕生現場記錄

Microsoft Open Source Blog · 2026-04-28(HN 熱議 2026-05-25)

Microsoft 在 GitHub 上發布了「Paterson Listings」——有史以來已知最早期的 DOS 原始碼,包含 86-DOS 1.00 核心、PC-DOS 1.00 核心的多個開發快照,以及 CHKDSK 等核心工具的原始程式碼,全部採用 MIT 授權。程式碼由 DOS 原始作者 Tim Paterson 親自保存,並非後人重建,是一批真實的開發時間點工作狀態與手寫筆記。

背景

86-DOS 1.00 是 1981 年 IBM PC DOS 1.00 的直接前身,由 Tim Paterson 為 Intel 8086 處理器設計,介面模仿 Gary Kildall 的 CP/M,使 CP/M 程式能夠在 IBM PC 上移植。此次發布時間配合 86-DOS 1.00 誕生 45 週年。Microsoft 的 GitHub 儲存庫 microsoft/MS-DOS 已在 2018 年開源 MS-DOS 1.25 和 2.11,2024 年加入 MS-DOS 4.0;此次 Paterson Listings 收入新儲存庫 DOS-History/Paterson-Listings

內容細節

  • 86-DOS 1.00 核心:IBM PC DOS 的直接祖先
  • PC-DOS 1.00 核心的多個開發快照:展示開發過程中的中間狀態
  • CHKDSK 等核心工具:早期磁碟管理工具
  • Paterson 的手寫筆記與工作文件
  • MIT 授權,供研究者、愛好者自由使用

影響範圍

對作業系統歷史研究者而言,這批材料的價值在於它是「開發現場」記錄而非最終產品:快照保存了設計決策的演化軌跡,手寫筆記反映當時工程師的思考過程。對 Retrocomputing 社群,可編譯原始碼意味著可以在模擬器上重現 1981 年的開發環境。從軟體工程角度,它也是單人在極短時間內(Paterson 據稱在幾週內完成 86-DOS 核心)完成一個完整 OS 核心的罕見案例研究。

原始來源:Microsoft Open Source BlogGitHub: DOS-History/Paterson-Listings


用 Jujutsu 告別 Git 提交紀律疲勞:先亂寫、最後整理的反向工作流

ikesau.co · 2026-05-25

一篇在 HN 引發廣泛討論(59 分)的文章,作者分享使用 Jujutsu(jj) 版本控制工具實現「先放鬆開發、最後一次整理」的工作流,解決他所稱的「Git 紀律疲勞」——在開發過程中維護乾淨提交歷史所消耗的認知負擔。核心命令是 jj absorbjj squash -i

問題定義

「Git 紀律疲勞」是指工程師知道應該寫 define typesadd DB functionsserver CRUD 這樣的細粒度提交歷史,但實際上寫出來的是 WIP test codefix UI bug。強制自己在開發過程中維持整潔歷史,等於要不斷中斷心流來整理提交,成本高昂。

Jujutsu 工作流

作者的方法是先建立代表「理想最終提交」的空提交節點:

jj new -B messy-first -m 'define types'
jj new -B messy-first -m 'add DB functions'
jj new -B messy-first -m 'server CRUD'

然後將所有實際改動累積到一個「everything commit」:

jj squash --from messy-first..messy-last --into messy-first

最後用互動式 squash 將改動分發到對應的空提交:

jj squash -i --from messy-first --into 'define types'  # 選取相關 hunk

jj absorb 是另一個關鍵命令:它自動分析 unstaged 的改動,判斷每段修改最可能屬於哪個先前提交(根據上下文的行歷史),並自動分配——類似 git absorb 但整合在 jj 的提交圖模型中。

影響範圍

相比 Git 的 git rebase -i,Jujutsu 的 先進提交圖(DAG)模型讓這類批次重排操作更安全:jj 沒有 Git 的「工作目錄」概念,每個改動都是提交,rebase 操作衝突更容易追蹤。作者指出的取捨是:中間提交可能無法編譯,不適合所有團隊文化。Jujutsu 目前仍以 Git 後端為主,可以無縫推送到 GitHub。

原始來源:ikesau.coJujutsu 文件


Jira 是圖靈完備的:用 Automation Rules 與 Issue 計數器實作 Minsky 暫存器機器

seriot.ch · 2026-05-25(Lobsters 96 分)

Nicolas Seriot 發表技術文章,以數學嚴謹性證明 Jira 是圖靈完備的(Turing-complete)。使用的計算模型是 1967 年 Minsky 證明等價於圖靈機的 Minsky 暫存器機器(Minsky register machine)——只需要兩個無界計數器與有條件分支指令,即可模擬任意計算。文章包含在 Atlassian Cloud 實際執行加法(2+3=5)與 Fibonacci 數列的示範。

計算模型對映

Minsky 機器元素Jira 實作
兩個無界計數器(暫存器)Bug 與 Task 類型的 Issue 數量
程式計數器(當前指令)Epic 的 Status 欄位
指令集Automation Rules
遞增(increment)建立 Issue
遞減(decrement)刪除 Issue
條件分支(branch if zero)JQL 條件觸發的 Automation Rule

關鍵 Jira 功能

  • Automation Rules with JQL conditions:實作條件分支邏輯
  • Issue Linking:追蹤計數器狀態
  • Workflow Status Transitions:推進程式計數器
  • Allow rule to trigger other rules:跨 Rule 觸發,實現連續執行步驟
  • Issue Type Conversion:優化複雜程式中的計數器操作

影響範圍

這是計算理論中「意外發現的圖靈完備性」的又一案例,加入 CSS、PowerPoint、Magic: The Gathering、Minecraft 紅石電路等的行列。Jira Cloud 的 Automation Rule 鏈深度限制是唯一的實際上限,使其成為有界但理論上完備的計算系統。對 Jira 管理員而言,這也意味著過於複雜的 Automation 規則在理論上可以實現任意邏輯——這既是能力,也是潛在的審計盲點。

原始來源:seriot.ch


End of article
0
Would love your thoughts, please comment.x
()
x