From 475f35cb45a77dc41029126370887fd33b332800 Mon Sep 17 00:00:00 2001 From: eunhhu Date: Mon, 19 Oct 2026 05:46:11 +0100 Subject: 028 and 140: list values' copying measured a second time (UAX #14's Text record copies its nine lets' lists a line: with building them, 260 of 1,774 instructions a code point, after inflate's code()), and a keyed list's floor seek (the last item keyed x or below) first wanted (UAX #14's ranges, a binary search by position, 360 instructions a code point), one spec behind it --- docs/design/028-bytes-state.md | 2 ++ 1 file changed, 2 insertions(+) (limited to 'docs/design') diff --git a/docs/design/028-bytes-state.md b/docs/design/028-bytes-state.md index 7e760fa..216df58 100644 --- a/docs/design/028-bytes-state.md +++ b/docs/design/028-bytes-state.md @@ -68,6 +68,8 @@ TEXT_COMPARE의 인자 비트로 이미 만들었다(008). - **리스트 값의 나눔.** let의 리스트를 값으로 넘기면 Pure의 LIST_VALUE가 항목을 하나씩 복사한다. 복사 없이 나누려면 이벤트 도중의 리스트가 쓰기 전 복사(copy-on-write)를 해야 한다. 지금의 `pure_list_share`는 이벤트 사이의, 다른 스레드의 읽는 쪽을 위한 것이다. 명세가 그 비용에 닿으면 정한다. + - 잰 것(2026-10-19): UAX #14의 `Text` 레코드는 줄마다 let의 리스트 아홉 개를 복사해 짓는다. 그 복사와 리스트 짓기가 코드 포인트당 + 명령 1,774개 가운데 260개다(140). inflate의 `code()`에 이은 두 번째 수다. - **한 번에 비우기.** 블록 안의 let 리스트와 `xs = [...]`는 항목을 하나씩 지운다. 명령 하나로 비울지는 그 비용이 보이면 정한다. ## 착수 기준 -- cgit v1.2.3