aboutsummaryrefslogtreecommitdiffstats
path: root/docs/research
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-09-27 13:14:38 +0100
committereunhhu <[email protected]>2026-09-27 13:14:38 +0100
commit37d3a1e152707d2da587440c4cea8601b9ef0fd2 (patch)
tree1a4cbea9d8ca636deabd8fc24b0d73cdae2bdaef /docs/research
parent5372d03b5968796515966e2cfc89628d6448f0c1 (diff)
downloadpure-37d3a1e152707d2da587440c4cea8601b9ef0fd2.tar.gz
pure-37d3a1e152707d2da587440c4cea8601b9ef0fd2.zip
Lay Pure out as a core with the parts selected around it
The app model, the tree store and the HTTP host lived in prototypes/connections among the earlier document runtime, the store was known only by its format's name, and Vega compiled six Pure sources by path. Now, as the README's principle has it: core/ runtime, flow and the app model (module*.c), with what the core asks of storage (state.h, store.h) store/ the tree store (PURETRE3, PUREREC1) serve/ pure-serve: HTTP host, outbound delivery, JSON in place cli/ pure-run, pure-edit-module A top-level make builds libpure.a (app model and store, for hosts to link) and the hosts; make check runs the store's and the app model's tests. The earlier runtime still builds from prototypes/connections against core/ and store/ (check, check-tree and check-core pass). Design 009 records the rule: parts by role behind libraries; git repositories split by coupling, so the store stays here while its contract moves with the core, and Vega stays apart.
Diffstat (limited to 'docs/research')
-rw-r--r--docs/research/018-native-connections.md2
-rw-r--r--docs/research/019-byte-storage.md2
-rw-r--r--docs/research/030-authenticated-document-peer.md2
-rw-r--r--docs/research/064-release-callback-reentrancy.md2
-rw-r--r--docs/research/066-application-boundary.md2
-rw-r--r--docs/research/073-single-file-persistent-tree.md2
-rw-r--r--docs/research/074-runtime-owned-drafts.md4
-rw-r--r--docs/research/075-http-host-against-axum.md2
-rw-r--r--docs/research/076-one-sync-commit.md2
9 files changed, 10 insertions, 10 deletions
diff --git a/docs/research/018-native-connections.md b/docs/research/018-native-connections.md
index f2c26bc..6747dd8 100644
--- a/docs/research/018-native-connections.md
+++ b/docs/research/018-native-connections.md
@@ -66,7 +66,7 @@ DB 호출은 아직 동기식이므로 디스크 작업 중 다른 연결 처리
동적 링크한 SQLite 자체를 sanitizer로 다시 빌드한 것은 아니다.
[원자료·재현](../../prototypes/connections/results/2026-09-23-native-connections/README.md),
-[전송 수명](../../prototypes/connections/flow.c),
+[전송 수명](../../core/flow.c),
[DB 연결](../../prototypes/connections/store.c),
[호스트](../../prototypes/connections/server.c),
[기존 CLI 연결](../../prototypes/workbench/remote.mjs).
diff --git a/docs/research/019-byte-storage.md b/docs/research/019-byte-storage.md
index faefecf..b58adcd 100644
--- a/docs/research/019-byte-storage.md
+++ b/docs/research/019-byte-storage.md
@@ -72,7 +72,7 @@ Linux AArch64에서 일반 빌드와 ASan·UBSan 빌드가 모두 통과했다.
[원자료와 재현](../../prototypes/connections/results/2026-09-23-byte-storage/README.md),
[직접 저장 구현](../../prototypes/connections/store.c),
-[구간·수명 API](../../prototypes/connections/store.h).
+[구간·수명 API](../../core/store.h).
018의 원자료는 당시 SQLite 구현의 기록으로 별도 보존한다.
## 다음 결정
diff --git a/docs/research/030-authenticated-document-peer.md b/docs/research/030-authenticated-document-peer.md
index 1ff569d..6e1fa23 100644
--- a/docs/research/030-authenticated-document-peer.md
+++ b/docs/research/030-authenticated-document-peer.md
@@ -9,7 +9,7 @@
`pure-document-peer`는 TLS 1.3/TCP의 상호 인증, 인증서 SAN 이름 확인, `pure-doc/1`
ALPN 뒤에 자체 이진 메시지를 사용한다. 이미 구현한 scalar 피어의 소켓·TLS 부분을
[`tls-link.c`](../../prototypes/common/tls-link.c)로 분리해 두 피어가 재사용한다.
-코어의 [`runtime.c`](../../prototypes/connections/runtime.c), 저장소, `editor.pure`는
+코어의 [`runtime.c`](../../core/runtime.c), 저장소, `editor.pure`는
문서 CLI와 같다. 전송 코드는 선택 빌드의 호스트에만 있다.
서버가 보내는 40 B hello는 `PDOC`, 버전 1, 예약 3 B, **원본 .pure 소스** SHA-256이다.
diff --git a/docs/research/064-release-callback-reentrancy.md b/docs/research/064-release-callback-reentrancy.md
index 68ce819..f35f6ec 100644
--- a/docs/research/064-release-callback-reentrancy.md
+++ b/docs/research/064-release-callback-reentrancy.md
@@ -5,7 +5,7 @@
`running`이 꺼져 있었다. 콜백이 같은 영역의 티켓을 해제하거나 새 작업을
받아들이면, 바깥쪽 회수 코드가 작업 슬롯과 예산 장부를 계속 수정할 수 있었다.
-[`runtime.c`](../../prototypes/connections/runtime.c)는 자원 해제 콜백 동안 해당
+[`runtime.c`](../../core/runtime.c)는 자원 해제 콜백 동안 해당
영역을 실행 중으로 표시하고 이전 상태를 복원한다. 새 상태 필드나 작업별
할당은 없다. [`test-runtime.c`](../../prototypes/connections/test-runtime.c)는
취소, 대기 작업 해제, 유효하지 않은 호스트 할당 반환에서 콜백이 같은 티켓을
diff --git a/docs/research/066-application-boundary.md b/docs/research/066-application-boundary.md
index 44e6d86..bb96bed 100644
--- a/docs/research/066-application-boundary.md
+++ b/docs/research/066-application-boundary.md
@@ -5,7 +5,7 @@
## 현재 코드가 증명하는 것과 못 하는 것
-`prototypes/connections/runtime.c`는 입력 접수, 바이트 예산, 작업 슬롯, 완료,
+`core/runtime.c`는 입력 접수, 바이트 예산, 작업 슬롯, 완료,
대여와 다른 영역으로의 무복사 전달을 소유한다. 하지만 실행 단계에서
`PureProgram`의 저장 전용 `read`/`write`/`splice`를 직접 해석하고
`PureHost.read`/`write`/`splice`를 호출한다. 따라서 현재 5,980 B 코어는
diff --git a/docs/research/073-single-file-persistent-tree.md b/docs/research/073-single-file-persistent-tree.md
index 13884e3..4386e93 100644
--- a/docs/research/073-single-file-persistent-tree.md
+++ b/docs/research/073-single-file-persistent-tree.md
@@ -74,7 +74,7 @@ Ctrl+S부터 저장 완료 프레임까지 잰다. 1 MiB 문서, 저장소별 3�
## 검증
-[`test-tree-store.c`](../../prototypes/connections/test-tree-store.c)는 ASan·UBSan에서도 통과했다.
+[`test-tree-store.c`](../../store/test-tree-store.c)는 ASan·UBSan에서도 통과했다.
- 4개 키에 6,000회 무작위 편집을 평면 배열 오라클과 매번 비교했다(최대 333,510 B, 높이 2).
매 편집 뒤 저장된 모든 비루트 노드가 기준 이상으로 채워졌는지 확인했다.
diff --git a/docs/research/074-runtime-owned-drafts.md b/docs/research/074-runtime-owned-drafts.md
index 71ac8c9..42fd417 100644
--- a/docs/research/074-runtime-owned-drafts.md
+++ b/docs/research/074-runtime-owned-drafts.md
@@ -1,7 +1,7 @@
# 074 — 작업 중인 값을 런타임이 소유한다
2026-09-25. [073](073-single-file-persistent-tree.md)의 선택형 트리 저장소 위에 런타임 API
-[`state.h`](../../prototypes/connections/state.h)를 추가했다. 기본 빌드와 기본 저장 형식은 바뀌지 않았다.
+[`state.h`](../../core/state.h)를 추가했다. 기본 빌드와 기본 저장 형식은 바뀌지 않았다.
Pure는 JVM과 같은 위치의 런타임이다. 앱 기능은 별도 저장소에서 만들고, 이 저장소의 CLI·TUI·
HTTP 호스트는 런타임을 검사하는 호스트다. 따라서 이번 단계는 편집기 기능이 아니라 모든 앱이 쓰는
@@ -61,7 +61,7 @@ draft가 가진 옛 매핑에서 필요한 노드를 새 파일로 복사한다(
## 검증
-[`test-tree-store.c`](../../prototypes/connections/test-tree-store.c) 추가 검사는 ASan·UBSan을 포함해 통과했다.
+[`test-tree-store.c`](../../store/test-tree-store.c) 추가 검사는 ASan·UBSan을 포함해 통과했다.
- 20,000회 무작위 편집을 draft에서 평면 오라클과 비교하고 1,000회마다 커밋했다(최종 419,324 B, 커밋 20회).
커밋 뒤에는 저장본 일치, revision 증가, 빈 arena를 확인했다.
diff --git a/docs/research/075-http-host-against-axum.md b/docs/research/075-http-host-against-axum.md
index 17cfe39..77be305 100644
--- a/docs/research/075-http-host-against-axum.md
+++ b/docs/research/075-http-host-against-axum.md
@@ -55,7 +55,7 @@ PUT은 연결마다 자기 키 앞에 16 B를 넣고 받은 ETag로 다음 `If-M
## 1단계 결과: `pure-serve` (소유 스레드 하나)
-새 호스트 [`serve.c`](../../prototypes/connections/serve.c): 지속 연결·파이프라이닝, edge-triggered epoll, 연결
+새 호스트 [`serve.c`](../../serve/serve.c): 지속 연결·파이프라이닝, edge-triggered epoll, 연결
최대 1,024(받을 때 할당), `writev` 응답, 같은 런타임 코어와 묶음 커밋. 같은 조건에서 다시 쟀다.
`strace -c`로 보니 GET 하나마다 저장소 draft를 여닫느라 시스템 호출이 9번(파일·디렉터리 열기, `fstat` 두 번,
diff --git a/docs/research/076-one-sync-commit.md b/docs/research/076-one-sync-commit.md
index 9f010e7..4b9afa6 100644
--- a/docs/research/076-one-sync-commit.md
+++ b/docs/research/076-one-sync-commit.md
@@ -94,7 +94,7 @@ p99는 장치 쪽 잡음이 지배한다. 꼬리를 늘리는 단위를 64 KiB,
## 검증
-[`test-tree-store.c`](../../prototypes/connections/test-tree-store.c)는 ASan·UBSan에서도 통과했다. 새로 넣은 검사:
+[`test-tree-store.c`](../../store/test-tree-store.c)는 ASan·UBSan에서도 통과했다. 새로 넣은 검사:
- **잃어버린 커밋**: 최신 커밋의 바이트 하나를 바꾸고 프로세스의 기억을 지우면(재부팅 뒤의 새 프로세스와 같다)
읽기, 핸들, writer가 모두 이전 커밋을 쓴다. 다음 커밋은 잃어버린 커밋이 있던 자리부터 쓴다.