Skip to content

dartograph 0.5.0

Choose a tag to compare

@ictechgy ictechgy released this 09 Sep 09:16
16b18fd

0.5.0

신규 — bridges 모노레포 조인 (isthmus #38)

  • bridges --format json --project <shared-root>: 스캔은 위치 인자(package-root) 그대로, 문서의 project 필드와 location.path를 공유 루트 기준(POSIX realpath)으로 내보냅니다. 공유 루트는 package root를 포함하거나 동일해야 하며(아니면 usage 64), 문서 생산 후 project를 손으로 고쳐 쓰는 것은 provenance를 깨므로 금지됩니다(GRAPH-EXCHANGE).
  • pub workspace 자동 감지: pubspec에 resolution: workspace를 선언한 패키지는 workspace: 키를 가진 가장 가까운 조상 pubspec 디렉터리를 프로젝트로 자동 사용합니다. 감지 실패 시 스캔 루트로 폴백하며 pub-workspace-root-not-found/pub-workspace-pubspec-unparsed limitation으로 알립니다(조인 기준 어긋남이 조용하지 않음). 우선순위: --project > 감지 > 스캔 루트.
  • 이로써 pub 모노레포의 형제 패키지들(*_platform_interface의 MethodChannel + plugin 패키지의 네이티브 쪽)이 isthmus 조인이 요구하는 정확히 같은 project 문자열을 낼 수 있습니다. 설치본 isthmus 0.2.0으로 왕복 검증: 3문서 조인 성공(evidence의 재기준 경로 보존) + 불일치 문서 거부.
  • 옵션·선언이 없으면 기존 출력과 byte-for-byte 동일합니다.

성능 (출력 byte 동일 — A/B 하네스 sha256 7종 전후 동일로 고정)

  • 인덱싱 cold-run -28% (합성 600파일/4,923노드 기준 1456→1053ms): element→ID 메모, CodeGraph 읽기 뷰 캐시, export 루프 hoist, 비교자 일원화, pubspec/source 단일 계산.
  • query 배치 -84% (10.7→1.7ms): 도달성 Set·멤버 witness 색인(결정적 의미 보존), 이중 정렬 제거.
  • rules 평가 -72% (10.8→3.0ms): glob RegExp 패턴별 캐시.
  • dead --since의 심볼릭 링크 해석을 finding별에서 고유 source별 1회로 메모화.
  • 신규 tool/benchmark_index.dart가 합성 패키지로 위 수치를 재현 가능하게 측정합니다(머신 의존 — 상대 비교용, SLA 아님).

출력 바이트가 바뀌는 지점 (0.4.1 대비)

  • bridges: workspace 선언 패키지(또는 --project 사용 시)의 project·location.path — 그 외 기존 문서와 동일. bridges 제어문자 거부 메시지 정정("a fact value or source path contains control characters") — 동작은 0.3.0부터 동일.
  • 성능 변경은 전부 산출물 sha256 동일로 검증 — 바이트 변화 없음.

캐시 identity에 toolVersion이 포함되어 0.4.x 캐시는 자동으로 한 번 재분석됩니다.

분석 한계는 파일 단위 관측이며 완전성이나 삭제 안전성을 보증하지 않습니다. bridge 심볼은 어휘적 이름이며 컴파일러 USR를 생성하지 않습니다.