aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-10-04 09:46:51 +0100
committereunhhu <[email protected]>2026-10-04 09:46:51 +0100
commit582294d084fced5bf5b3111f99a81cfb2422787e (patch)
treef97d13d3a62e8fa4bc648be17d5dd8c9b225b746
parente15df813829e2ab47fa76ede66e3ffb1168eef7c (diff)
downloadpure-582294d084fced5bf5b3111f99a81cfb2422787e.tar.gz
pure-582294d084fced5bf5b3111f99a81cfb2422787e.zip
Trade stores with the WSL2 too: its bytes are the Pi's (029, research 114)
The same events make byte-identical stores on the x86_64 WSL2 (4 KiB pages) as on the Pi and the Mac, and a store made on either of the Pi and the WSL2 opens on the other and goes on the same.
-rw-r--r--CHECKPOINT.md2
-rw-r--r--docs/research/114-across-machines.md13
-rw-r--r--research/experiments/029-across-machines/2026-10-04-opened-pi-on-wsl.json1
-rw-r--r--research/experiments/029-across-machines/2026-10-04-opened-wsl-on-pi.json1
-rw-r--r--research/experiments/029-across-machines/2026-10-04-opened-wsl-on-wsl.json1
-rw-r--r--research/experiments/029-across-machines/2026-10-04-stores-wsl.json24
6 files changed, 34 insertions, 8 deletions
diff --git a/CHECKPOINT.md b/CHECKPOINT.md
index 5747890..3c53700 100644
--- a/CHECKPOINT.md
+++ b/CHECKPOINT.md
@@ -48,7 +48,7 @@
확인으로 남기며 완료 조건이 아니다. macOS 지원을 주장하지도 않는다.
[114](docs/research/114-across-machines.md)에서 코어, 실행, 저장소를 x86_64의 WSL2(4 KiB 페이지, gcc 13)와 M3의
macOS(clang 21)에서 한 번 돌렸다. aup의 검사가 돌리는 `pure-run` 1,053번이 세 기계에서 같은 출력을 내고, 같은 사건으로
-만든 저장소가 Pi와 Mac에서 바이트까지 같다. 호스트와 링크는 리눅스에서만 봤다.
+만든 저장소가 세 기계에서 바이트까지 같다. 호스트와 링크는 리눅스에서만 봤다.
| 요구 | 완료에 필요한 증거 | 현재 상태 |
|---|---|---|
diff --git a/docs/research/114-across-machines.md b/docs/research/114-across-machines.md
index 403478a..df41eb2 100644
--- a/docs/research/114-across-machines.md
+++ b/docs/research/114-across-machines.md
@@ -15,7 +15,7 @@
## 쉬운 말로
- **같은 입력에 같은 것을 낸다.** aup의 검사가 돌리는 `pure-run` 1,053번(모듈 667개)의 출력, 오류, 종료 코드가 세 기계에서 모두
- 같다. 같은 사건으로 만든 저장소는 Pi와 Mac에서 파일까지 바이트 하나 다르지 않다. 한 기계에서 만든 저장소를 다른 기계가 열고
+ 같다. 같은 사건으로 만든 저장소는 세 기계에서 파일까지 바이트 하나 다르지 않다. 한 기계에서 만든 저장소를 다른 기계가 열고
이어 쓴 결과도 같다.
- **다른 컴파일러가 버그 하나를 찾았다.** 목록의 칸을 읽는 함수가 인자 둘을 한 호출에 넘겼는데, 하나가 다른 하나를 채우는 함수의
호출이었다. C는 인자를 읽는 순서를 정하지 않는다. Pi의 gcc 14는 우연히 채우는 쪽을 먼저 불렀고, x86_64의 gcc 13은 "채워지기 전에
@@ -65,19 +65,19 @@ Mac의 기본 SDK(27.0)는 링커(ld-1267)가 모르는 아키텍처(`arm64e.x1`
aup의 검사가 내는 요약(29개 항목)도 세 기계에서 같다. 컴파일러가 만든 모듈도 같다(실행의 열쇠에 모듈의 해시가 들어 있다).
-**저장소**(`stores`, 2026-10-02). aup의 예제 `tasks.aup`(목록)와 `notes.aup`(텍스트)를 트리 저장소 위에서 시드의 사건으로 돌린다
+**저장소**(`stores`, Pi와 Mac은 2026-10-02, WSL2는 10-04). aup의 예제 `tasks.aup`(목록)와 `notes.aup`(텍스트)를 트리 저장소 위에서 시드의 사건으로 돌린다
(목록 2,000개, 텍스트 4,000개, 64개마다 저장). 저장소의 형식은 페이지 크기와 상관없다(제자리로 읽을 때의 매핑에만 쓴다). 그래서
16 KiB 페이지 여럿에 걸치는 이 크기로 충분하다.
| | tasks | notes |
|---|---|---|
| 저장소 | 8,659,104 B, 파일 6개 | 468,180 B, 파일 4개 |
-| Pi와 Mac의 파일 | 바이트까지 같다 | 바이트까지 같다 |
+| Pi, Mac, WSL2의 파일 | 바이트까지 같다 | 바이트까지 같다 |
| 스냅숏 2,000개 / 4,000개 | 같다 | 같다 |
-그다음 각 기계가 다른 기계의 저장소를 복사해 열고, 보이기, 사건 300개, 보이기를 한다. Pi에서 만들어 Pi에서, Pi에서 만들어
-Mac에서, Mac에서 만들어 Pi에서, Mac에서 만들어 Mac에서 연 넷의 스냅숏 302개가 모두 같다. WSL2와는 하지 못했다. 그 기계가 꺼져
-있었다.
+그다음 각 기계가 다른 기계의 저장소를 복사해 열고, 보이기, 사건 300개, 보이기를 한다. 만든 기계와 연 기계의 짝 일곱(Pi와
+Mac 사이의 넷, Pi와 WSL2 사이의 셋)의 스냅숏 302개가 모두 같다. Mac과 WSL2 사이는 따로 하지 않았다. 두 기계의 저장소가 Pi의
+것과 바이트까지 같기 때문이다.
**WSL2의 시계**(`clock.py`: 20 ms마다 벽시계와 단조 시계를 읽어, 어긋남이 20 ms를 넘는 걸음을 적는다).
@@ -115,7 +115,6 @@ WSL2는 약 32.5초마다 벽시계를 1.2–2.2초 뒤로 놓는다(처음에�
## 다음
-- WSL2가 돌아오면 저장소를 그쪽과도 주고받는다(`runs.sh stores`).
- 검사에 clang 빌드를 더할지. Pi에 clang 19가 있다. `make CC=clang-19`가 지나게 됐으니, 이것이 다시 깨지지 않게 하는 데는 그
한 줄이면 된다. 검사 시간이 늘어나는 것과 견준다.
- macOS의 호스트. 보내는 루프는 `link/sending.c` 한 파일(kqueue)이지만, 받기(recvmmsg, GRO)와 보내기(GSO)는 대체가 필요하다.
diff --git a/research/experiments/029-across-machines/2026-10-04-opened-pi-on-wsl.json b/research/experiments/029-across-machines/2026-10-04-opened-pi-on-wsl.json
new file mode 100644
index 0000000..439a8e5
--- /dev/null
+++ b/research/experiments/029-across-machines/2026-10-04-opened-pi-on-wsl.json
@@ -0,0 +1 @@
+{"tasks": {"snapshots": "bb2a13f193fb39bb2caefecc", "lines": 302, "first": "dca1020a6495b4deb90fcaf3", "last": "97de672f0e797034482206c8"}, "notes": {"snapshots": "72df3e509b417f06ae805454", "lines": 302, "first": "dd8b2cd9da0ea959c9ad7d4b", "last": "17d3aa83cbdd3c59de045d69"}}
diff --git a/research/experiments/029-across-machines/2026-10-04-opened-wsl-on-pi.json b/research/experiments/029-across-machines/2026-10-04-opened-wsl-on-pi.json
new file mode 100644
index 0000000..439a8e5
--- /dev/null
+++ b/research/experiments/029-across-machines/2026-10-04-opened-wsl-on-pi.json
@@ -0,0 +1 @@
+{"tasks": {"snapshots": "bb2a13f193fb39bb2caefecc", "lines": 302, "first": "dca1020a6495b4deb90fcaf3", "last": "97de672f0e797034482206c8"}, "notes": {"snapshots": "72df3e509b417f06ae805454", "lines": 302, "first": "dd8b2cd9da0ea959c9ad7d4b", "last": "17d3aa83cbdd3c59de045d69"}}
diff --git a/research/experiments/029-across-machines/2026-10-04-opened-wsl-on-wsl.json b/research/experiments/029-across-machines/2026-10-04-opened-wsl-on-wsl.json
new file mode 100644
index 0000000..439a8e5
--- /dev/null
+++ b/research/experiments/029-across-machines/2026-10-04-opened-wsl-on-wsl.json
@@ -0,0 +1 @@
+{"tasks": {"snapshots": "bb2a13f193fb39bb2caefecc", "lines": 302, "first": "dca1020a6495b4deb90fcaf3", "last": "97de672f0e797034482206c8"}, "notes": {"snapshots": "72df3e509b417f06ae805454", "lines": 302, "first": "dd8b2cd9da0ea959c9ad7d4b", "last": "17d3aa83cbdd3c59de045d69"}}
diff --git a/research/experiments/029-across-machines/2026-10-04-stores-wsl.json b/research/experiments/029-across-machines/2026-10-04-stores-wsl.json
new file mode 100644
index 0000000..fe2e5d0
--- /dev/null
+++ b/research/experiments/029-across-machines/2026-10-04-stores-wsl.json
@@ -0,0 +1,24 @@
+{
+ "tasks": {
+ "module": "d39a0cd2d3fae0f1b98843f2",
+ "events": 2000,
+ "snapshots": "5b2a83b2de6a544f7ac5131e",
+ "lines": 2000,
+ "first": "e6d199dd71cf30fb7e121d44",
+ "last": "15e71c910f7ab02d7f67f70e",
+ "files": "61a15e2bbd7054f6e1f78c4f",
+ "bytes": 8659104,
+ "file_count": 6
+ },
+ "notes": {
+ "module": "5d73eda1bd94c42d112f2d15",
+ "events": 4000,
+ "snapshots": "3e8a69ebdd8d203911efd147",
+ "lines": 4000,
+ "first": "2f04a12c56e9407352cfbd4b",
+ "last": "9a996a6ae49d16c2d06ff821",
+ "files": "2032bcde2a03cec7a41ee921",
+ "bytes": 468180,
+ "file_count": 4
+ }
+}