반대 상품 둘을 덮는 단어
앞 트랙은 패키지를 거절했어. 이 트랙은 하나를 받아. 그 두 문장이 단어를 같은 뜻으로 쓰면, 트랙 하나가 거짓말하는 거야.
같은 뜻이 아니야. 발행된 패키지는 네가 통제 못 하는 소비자한테 파는 상품이야. 레지스트리에 살고, 버전이 있고, 설치 때 받아오고, 소비자 둘이 다른 버전을 고정하는 게 지원되는 상태야. 그게 격리 상품이야. 가족이 모든 언어에서 거절한 그거고, 지금도 거절하는 그거야.
경로 패키지는 컴파일러 지시야. 내 옆 이 디렉터리의 패키지를 지금 거기 있는 그대로 빌드하고, 내가 적은 상품을 링크하게 해달라는 뜻. 타깃은 여전히 따로인 모듈이야. 경로가 없애는 건 버전이지 모듈 경계가 아냐. 버전 없어. 발행 단계 없어. 레지스트리 계정 없어. 디렉터리는 가족이 이미 사는 형제 작업 트리야. 해석 비용은 복사본 깔 때랑 같아. 소비자가 이미 가진 매니페스트에 줄 하나. 유지비는 없어.
여기선 격리가 뭘 더했을까
발행 패키지가 물리는 값을 이 가족에 대보면, 여전히 값이지 기능이 아냐. 스위프트 변경마다 발행 단계. 따지고 올려야 하는 버전 번호. 그리고 이제 정당해진 가능성. 폰 앱 둘이 공용 타입의 서로 다른 리비전을 컴파일하는 것. 마지막이 첫 기록이 짚은 바로 그 날카로운 모서리야. 지원되는 기능이 된 어긋남. 어긋남을 버그로 만들려고 있는 저장소 안에서.
경로 의존엔 그 어긋남을 골라서 적어 넣을 자리가 없어. 태그가 아니라 트리를 가리키니까, 소비자 하나가 옛 리비전에 머물겠다고 적을 줄이 없거든. 날짜가 다른 두 빌드는 여전히 서로 다른 트리를 컴파일할 수 있어. 그 사이에 디렉터리가 움직였으니까. 이 트랙 마지막 레슨이 딱 그 값을 다뤄. 그래도 뒤처져 있기로 고를 수 있는 소비자는 없어. 가족이 참고 견디는 한계가 아냐. 사려던 성질이야.
그래도 레지스트리는 없어
앞 트랙의 척추 원칙이 한순간 꺾인 것처럼 보였어. 소비자가 이제 패키지를 적어. 목록을 읽어. 패키지는 이미 그 기계에 있는 형제 디렉터리의 상대 경로야. 소비자만 따로 받아오면 이제 스위프트 반은 빌드가 안 돼. 그건 새로 생긴 거고, 앞 트랙 세 번째 레슨도 그렇게 적어. 복사본 쪽 절반은 여전히 소비자 체크아웃 하나로 빌드되고, 스위프트 쪽 절반은 이제 옆에 키트가 있어야 해. 그 거래를 받아들일 만하게 만든 건, 키트 저장소가 이미 가족 배치가 전제하는 형제였고 어긋남 검사도 이미 거기 기대고 있었다는 점이야. (그 형제가 없으면 이제 검사는 가족 맥에선 깨지고 가족 밖에서만 건너뛰어. 트랙 4.) 경로 패키지는 네트워크를 안 더했어. 가족 배치가 이미 전제하던 디렉터리에 이름을 붙인 거야.
척추를 부러뜨리는 건 레지스트리야. 태그. 바이트를 나중에 받아올 수 있다는 약속. 그중 아무것도 안 왔어. 다음 레슨은 컴파일러가 왜 그래프를 봐야 했는지고, 이 레슨은 그걸 잘못 부르지 말라는 거뿐이야.