MINOR release. parse 한 Document 를 HWPX 로 저장했을 때 IR 의미가 보존되는지 검증하는 Document.verify_hwpx_roundtrip() 표면을 추가하고, 보존 boundary 를 v0.7.0 의 텍스트·문단에서 상류 diff_documents 가 실제 비교하는 필드 집합 (표 cell·캡션·page_break, 그림 크기·캡션, char_shape·lineseg, PageDef, 리소스·BinData count) 으로 확대한다. 직렬화·진단 모두 상류 위임 — 추가만 있고 기존 표면 보존, IR schema ("1.1") 변경 0. 동시에 상류 v0.7.13 ~ v0.7.16 sync 를 흡수한다.
Added
Document.verify_hwpx_roundtrip() -> RoundtripReport— 현재 문서를 HWPX 로 직렬화 → 재파싱한 뒤 상류diff_documents로 원본 대비 IR 차이를 측정. 반환RoundtripReport는ok: bool+differences: list[str]경량 리포트 (불변ok == (not differences)).differences각 항목은 상류IrDifference의 사람 가독 문자열 (차이 종류 + 위치). 직렬화·재파싱 실패는ValueError—to_hwpx_bytes/export_hwpx와 동일 에러 계약. GIL 보유 —diff_documents가self.inner.document()(&self.inner) 를 캡처하고DocumentCore가!Sync(v0.7.0 결정 3 일관).rhwp.RoundtripReport— verify 결과 모델 (frozen=True/extra="forbid") 을 public 노출.report.ok로 프로그램 분기,report.differences로 사람 가독 진단. 상류IrDifferencevariant 가 게이트 진행마다 증가하므로 강타입 mirror 대신 forward-compatible 한 문자열 리스트로 출고.
보존 boundary 확대: v0.7.0 의 텍스트·문단 → 상류 diff_documents 가 실제 round-trip 비교 하는 필드 집합 (표 cell 내용·캡션·page_break, 그림 크기·캡션, 문단 char_shape·lineseg, 섹션 PageDef, 리소스·BinData 엔트리 카운트). 미비교 요소 (수식 script, 표 cell rowspan/colspan, BinData byte, 도형 raw) 는 보장 범위 밖 — 상류 비교 확대에 의존. 직렬화·진단 모두 상류 위임 — 추가만 있고 기존 표면 보존, IR schema ("1.1") 변경 0. 회귀 가드: tests/test_hwpx_writeback.py 에 AC-1 ~ AC-6 (7 테스트) 추가 — 표·그림 round-trip 동등 (aift.hwpx) + verify positive + 자연 발생 negative 검출 (table-vpos-01.hwpx 의 그리기 도형 shapeComment 상류 미직렬화) + 부작용 없음 + v0.7.0 텍스트·문단 보장 유지. spec / ADR: docs/roadmap/v0.8.0/hwpx-writeback-expansion.md / docs/design/v0.8.0/hwpx-writeback-expansion-research.md (둘 다 Draft — GA 전환은 릴리스 시점).
Build
external/rhwpsubmodule pince45231c(v0.7.12 + 394) →7d9aae7f(v0.7.16 + 36). 상류 v0.7.13 ~ v0.7.16 GA 흡수 (pin 간 1,209 commit). 본 binding 관점 회귀 0 — 공개 API / IR schema ("1.1") / wheel 의존성 모두 불변. 검증:maturin develop --releaseclean,pytest -m "not slow"599 passed / 2 skipped (v0.7.0 GA 와 동일), IR baseline byte-equal (tests/test_view_baseline.py2/2 —aift.hwp+table-vpos-01.hwpx),cargo clippy --all-targets -D warningsclean. 우리가 소비하는 상류 심볼 (serialize_hwpx/render_page_svg_native/build_page_layer_tree/renderer::pdf::svgs_to_pdf/RasterRenderOptions/get_bin_data) 시그니처 전부 불변.- HWPX serializer fidelity 대폭 강화 — lossless round-trip 도달 (DocInfo / numbering paraHead / cellzoneList / useKerning / useFontSpace 무손실, 표·그림·묶음 캡션 직렬화, 그림 크기 요소 curSz/imgRect/imgDim, MEMO 필드 parameters, shapeComment, borderFill 등록, 표 pageBreak 보존). 상류 round-trip IrDiff 가 Stage 0 (섹션·문단 카운트만) → Stage 4 (표·그림·수식 의미 동등성) 로 성숙, 143 HWPX 샘플 xfail 0 — v0.8.0 HWPX writeback 확장의 상류 선행조건 충족.
- native PDF export API (
DocumentCore::render_*_pdf_native, 상류 #1359) — 기존renderer::pdf::svgs_to_pdf경로와 additive 공존, 본 binding 의 PDF 표면 영향 0. - Text IR v2 폰트 증명 게이트 / 그림 effects·shadow round-trip / 차트 샘플 코퍼스 27종 / 미주 높이 모델 정규화.
- 상류 #823 (macOS headless Skia font lookup hang) 해결 (v0.7.13). v0.6.1 Build 섹션이 미해결로 기록했던 PNG 표면 known limitation 종결 — headless macOS 에서
render_png가 hang 없이 동작. 이에 맞춰ci.yml의 macOS smoke 잡 (test-other-os매트릭스) 을 복원 —4083a27의 비활성화를 되돌리고macos-latest를 추가 (docs/upstream/issue-macos-png-coretext-hang.mdRESOLVED 전환).