직렬화 검증카드 — YAML·CSV·바이너리버퍼 (pyyaml/csv/struct 대응)
개요
한선씨(hanseonc_high) 직렬화 라이브러리 3종(YAML.한선, CSV.한선, 바이트버퍼.한선+내장 버퍼)의
실제 지원 경계를 실측하고, /Users/ef/crowny-rpnkit/대응카드/SQL카드.md와 같은 방법론(대응표+검증
예제+함정전표+갭목록)으로 라이브러리카드/직렬화카드.md를 만들었다.
무엇을 했는지
- YAML.한선 실측: 평면 key:value는 완전 지원. 1단 중첩은 부모 키가 통째로 소실되고 자식 키가
- item)은 100% 미지원 — 파싱 결과가
조용히 완전 공백(길이=0, 에러도 경고도 없음). 공백 없는 콜론(key:value)도 조용히 그 줄 전체가 소실.
- CSV.한선 실측 — 중대 발견: 기존 파일(및 완전 동일한 pkg/libs 사본)이 사실 RPN 저수준 방언으로
hanseonc_high로는 컴파일 자체가 실패(100+ 미정의변수 에러). hanseonc_rpn으로는
컴파일되지만 실행하면 @본문 점프 누락 + bare 함수호출 + == 미지원(RPN은 같다)이 겹쳐
무한루프 → 배열힙 OOM으로 죽는다(실측, timeout으로 강제종료). 대체 관용구로 (a) 단순
분리(",") 방식(따옴표 콤마 오분할 함정 실증)과 (b) RFC4180 유사 따옴표 인지 파서(정상/콤마포함/
이스케이프따옴표 3케이스 검증 통과)를 작성해 카드에 수록.
- 버퍼 실증: 내장 핸들 기반 버퍼(opcode 390~399, 850·851·857·874)와 라이브러리 배열 기반
바이트버퍼.한선이 동일 함수명으로 서로 다른 구현(이름 충돌 위험) — 명확히 분리해 문서화.
신규 함정: 버퍼생성(n)은 length가 아니라 capacity(용량) n만 예약하고 논리길이는 0에서 시작,
버퍼바이트()로 쓴 위치까지만 길이가 자동 확장됨(4단계로 정밀 재현). 64KB 초과(100,044B) 파일을
버퍼파일읽기+버퍼파일쓰기로 byte-perfect 왕복 검증(cmp IDENTICAL), 대조로 읽기()가 정확히
65535자에서 절단됨을 재확인(ASCII 픽스처 기준; 임의 바이너리는 더 일찍 가변적으로 절단될 수 있음도
기록).관련 파일
/Users/ef/crowny-rpnkit/라이브러리카드/직렬화카드.md— 카드 본문(대응표·경계매트릭스·함정전표·갭목록)/Users/ef/crowny-rpnkit/라이브러리카드/직렬화검증.sh— 9/9 PASS 검증 게이트(재실행 가능)/Users/ef/crowny-rpnkit/라이브러리카드/예제/직렬화/01~09_*.한선— 검증된 예제 9개- 학습DB 추가:
csv_따옴표인지_행파서_고수준검증완료,버퍼파일읽기_64KB초과_왕복_검증완료
잔여 이슈 (갭 목록, 우선순위순)
- P0
CSV.한선이 실행 불가 — 고수준 문법으로 전면 재작성 필요(카드 §2-2 관용구가 초안 역할). - P1 YAML 중첩 미지원 — 들여쓰기 레벨 스택 +
부모.자식점표기 키 설계 필요. - P1 YAML 배열 미지원 — 값 타입을 배열로 누적하는 구조 확장 필요(현재 반환형이 flat 배열이라
- P2 버퍼 라이브러리/내장 이름 충돌 — 별칭 가져오기 표준화 또는 라이브러리 함수 개명.
- P3 대용량 CSV의 배열 4095 캡 적용 여부 — 미검증(SQL카드 §3-1과 동일 계열로 추정, 후속 검증 필요).